7

Обычно в Ubuntu 10.04 Netbook, если я хочу открыть программу, это обычно происходит из этого:Произвольная открытая программа
(Открытая программа)

к этому:
Использование программы запуска программы для запуска другой программы http://a.yfrog.com/img251/3201/workspace2002thumb.png

(Открытие другой программы с помощью Kupfer)

к этому:
Другая программа запускается и заканчивается поверх текущей программы.

Как я могу изменить поведение, чтобы после запуска программы фокус снова был установлен (и оставался включенным) в исходную программу, или, другими словами, чтобы все новые окна открывались в фоновом режиме?

Я использую нетбук Ubuntu 10.04 с использованием Mutter, хотя это происходило и при использовании Metacity.

5 ответов5

7

В Центре программного обеспечения Ubuntu установите «Расширенные настройки эффектов рабочего стола (ccsm)».

После установки в меню "Система" -> "Настройки" появится новый пункт "Менеджер настроек CompizConfig". Нажмите на это и перейдите к General-> General Options-> Focus and Raise Behavior. Установите "Уровень предотвращения фокусировки" на "Высокий" или "Очень высокий", чтобы не открывать новые окна на переднем плане.

2

Изменить: На самом деле, есть ошибка в GNOME , которая позволит вам достичь того, чего вы хотите, довольно просто. Все, что вам нужно сделать, это установить окно, любое окно на Always On Top. Все последующие открытые окна будут работать в фоновом режиме и не будут получать фокус. Я рекомендую сделать, например, терминал как можно меньшим, наклеить его, например, в углу, и установить Always On Top.

Обратите внимание, что это исправление просто в реализации, но на самом деле это грязный обходной путь, а не реальное решение, и он перестанет работать, как только исправится связанная ошибка (хотя это может быть более 2 циклов выпуска).


Для Mutter есть ключ gconf, который предотвращает кражу приложений:

Запустите gconf-editor, перейдите в приложения -> metacity -> general и установите "фокусировать новые окна" на строгий.

Вы можете обнаружить, что этого недостаточно, и что некоторые или все приложения все еще запускаются с фокусом. По крайней мере, вышеприведенное приведёт к тому, что приложения, запущенные из терминала, не смогут украсть фокус, поэтому вы можете обойти это, выполнив следующие действия:

Представьте, что пункты меню и кнопки панели запускаются из терминалов, изменив их поле "команда".

Так что firefox становится

gnome-terminal -e firefox

Некоторые приложения не возвращают подсказку немедленно, поэтому требуется еще один шаг в виде скрипта.

Команда gnome-terminal -e "/bin/bglaunch.sh firefox"

Где /bin/bglaunch.sh - следующий скрипт, который запускает приложение в фоновом режиме:

#!/bin/bash
nohup $1 >/dev/null & 
2

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

1

20 лет назад настройки "захвата фокуса" были основной функцией системных настроек дисплея. Вот вам и "передовые" технологии. :(

Простой способ открыть программу в фоновом режиме и освободить терминал - это «Firefox &». Амперсанд запускает команду как фоновый процесс. "/bin/bglaunch.sh firefox" Я полагаю, что запустил бы терминал, который затем запустил бы firefox.

0

Привет! Попробуй это:

#!/bin/bash
delay=0.5
while true; do 
        windowId=`xdotool getwindowfocus`
        xdotool getwindowname $windowId
        xdotool windowactivate $windowId; 
        sleep $delay; 
done

Этот сценарий зависит от того, достаточно ли вы установили "Уровень предотвращения фокусировки" достаточно высоко, чтобы новые открытые окна не получали фокус. Он работает как минимум на Ubuntu 10.04 и 12.04, но должен работать где угодно ... если вам это не удастся, так и скажите, и мы можем думать вместе!

Это бесконечный цикл (прервите его с помощью Ctrl + C), который "активирует" окно, которое имеет фокус (фокус для ввода с клавиатуры). Таким образом, оно заставит сфокусированное окно "перепрыгивать" на передний план каждые 0,5 секунды (вы можете уменьшить или увеличить значение задержки в соответствии с вашими потребностями / вкусом).

Таким образом, все новые открытые приложения и окна будут по-прежнему открываться на переднем плане, но будут быстро скрыты окном, которое имеет фокус!

Просто чтобы прояснить, они не будут открываться в фоновом режиме, но этот скрипт даст почти тот же эффект. Почти потому, что если вам очень не повезло, вы все равно можете нажать на новое открытое окно, прежде чем сфокусированное будет выведено на передний план, что заставит новое окно быть сфокусированным ... Уменьшение задержки поможет предотвратить это, но потреблять больше процессоров, я думаю, что меньше 0,1 - это не хорошо, но вы должны проверить, что работает лучше для вас ...

PS: ваша версия xdotool должна поддерживать следующие команды: getwindowfocus, getwindowname, windowactivate

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .