Ярлык, чтобы вывести все открытые клеммы на передний план

17

После перехода на веб-страницу или в редактор можно ли как-нибудь вернуть все открытые терминалы в исходное положение? Немного сложно щелкнуть значок терминала, а затем вернуть каждый из них по отдельности.

Благодарность!

Пример:

  • Pre-ярлык:

Ярлык перед изображением


  • Post-ярлык:

Пост-изображение ярлык

Селлек
источник
1
+1 очень интересный вопрос, вам может пригодиться этот ответ на несвязанный вопрос - программа devilspie может иметь отношение к этой проблеме, если не существует инструмента с графическим интерфейсом.
evilsoup
Для архива: 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 опубликовала его « Как ответить» (что для меня не сработало), поэтому, пожалуйста, не принимайте это неправильно.
Раду Рэдяну
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должен быть установлен.

Редактировать :

Чтобы запустить что-то из терминала, перейдите в каталог, куда вы положили скрипт, затем

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

Если вы уверены, что он работает из терминала, попробуйте связать его с горячей клавишей, указав полный путь. Если вы уверены, что он работает с горячей клавишей и полным путем к сценарию, попробуйте добавить его dir в PATH оболочки входа и посмотрите, работает ли он таким образом.

саман
источник
Это звучит хорошо! Я скоро попробую и вернусь к вам. Я все еще немного озадачен тем, почему не существует нативного метода для этого, кажется, что он должен быть естественным.
TomSelleck
@ Tomcelic: есть wmctrlи bash: это естественно.
Adobe
Правда, но это не родное: P
TomSelleck
Есть ли шанс, что вы не возражаете против использования этого сценария? Я создал скрипт и сохранил его в своей домашней папке и добавил его путь к / etc / shells. Я также добавил ярлык в настройках клавиатуры с именем yield_terminals_forward, и команда bash /home/michael/Scripts/bring-all-windows.bash Terminal
TomSelleck
Запуск сценария непосредственно из запущенного терминала, похоже, тоже не работает ... Он работает для таких программ, как gedit, но не для Terminal
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руководстве.

Braiam
источник
0

Графически на рабочем столе Ubuntu мои иконки расположены вертикально на левом краю рабочего стола. Если вы щелкните левой кнопкой мыши на значке терминала, вы увидите все окна терминала. Затем вы можете выбрать любой из них для работы. Если вы щелкните правой кнопкой мыши на значке терминала, вы увидите список меню с надписью «Новый терминал» вверху и все ваши открытые терминалы в нижней части списка. Вы можете выбрать тот, который будет вашим активным терминалом.

Этот же метод должен работать для любого другого приложения, такого как ваш браузер.

Кемин Чжоу
источник