Как написать скрипт для переключения настроек инструмента «Твик единства» (горячие углы)

В частности, я хочу включать / выключать горячие углы каждый раз, когда начинаю паровую игру. Но я не знаю никаких сценариев. Любые ресурсы для изучения такого рода вещей были бы великолепны.

Пожалуйста, скажите мне, если этот вопрос не в том месте, я удалю его.

3
задан 19 May 2016 в 09:32

2 ответа

Если Вы просто хотите сценарий, пропустите объяснение

Объяснение

Необходимо будет изучить, по крайней мере, соответствующее программирование (/пишущий сценарий) язык, но затем:

Введение; dconf и gsettings
Большинство (если не все) настроек, измененных Инструментом Тонкой настройки Единицы, редактирует dconf базу данных, в которой хранятся много настроек. Редактирование dconf базы данных лучше всего сделано через gsettings, которые являются на самом деле a cli- фронтэнд к dconf базе данных.

В Вашем примере, устанавливая/переключая hotcorners может, к сожалению, только быть сделан путем редактирования dconf база данных непосредственно, потому что существует нет SCHEMA доступный в gsettings для него.

Получение текущего значения
hotcorners - плагин установлен в:

/org/compiz/profiles/unity/plugins/core/show-desktop-edge

Можно считать текущее состояние командой:

dconf read /org/compiz/profiles/unity/plugins/core/show-desktop-edge

Это будет иметь вывод в Вашем случае как (из Вашего комментария):

 '|BottomRight'

Устанавливание нового значения
Для отключения hotcorners необходимо выполнить команду:

dconf write /org/compiz/profiles/unity/plugins/core/show-desktop-edge "''"

к (пере-) включают hotcorners, с Вашим ранее набор hotcorner:

dconf write /org/compiz/profiles/unity/plugins/core/show-desktop-edge "'|BottomRight'"

Анатомия сценария переключателя

Что (в целом) должен сделать сценарий:

  1. Тест, что является текущим состоянием A/B
    • Если текущее состояние->, устанавливает B
    • Если текущее состояние является B->, устанавливает A

Сценарий

В сценарии шаги выше описаны в комментариях:

#!/usr/bin/env python3
import subprocess

key = "/org/compiz/profiles/unity/plugins/core/show-desktop-edge"
val_on = "'|BottomRight'"

def test():
    # read the current setting
    return subprocess.check_output(["dconf", "read", key]).decode("utf-8").strip() == val_on

currstate = test()

if currstate == True:
    # if currently hotcorners are "on", set it to "''"
    newval = "''"
else:
    # if currently hotcorners are "off", set it to val_on
    newval = val_on

subprocess.Popen(["dconf", "write", key, str(newval)])

Как использовать

  1. Скопируйте сценарий в пустой файл, сохраните его как toggle_hotcorners.py
  2. Тестовый прогон это от терминала:

    python3 /path/to/toggle_hotcorners.py
    
  3. Если все хорошо работает, добавьте его к сочетанию клавиш. Выберите: Параметры настройки системы> "Клавиатура"> "Ярлыки"> "Пользовательские Ярлыки". Нажмите "+" и добавьте команду:

    python3 /path/to/toggle_hotcorners.py
    

Как я могу видеть то, что редактирует Инструмент Тонкой настройки Единицы?

Не только для Инструмента Тонкой настройки Единицы, но также и видеть, что Параметры настройки системы редактируют, во многих случаях следующее дает Вам полезную информацию:

  • Откройте терминал, откройте Unity Tweak Tool
  • Выполните команду dconf watch / в терминале
  • Измените значение от GUI в Инструменте Тонкой настройки Единицы

Вывод в терминальных изменениях:

![enter image description here

Вы видите то, что происходит, если я отключаю/разрешаю hotcorners в Инструменте Тонкой настройки Единицы.

5
ответ дан 19 May 2016 в 19:32
  • 1
    Ой! Извините, все показывало простым текстом, моим плохим! –  3 November 2017 в 15:12

Сценарий настроенного @Jacob немного. Во-первых, с помощью dconf watch / и переключаясь hotcorners вкл\выкл в инструмент тонкой настройки единицы для обнаружения, какие переменные (?) изменяются

  1. , у меня есть распространение окон, связанное с левым нижним углом, установка находится в /org/compiz/profiles/unity/plugins/expo/expo-edge
  2. , Также распространяли рабочую область в правом нижнем угле, установка находится в /org/compiz/profiles/unity/plugins/scale/initiate-edge

Спасибо Google и 2-дневный семинар кода:

#!/usr/bin/env python3
import subprocess

key = "/org/compiz/profiles/unity/plugins/expo/expo-edge" #<-- this is for "show workspaces"
val_on = "'BottomRight'"

def test():
    # read the current setting
    # if one corner is on, other is also on and vice versa, no need to check both
    return subprocess.check_output(["dconf", "read", key]).decode("utf-8").strip() == val_on

currstate = test()

if currstate == True:
    # if currently hotcorners are "on", set it to "''"
    newval = "''"
    othercorner = "''"
else:
    # if currently hotcorners are "off", set it to val_on
    newval = val_on
    othercorner = "'BottomLeft'"

subprocess.Popen(["dconf", "write", key, str(newval)])

# this is for "windows spread"
subprocess.Popen(["dconf", "write", "/org/compiz/profiles/unity/plugins/scale/initiate-edge", str(othercorner)])

Volia, работавший как очарование.

Действительно большое спасибо @Jacob для предоставления мне информация и основной сценарий, потому что я понятия не имею, что делает dconf или как использовать Python. Все еще не делайте. Где Вы изучали это так или иначе.

Серьезно, где я изучаю этот материал.

2
ответ дан 19 May 2016 в 19:32

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

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