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