dwm - 共通事項 - 概要・rc.lua

 クラウディア
1. 概要
2. デフォルトの定義
3. コマンド・キー定義
4. ログアウト

1. 概要

 さすが、「xmonad」や「awesome」が元としているだけあって、元のままなのです。  何がというと、定義ファイルの話なのですが、カスタマイズする定義ファイルは、ソースファイルというか、ヘッダファイルなのです。  確かに、「awesome」の定義ファイルは、「lua」のソースファイルであるな。  「lua」は、スクリプト言語なので、ファイルを変更するだけで動作が変わるが。  「xmonad」の定義ファイルも、「Haskell」のソースファイルで、これは、変更した後に、ビルドしないと反映されません。  「dwm」は、言語が、「c」であるため、定義ファイルは「config.h」なのです。  「config.h」を変更したら、コンパイル・リンク・実行ファイルの置き換えをする必要があるのです。  (すげぇな、おい)

2. デフォルトの定義

 インストール直後、デフォルトで定義されている主なキーを記述しておきます。
プラットフォーム     キー定義      備考 
 mod   端末を開く   閉じる  dwm 再起動 ログアウト
ArcoLinux Win mod+Enter mod+q mod+Shift+r
FreeBSD Alt mod+Shift+Enter mod+Shift+c mod+Shift+q
カスタマイズ Win mod+Enter mod+q mod+Shift+r mod+Shift+q

3. コマンド・キー定義

 以下、「FreeBSD」での記述で書いていきます。

/* key definitions */
#define MODKEY Mod4Mask
#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} },
};

/* button definitions */
/* click can be ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */
static Button buttons[] = {
        /* click                event mask      button          function        argument */
        { ClkLtSymbol,          0,              Button1,        setlayout,      {0} },
        { ClkLtSymbol,          0,              Button3,        setlayout,      {.v = &layouts[2]} },
        { ClkWinTitle,          0,              Button2,        zoom,           {0} },
        { ClkStatusText,        0,              Button2,        spawn,          {.v = termcmd } },
        { ClkClientWin,         MODKEY,         Button1,        movemouse,      {0} },
        { ClkClientWin,         MODKEY,         Button2,        togglefloating, {0} },
        { ClkClientWin,         MODKEY,         Button3,        resizemouse,    {0} },
        { ClkTagBar,            0,              Button1,        view,           {0} },
        { ClkTagBar,            0,              Button3,        toggleview,     {0} },
        { ClkTagBar,            MODKEY,         Button1,        tag,            {0} },
        { ClkTagBar,            MODKEY,         Button3,        toggletag,      {0} },
};
 47行目が、mod の定義になります。  ここで、「Mod4Mask」と記述していれば、mod が、Win になります。  「Mod1Mask」と記述すれば、mod が、Alt になります。  不思議なのは、「FreeBSD」で「ports」のデフォルトのソースは、「Mod4Mask」と記述しているのに、「pkg」でインストールした際、mod が、Alt になっていました。  60行目が、端末の定義になります。  「st」というのが、端末として動作しているのがわかります。  例えば、「st」を「xterm」へ置き換えれば、端末として「xterm」が起動します。  75行目が、フォーカスのあたっているプログラムの終了となります。  96行目が、ログアウトの定義になります。

4. ログアウト

 「FreeBSD」では、「quit」というモジュールがソース内で定義されていて、mod+Shift+q に割り当てられていましたが、「ArcoLinux」には、「quit」というモジュールが定義されていませんでした。  なので、コマンドとして

static const char *logout[]  = { "pkill", "dwm", NULL };
 を定義して、下記のように、mod+Shift+q へ割り当てます。

    { MODKEY|ShiftMask,             XK_q,      spawn,          {.v = logout } },
ハイスピードプラン
 
 
カウンタバックグラウンド