Posted:
| Tags:
interface,
kde,
keyboard,
labwc,
wayland
Wayland desktopでキーバインドをOS横断に寄せる設計メモ
目的
macOS、Windows、Linux で、アプリ起動、ウィンドウ移動、タイル配置、仮想デスクトップ移動の操作感を近づけたい。
ただし Linux Wayland では、X11 時代のように外部プロセスから任意ウィンドウを横断操作する前提にしていない。
Wayland では compositor が入力とウィンドウ管理の権限境界になる。
このため、キーボードの低レイヤ変換とウィンドウ操作を分ける。
一旦考えた基本方針
- CapsLock/Ctrl や layer 的なキー変換は
keyd に寄せる - アプリ起動、ウィンドウ移動、最大化、タイル配置は compositor / window manager 側に寄せる
- KDE Plasma Wayland では KWin global shortcut と
.desktop entry を使う - labwc では
~/.config/labwc/rc.xml の native action を使う - package install、service enable、設定配置は Ansible などの構成管理に寄せる
keyd は「キーを別のキーとして見せる」層に留める。
アプリ起動やウィンドウ制御まで keyd でやろうとすると、Wayland の compositor 境界を迂回する設計になりやすい。
責務分離
| 領域 | Linuxでの担当 | 理由 |
|---|
| CapsLockをCtrlにする | keyd | session / compositor 非依存にしたい |
| Hyper風の修飾キー | keyd または keyboard firmware | 入力層で完結させたい |
| アプリ起動 | .desktop entry / compositor shortcut | desktop environment の仕組みに乗せる |
| ウィンドウのhalf snap | KWin / labwc native action | Wayland では compositor が正規の管理者 |
| 物理ディスプレイ間移動 | KWin / labwc native action | monitor layout を compositor が持つ |
| 同一アプリ内のwindow cycle | compositor native action | 外部プロセスで window list を触らない |
KDE Plasma Wayland
KDE Plasma Wayland では、KWin の global shortcut と .desktop entry を中心にする。
Read more...Posted:
| Categories:
input-method
| Tags:
fcitx,
ibus,
kde,
mozc,
ubuntu-studio
現行方針
Ubuntu Studio(KDE)環境の日本語入力は、現状 fcitx ではなく ibus + ibus-mozc へ寄せる。
fish から起動するプロセスでは、~/ghq/github.com/tin-machine/fishConfig/config.fish 側で次の方針にする。
set -x XMODIFIERS "@im=ibus"
set -e QT_IM_MODULE
set -e GTK_IM_MODULE
set -e DefaultIMModule
2026-05-15 の確認では、プロセスは ibus-ui-gtk3、ibus-daemon --xim --panel disable、ibus-x11、ibus-portal、ibus-engine-mozc、mozc_server が動いており、fcitx は常駐していない。
im-config のログ上も次の形になっている。
GTK_IM_MODULE='' QT_IM_MODULE='' CLUTTER_IM_MODULE='' SDL_IM_MODULE='' XMODIFIERS='@im=ibus'
このため、旧 fcitx 前提の起動直後不調は現行設定の通常確認対象から外す。ただし ibus-ui-gtk3 の warning / coredump はログに残ることがあるため、実際に日本語入力が効かない場合だけ再調査する。
旧事象の要約
- Ubuntu Studio(KDE)環境で、ログイン直後は日本語入力ができない。
pkill fcitx && sleep 1 && fcitx & の再起動を2回行うと使えるようになる。- 一度使えるようになると、その後は安定して動作する。
- この事象は fcitx 前提の古い状態として扱う。
旧 fcitx 状態で確認していた設定/ログ
設定
~/.config/fcitx/config- 入力切替キー:
CTRL_SPACE と ZENKAKUHANKAKU
~/.config/fcitx/profile- 現在のIM:
mozc - 有効なIM:
fcitx-keyboard-us と mozc
ログ
~/.config/fcitx/log/crash.logfcitx: BadWindow (invalid Window parameter) が記録されている。
~/.xsession-errorsfcitx が autostart され、各アドオン設定がロードされているログを確認。QXcbConnection: XCB error: 3 (BadWindow) が大量に記録されているが、fcitx由来かは断定できない。
~/.local/share/sddm/xorg-session.logjournalctl はこの環境でログが見つからない (No journal files were found.)。
ibusへ寄せる場合のfish設定
ibus を使う場合は、QT_IM_MODULE と GTK_IM_MODULE を明示的に設定しない。
ibus 側のエラーで「QT_IM_MODULE と GTK_IM_MODULE の環境変数を未定義にしてください。そして ‘ibus-daemon –panel disable’ は ibus-ui-gtk3 コンポーネントの子プロセスとして起動されるべきです。」と出る場合、シェル設定やデスクトップセッションの環境に古いIM設定が残っていないか確認する。
Read more...Posted:
| Categories:
gui
| Tags:
gui,
kde,
mac
背景
macOSとLinuxのキーバインドを近づけていきたい。
macOSはHammerspoonで
LinuxはKDEで設定していく.
Firefox、アクティブになっていなかったらをフロントに出したい
Linux
wmctrlをインストールした上で下記スクリプトを用意
#!/bin/bash
proc="Firefox" # プロセス名
cmd="firefox" # 起動するコマンド名
# 現在のアクティブなワークスペースを取得
current_workspace=$(wmctrl -d | grep '*' | awk '{print $1}')
# 現在のワークスペースにあるウィンドウIDを取得
window_ids=$(wmctrl -l | grep ${proc} | awk '{print $1}')
found_in_workspace=false
# 現在のワークスペースにあるFirefoxのウィンドウをアクティブにする
for id in $window_ids; do
window_workspace=$(wmctrl -lG | grep $id | awk '{print $2}')
if [ "$window_workspace" == "$current_workspace" ]; then
# ウィンドウをアクティブにする
wmctrl -i -a $id
# ウィンドウを最大化
wmctrl -ir $id -b add,maximized_vert,maximized_horz
found_in_workspace=true
break
fi
done
# 現在のワークスペースにウィンドウがない場合、新しいウィンドウを開く
if ! $found_in_workspace; then
$cmd &
echo "新しい${proc}ウィンドウを開きました。"
fi
KDEのシステム設定 -> ショートカット -> カスタムショートカット に追加。
私は「自分で設定」というショートカットのフォルダを作った上で、その中にショートカットを追加している。
フォルダの上で「New」「グローバルショートカット」「コマンド/URL」で指定する。
Read more...