DWMへのウィンドウ状態の保存

DWMへのウィンドウ状態の保存

システムが停止/ログオフしたときにすべてのタブで開いているウィンドウの状態を保存できるようにしたいです。完全な記録は必ずしも必要ではなく、3番目のタブの下に端末があり、4番目のタブの下にブラウザがあるという事実だけが必要です(たとえば)。

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を起動したら、キーバインディングをクリックしてこれらのアプリケーションに個々のラベルを割り当てることができます。この概念をさらに進めるには、必要なすべてのアプリケーションを開き、それをキーシーケンスにバインドするシェルスクリプトを作成できます。

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

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

各個々のアプリケーションにルールがある限り、正しいラベルが割り当てられます。シェルスクリプトにキーシーケンスを割り当てるだけです。

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

関連情報