시스템이 중지/로그오프될 때 모든 탭에 열려 있는 창 상태를 저장할 수 있기를 원합니다. 전체 기록이 반드시 필요한 것은 아니며 세 번째 탭 아래에 터미널이 있고 네 번째 탭 아래에 브라우저가 있다는 사실만 있으면 됩니다(예를 들어).
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") },