Open5

Alpine Linuxで暮したいの巻

okuokuokuoku

日本語入力

fcitxを使うのが良いだろうか。

https://zenn.dev/okuoku/scraps/4b51699a3b42d9

https://pkgs.alpinelinux.org/packages?name=fcitx*&branch=edge&repo=&arch=x86_64&maintainer=

testing にしかないのか。。Edgeに変更する。

/home/oku # cat /etc/apk/repositories
#/media/cdrom/apks
http://ftp.udx.icscoe.jp/Linux/alpine/edge/main
http://ftp.udx.icscoe.jp/Linux/alpine/edge/community
http://ftp.udx.icscoe.jp/Linux/alpine/edge/testing

libskk https://github.com/ueno/libskk とfcitx-skk https://github.com/fcitx/fcitx5-skk はパッケージに無いので手動でビルドすることになる。

# apk add fcitx5-gtk fcitx5-qt fcitx5-configtool fcitx5-dev fcitx5-qt-dev
# apk add autoconf automake libtool gettext-dev gobject-introspection-dev g++ json-glib-dev  libgee-dev libxkbcommon-dev make vala extra-cmake-modules

gobject-introspection-dev と vala があまりにもpull in多すぎるな。。後でDocker化することを考えないと。。 extra-cmake-modules も同様(fcitx5-skk がUninstallのためだけに使っている)。。

PKG_CONFIG_PATH=/opt/skk/lib/pkgconfig \
  cmake -DLIBSKK_INCLUDE_DIR=/opt/skk/include \
  -DLIBSKK_LIBRARIES=/opt/skk/lib/libskk.so \
  -DCMAKE_BUILD_TYPE=RelWithDebInfo \
 -DCMAKE_INSTALL_PREFIX=/opt/skk -G Ninja ..

libskkの出力するpkgconfigが激烈に間違っているので手動で指定する必要がある。

インストール

Fcitx5は自由にモジュールを配置できない?ので /usr 以下にコピーする必要がある。

/opt/skk/share/fcitx5 # cp -rp * /usr/share/fcitx5/
/opt/skk/lib/fcitx5 # cp -rp * /usr/lib/fcitx5

Gnomeでは専用のimpanelのインストールが必要 https://extensions.gnome.org/extension/261/kimpanel/

ここまでで、とりあえず文字は出た。フォントとかロケール周りの設定が必要だな。

AZIK

Ctrl + Jの処理が正常化したのでコレで。

https://github.com/okuoku/myskkconfig/commit/264e83dd42fd13bd4bf617bc3507d983eb6d7730

okuokuokuoku

日本語表示関連

とりあえずCJKフォントをインストールしておく。

# apk add font-noto-cjk font-noto-cjk-extra

あとはフォント設定をちまちま直せばOK。なぜかデフォルトがSource Code Proになっている。。

okuokuokuoku

アンダースコアが入力できない問題

(というか今見てみると、アンダーバーの方がメジャーな呼び方な感じがしている。。)

これは難しいパターンだな。。レイアウトファイル /usr/share/X11/xkb/symbols/jp にはちゃんと当該キーはあるので、libinput側から見る必要があるな。。

    key <AB11>  {[ backslash, underscore ]};

libinput debug-events で確認すると、このキーは KEY_102ND = 86 として認識されている。これは非USキーボードで シフトキーの隣のキーになる。qemuはSDL2を使っていて、このレベルの識別はAPI的に無理なのでOS側でリマップするのが良さそうだ。

/home/oku # libinput debug-events
-event2   DEVICE_ADDED            Power Button                      seat0 default group1  cap:k
-event1   DEVICE_ADDED            QEMU QEMU USB Tablet              seat0 default group2  cap:p left scroll-nat calib
-event0   DEVICE_ADDED            AT Translated Set 2 keyboard      seat0 default group3  cap:k
-event3   DEVICE_ADDED            ImExPS/2 Generic Explorer Mouse   seat0 default group4  cap:p left scroll-nat scroll-button
-event0   KEYBOARD_KEY            +4294967.295s KEY_102ND (86) pressed
 event0   KEYBOARD_KEY            +0.020s       KEY_102ND (86) released

<AB11> のマッピングは /usr/share/X11/xkb/keycodes/evdev によると

        <AB11> =  97;   // backslash/underscore

Linuxのキーコードは -8 されるので(何故?) 89 が期待値ということになる。ちなみに今は

        <LSGT> = 94;

LSGT として動作している。

とりあえず 86 (16進で56) を KEY_RO にしたいので

https://github.com/torvalds/linux/blob/4d145e3f830ba2c2745b42bfba5c2f8fcb8d078a/include/uapi/linux/input-event-codes.h#L164

ファイル /etc/udev/hwdb.d/99-remap-qemu-kbd.hwdb をこんな感じに作成し:

evdev:atkbd:*
 KEYBOARD_KEY_56=ro

あとは udevadm でマッピングを書き換える。

# udevadm hwdb --update
# udevadm trigger
okuokuokuoku

勝手にsleepに入る

ォゥどういう事だよ

とりあえずGnome側の設定で切っておく。

GDMの設定も変える

https://zenn.dev/link/comments/a49d277d450a8c

ユーザー gdmnologin なのでシェルを手動でoverrideする必要がある。

# su -s /bin/sh gdm

あとは同様に設定を変える:

$ dbus-launch gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout 0
$ dbus-launch gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'nothing'