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」で指定する。

この指定はホームディレクトリの指定として~(チルダ)を使用できる。

左右の仮想デスクトップに移動したい

私はそれぞれ

  • Command + L
  • Command + H に設定した。

Linux KDE

KDEの場合、システム設定 -> ショートカット -> KWin に移動し、

  • 一つ右のデスクトップに移動
  • 一つ左のデスクトップに移動 を探す。

macOS

システム環境設定 -> キーボード -> ショートカット -> ミッションコントロール に移動し、

  • 左のスペースに移動
  • 右のスペースに移動 を探す。

Commandキー(LinuxではMetaキーと呼ぶ)で仮想デスクトップを切り替えたい

それぞれCommand + Y から P に割り当てる。

Linux KDE

KDEの場合、システム設定 -> ショートカット -> KWin に移動し、 「デスクトップ に切り替え」を探す。

下記は違うので注意

  • Window to Desktop
  • スクリーン

macOS

システム環境設定 -> キーボード -> ショートカット -> ミッションコントロール に移動し、 [デスクトップ1に切り替え]から[デスクトップ5に切り替え]を探す。

タイル表示で画面を分割したい

画面を縦に分割したい場合

KDEの場合、システム設定 -> ショートカット -> KWin に移動し、

  • Quick Tile Window to the Bottom: Meta + Ctrl + j

  • Quick Tile Window to the Top: Meta + Ctrl + k

  • 下記は私の環境では動作しなかった

    • Bottom あるいは Top の Left がどの配置を指すか分かりにくい
    • Quick Tile Window to the Bottom Left
    • Quick Tile Window to the Top Left

ウィンドウを仮想デスクトップ間で移動したい

Linux KDE

KDEの場合、システム設定 -> ショートカット -> KWin に移動し、

  • ウィンドウを一つ右のデスクトップへ
  • ウィンドウを一つ左のデスクトップへ を探す。

私はそれぞれ

  • Command + Ctrl + L
  • Command + Ctrl + H に設定していたが、ウィンドウをタイルで表示するキーバインドにした

また、ウィンドウを指定した番号の仮想デスクトップに飛ばせるように下記設定をした。

  • Window to Desktop それぞれ0〜4を
  • Window to Desktop 0
    • Command + Ctrl + y
  • Window to Desktop 1
    • Command + Ctrl + u
  • Window to Desktop 2
    • Command + Ctrl + i
  • Window to Desktop 3
    • Command + Ctrl + o
  • Window to Desktop 4
    • Command + Ctrl + p とした。

macOS

ウィンドウタイトルバーをドラッグアンドドロップして、移動したいデスクトップへ移動させる。

ウィンドウを物理デスクトップ間で移動したい

Linux KDE

複数の物理的なディスプレイを接続している場合に移動したい。

  • ウィンドウを右に移動
    • Command + Shift + L
  • ウィンドウを左に移動
    • Command + Shift + H

macOS

hammerspoonで設定する。

-- ウィンドウを左へ
hs.hotkey.bind({'cmd', 'shift'}, 'h', function()
  spoon.WinWin:moveToScreen("left")
  spoon.WinWin:moveAndResize("maximize")
end)

-- ウィンドウを下へ
hs.hotkey.bind({'cmd', 'shift'}, 'j', function()
  spoon.WinWin:moveToScreen("down")
  spoon.WinWin:moveAndResize("maximize")
end)

-- ウィンドウを上へ
hs.hotkey.bind({'cmd', 'shift'}, 'k', function()
  spoon.WinWin:moveToScreen("up")
  spoon.WinWin:moveAndResize("maximize")
end)

-- ウィンドウを右へ
hs.hotkey.bind({'cmd', 'shift'}, 'l', function()
  spoon.WinWin:moveToScreen("right")
  spoon.WinWin:moveAndResize("maximize")
end)

-- ウィンドウを左半分
hs.hotkey.bind({'cmd', 'ctrl'}, 'h', function()
  spoon.WinWin:moveAndResize("halfleft")
end)

-- ウィンドウを下半分
hs.hotkey.bind({'cmd', 'ctrl'}, 'j', function()
  spoon.WinWin:moveAndResize("halfdown")
end)

-- ウィンドウを上半分
hs.hotkey.bind({'cmd', 'ctrl'}, 'k', function()
  spoon.WinWin:moveAndResize("halfup")
end)

-- ウィンドウを右半分
hs.hotkey.bind({'cmd', 'ctrl'}, 'l', function()
  spoon.WinWin:moveAndResize("halfright")
end)

ファイラを起動したい

Linux KDE

macOS

hammerspoonで設定する。

-- macOS の Finder を新しく開く
hs.hotkey.bind({'cmd'}, 'e', function()
  hs.application.launchOrFocus("Finder")
  spoon.WinWin:moveAndResize("maximize")
end)

特定アプリを起動、アクティブにしたい

Linux KDE

macOS

-- WezTerm にフォーカス
hs.hotkey.bind({'cmd'}, 'n', function()
  hs.application.launchOrFocus("WezTerm")
  spoon.WinWin:moveAndResize("maximize")
end)

-- Obsidian にフォーカス
hs.hotkey.bind({'cmd'}, ',', function()
  hs.application.launchOrFocus("Obsidian")
  spoon.WinWin:moveAndResize("maximize")
end)

-- Firefox にフォーカス
hs.hotkey.bind({'cmd'}, 'm', function()
  hs.application.launchOrFocus("Firefox")
  spoon.WinWin:moveAndResize("maximize")
end)

-- Slack にフォーカス
hs.hotkey.bind({'cmd'}, 'g', function()
  hs.application.launchOrFocus("Slack")
  spoon.WinWin:moveAndResize("maximize")
end)

コピー&ペーストをCommandで行う

Linux KDE

Linuxの場合、ここのアプリケーションで上書きされる(個別に設定を持っているケース)が多い。 対象は広く変更される訳ではなくKDEに限られるようだ。

KDEの場合、システム設定 -> ショートカット の下の方にある『Common Actions』の「Edit」を選択

  • Copy
  • Cut
  • Paste
  • Select All
  • Undo を変更