🔤

en_USで頑張るArch Linux日記 3日目: Windowsっぽく

に公開

en_USで頑張るArch Linux日記の3日目です。

Hyprlandのおかげでタイリング的にはなりましたが、筆者のように毒された身体にはちょっとつらいです。

なので、できるだけWindowsの動作に寄せていきます。

Alt+Tabでウィンドウ切り替え

タイリングで最初に違和感を覚えるのはやはりこれではないでしょうか。

まず、hyprswitchを入れます。

paru -S hyprswitch
   # もしくは
yay -S hyprswitch

あとは、Exampleにある設定例をコピペするだけで似たような動作にできるはずです。

~/.config/hypr/conf/custom.conf
# Keyboard (reverse = shift)
exec-once = hyprswitch init --show-title &
$key = tab
$reverse = shift

bind = alt, $key, exec, hyprswitch gui --mod-key alt_l --key $key --close mod-key-release --reverse-key=mod=$reverse && hyprswitch dispatch
bind = alt $reverse, $key, exec, hyprswitch gui --mod-key alt_l --key $key --close mod-key-release --reverse-key=mod=$reverse && hyprswitch dispatch -r

# use the if switching to the next window with the opening keypress is unwanted
#bind = alt, $key, exec, hyprswitch gui --mod-key alt_l --key $key --close mod-key-release --reverse-key=mod=$reverse
#bind = alt $reverse, $key, exec, hyprswitch gui --mod-key alt_l --key $key --close mod-key-release --reverse-key=mod=$reverse

おそらく上記の設定を使うのが最もWindowsに近い動作になるでしょう。

下記の設定は逆順にウィンドウをたどるときにShift + Tabの同時押しではなく、バッククォートを使います。
USキーボードのバッククォートはTabキーの上にあるので、USキーボードを使っている人にとってはこちらのほうが楽かもしれません。

~/.config/hypr/conf/custom.conf
# Keyboard recent (reverse = grave / ` )
exec-once = hyprswitch init --show-title &
$hs_key = tab
$hs_rev = grave

bind = alt, $hs_key, exec, hyprswitch gui --mod-key alt_l --key $hs_key --close mod-key-release --reverse-key=key=$hs_rev --sort-recent && hyprswitch dispatch
bind = alt $hs_rev, $hs_key, exec, hyprswitch gui --mod-key alt_l --key $hs_key --close mod-key-release --reverse-key=key=$hs_rev --sort-recent && hyprswitch dispatch -r

ひょっとすると、これらの設定を使うとAlt+Tabをすばやく繰り返したときに切替時のGUIが出たままになるかもしれません。しかしこれはWindowsでも同じです。

別解として、切替時のGUIを表示しない設定例もあります。

ただ、GUIのときのようにそのままでは思った動作にならないので、ひと工夫する必要がありそうです。

ウィンドウのフォーカスとスクロールホイール

次に気になるのはマウスではないかと思います。

これもWindowsに似せるようにしてみます。

今の状態ではマウスポインタの下にあるウィンドウにフォーカスが当たります。
言い換えると、マウスポインタを動かすことでどのウィンドウをアクティブにするか選択出来るということです。

これが便利な場面もありますが、ウィンドウ切り替えをAlt+Tabでやるようになると、マウスに手が触れたときに意図せずウィンドウのフォーカスが移動して誤入力の原因になりがちです。

follow_mouseという設定項目があります。

設定項目 動作
follow_mouse -1
0
1
Windowsに似た動作
マウスポインタに追従しない
マウスポインタに追従する(デフォルト)

これを0にすると、マウスでフォーカス移動しなくなりますが、別の問題が発生します。Windowsではスクロールホイールを回すとウィンドウがどこにフォーカスされていようとマウスポインタの下にあるウィンドウをスクロールしますが、この動作ができなくなるのです。

-1にすると、ウィンドウのフォーカスがマウスに追従しなくなり、かつ、スクロールホイールを動かしたときはマウスポインタの下にあるウィンドウをスクロールできるようになります。Windowsユーザにとっては、おそらくこの動きが一番しっくり来るのではないでしょうか。

~/.config/hypr/conf/custom.conf
input {
      :
    follow_mouse = -1
      :
}

Refer to: https://www.reddit.com/r/hyprland/comments/1eglzzf/mouse_scroll_but_not_focus_tiles/

Win キーでApp launcher起動

WindowsではWinキー使う派ですか?
筆者はWinキー単押しで開くスタートメニューをランチャー代わりに使っています。

Hyprlandでこの動作をパクるには、キーから指が離されたのを検知するbindrを使うといいようです。

~/.config/hypr/conf/custom.conf
bindr = SUPER_L, SUPER_L, exec, pkill rofi || rofi -show drun -replace -i    # Open application launcher

WinキーはHyprlandではSUPER_Lと書きます。
Win + 他のキーではなく、Winキーを単押しした後のリリースという表現をするには上記のようにSUPER_L, SUPER_L,と2つ並べて書きます。

WindowsではさらにWin + 他のキーでデバイスマネージャーやらなんやかんや開けますが、筆者はランチャーが開ければ十分なので今はこれだけにしています。

https://wiki.hyprland.org/Configuring/Binds/

→4日目

Discussion