Use um pequeno indicador que adiciona automaticamente seus scripts a um menu
Em vez de criar vários procedimentos de inspeção para cada evento possível que poderia ocorrer, sugiro usar uma solução "um para todos", como abaixo.
O script do indicador adiciona automaticamente seus scripts ao menu do indicador, se você os colocar no mesmo diretório como o indicador. Desta forma, seus scripts de configuração estarão facilmente disponíveis na GUI.
Oindicador
#!/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()
Como usar
- Copie o script em um arquivo vazio, salve-o como
showscripts.py
-
Copie o ícone abaixo (clique com o botão direito - > save), salve-o como (exatamente)
icon.png
em um único diretório do mesmo script que o script Paracadaumdosseuscomandosdeconfiguração,crieumscriptpequeno:
/bin/bashcommand_to_run
Nomeie-os(semespaços),masuseaextensão
.sh
.Copieoumovaosscriptsparaamesmapastaemquevocêmantémoscriptdoindicador.Agoravocêpodecriarquantositensdemenu(scripts)desejar,
Teste-executeoindicadorpelocomando:
python3/path/to/showscripts.py
Setudofuncionarbem,adicioneaStartupApplications:Dash>Aplicativosdeinicialização>Adicionar.Adicioneocomando:
/bin/bash-c"sleep 10 && python3 /path/to/showscripts.py"
Explicação
- Quando o script é iniciado, ele lista todos os arquivos em seu próprio diretório, procurando arquivos com a extensão
.sh
. Esses arquivos são executados automaticamente. - Para cada um desses arquivos, o indicador cria um item de menu para executá-lo no menu.
Outras opções?
- O mais avançado: escrever regras do udev para ações a serem tomadas em eventos específicos. Esta é também a opção mais complicada. Também não é a opção mais flexível no caso de você querer ou precisar mudar alguma coisa.
- Execute um script de segundo plano para verificar se há alterações no hardware conectado. Quanto a configuração de tela , um exemplo pronto para uso está em esta resposta .
- Combine seus comandos em um script e execute-o por meio de um atalho de teclado. Adicionar tecla de atalho: escolha: Configurações do sistema > "Teclado" > "Atalhos" > "Atalhos personalizados". Clique no botão "+" e adicione o comando para executar o script.
No entanto, eu iria para o menu do indicador. Uma vez configurado, você pode facilmente adicionar, remover ou editar funcionalidades simplesmente movendo pequenos scripts.