Jalan pintas untuk membawa semua terminal terbuka ke depan

17

Setelah saya menavigasi ke halaman web atau editor, apakah ada cara untuk mengembalikan semua terminal terbuka ke posisi semula? Agak menyakitkan mengklik ikon terminal dan kemudian membawa masing-masing kembali secara individual.

Terima kasih!

Contoh:

  • Pra-pintasan:

Pintasan pra-gambar


  • Pasca-pintasan:

Pintasan pasca-gambar

TomSelleck
sumber
1
+1 pertanyaan yang sangat menarik, Anda mungkin menemukan jawaban ini untuk pertanyaan yang tidak terkait berguna - program devilspie bisa relevan dengan masalah ini jika tidak ada alat GUI yang ada.
evilsoup
Untuk arsip: gist.github.com/psi-4ward/18c3a596d28a3cfa772101af755545df Sebuah skrip yang menghormati aplikasi yang baru saja digunakan
Psi

Jawaban:

9

Anda dapat menekan Alt+ Tabuntuk beralih antar windows dan Alt+ Shift+ Tabuntuk beralih antar windows. Pintasan ini dibuat untuk berfungsi di hampir semua sistem operasi grafis. Yow juga dapat menggunakan tombol Super+ Wdan panah untuk tujuan yang sama.

Setelah Anda membawa satu jendela terminal di depan, tekan Alt+ ~untuk membawa semua jendela terminal lainnya di depan satu per satu:

beralih ke windows


Untuk secara otomatis membawa semua terminal terbuka di depan (tidak satu per satu seperti yang saya jelaskan sebelumnya) Anda akan perlu menambahkan shortcut keyboard untuk script berikut (script diambil dari Adobe 's jawaban dan ditingkatkan mengingat versi script tidak bekerja untuk saya):

#!/bin/bash

if [ $# -ne 1 ];then
  echo -e "Usage: `basename $0` PROGRAM_NAME\n
           For example:\n\t
           '`basename $0` gnome-terminal' for Terminal\n\t
           '`basename $0` firefox' for Firefox\n\t
           '`basename $0` chromium-browser' for Chromium\n\t..."
  exit 1
fi

pids=" $(pidof $@) "

if [ "$pids" = "  " ]; then # the string "  " contain two spaces
    echo "There is no program named '$@' opened at the moment."
    exit 1
fi

wmctrl -lp | while read identity desktop_number PID window_title; do 
    if [ "${pids/ $PID }" != "$pids" ]; then
        wmctrl -ia $identity
    fi
done

Jangan lupa untuk membuat skrip dapat dieksekusi:

chmod +x /path/to/script/script_name

Setelah Anda menguji skrip di terminal, Anda harus melihat:

Radu Rădeanu
sumber
3
Terima kasih tetapi pada dasarnya sama dengan mengklik ikon terminal dan memilih masing-masing untuk dibawa ke depan. Maksud saya jalan pintas yang akan membawa semua terminal terbuka ke depan. Contohnya saya bisa menulis kode di gedit, ingin mengkompilasinya di satu terminal sambil menonton output log di terminal lain.
TomSelleck
"Tangkapan layar akan diambil dalam 1 detik" ... hmm seseorang baru saja berbohong di sini ...
Carlos Campderrós
1
@Tomcelic Lihat hasil edit saya yang baru. Ingin mengatakan bahwa saya sedang mengerjakan skrip seperti itu sementara Adobe telah memposting How to Answer (yang bagi saya belum berfungsi), jadi tolong jangan anggap ini salah.
Radu Rădeanu
8

Berikut ini skrip bash kecil yang membawa semua jendela yang judulnya cocok dengan ARG:

bring-all-windows.bash ARG

Naskah:

#!/bin/bash

Program=$@

wmctrl -l | while read Window; do
    if [[ "$Window" == *"$Program"* ]]; then
        echo "DEBUG: I bring $Window"
        code=`echo "$Window" | cut -f 1 -d " "`
        wmctrl -i -a $code
    fi
done

Anda bisa mengikat

bring-all-windows.bash Terminal

ke hotkey (jangan lupa untuk menempatkan script di PATH shell login, atau menulis path lengkap untuk itu).

Script wmctrlharus diinstal.

Edit :

Untuk menjalankan sesuatu dari terminal, arahkan ke direktori tempat Anda meletakkan skrip, lalu

chmod +x bring-all-windows.bash
./bring-all-windows.bash Terminal

Saat Anda yakin itu bekerja dari terminal, coba ikat ke hotkey, berikan path lengkap. Ketika Anda yakin itu bekerja dengan hotkey dan path lengkap ke skrip, kemudian coba tambahkan dir itu ke PATH shell login, dan lihat apakah itu bekerja seperti itu.

Adobe
sumber
Ini terdengar bagus! Saya akan mencobanya sebentar lagi dan kembali kepada Anda. Saya masih agak bingung mengapa tidak ada metode asli untuk ini, sepertinya itu harus alami.
TomSelleck
@Tomcelic: Ada wmctrldan bash: itu wajar.
Adobe
Benar tapi bukan asli: P
TomSelleck
Apakah ada kemungkinan Anda keberatan menelusuri cara menggunakan skrip ini ?? Saya telah membuat skrip dan menyimpannya di folder rumah saya dan menambahkan path ke / etc / shells. Saya juga telah menambahkan pintasan di pengaturan keyboard dengan nama bring_terminals_forward dan perintahnya adalah bash /home/michael/Scripts/bring-all-windows.bash Terminal
TomSelleck
Menjalankan skrip langsung dari terminal yang sedang berjalan sepertinya juga tidak berfungsi ... Ia bekerja untuk program seperti gedit, tetapi tidak untuk Terminal
TomSelleck
0

Cara lain menggunakan xdotool. Anda harus menginstalnya terlebih dahulu begitu sudo apt-get install xdotooljuga wajib.

xdotool search --class "terminal" windowactivate %@
xdotool search --name "braiam@bt" windowactivate %@

Tampilan pertama untuk setiap biner yang dipanggil *terminal*, tampilan kedua untuk jendela apa pun yang memiliki judul *braiam@bt*. Lalu jika Anda memasukkannya ke dalam skrip bash:

#!/bin/bash

set -e
program=$@

xdotool search --class '$program' windowactivate %@
xdotool search --name '$program' windowactivate %@

Anda bisa tahu lebih banyak tentang ini di xdotoolmanual.

Braiam
sumber
0

Secara grafis di desktop Ubuntu saya, ikon saya diatur secara vertikal di margin sisi kiri desktop saya. Jika Anda klik kiri pada ikon terminal, Anda akan melihat semua jendela terminal. Kemudian Anda dapat memilih yang mana yang akan digunakan. Jika Anda mengklik kanan pada ikon terminal, Anda akan melihat daftar menu dengan "Terminal baru" di bagian atas, dan semua terminal terbuka Anda di bagian bawah daftar. Anda dapat memilih mana yang menjadi terminal aktif Anda.

Metode yang sama ini dapat digunakan untuk aplikasi lain seperti browser Anda.

Kemin Zhou
sumber