2024年02月23日

archbang-winter-2102-x86_64、dwmの場合(タイル型軽量テスクトップ)の設定。vmware workstation player-17.5.0 / 以下訂正→ fedora39 workstation(gnome)68_64 kernel:6.7.4のホストでした。

わずか2日で次のarchbangが出ていました。
openbox環境は変わりなしで、dwmが追加されていました。
デフォルトでは、これまでと同じで
openboxで立ち上がります。

dwmは、タイル型の中でも最軽量と云えると思います。
なんせ、C言語で書かれたソース自体で、
カスマイズもするという代物です。

dwmは、緑氏が関わるvole linuxで、やったことはありましが、
細かくカスタマイズはしないままでした。
今回、へっぴり腰に喝を入れて少し探求しました。

openboxとdwmの切り替えは、~/.xinitrcで行ないます。
exec openbox-sessionか、exec startdwm
起動させないほうをコメントアウトします。

デフォルトのままでは、super + Returnで、
ターミナルのalacrittyは立ち上がりますが、
あとのアプリは、super + p でのdmenuで。
主要なアプリは、やっぱりバインドキーで
やりたいということで、

~/dwm/config.h をいじりました。
firefox、thunar、l3afpad、alacritty及び、
リブート&シャットダウンを設定しました。

---

/* See LICENSE file for copyright and license details. */
/* appearance */
static const unsigned int borderpx = 2; /* border pixel of windows */
static const unsigned int snap = 32; /* snap pixel */
static const int showbar = 1; /* 0 means no bar */
static const int topbar = 0; /* 0 means bottom bar */
static const char *fonts[] = { "Noto Sans:size=10" };
static const char dmenufont[] = "Noto Sans:size=10";
static const char col_gray1[] = "#222222";
static const char col_gray2[] = "#444444";
static const char col_gray3[] = "#bbbbbb";
static const char col_gray4[] = "#eeeeee";
static const char col_cyan[] = "#033500";
static const char *colors[][3] = {
/* fg bg border */
[SchemeNorm] = { col_gray3, col_gray1, col_gray2 },
[SchemeSel] = { col_gray4, col_cyan, col_cyan },
};
/* tagging */
static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
static const Rule rules[] = {
/* xprop(1):
* WM_CLASS(STRING) = instance, class
* WM_NAME(STRING) = title
*/
/* class instance title tags mask isfloating monitor */
{ "Gimp", NULL, NULL, 0, 1, -1 },
{ "Firefox", NULL, NULL, 2 << 3, 0, -1 },
};
/* layout(s) */
static const float mfact = 0.55; /* factor of master area size [0.05..0.95] */
static const int nmaster = 1; /* number of clients in master area */
static const int resizehints = 1; /* 1 means respect size hints in tiled resizals */
static const int lockfullscreen = 1; /* 1 will force focus on the fullscreen window */
static const Layout layouts[] = {
/* symbol arrange function */
{ "[]=", tile }, /* first entry is default */
{ "><>", NULL }, /* no layout function means floating behavior */
{ "[M]", monocle },
};
/* 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[] = { "alacritty", NULL };
static const char *firecmd[] = { "firefox", NULL };
static const char *thuncmd[] = { "thunar", NULL };
static const char *l3afcmd[] = { "l3afpad", NULL };
static const char *alaccmd[] = { "alacritty", NULL };

static const char *restcmd[] = { "systemctl", "reboot", NULL };
static const char *shutcmd[] = { "systemctl", "poweroff", NULL };

static const Key keys[] = {
/* modifier key function argument */
{ MODKEY, XK_p, spawn, {.v = dmenucmd } },
{ MODKEY, XK_Return, spawn, {.v = termcmd } },

{ MODKEY|ShiftMask, XK_w, spawn, {.v = firecmd } },
{ MODKEY|ShiftMask, XK_f, spawn, {.v = thuncmd } },
{ MODKEY|ShiftMask, XK_l, spawn, {.v = l3afcmd } },
{ MODKEY|ShiftMask, XK_t, spawn, {.v = alaccmd } },

{ MODKEY|ShiftMask, XK_r, spawn, {.v = restcmd } },
{ MODKEY|ShiftMask, XK_p, spawn, {.v = shutcmd } },

{ 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|ShiftMask, 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 const 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} },
};

---

緑部分が追加したところ。

自動起動は、ふつうのやり方では、総じて反応せずで、
dwmのやり方に従いました。
dwmは、基本あらゆる設定は、都度都度、patchを当てて、
コンパイルしなおしインストールします。

あらゆるpatchは、dwm patch でネット検索すれば、
すぐ出てきます。私が入手したのは、
dwm-autostart-20210120-cb3f58a.diff です。
これをダウンロードし、~/dwmに入れて、その場で、

$ patch -p1 < dwm-autostart-20210120-cb3f58a.diff

このpatchは、dwm.1が書き換わります。
patchを当てる前にバックアップしたほうが
いいかもしれません

そして、さきほど、バインドキーの修正も含めて
コンパイルです。

事前の準備、
$ sudo pacman -S base-devel

コンパイル、
$ make

エラーが出なければ、インストール。

$ sudo make clean install

そして、オートスタートさせるコマンド集の
ファイルというか、スクリプトを作ります。
プログラムのオートスタート用のpatchは、

$ mkdir ~/.dwm
$ touch ~/.dwm/autostart.sh
$ chmod +x ~/.cwm/aoutostart.sh
$ nano ~/.cwm/aoutostart.sh
---
#!/bin/bash

xrandr -s 1920x1200 &
fcitx5 -d &
nm-applet &
setxkgmap --layout "us" &
sudo vmhgfs-fuse /mnt/hgfs -o auto_unmount -o allow_other &
sleep 2 && feh --bg-scale ~/Backgrounds/winter.jpg
conky -d &
---

これで、fcitx5は機能していますが、
mozcのアイコンはパネルに出ていない。
ただし、fcitx-configtoolのツールは、
コマンド操作で設定画面を出すことができます。
nm-appletもパネルに出ていないです。
コマンドを打っても出ません。

このあたりは、やり方があるのか、
ないのか、まだ調べていません。
でも、ふつうに使えるようにはなりました。

archbang_dwm_desktop_2024-02-22_15-52-59.jpg

openboxとの見かけの違いは、パネルの辺りだけ。

archbang_tiles_2024-02-22_17-07-21.jpg

デフォルト設定のタイリングは、1ワークスペースの
最後に開いた窓がモニタ幅の65%ぐらい
高さは100%で、表示されます。

わかったことがあれば、追々投稿します。

↓  ↓  ↓  ↓(20240223 10:39)
システムに電源を入れて立ち上げるとき、
conkyがフルスクリーンまえのサイズでぼやけて
大きくなるのが気になり、autostart.shを変更しました。
以下で、適正サイズで表示しています。

#!/bin/bash

xrandr --output Virtual-1 --mode 1920x1200 && conky -pause=6 &
fcitx5 -d &
nm-applet &
setxkgmap --layout "us" &
sudo vmhgfs-fuse /mnt/hgfs -o auto_unmount -o allow_other &
sleep 2 && feh --bg-scale ~/Backgrounds/winter.jpg

いまの設定では、1ワークスペース内での、
ウィンドウの移動ができないようです。
patchを追加して、やるのでしょうか。
機能はほしいが、patchって、間違うと、、、?

ただ、テキパキはしています。操作上の
確認窓はまったく出ないですし、各ワークスペースに
運動が産卵していても、super +  Shift + r で、
問答無用の瞬間システム再起動。
ログアウトが、super + Shift + q
ウィンドウの閉じるが、super + Shift + c
ちょっと危険水域。大切な作業の途中で
消してしまう恐れがります。変えたほうがいいかも。

インストール時に時間をローカライズしたはずなのに、
ハードウェアクロックのままutcになっていました。
$ sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime


posted by ブログ開設者 at 02:30| Comment(0) | linux | このブログの読者になる | 更新情報をチェックする