Ярлик для перенесення всіх відкритих клем на передню частину


17

Після того, як я перейду на веб-сторінку чи редактор, чи є можливість повернути всі відкриті термінали на фронт у вихідні положення? Це трохи болить клацання піктограми терміналу, а потім повернення кожного окремо.

Спасибі!

Приклад:

  • Попередній ярлик:

Ярлик попереднього зображення


  • Пост-ярлик:

Ярлик після зображення


1
+1 дуже цікаве запитання, ви можете знайти цю відповідь на непов'язане питання корисною - програма devilspie може бути доречною для цієї проблеми, якщо не існує інструменту графічного інтерфейсу.
злий

Для архіву: gist.github.com/psi-4ward/18c3a596d28a3cfa772101af755545df Сценарій, який поважає нещодавно використані програми
Psi

Відповіді:


9

Ви можете натиснути Alt+, Tabщоб перейти між вікнами вперед і Alt+ Shift+, Tabщоб повернутися назад між вікнами. Цей ярлик створений для роботи майже у всіх графічних операційних системах. Yow також може використовувати для цієї ж мети клавіші Super+ Wта стрілки.

Після того, як ви візьмете одне вікно терміналу спереду, натисніть Alt+, ~щоб передати всі інші вікна терміналу спереду:

перейти до вікон


Для того, щоб автоматично призвести всі відкриті контакти в передній частині (не один за іншим , як я описав вище) вам потрібно буде додати комбінацію клавіш для наступного сценарію (сценарій взятий з Adobe «s відповідь і покращився враховуючи , що версія скрипта не працював для мене):

#!/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

Не забудьте зробити сценарій виконуваним:

chmod +x /path/to/script/script_name

Після тестування сценарію в терміналі ви повинні побачити:


3
Дякую, але це по суті те саме, що клацнути піктограму терміналу та вибрати кожну з них, щоб перейти на передню частину. Я маю на увазі скорочення, яке приведе всі відкриті клеми на фронт. Прикладом того, що я можу писати код в gedit, хочу скомпілювати його в одному терміналі, переглядаючи вихід журналу в інший термінал.
TomSelleck

"Знімок екрана буде зроблений за 1 секунду" ... хм хтось щойно збрехав тут ...
Карлос Кампдеррос

1
@Tomcelic Дивіться мої нові зміни. Хочете сказати, що я працював над таким сценарієм, поки Adobe опублікувала свою « Як відповісти» (яка для мене не працює), тому, будь ласка, не сприймайте це неправильно.
Radu Rădeanu

8

Ось невеликий скрипт bash, який відображає всі вікна, назва яких відповідає ARG на передній частині:

bring-all-windows.bash ARG

Сценарій:

#!/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

Можна зв’язати

bring-all-windows.bash Terminal

на гарячу клавішу (не забудьте покласти скрипт у оболонку входу PATH або написати цілий шлях до нього).

Сценарій потрібно wmctrlвстановити.

Редагувати :

Щоб запустити щось із терміналу, перейдіть до dir, куди ви поставили сценарій, потім

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

Коли ви впевнені, що він працює з терміналу, спробуйте прив’язати його до гарячої клавіші, надаючи повний шлях. Коли ви впевнені, що він працює за допомогою гарячої клавіші та повного шляху до сценарію, спробуйте додати його dir до оболонки входу PATH, і подивіться, чи працює він таким чином.


Це добре звучить! Невдовзі я спробую повернутися до вас. Я все ще трохи стурбований тим, чому для цього не існує рідного методу, здається, він повинен бути природним.
TomSelleck

@Tomcelic: Є wmctrlі bash: це природно.
Adobe

Правда, але це не
рідно

Чи є якийсь шанс, що ви заперечуєте про те, як використовувати цей сценарій ?? Я створив скрипт і зберег його у своїй домашній папці та додав його шлях до / etc / shell. Я також додав ярлик в налаштуваннях клавіатури з іменем done_terminals_forward і команда bash /home/michael/Scripts/bring-all-windows.bash Terminal
TomSelleck

Запуск сценарію безпосередньо з запущеного терміналу, здається, не працює ні ... Він працює для таких програм, як gedit, але не для терміналу
TomSelleck

0

Інший спосіб - використання xdotool. Ви повинні встановити його спочатку, так що sudo apt-get install xdotoolце обов'язково.

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

Перший пошук будь-якого виклику двійкового файлу *terminal*, другий шукає будь-яке вікно, яке має назву *braiam@bt*. Тоді якщо ви помістите це в скрипт bash:

#!/bin/bash

set -e
program=$@

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

Ви можете дізнатися більше про це в xdotoolпосібнику.


0

Графічно на робочому столі Ubuntu я розміщую свої значки вертикально на лівій частині робочого столу. Якщо клацнути лівою кнопкою миші на піктограмі термінала, ви побачите всі вікна терміналу. Тоді ви можете вибрати будь-який з них для роботи. Якщо ви клацніть правою кнопкою миші на піктограмі терміналу, ви побачите список меню з "Новим терміналом" вгорі та весь ваш відкритий термінал у нижній частині списку. Ви можете вибрати те, що буде вашим активним терміналом.

Цей же спосіб повинен працювати для будь-якого іншого додатка, наприклад вашого браузера.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.