Создайте сочетания клавиш для перемещения окон в различные мониторы без Compiz

Я выполняю ПОМОЩНИКА Ubuntu 16.04, и я люблю его прямо из поля. Единственной вещью, в которой я нуждаюсь на нем, является способность переместить мои окна в различные мониторы с помощью клавиатуры.

Я использовал менеджера по Настройкам CompizConfig, и это работает, но Compiz вызывает длинный список проблем в моей системе, которые исчезают, когда я отключаю его. Compiz является большим пакетом и всем, что я хочу, способность переместить мои окна в другой монитор. Все другие функции уже встроены в меню сочетаний клавиш Ubuntu MATE 16.04 LTS (переключите рабочие области, переместите окно в рабочую область, оставленная мозаика, право, горизонтальное, вертикальное, и т.д.).

Переместите окно на восток (справа) сторона экрана и окна Move на запад (слева), сторона экрана по некоторым причинам не работает над всеми приложениями (особенно Firefox, но Chrome и другие работают).

Существует ли руководство, которое показывает, как сделать Ваши собственные сочетания клавиш? Я нашел сайт, где кто-то сделал их собственное для Xubuntu. В то время как я пытаюсь выяснить то, что они сделали, у кого-либо есть простой метод для создания сочетаний клавиш, которые перемещают окна между мониторами?

7
задан 13 April 2017 в 05:24

1 ответ

Введение

window_jumper.py сценарий Python, который переместит активное окно через несколько мониторов в цикле. Например, если у Вас будет 3 монитора A, B, и C, то повторенное нажатие клавиши присвоенного ярлыка переместит окно от A, к B, к C, и назад к A. Размещением окна будет Верхний левый угол каждого экрана.

Использование

Запускать скрипт вручную

python window_jumper.py

Сценарий не имеет никаких параметров командной строки (с прямо сейчас, но май в будущем).

Установка горячей клавиши

Шаги Единицы Ubuntu:

  1. Перейдите к вкладке System Settings-> KeyboardShortcuts, выберите Custom Shortcuts и нажмите + кнопка. Пользовательское всплывающее окно Ярлыка появится с двумя полями Name: и Command:

  2. Для Name поле, назовите его window_jumper. Для Command: предоставьте полный путь файлу сценария. Например, python /home/ubuntu_user/bin/window_jumper.py . Нажмите Apply

  3. Нажмите на крайний правый столбец, слова New accelerator появится. Нажмите сочетание клавиш, что Вы хотите быть обозначенными к этому сценарию. Например, я выбрал CtrlSuperJ

Инструкции Помощника Ubuntu:

  1. Перейдите к Ярлыкам SystemControl CenterKeyboard, нажмите Add. Пользовательское всплывающее окно Ярлыка появится с двумя полями Name: и Command:

  2. Для Name поле, назовите его window_jumper. Для Command: предоставьте полный путь файлу сценария. Например, python /home/ubuntu_user/bin/window_jumper.py . Нажмите Apply

  3. Крайний правый столбец (маркированный Shortcut) будет иметь слова Disabled на строке. Нажмите на слова, текст изменится на New shortcut. Нажмите сочетание клавиш, которое Вы хотите использовать.

Источник сценария

Также доступный как на GitHub. Если Вы сделали, чтобы GitHub считал, отправьте проблемы и запросы новых функций там.

#!/usr/bin/env python
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import GdkX11, Gdk, Gtk


def main():

    DEBUG = False

    screen = GdkX11.X11Screen.get_default()
    monitors = []
    for monitor in range(screen.get_n_monitors()):
        monitors.append(
            [screen.get_monitor_geometry(monitor).x,
             screen.get_monitor_geometry(monitor).y])

    if DEBUG:
        print monitors

    active_window = screen.get_active_window()
    active_window_location = screen.get_monitor_at_window(active_window)

    new_location = None
    new_location = active_window_location + 1
    if active_window_location + 1 >= monitors.__len__():
        new_location = 0
    new_screen = monitors[new_location]
    if DEBUG:
        print new_screen

    active_window.move(new_screen[0], new_screen[1])
    screen.get_active_window()
    # TODO: add resizing window routine in cases where
    # a window is larger than the size of the screen
    # to which we're moving it.

if __name__ == "__main__":
    main()

Сторона отмечает:

  • Код может или не может измениться для включения дополнительных функций.
  • В случае, если Вы получаете ImportError: No module named gi выполненный sudo apt install python-gi (Спасибо Dariusz для комментария)
8
ответ дан 23 November 2019 в 06:32

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

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