Tag: Kde

Wayland desktopでキーバインドをOS横断に寄せる設計メモ

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にするkeydsession / compositor 非依存にしたい
Hyper風の修飾キーkeyd または keyboard firmware入力層で完結させたい
アプリ起動.desktop entry / compositor shortcutdesktop environment の仕組みに乗せる
ウィンドウのhalf snapKWin / labwc native actionWayland では compositor が正規の管理者
物理ディスプレイ間移動KWin / labwc native actionmonitor layout を compositor が持つ
同一アプリ内のwindow cyclecompositor native action外部プロセスで window list を触らない

KDE Plasma Wayland

KDE Plasma Wayland では、KWin の global shortcut と .desktop entry を中心にする。

Read more...

Ubuntu Studio(KDE)の日本語入力設定メモ

現行方針

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-gtk3ibus-daemon --xim --panel disableibus-x11ibus-portalibus-engine-mozcmozc_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_SPACEZENKAKUHANKAKU
  • ~/.config/fcitx/profile
    • 現在のIM: mozc
    • 有効なIM: fcitx-keyboard-usmozc

ログ

  • ~/.config/fcitx/log/crash.log
    • fcitx: BadWindow (invalid Window parameter) が記録されている。
  • ~/.xsession-errors
    • fcitx が autostart され、各アドオン設定がロードされているログを確認。
    • QXcbConnection: XCB error: 3 (BadWindow) が大量に記録されているが、fcitx由来かは断定できない。
  • ~/.local/share/sddm/xorg-session.log
    • fcitx に関する記録は見当たらなかった。
  • journalctl はこの環境でログが見つからない (No journal files were found.)。

ibusへ寄せる場合のfish設定

ibus を使う場合は、QT_IM_MODULEGTK_IM_MODULE を明示的に設定しない。 ibus 側のエラーで「QT_IM_MODULE と GTK_IM_MODULE の環境変数を未定義にしてください。そして ‘ibus-daemon –panel disable’ は ibus-ui-gtk3 コンポーネントの子プロセスとして起動されるべきです。」と出る場合、シェル設定やデスクトップセッションの環境に古いIM設定が残っていないか確認する。

Read more...

GUIツールのショートカットを統一していきたい

背景

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...