在 DWM 中保存窗口状态

在 DWM 中保存窗口状态

我希望能够保存系统停止/注销时在所有标签中打开的窗口的状态。不一定是他们的整个历史,只是第三个标签下有终端和第四个标签下有浏览器的事实(例如)。

我如何在 DWM 中执行此操作,是否有可以使用的补丁?

编辑:我知道 DWM 背后的理念,并且默认情况下这可能是可能的(例如,无需补丁)。这只是我想添加到我的 DWM 配置中的内容。

答案1

dwm 并不是为了保存会话状态而设计的;这通常是更成熟的桌面环境所能做的事情。

相反,您可以在config.h应用程序中编写您希望以一致标签开头的规则。

要使用您提到的示例,浏览器和终端:

static const Rule rules[] = {
    /* class      instance    title       tags mask     isfloating   monitor */
   { "Vimprobable", NULL,       NULL,       1 << 1,       False,       -1 },
   { "urxvtc",      NULL,       NULL,       0 << 1,       False,       -1 },
...

这将在标签 2 中启动浏览器,并在标签 1 中启动终端。

您还可以添加按键绑定来简化这些应用程序的启动:

/* commands */
static const char   *newtermcmd[] = { "urxvtc", "-title", "newterm", NULL };
static const char   *browsercmd[] = { "vimprobable", "%s", NULL };
...

static Key keys[] = {
    /* modifier                     key        function        argument */
    { 0,                            XK_Menu,   spawn,          {.v = dmenucmd } },
    { MODKEY|ShiftMask,             XK_Return, spawn,          {.v = newtermcmd } },
    { ControlMask|Mod1Mask,         XK_b,      spawn,          {.v = browsercmd } },
...

当您启动 dwm 时,您可以点击按键绑定并为这些应用程序分配各自的标签。如果您想进一步开发这个概念,您可以编写一个 shell 脚本来打开您需要的所有应用程序并将其绑定到按键序列:

#!/usr/bin/env sh
# autostart apps

tabbed -d >/tmp/tabbed.xid; vimprobable2 -e $(</tmp/tabbed.xid) &
urxvtc -title "mutt" -e mutt &
$HOME/bin/shux &

只要每个单独的应用程序都有规则,它们就会被分配正确的标签;您只需为 shell 脚本分配一个按键序列:

 { ControlMask|Mod1Mask,         XK_a,      spawn,          SHCMD("$HOME/bin/autostart") },

相关内容