Kombinasi tombol untuk beralih di antara jendela aplikasi di semua viewports

11

Alt- `Digunakan untuk berganti antara jendela aplikasi di viewport saat ini di Unity.

Apakah ada kombinasi tombol lain untuk beralih di antara jendela aplikasi di semua viewports?

Saya tidak ingin mengubah perilaku default Alt- `, yang beralih di antara jendela aplikasi di viewport saat ini.

Saya menggunakan Ubuntu 14.04 dan Unity.

Kadir
sumber
Menurut sudut pandang yang Anda maksud adalah Workspace?
Tim
2
@Tim
Jacob Vlijm

Jawaban:

7

Terinspirasi oleh jawaban Pineau, saya menemukan trik kotor untuk menyelesaikannya: tetap Alt+ `untuk beralih di antara jendela aplikasi dalam satu viewport, dan (misalnya) Alt+ 1untuk beralih di antara jendela aplikasi di semua viewports.

Kelemahan kosmetik minor adalah responsifnya sedikit kurang akurat, karena pengaturan membutuhkan sepersekian detik untuk berubah. Namun dalam Praktek, Anda tidak akan menyadarinya.

  1. pasang xdotool:

    sudo apt-get install xdotool
    
  2. Salin skrip berikut ke file kosong dan simpan sebagai switch.sh

    #!/bin/bash
    
    dconf write /org/compiz/profiles/unity/plugins/unityshell/alt-tab-bias-viewport false
    sleep 0.2
    xdotool keydown alt key 0x60
    dconf write /org/compiz/profiles/unity/plugins/unityshell/alt-tab-bias-viewport true
    sleep 1
    
  3. menetapkan kombinasi tombol untuk menjalankan script: System Preferences > Keyboard > Shortcuts > Custom Shortcuts. Saya memilih Alt+ 1, karena dekat dengan yang lain.

    Sekarang Anda dapat menggunakan Alt+ 1untuk beralih di antara semua jendela (misalnya) gedit:

    masukkan deskripsi gambar di sini

    atau Alt+ `untuk beralih di antara jendela gedit hanya dari ruang kerja arus:

    masukkan deskripsi gambar di sini

catatan:

  1. Dalam skrip, tombol di atas Tabdiatur ke key 0x60. Ini mungkin berbeda pada lauyout lainnya. Jika tidak bekerja, jalankan di terminal xev, lalu tekan Return, lalu tab di atas. Di output, cari string seperti (keysym 0x60, grave). Nilai keysym adalah nilai yang Anda butuhkan di baris (script-):

    xdotool keydown alt key 0x60
    
  2. Nilai-nilai sleep 0.2dan sleep 1membuat skrip bekerja dengan baik pada sistem saya, tetapi mereka mungkin dikenakan optimasi untuk sistem yang lebih cepat (mengurangi).

Opsi lanjutan

Demikian pula, Anda dapat mengatur kombinasi tombol untuk beralih di antara semua jendela aplikasi di semua viewports yang akan menjadi skrip:

#!/bin/bash

dconf write /org/compiz/profiles/unity/plugins/unityshell/alt-tab-bias-viewport false
sleep 0.2
xdotool keydown alt key 0xff09
dconf write /org/compiz/profiles/unity/plugins/unityshell/alt-tab-bias-viewport true
sleep 1

Jika Anda menetapkan misalnya Alt+ Quntuk ini, Anda memiliki set bagus semua opsi:

Alt+ ` Beralih antara jendela aplikasi saat ini di viewport saat ini

Alt+ 1 Beralih di antara jendela aplikasi saat ini di semua viewports

Alt+ Tab Beralih di antara semua jendela aplikasi pada viewport saat ini

Alt+ Q Beralih di antara semua jendela aplikasi di semua viewports

masukkan deskripsi gambar di sini

Alt+ Tab: Beralih di antara semua jendela aplikasi pada viewport saat ini

masukkan deskripsi gambar di sini

Alt+ Q: Beralih di antara semua jendela aplikasi di semua viewports

Yakub Vlijm
sumber
5

Solusi generik menggunakan wmctrl


Gambaran

Script berikut harus kompatibel dengan semua window manager yang sesuai dengan EWMH (mis. Xfwm4, openbox, kwin, compiz ...). Menggunakan wmctrldan xprop, yang dapat diinstal dengan:

sudo apt-get install x11-utils wmctrl

Instalasi

Salin dan simpan bagian berikut sebagai simple-window-switcher:

#!/bin/bash

# based on a script by Robert Steiniger
# (http://lars.st0ne.at/blog/switch%20between%20windows%20within%20the%20same%20application)

Usage="
  Title:        simple-window-switcher 0.1
  Description:  switch between all windows of active application
  Author:       Copyright Glutanimate 2014 (https://github.com/Glutanimate)
  License:      GNU GPLv3
  Usage:        $(basename "$0") [-g|-l|-h]
                -g: global window switching (across all workspaces)
                -l: local window switching (current workspace)
                -h: display this help message

                If no argument is provided window switching will be set to global.
"

while getopts "lgh" OPTIONS; do
  case $OPTIONS in
    l ) Fields="3-4"
        ;;
    g ) Fields="4"
        ;;
    h ) echo "$Usage"
        exit 0
        ;;
   \? ) echo "$Usage"
        exit 1
        ;;
  esac
done

ActiveWinID="$(xprop -root | sed -n 's/_NET_ACTIVE_WINDOW(WINDOW): window id # 0x//p')"
# fields 3-4: <desktop number> <window class>
ActiveWinClass="$(wmctrl -xl | grep "$ActiveWinID" | cut -d" " -f${Fields})"
WindowList="$(wmctrl -xl | grep "$ActiveWinClass" | cut -d" " -f1)"
NextWindow="$(echo "$WindowList" | grep -A1 "$ActiveWinID" | sed -n 2p)"

if [[ -z "$NextWindow" ]]; then
  NextWindow="$(echo $WindowList | head -n 1)"
fi

wmctrl -i -a "$NextWindow"

Tandai skrip sebagai executable dan simpan skrip itu di mana saja Anda inginkan (sebaiknya di PATH Anda, mis. /usr/local/binAtau ~/bin).

Pemakaian

Gunakan menu pintasan keyboard untuk window manager Anda untuk menetapkan simple-window-switcherhotkey pilihan Anda. Anda dapat menggunakan parameter berikut untuk mengontrol bagaimana script berlaku:

  • -g: global window switching (di semua ruang kerja)
  • -l: perpindahan jendela lokal (ruang kerja saat ini); mungkin tidak berfungsi dengan Unity / Compiz (lihat bagian komentar untuk informasi lebih lanjut)
Glutanimate
sumber
Dear @Glutanimate, setelah -ljuga beralih ke windows di ruang kerja lain.
Kadir
@Adir Itu aneh. Itu tidak ada di sistem saya. Jika Anda punya waktu, maukah Anda memposting output wmctrl -xlke situs seperti pastebin.com dan menautkannya di sini?
Glutanimate
Dear @Glutanimate, ini dia: pastebin.com/iJBAZ5a7
Kadir
@Adir Terima kasih! Sepertinya Unity / Compiz tidak memaparkan informasi ruang kerja dengan benar sehingga wmctrl kesulitan mengambilnya (itu sebabnya Anda hanya melihat angka nol di kolom kedua, itu harus angka ruang kerja). Tidak tahu apakah itu bug atau dirancang seperti itu. Saya tidak memperhatikan ini karena saya menggunakan LXDE. Saya akan menambahkan catatan pada jawabannya.
Glutanimate
4

Buka Terminal dan ketik perintah berikut:

dconf write /org/compiz/profiles/unity/plugins/unityshell/alt-tab-bias-viewport false

Atau Anda dapat menginstal Alat Tweak Persatuan:

sudo apt-get install unity-tweak-tool
unity-tweak-tool

Kemudian aktifkan opsi Beralih antar jendela di semua ruang kerja di Tab Switcher:

masukkan deskripsi gambar di sini

Sylvain Pineau
sumber
Saya ingin menjaga properti Alt-`, yang beralih di antara jendela aplikasi di viewport saat ini. Saya perlu pintasan lain seperti Ctrl-Alt-`, yang akan beralih di antara jendela aplikasi di semua viewports.
Kadir
1
@ Kadadir Sayangnya, properti dconf tidak memungkinkan kedua konfigurasi untuk hidup berdampingan. Itu satu perilaku atau yang lain.
Sylvain Pineau