Salve o estado das janelas no DWM

4

Eu gostaria de poder salvar o estado das janelas abertas em todas as tags na parada / logout do sistema. Não necessariamente com toda a sua história, apenas o fato de que havia terminal sob terceira tag e navegador sob a quarta tag (por exemplo).

Como faço isso no DWM, há algum patch que eu possa usar?

Editar : estou ciente da filosofia por trás do DWM e que isso provavelmente seria possível por padrão (por exemplo, sem patches). Isso é apenas algo que gostaria de adicionar à minha configuração do DWM.

    
por syntagma 28.12.2014 / 10:32

1 resposta

5

O dwm não foi projetado para salvar o estado da sua sessão; isso é tipicamente algo que um ambiente de área de trabalho mais cheio e cheio de inchado faria.

Em vez disso, você pode escrever regras em config.h para aplicativos que gostaria de começar com tags consistentes.

Para usar os exemplos mencionados, um navegador e um terminal:

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 },
...

Isso iniciará um navegador na tag 2 e um terminal na tag 1.

Você também pode adicionar keybinds para simplificar a inicialização desses aplicativos:

/* 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 } },
...

Quando você inicia o dwm, é possível pressionar os atalhos de teclado e fazer com que esses aplicativos atribuam suas respectivas tags. Se você quisesse desenvolver ainda mais esse conceito, poderia escrever um script de shell que abrisse todos os aplicativos necessários e vinculá-lo a uma sequência de chaves:

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

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

Desde que existam regras para cada uma das aplicações individuais, elas receberão as tags corretas; você acabou de atribuir uma sequência de chaves para o shell script:

 { ControlMask|Mod1Mask,         XK_a,      spawn,          SHCMD("$HOME/bin/autostart") },
    
por 28.12.2014 / 10:57

Tags