在 dwm 中打開終端的預設鍵綁定不起作用
我是 dwm (suckless.org) 和 GNU/Linux 的新手。我知道一點 C 語言,但並不真正理解該
config.h
文件。系統配置
我使用 Ubuntu 18.04 (安裝了 netinstaller + vanilla gnome …),最近我想嘗試dwm 6.2。
我是如何安裝它的
tar.gz
我從suckless.org網站下載了文件並進行安裝,我只是make
在該文件夾中輸入終端(沒有任何錯誤),我還通過Ubuntu儲存庫安裝了dwm,最後創建了一個符號連結~/bin/
,我.xinitrc
在主文件夾中創建了一個並把exec dwm
它放進去。然後我重新啟動並登錄。我沒有更改配置文件。問題
預設鍵綁定,
Shift
++Alt
不Enter
打開gnome-terminal
。配置文件
/* key definitions */ #define MODKEY Mod1Mask #define TAGKEYS(KEY,TAG) \ { MODKEY, KEY, view, {.ui = 1 << TAG} }, \ { MODKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \ { MODKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \ { MODKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui = 1 << TAG} }, /* helper for spawning shell commands in the pre dwm-5.0 fashion */ #define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } } /* commands */ static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */ static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL }; static const char *termcmd[] = { "st", NULL }; static Key keys[] = { /* modifier key function argument */ { MODKEY, XK_p, spawn, {.v = dmenucmd } }, { MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } }, { MODKEY, XK_b, togglebar, {0} }, { MODKEY, XK_j, focusstack, {.i = +1 } }, { MODKEY, XK_k, focusstack, {.i = -1 } }, { MODKEY, XK_i, incnmaster, {.i = +1 } }, { MODKEY, XK_d, incnmaster, {.i = -1 } }, { MODKEY, XK_h, setmfact, {.f = -0.05} }, { MODKEY, XK_l, setmfact, {.f = +0.05} }, { MODKEY, XK_Return, zoom, {0} }, { MODKEY, XK_Tab, view, {0} }, { MODKEY|ShiftMask, XK_c, killclient, {0} }, { MODKEY, XK_t, setlayout, {.v = &layouts[0]} }, { MODKEY, XK_f, setlayout, {.v = &layouts[1]} }, { MODKEY, XK_m, setlayout, {.v = &layouts[2]} }, { MODKEY, XK_space, setlayout, {0} }, { MODKEY|ShiftMask, XK_space, togglefloating, {0} }, { MODKEY, XK_0, view, {.ui = ~0 } }, { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, { MODKEY, XK_comma, focusmon, {.i = -1 } }, { MODKEY, XK_period, focusmon, {.i = +1 } }, { MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } }, { MODKEY|ShiftMask, XK_period, tagmon, {.i = +1 } }, TAGKEYS( XK_1, 0) TAGKEYS( XK_2, 1) TAGKEYS( XK_3, 2) TAGKEYS( XK_4, 3) TAGKEYS( XK_5, 4) TAGKEYS( XK_6, 5) TAGKEYS( XK_7, 6) TAGKEYS( XK_8, 7) TAGKEYS( XK_9, 8) { MODKEY|ShiftMask, XK_q, quit, {0} }, };
這是問題所在:
static const char *termcmd[] = { "st", NULL };
dwm
來自suckless.org的建構st
用作預設終端仿真器,因此Alt
++映射到您的系統上未安裝的那個Shift
。您需要更改為您想要的任何其他終端仿真器(並且安裝在您的系統上)。Enter``st``st``gnome-terminal
編輯配置文件後,執行
make
並將make install
更改應用到您的系統。
在 dwm 的預設 config.h 中,執行終端涉及兩行:
static const char *termcmd[] = { "rxvt", NULL };
我用
rxvt
,你可以改成gnome-terminal
{ MODKEY, XK_Return, spawn, {.v = termcmd } },
它將鍵盤快捷鍵設置為 constant
termcmd
。就我而言,它只是Meta
+Enter
。此外,如評論中所述,您應該編譯 dwn,
sudo make clean install
. 只有在編譯之後,config.h
才會應用更改(有 dwm 更新檔可以克服這個問題)。如果您願意,您可以config.mk
在編譯之前進行編輯,例如更改執行檔的路徑。