i3wm: lebih dari 10 ruang kerja dengan kunci pengubah ganda?

11

Baru-baru ini, saya mulai menggunakan i3wmdan jatuh cinta dengannya. Namun, satu hal yang mengganggu saya: mengendalikan lebih dari 10 ruang kerja.

Dalam konfigurasi saya $mod+1untuk $mod+9beralih antara ruang kerja 1 hingga 9 (dan $mod+0untuk 10), tapi terkadang 10 ruang kerja tidak cukup.

Saat ini aku menjangkau ruang kerja 11-20 dengan $mod+mod1+1untuk $mod+mod1+0, yaitu memukul mod+alt+number. Tentu saja ini berfungsi tanpa masalah, tetapi cukup merepotkan untuk berganti ruang kerja seperti itu, karena tombol tidak mudah dipukul. Selain itu, memindahkan aplikasi antara ruang kerja 11 hingga 20 harus mod+shift+alt+number-> jelek.

Di Vimbinding saya (saya punya banyak plugin) saya mulai menggunakan pintasan pengubah ganda, seperti modkey + runtuk Plugin 1 dan modkey + modkey + runtuk Plugin 2. Dengan cara ini saya dapat mengikat setiap tombol dua kali dan menekan tombol mod dua kali mudah dan cepat.

Bisakah saya melakukan sesuatu yang serupa i3wm?

Bagaimana Anda memanfaatkan lebih dari 10 ruang kerja i3wm? Ada solusi lain?

daniel451
sumber
Saya tidak tahu apa jenis tata letak keyboard yang Anda miliki, tetapi bisakah Anda menggunakan beberapa / semua tombol di bawah ini dan di sebelah kanan angka di bagian atas? yaitu $ mod + q adalah workspace 11, dll. Tentu saja Anda harus menugaskan kembali salah satu kunci yang sedang digunakan.
airhuff
Ya, tetapi ini secara efektif mengurangi jumlah pintasan yang tersedia untuk i3tindakan. Lebih disukai, saya ingin memiliki sesuatu seperti $mod + $mod + 1untuk workspace 11, sehingga menekan cepat dua kali tombol mod secara langsung memungkinkan saya untuk pergi ke workspace 11-20 dengan tombol angka 1, 2, ..., 9, 0. In VimSaya memiliki perilaku ini: leader + rdipetakan ke tindakan lain selain leader + leader + r, jadi saya dapat memicu tindakan berbeda dengan hotkey yang sama hanya dengan menekan tombol pemimpin sekali atau dua kali.
daniel451

Jawaban:

14

i3 tidak benar-benar mendukung urutan kunci seperti vim . Penjilidan kunci apa pun terdiri dari satu kunci yang didahului oleh daftar opsional Shift+Shiftpengubah yang berbeda (jadi tidak ). Dan semua modifier perlu ditekan pada saat tombol utama ditekan.

Yang sedang berkata, ada dua cara utama untuk memiliki banyak ruang kerja tanpa harus mengikat mereka ke daftar panjang pengubah:

1. Secara dinamis membuat dan mengakses ruang kerja dengan program eksternal

Anda tidak harus menetapkan pintasan untuk setiap ruang kerja, Anda bisa membuatnya dengan cepat dengan mengirimkan a workspace NEW_WSke i3 , misalnya dengan i3-msgprogram:

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

i3 juga dilengkapi dengan i3-inputperintah, yang membuka bidang input kecil kemudian menjalankan perintah dengan input yang diberikan sebagai parameter

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

Ikat kedua perintah ini ke pintasan dan Anda dapat mengakses sejumlah ruang kerja yang sewenang-wenang hanya dengan menekan pintasan lalu memasukkan nama (atau nomor) ruang kerja yang Anda inginkan. (Jika Anda hanya bekerja dengan ruang kerja bernomor, Anda mungkin ingin menggunakan workspace number %sbukan hanya workspace %s)

2. Mengikat ruang kerja secara statis ke Pintasan sederhana dalam mode pengikatan utama

Atau, untuk pendekatan yang lebih statis, Anda dapat menggunakan mode dalam konfigurasi i3 Anda . Anda dapat memiliki mode terpisah untuk fokus dan pindah ke ruang kerja:

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

Atau Anda dapat memiliki binding terpisah untuk fokus dan bergerak dalam mode tunggal:

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

Dalam kedua contoh perintah workspaceatau movedirantai dengan mode "default", sehingga i3 secara otomatis kembali ke peta pengikatan kunci default setelah setiap perintah.

Adaephon
sumber
1

Solusi saya untuk ini hanya menggunakan lebih banyak kunci:

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
Lukas Elsner
sumber