Я могу установить Горячие Углы для выполнения пользовательских команд в Единице?

Мне действительно нравятся Горячие Углы.:-)

Так или иначе возможно выполнить пользовательскую команду на горячем углу как показано ниже?

enter image description here

13
задан 13 February 2018 в 23:33

3 ответа

Установка CCSM

  1. менеджер по Настройкам CompizConfig (CCSM). Выполненный в терминале:

    sudo apt-get install compizconfig-settings-manager
    
  2. Открывают CCSM.

  3. Переходят к "Командам"
  4. , Вводят Вашу желаемую команду в один из слотов. Например:

    CCSM screenshot - command

  5. Переходят к вкладке

  6. "Edge Bindings", Нажимают "None" и устанавливают Ваш желаемый горячий угол (или край), который соответствует команде, которую Вы просто устанавливаете

    CCSM screenshot - hot corners

  7. Перемещение Ваша мышь к углу

  8. Теперь, Ваша команда выполняется!

    CCSM screenshot - command running

Подтвержденная работа над 14,04.

10
ответ дан 23 November 2019 в 03:17

Пользовательские команды

Если Вы используете Единицу и имеете установленный ccsm, ответ wjandrea является Вашим ответом, конечно. В противном случае или использовать на других дистрибутивах, альтернатива легкого веса могла бы быть полезной.

Со сценарием ниже, можно установить любую команду, характерную для каждого из hotcorners.

Как пример, я сделал следующую установку:

  • Верхний левый Никакое действие
  • Верхнее правое выполнение Gedit
  • Левая нижняя часть Никакое действие
  • Нижняя часть терминал Gnome RightRun

Конечно, можно также заставить команды запустить внешние скрипты.

Кроме того, можно установить размер горячего угла в строке:

cornersize = 10

Просто измените значение (пиксели). Наборы сценария (квадрат) области для инициирования команд:

enter image description here

Сценарий

#!/usr/bin/env python3
import subprocess
import time

cornersize = 20

commands = [
    None,
    "gedit",
    None,
    "gnome-terminal",
    ]

def get(cmd):
    return subprocess.check_output(cmd).decode("utf-8").strip()

def get_pos():
    return [int(s.split(":")[1]) for s in get(["xdotool", "getmouselocation"]).split()[:2]]

scrdata = get("xrandr").split(); resindex = scrdata.index("connected")+2
res = [int(n) for n in scrdata[resindex].split("+")[0].split("x")]

match1 = None

while True:
    time.sleep(1)
    xy = get_pos()
    x = xy[0]; y = xy[1]
    test = [
        [x < cornersize, y < cornersize],
        [x > res[0]-cornersize, y < cornersize],
        [x < cornersize, y > res[1]-cornersize],
        [x > res[0]-cornersize, y > res[1]-cornersize],
        ]
    match2 = [i for i, p in enumerate(test) if all(p)]
    if match2 != match1:
        if match2:
            cmd = commands[match2[0]]
            if cmd:
                subprocess.Popen(["/bin/bash", "-c", cmd])
    match1 = match2

Настроить

  1. Потребности сценария xdotool

    sudo apt install xdotool
    
  2. Скопируйте сценарий в пустой файл, сохраните меня как hotcorners2.py
  3. В заголовке сценария, устанавливает Ваши команды (возражайте против кавычек),

    commands = [
        None,
        "gedit",
        None,
        "gnome-terminal",
    ]
    

    (впоследствии верхний левый/righ, левая нижняя часть / право)

  4. Тестовый прогон сценарий:

    python3 /path/to/hotcorners2.py
    
  5. Если все хорошо работает, добавьте к Приложениям Запуска: Тире> Приложения Запуска> Добавляет. Добавьте команду:

    /bin/bash -c "sleep 5 && python3 /path/to/hotcorners2.py"
    

Примечания

  • Сценарий в настоящее время работает на (первое) экран. Это может быть легко отредактировано, чтобы заботиться о нескольких экранах, даже сделать разные вещи на различных экранах, упомяните.
  • Если несколько человек как он, мы можем добавить gui и ppa для удобного использования и легкой установки.

Править

Если мы используем более усовершенствованные вычисления, мы можем использовать радиус вместо области квадрата для инициирования команд (благодаря старому доброму @pythagoras):

enter image description here

Небольшая разница, но только для забавы:

Сценарий

#!/usr/bin/env python3
import subprocess
import math
import time

# set distance (hotcorner sensitivity)
radius = 20

# top-left, top-right, bottom-left, bottom-right
commands = [
    None,
    "gedit",
    None,
    "gnome-terminal",
    ]

def get(cmd):
    return subprocess.check_output(cmd).decode("utf-8").strip()

def get_pos():
    return [int(s.split(":")[1]) for s in get(["xdotool", "getmouselocation"]).split()[:2]]

# get the resolution
scrdata = get("xrandr").split(); resindex = scrdata.index("connected")+2
res = [int(n) for n in scrdata[resindex].split("+")[0].split("x")]
# list the corners, could be more elegant no doubt
corners = [[0, 0], [res[0], 0], [0, res[1]], [res[0], res[1]]]

match1 = None

while True:
    time.sleep(1)
    pos = get_pos()
    # get the current difference from the mousepointer to each of the corner (radius)
    diff = [int(math.sqrt(sum([(c[i]-pos[i])**2 for i, n in enumerate(res)])))\
            for c in corners]
    # see if any of the corners is "approached" within the radius
    match2 = [diff.index(n) for n in diff if n < radius]
    # if so, and the corresponding command is not set to None, run it.
    if all([match2 != match1, match2]):
        cmd = commands[match2[0]]
        if cmd:
            subprocess.Popen(["/bin/bash", "-c", cmd])
    match1 = match2

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

В значительной степени то же. Установите свои команды и радиус для инициирования, в главном разделе сценария.

6
ответ дан 23 November 2019 в 03:17

Примечание:

ответ wjandrea является самым подходящим ответом для кого-то, кто использует Ubuntu по умолчанию или Ubuntu Kylin (или имеет compiz в качестве их менеджера по оформлению), таким образом это получает мой upvote и уважение. Ответ, предоставленный ниже, может использоваться на Единице также, но вероятно был бы немного избыточен. Однако на настольных средах, которые не имеют compiz, можно использовать индикатор, представленный ниже. Я протестировал его кратко в Lubuntu 16.04 VM, таким образом, я знаю, что это работает там и сделало это совместимым с Kylin 14.04 также. Для GNOME и рабочих столов ПОМОЩНИКА, Вы должны будете иметь поддержку AppIndicators, включенного сначала для использования любого индикатора.

Введение

Я реализовал indicator-edger который позволяет инициировать пользовательские команды на основе положения мыши где угодно вдоль 4 краев экрана. Исходная версия была сделана в течение одного дня приблизительно за 7 часов, таким образом это является довольно минималистическим, но делает задание.

enter image description here

Через индикатор управляют ~/.edger-commands.json файл, очевидно, в json формат. Это может быть записано вручную пользователем или установлено через индикатор DEFINE COMMANDS опция. Позволять/запрещать опцию инициирования помнят и пишут автоматически в файл для удобства пользователя. Демонстрационный конфигурационный файл был бы похож так:

{
    "right": "gnome-terminal",
    "top": "firefox",
    "left": "",
    "bottom": "gnome-screenshot",
    "enabled": true
}

Отметьте "left" запись в файле. Тот край сброшен, но из-за json синтаксис это требует наличия пустой строки там, т.е. кавычек "".

После того как индикатор обнаруживает того пользователя, поместил мышь вдоль любого из краев (с полем на ~3 пикселя), индикатор отправит пузырьковое уведомление и выполнит соответствующую команду (если определено). Активация триггера не повторится, если пользователь не отодвинет мышь от края.

enter image description here

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

В настоящее время нет никакой поддержки углов (только края), и это было создано для установки с одним монитором (очевидно, нельзя покрыть все основания в течение 7 часов после создания), но те функции могли бы быть доступными в конечном счете в будущем.

Установка и исходный код

Исходный код доступен в проектах страница GitHub или через Панель запуска. Установка выполняется через следующие команды в терминале:

sudo add-apt-repository ppa:1047481448-2/sergkolo
sudo apt-get update
sudo apt-get install indicator-edger
5
ответ дан 23 November 2019 в 03:17

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

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