Выполните определенные сценарии/настройки в нескольких случаях (мышь подключения, экран подключения и т.д.)

Я уверен, что я не единственный в этой ситуации: Я запускаю Ubuntu 16 на своем ноутбуке, и я использую это для соединения с моей рабочей станцией в офисе.

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

Таким образом, мой вопрос, рядом с приложениями запуска, как мог я (т.е.). выполненный nitrogen --restore и уменьшите масштаб разрешения на моем ноутбуке (от 2560x1600 до 1440x900), когда я соединю второй экран?

Что я делаю теперь запущен все отдельные скрипты снова вручную, который не является грандиозным предприятием, но мы не используем Ubuntu, чтобы просто принять, как это, правильно?;)

Разъясниться; мой вопрос не слишком специфичен для этих задач, но больше в общем смысле; как я мог запустить что-нибудь из терминала на определенных действиях как "вход обнаруженного дисплея"?

2
задан 24 November 2016 в 11:23

1 ответ

Используйте крошечный индикатор, который автоматически добавляет Ваши сценарии к меню

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

Сценарий индикатора автоматически добавляет Ваши сценарии к меню индикатора при размещении их в тот же каталог как индикатор. Таким образом, Ваши сценарии установки будут легко доступны от GUI.

enter image description here

Индикатор

#!/usr/bin/env python3
import subprocess
import os
import signal
import gi
gi.require_version('Gtk', '3.0')
gi.require_version('AppIndicator3', '0.1')
from gi.repository import Gtk, AppIndicator3

currpath = os.path.dirname(os.path.realpath(__file__))

class Indicator():
    def __init__(self):
        self.app = 'update_setting'
        iconpath = currpath+"/icon.png"
        self.indicator = AppIndicator3.Indicator.new(
            self.app, iconpath,
            AppIndicator3.IndicatorCategory.SYSTEM_SERVICES)
        self.indicator.set_status(AppIndicator3.IndicatorStatus.ACTIVE)       
        self.indicator.set_menu(self.create_menu())

    def getscripts(self):
        files = [f for f in os.listdir(currpath) if f.endswith(".sh")]
        for f in files:
            fpath = os.path.join(currpath, f)
            subprocess.Popen(["chmod", "+x", fpath])
            menuitem = Gtk.MenuItem(f.split(".")[0])
            menuitem.connect("activate", self.run_script, fpath)
            self.menu.append(menuitem)

    def create_menu(self):
        self.menu = Gtk.Menu()
        self.getscripts()
        # quit
        item_quit = Gtk.MenuItem('Quit')
        sep = Gtk.SeparatorMenuItem()
        self.menu.append(sep)
        item_quit.connect('activate', self.stop)
        self.menu.append(item_quit)
        self.menu.show_all()
        return self.menu

    def run_script(self, widget, script):
        print(script)
        subprocess.Popen(["/bin/bash", "-c", script])

    def stop(self, source):
        Gtk.main_quit()

Indicator()
signal.signal(signal.SIGINT, signal.SIG_DFL)
Gtk.main()

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

  1. Скопируйте сценарий в пустой файл, сохраните его как showscripts.py
  2. Скопируйте значок ниже (щелчок правой кнопкой-> сохраняют), сохраните его как (точно) icon.png в одном и том же каталоге как сценарий

    enter image description here

  3. Для каждой из Ваших команд настроек создайте маленький сценарий:

    /bin/bash
    command_to_run
    

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

    Теперь можно сделать как много пунктов меню (сценарии) как Вам угодно

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

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

    /bin/bash -c "sleep 10 && python3 /path/to/showscripts.py"
    

Объяснение

  1. Когда сценарий запускается, он перечисляет все файлы в своем собственном каталоге, ища файлы с .sh расширение. Эти файлы сделаны исполняемым файлом автоматически.
  2. Для каждого из этих файлов индикатор создает пункт меню для выполнения его из меню.

Другие опции?

  1. Самое усовершенствованное: запись udev управляет для действий, чтобы быть взятой на определенных событиях. Это - однако также самая сложная опция. Также не самая гибкая опция в случае, если Вы хотите или должны изменить что-либо.
  2. Запустите фоновый скрипт для проверки на изменения в подключенных аппаратных средствах. Насколько это об экранной установке, готовое для использования примера находится в этом ответе.
  3. Объедините свои команды в один сценарий и выполните его сочетанием клавиш. Добавьте shortut ключ: Выберите: Параметры настройки системы> "Клавиатура"> "Ярлыки"> "Пользовательские Ярлыки". Нажмите "+" и добавьте команду для запущения скрипта.

Я однако пошел бы для меню индикатора. Однажды установка, можно легко добавить, удалить или отредактировать функциональность путем простого перемещения маленьких сценариев.

3
ответ дан 2 December 2019 в 02:49

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

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