#!/usr/bin/env python3

import os
import signal
import subprocess
from gi.repository import Gtk, AppIndicator3
import gi
gi.require_version('Gtk', '4.0')  # Usamos GTK 3
gi.require_version('AppIndicator3', '0.1')


class Indicador:

    def __init__(self):
        self.app = 'menu_comandos_systray'
        # Reemplaza con la ruta a tu icono
        icono = os.path.abspath('/ruta/a/tu/icono.png')

        self.indicador = AppIndicator3.Indicator.new(
            self.app,
            icono,
            AppIndicator3.IndicatorCategory.APPLICATION_STATUS
        )
        self.indicador.set_status(AppIndicator3.IndicatorStatus.ACTIVE)

        # Crear el menú
        self.menu = Gtk.Menu()

        # Opción 1
        opcion1 = Gtk.MenuItem(label='Comando 1')
        opcion1.connect('activate', self.ejecutar_comando1)
        self.menu.append(opcion1)

        # Opción 2
        opcion2 = Gtk.MenuItem(label='Comando 2')
        opcion2.connect('activate', self.ejecutar_comando2)
        self.menu.append(opcion2)

        # Opción 3
        opcion3 = Gtk.MenuItem(label='Comando 3')
        opcion3.connect('activate', self.ejecutar_comando3)
        self.menu.append(opcion3)

        # Separador
        separador = Gtk.SeparatorMenuItem()
        self.menu.append(separador)

        # Opción Salir
        salir = Gtk.MenuItem(label='Salir')
        salir.connect('activate', self.salir)
        self.menu.append(salir)

        self.menu.show_all()
        self.indicador.set_menu(self.menu)

    def ejecutar_comando1(self, widget):
        subprocess.run(['comando1'])

    def ejecutar_comando2(self, widget):
        subprocess.run(['comando2'])

    def ejecutar_comando3(self, widget):
        subprocess.run(['comando3'])

    def salir(self, widget):
        Gtk.main_quit()


def main():
    signal.signal(signal.SIGINT, signal.SIG_DFL)
    Indicador()
    Gtk.main()


if __name__ == '__main__':
    main()
