Могу ли я заставить окно открываться поверх других окон при открытии с помощью сочетания клавиш?

Я использую SpaceFM в качестве основного файлового менеджера в Ubuntu. Обычно я открываю папку с помощью сочетаний клавиш, например, Ctrl+Super+W открывает мою рабочую папку.

В частности, я использую команду spacefm -w /home/rasmus/Work/ с помощью вышеуказанного ярлыка, при этом -w гарантирует, что SpaceFM откроет новое окно.

Однако, это новое окно не всегда открыто поверх последнего активного окна в рабочей области. Это довольно раздражает, так как иногда мне приходится «копать» только что открытое окно.

Итак, мой вопрос: есть ли что-то еще, что я могу добавить к выполненной команде, которая будет гарантировать, что свежее окно открывается сверху?

Альтернативные решения того же эффекта приветствуются.

4
задан 18 March 2013 в 15:57

2 ответа

Это старый вопрос, но он все еще актуален, поэтому я добавлю альтернативное решение.

Это звучит как результат предотвращения фокусировки Compiz, пытающегося предотвратить «кражу» фокуса в окнах, когда вы работаете в другом месте.

Для предотвращения фокусировки можно установить разные уровни (по умолчанию: низкий) или полностью отключить с помощью CompizConfig Settings Manager.

Если еще не установлено, сделайте это, выполнив:

sudo apt-get install compizconfig-settings-manager

Затем запустите его с помощью ccsm, перейдите к Общие параметры , перейдите на вкладку Фокус & амп; Увеличьте Поведение и измените поле Уровень предотвращения фокуса (в вашем случае вы, вероятно, захотите Выкл. ).

0
ответ дан 18 March 2013 в 15:57

Как spacefm используемый единственный процесс. Новая команда просто передает сигнал рабочему процессу, и это создает новое окно на уровне чуть выше его последнего созданного окна.

sudo apt-get install wmctrl
  • С функцией: Это имеет задержку 1 секунды.

    sfm() { spacefm $* & pid=`pgrep spacefm | head -1`; sleep 1;  wmctrl -i -R `wmctrl -lp | grep " $pid" | tail -1 | awk '{ print $1 }'` }
    
    1. Выполненный spacefm с теми же аргументами $* были переданы функции, & в фоне
    2. pgrep spacefm | head -1 получите PID основного процесса, который находится в голове, затем хранят его в pid переменная
    3. sleep 1 ожидайте нового процесса к терминалу, для предотвращения повышения двух окон (я не знаю, почему, попытайтесь удалить его),
    4. wmctrl -lp получите список окна | grep " $pid" связанные с фильтром к $pid, | tail -1 отфильтруйте последнюю строку/окно затем | awk '{ print $1 }' отфильтруйте идентификатор окна (WID), который находится в первом столбце $1
    5. wmctrl -i -R WID Переместите окно WID в текущий рабочий стол, повысьте окно и дайте ему фокус.
  • С псевдонимом: Это повысит 2 окна новое на главном, но более простом.

    alias sfm="wmctrl -i -R \`wmctrl -lp | grep ' $(pgrep spacefm)' | tail -1 | awk '{ print $1 }'\`; spacefm"
    
    1. wmctrl -lp получите список окна | grep " $pid" связанные с фильтром к spacefm, | tail -1 отфильтруйте последнюю строку/окно затем | awk '{ print $1 }' отфильтруйте идентификатор окна (WID), который находится в первом столбце $1
    2. wmctrl -i -R WID Переместите окно WID в текущий рабочий стол, повысьте окно и дайте ему фокус.
    3. Выполненный spacefm с аргументами, прибывающими после. Новое окно будет создано на вершине.

- Как использовать: похожий способ к исходной команде.

    sfm -w /home/rasmus/Work/

Ссылки: ищите man страницы.

1
ответ дан 18 March 2013 в 15:57

Другие вопросы по тегам:

Похожие вопросы: