Как установить ярлык «Всегда сверху» для окна?

27

В 12.04 (Unity) я хотел бы назначить ярлык для «всегда сверху» для окна. Вероятно, что-то вроде Ctrl+ Shift+, Homeчтобы включить и Ctrl+ Shift+, Endчтобы выключить, или что-то еще. Есть ли возможность сделать это где-нибудь в диспетчере настроек Compiz?

Этот (старый) пост утверждал, что

Для compiz включите дополнительные действия WM. Проверьте свойства и вставьте ALT+ Aв поле «Ключ» для действия «Всегда наверху».

Но я не мог найти это.

Ян Хинкс
источник
1
Кому-нибудь здесь удалось заставить это работать в Ubuntu 12.10 без использования ccsm? спасибо
Сухайб

Ответы:

32

Он должен работать на каждой ОС Ubuntu начиная с версии 9.04, ничего не устанавливая, модифицируя создание любых ярлыков.

Попробуй Alt+ Space, T

  • Alt+ Space как первый ярлык вызывает контекстное меню мыши

  • T выбирает функцию «Всегда сверху».

user294298
источник
1
Это абсолютно лучший ответ на странице.
dotancohen
Подтвердили работу на Unity 14.04. Тот факт, что alt + space активирует выпадающее меню, особенно полезен для редко используемых функций.
Фрэнк М
Это должен быть выбранный ответ. Спасибо!
Nam G VU
1
Это было опубликовано через 2 года после вопроса, но теперь это лучший ответ, поэтому я меняю принятый ответ.
Ян Хинкс
2
не работает 18.04, T больше не выбирает функцию «Всегда сверху».
rvbarreto
14

Поскольку никто еще не упомянул об этом, я оставлю решение, которое работало на меня, в Ubuntu 12.04.

Вы можете настроить обычное сочетание клавиш и использовать wmctrl для переключения опции «Всегда сверху».

Перейдите в « Настройки системы»> «Клавиатура»> «Ярлыки»> «Пользовательские ярлыки» . Нажмите + и дайте вашему ярлыку имя. Затем введите следующую команду.

wmctrl -r :ACTIVE: -b toggle,above

Если у вас его еще нет, вы можете установить wmctrl из репозитория, используя

sudo apt-get install wmctrl

У вас должно быть что-то похожее на это.

Снимок экрана, показывающий пользовательский экран настройки сочетания клавиш

Нажмите «Применить», и вам нужно идти!

Это решение пришло из обсуждения на форумах Ubuntu .

Kasisnu
источник
@Suhaib Эта часть уже в ответе. :)
Касисну
лол, прости. Не знаю, как я пропустил это xD
Suhaib
7

Если нет, установите CCSM и дополнительные подключаемые модули через:

sudo apt-get установить compizconfig-settings-manager compiz-plugins-extra

Будь в курсе, пожалуйста. CCSM может убить Unity3D на некоторых системах.

Если вы еще не установили compiz-plugins-extra, вам необходимо перезапустить Compiz, чтобы загрузить их (даже если перед перезагрузкой они хорошо отображаются в CCSM) с помощью Alt+ F2и

compiz - место

Вы можете увидеть Дополнительные WM-действия в разделе «Управление Windows» в CCSM, как описано в посте, который вы нашли. Вы можете легко установить желаемое действие.

heartsmagic
источник
На самом деле, перезапуск compiz необходим только для того, чтобы он знал о новых плагинах. После этого вы можете изменить ярлыки на лету (т.е. вам не нужно перезапускать Compiz после каждого изменения ярлыка)
sup
Спасибо за информацию @sup. Я просто объяснил это с помощью данного поста. На самом деле я сам не пробовал.
heartsmagic
Ну, я перефразировал это, чтобы сделать это еще яснее :-).
вир
2

Другое, на мой взгляд, лучшее решение - добавить Alt+ Aв качестве ярлыка для переключения свойства «Всегда сверху» окна. Это можно сделать через gconf-editor . Просто следуйте простым инструкциям, приведенным в этом видео .

РЕДАКТИРОВАТЬ: скопировано из видео

  1. если вы используете 12.04 && 12.10, вам нужно установить gconf-editor

    sudo apt-get install gconf-editor

  2. Введите gconf-editorв терминале.

  3. Нажмите на приложения

  4. Перейти к метагороду

  5. window_keybindings

  6. щелкните правой кнопкой мыши внутри правого поля и нажмите new key

  7. Выберите stringиз выпадающего списка.

  8. Добавьте слово toggle_above

  9. Напишите любую команду, которую вы хотите. то есть: A и нажмите ОК

Выполнено :-)

tamakisquare
источник
это не сработало :-(
Suhaib
Да, это не работает для 12.10.
вир
Это должен быть dconf-editor в 14.04 ... но он тоже не работает.
Эд Виллегас
1

Я попытался использовать wmctrlкоманду toggle, но она не сработала в моем Ubuntu. Переключатель включается, но не выключается. (Я думаю, что это может быть из-за того, что я использую рабочую среду gnome, на которой wmctrlAFAIK немного сломан).

В любом случае, после долгих исследований и разработки того, как написать правильный код в bash, я создал единственную команду, которая использует wmctrlкоманды в слое логики для эффективного переключения состояния «всегда сверху» на текущем рабочем столе GNOME. Я опубликовал этот ответ в Ask Unix / Linux, но решил опубликовать его и здесь, на случай, если у кого-то возникнет такая же проблема

Вот команда:

bash -c 'wmctrl -r :ACTIVE: -b $([[ $(xprop -id $(xprop -root -f _NET_ACTIVE_WINDOW 0x " \$0\\n" _NET_ACTIVE_WINDOW | awk "{print \$2}") _NET_WM_STATE) =~ "ABOVE" ]] && echo "remove" || echo "add"),above'

Он проверяет свойство свойства активного окна «_NET_WM_STATE», используя его xprops, и если оно содержит текст «ABOVE», это означает, что опция «всегда сверху» активна. Затем он просто запускает wmctrlкоманду с параметром addили по removeмере необходимости.


Разбивка команды (каждая команда вставляется в следующую, заменяя заполнитель):

  • Получить идентификатор активного окна:

    xprop -root -f _NET_ACTIVE_WINDOW 0x " \$0\\n" _NET_ACTIVE_WINDOW | awk "{print \$2}"
    
  • Получить состояние окна с xpropпомощью идентификатора:

    xprop -id $(■) _NET_WM_STATE
    
  • Проверьте, содержит ли состояние «ABOVE», указывая, что окно установлено на «всегда сверху»:

    [[ $(■) =~ "ABOVE" ]]
    
  • Верните «remove», если true, в противном случае верните «add»:

    ■ && echo "remove" || echo "add"
    
  • запустить wmctrlкоманду, используя возвращаемое значение в качестве параметра:

    wmctrl -r :ACTIVE: -b $(■),above
    
  • Отправьте все это, чтобы bashвы могли использовать подстановку команд ${ ... }, булевскую оценку [[ ... ]]и оператор соответствия регулярному выражению =~:

    bash -c '■'
    

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

Примечание: поскольку вам нужны кавычки вокруг команды, которую вы отправляете в bash, я должен был быть осторожен при написании команды, чтобы я никогда не заходил глубже, чем на один уровень (используя двойные кавычки). Любое дальнейшее вложение строк в кавычки потребовало бы множества запутанных обратных косых черт, чтобы избежать кавычек.

Джефф Дэвидс
источник
0

Может быть, уже слишком поздно, но если кто-то найдет его снова и придет сюда, то, на мой взгляд, есть более простое решение:

В Ubuntu и во многих других дистрибутивах, использующих GTK (они в основном используют панель настроек), вы можете перейти в раздел «Настройки» -> «Клавиатура»>. В «списке» ярлыков вы найдете запись, не назначенную для сохранения окон сверху. Не уверен в названии по-английски, но по-французски это «Активист / Дезактиватор, первый план плана».

Установите это и все :)

Габриэль Дженуа
источник