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") },