Я использую SpaceFM в качестве основного файлового менеджера в Ubuntu. Обычно я открываю папку с помощью сочетаний клавиш, например, Ctrl+Super+W
открывает мою рабочую папку.
В частности, я использую команду spacefm -w /home/rasmus/Work/
с помощью вышеуказанного ярлыка, при этом -w
гарантирует, что SpaceFM откроет новое окно.
Однако, это новое окно не всегда открыто поверх последнего активного окна в рабочей области. Это довольно раздражает, так как иногда мне приходится «копать» только что открытое окно.
Итак, мой вопрос: есть ли что-то еще, что я могу добавить к выполненной команде, которая будет гарантировать, что свежее окно открывается сверху?
Альтернативные решения того же эффекта приветствуются.
Это старый вопрос, но он все еще актуален, поэтому я добавлю альтернативное решение.
Это звучит как результат предотвращения фокусировки Compiz, пытающегося предотвратить «кражу» фокуса в окнах, когда вы работаете в другом месте.
Для предотвращения фокусировки можно установить разные уровни (по умолчанию: низкий) или полностью отключить с помощью CompizConfig Settings Manager.
Если еще не установлено, сделайте это, выполнив:
sudo apt-get install compizconfig-settings-manager
Затем запустите его с помощью ccsm
, перейдите к Общие параметры , перейдите на вкладку Фокус & амп; Увеличьте Поведение и измените поле Уровень предотвращения фокуса (в вашем случае вы, вероятно, захотите Выкл. ).
Как 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 }'` }
spacefm
с теми же аргументами $*
были переданы функции, &
в фонеpgrep spacefm | head -1
получите PID основного процесса, который находится в голове, затем хранят его в pid
переменнаяsleep 1
ожидайте нового процесса к терминалу, для предотвращения повышения двух окон (я не знаю, почему, попытайтесь удалить его),wmctrl -lp
получите список окна | grep " $pid"
связанные с фильтром к $pid
, | tail -1
отфильтруйте последнюю строку/окно затем | awk '{ print $1 }'
отфильтруйте идентификатор окна (WID), который находится в первом столбце $1
wmctrl -i -R WID
Переместите окно WID в текущий рабочий стол, повысьте окно и дайте ему фокус.С псевдонимом: Это повысит 2 окна новое на главном, но более простом.
alias sfm="wmctrl -i -R \`wmctrl -lp | grep ' $(pgrep spacefm)' | tail -1 | awk '{ print $1 }'\`; spacefm"
wmctrl -lp
получите список окна | grep " $pid"
связанные с фильтром к spacefm
, | tail -1
отфильтруйте последнюю строку/окно затем | awk '{ print $1 }'
отфильтруйте идентификатор окна (WID), который находится в первом столбце $1
wmctrl -i -R WID
Переместите окно WID в текущий рабочий стол, повысьте окно и дайте ему фокус.spacefm
с аргументами, прибывающими после. Новое окно будет создано на вершине.- Как использовать: похожий способ к исходной команде.
sfm -w /home/rasmus/Work/
Ссылки: ищите man
страницы.