🚅
爆速!デスクトップアプリの切り替え!(Ubuntu対象)
どうも、最近Ubuntuデビューをしました効率厨です🤖
はじめに
以前このような記事を書きました
Before | After |
---|---|
Afterのように「特定のキーを叩くことで、キーに紐づくデスクトップアプリへ切り替えを行う」といったものです
ただ、当時使用していたツールであるhammerspoonはMac限定だったため、
Ubuntuでも同じことを実現するぜというモチベです
やること
- アプリの表示/非表示を行うScriptを作る
- それをショートカットキーの入力時に実行させる(アプリの数だけ定義)
設定
Scriptの保存
ローカルに以下のshell scriptを保存してください
#!/bin/bash
APP_NAME=$1
WINDOW_ID=$(xdotool search --onlyvisible --class "$APP_NAME" | head -n 1)
if [ -z "$WINDOW_ID" ]; then
$APP_NAME &
exit 0
fi
IS_HIDDEN=$(xprop -id "$WINDOW_ID" | grep "_NET_WM_STATE_HIDDEN")
if [ -n "$IS_HIDDEN" ]; then
xdotool windowactivate "$WINDOW_ID"
else
ACTIVE_WINDOW=$(xprop -root _NET_ACTIVE_WINDOW | awk '{print $5}')
HEX_WINDOW_ID=$(printf "0x%x\n" "$WINDOW_ID")
if [ "$HEX_WINDOW_ID" != "$ACTIVE_WINDOW" ]; then
xdotool windowactivate "$WINDOW_ID"
else
xdotool windowminimize "$WINDOW_ID"
fi
fi
自分の場合はこのような配置です
/home/$USER/scripts/toggle_spp.sh
内容
実行する際は、引数に対象とするアプリケーション名を指定します(Slackを例に)
./toggle_app.sh slack
処理としては、scriptの上から順に以下の条件分岐です
- アプリが
- 未起動であれば起動する
- 起動中であれば
- アプリが最小化中であれば表示
- アプリが背面にいるなら前面に表示
- アプリが前面にいるなら非表示
カスタムショートカットの定義
「設定 > キーボード > カスタムショートカット」に移動
以下のように、名前・実行するコマンド・キーを設定
※yoko
は筆者のユーザ名です
筆者の例
冒頭に貼ったMacの時とほぼ同じですが、
h, j, k, l, space
に主力アプリを設定しています
あるあるですが、特定のキーだけ設定しても反応しない場合は
デフォルトのキーバインドと衝突している可能性があります
dconf-editor
などを駆使して、デフォルト設定を削除しちゃいましょう
tips
アプリのwindowの開閉アニメーションがあると、瞬間的な切り替えを妨げると思います
煩わしい方は、以下のコマンドでアニメーションを無効にしちゃいましょう
gsettings set org.gnome.desktop.interface enable-animations false
お疲れ様でした
快適な環境で楽しく仕事しましょう🌹
Discussion