i3wm:二重修飾キーを持つ10個を超えるワークスペース?


11

最近、私はそれを使い始め、i3wmそれに恋に落ちました。ただし、気になるのは、10個を超えるワークスペースを制御することです。

ワークスペース1から9(および10の間)$mod+1$mod+9切り替えるための私の構成では、$mod+010個のワークスペースでは不十分な場合があります。

現時点では私は20にワークスペース11に手を差し伸べる$mod+mod1+1$mod+mod1+0、すなわち打撃mod+alt+number。もちろん、これは問題なく機能しますが、キーを簡単に押すことができないため、そのようにワークスペースを切り替えるのはかなり面倒です。さらに、11から20のワークスペース間でアプリケーションを移動するにはmod+shift+alt+number->醜い必要があります。

私のVimバインディングでは(プラグインがたくさんあります)modkey + r、プラグイン1やmodkey + modkey + rプラグイン2のように、二重修飾子のショートカットを使用し始めました。

同様のことができますi3wmか?

では、10以上のワークスペースをどのように利用しi3wmますか?他の解決策はありますか?


どんな種類のキーボードレイアウトがあるのか​​わかりませんが、上下の数字の右下の一部またはすべてのキーを使用できますか?つまり、$ mod + qはワークスペース11などです。もちろん、使用中のキーを再割り当てする必要があります。
エアハフ

はい。ただし、これにより、i3アクションに使用できるショートカットの数が効果的に削減されます。$mod + $mod + 1ワークスペース11のようなものが欲しいので、modキーをすばやくダブルキーで押すと、数字キー1、2、...、9、0でワークスペース11〜20に直接進むことができます。Vimこの動作があります:leader + rは以外のアクションにマップされているためleader + leader + r、リーダーキーを1回または2回押すだけで、同じホットキーで異なるアクションをトリガーできます。
ダニエル451

回答:


14

i3vimのようなキーシーケンスを実際にはサポートしていません。すべてのキーバインディングは、個別の(したがってno Shift+Shift)修飾子のオプションのリストが前に付いた単一のキーで構成されます。そして、すべての修飾キーは、メインキーが押されたときに押される必要があります。

そうは言っても、修飾子の長いリストにバインドせずに多くのワークスペースを作成するには、主に2つの方法があります。

1.外部プログラムでワークスペースを動的に作成してアクセスする

すべてのワークスペースにショートカットを定義する必要はありません。たとえば、プログラムを使用workspace NEW_WSしてi3にを送信することで、その場でそれらを作成できますi3-msg

i3-msg workspace NEW_WS
i3-msg move container to workspace NEW_WS

i3にはi3-input、小さな入力フィールドを開き、指定された入力をパラメーターとしてコマンドを実行するコマンドも付属しています

i3-input -F 'workspace %s' -P 'go to workspace: '
i3-input -F 'move container to workspace %s' -P 'move to workspace: '

これらの2つのコマンドをショートカットにバインドすると、ショートカットを押して目的のワークスペースの名前(または番号)を入力するだけで、任意の数のワークスペースにアクセスできます。(番号付きのワークスペースのみを使用する場合workspace number %sは、単にの代わりに使用したい場合がありますworkspace %s

2.キーバインディングモード内でワークスペースを単純なショートカットに静的にバインドします

あるいは、より静的なアプローチの場合、i3構成でモードを使用できます。フォーカスとワークスペースへの移動に個別のモードを使用できます。

set $mode_workspace "goto_ws"
mode $mode_workspace {
    bindsym 1 workspace 1; mode "default"
    bindsym 2 workspace 2; mode "default"
    # […]
    bindsym a workspace a; mode "default"
    bindsym b workspace b; mode "default"
    # […]
    bindsym Escape mode "default"
}
bindsym $mod+w mode $mode_workspace

set $mode_move_to_workspace "moveto_ws"
mode $mode_move_to_workspace {
    bindsym 1 move container to workspace 1; mode "default"
    bindsym 2 move container to workspace 2; mode "default"
    # […]
    bindsym a move container to workspace a; mode "default"
    bindsym b move container to workspace b; mode "default"
    # […]
    bindsym Escape mode "default"
}
bindsym $mod+shift+w mode $mode_move_to_workspace

または、単一のモード内で焦点を合わせて移動するための個別のバインディングを持つこともできます。

set $mode_ws "workspaces"
mode $mode_ws {
    bindsym 1 workspace 1; mode "default"
    bindsym Shift+1 move container to workspace 1; mode "default"
    bindsym 2 workspace 2; mode "default"
    bindsym Shift+2 move container to workspace 2; mode "default"
    # […]
    bindsym a workspace a; mode "default"
    bindsym Shift+a move container to workspace a; mode "default"
    bindsym b workspace b; mode "default"
    bindsym Shift+b move container to workspace b; mode "default"
    # […]
    bindsym Escape mode "default"
}
bindsym $mod+shift+w mode $mode_move_to_workspace

どちらの例でも、workspaceor moveコマンドはと連鎖しているmode "default"ため、i3は各コマンドの後に自動的にデフォルトのキーバインディングマップに戻ります。


1

これに対する私の解決策は、より多くのキーを使用することです:

set $ws0 "0:`:www"
set $ws1 "1:1"
set $ws2 "2:2"
set $ws3 "3:3:fm"
set $ws4 "4:4"
set $ws5 "5:5"
set $ws6 "6:6:dev"
set $ws7 "7:7"
set $ws8 "8:8"
set $ws9 "9:9"
set $ws10 "10:0:music"
set $ws11 "11:-:jd"
set $ws12 "12:=:comm"
set $ws13 "13:B"
set $ws14 "14:H"
set $ws15 "15:E"
set $ws16 "16:I"
set $ws17 "17:D:upwork"


bindsym $mod+grave workspace $ws0
bindsym $mod+1 workspace $ws1
bindsym $mod+2 workspace $ws2
bindsym $mod+3 workspace $ws3
bindsym $mod+4 workspace $ws4
bindsym $mod+5 workspace $ws5
bindsym $mod+6 workspace $ws6
bindsym $mod+7 workspace $ws7
bindsym $mod+8 workspace $ws8
bindsym $mod+9 workspace $ws9
bindsym $mod+0 workspace $ws10
bindsym $mod+minus workspace $ws11
bindsym $mod+equal workspace $ws12
bindsym $mod+BackSpace workspace $ws13
bindsym $mod+Home workspace $ws14
bindsym $mod+End workspace $ws15
bindsym $mod+Insert workspace $ws16
bindsym $mod+Delete workspace $ws17

for_window [class="Upwork"] move container to workspace $ws17
for_window [class="Spotify"] move container to workspace $ws10
for_window [class="Brave-browser"] move container to workspace $ws0
for_window [class="TelegramDesktop"] move container to workspace $ws12
for_window [class="jetbrains-pycharm"] move container to workspace $ws6
for_window [class="Caja"] move container to workspace $ws3
for_window [class="JDownloader"] move container to workspace $ws11
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.