Aplicativo em python+tkinter para fazer a função do powermenu

Fala galera!!
Gostaria de deixar uma contribuição aqui no tópico do BSPWM.

Para quem instalou o bspwm sem script e está com dificuldades para configurar o powermenu da polybar ou simplesmente não vai usar a polybar eu criei um aplicativo em python+tkinter para fazer a função do powermenu.

Primeiro tem que ter o módulo do tkinter

sudo apt install python3-tk

Depois, crie um arquivo com extensão .py (Ex: power.py), ponha na home ou onde desejar.

Copie e cole o código abaixo no arquivo.py que você criou

from tkinter import *
import os


# Aplicativo Para Desligar, Reiniciar e Encerrar Sessão BSPWM


# ----------------- Menu: Diálogo SIM/NÃO -------------------------------#
# Função do Botão Reiniciar
def reboot():
	# Redimensionar Janela
	root.geometry('250x75')
	root.minsize(250, 75)
	root.maxsize(250, 75)
	
	# Mudar Etiqueta
	info.config(text='Reiniciar?')
	
	# Remover Botões iniciais
	btn.pack_forget()
	btn_shutdown.pack_forget()
	btn_logout.pack_forget()
	
	# Adicionar Botões de Diálogo
	btn_reboot_cancel.pack(padx=5, pady=5, side=LEFT)
	btn_reboot_confirm.pack(padx=5, pady=5, side=RIGHT)


# Função do Botão Desligar
def shutdown():
	# Redimensionar Janela
	root.geometry('250x75')
	root.minsize(250, 75)
	root.maxsize(250, 75)	
	
	# Mudar Etiqueta
	info.config(text='Desligar?')
	
	# Remover Botões iniciais
	btn.pack_forget()
	btn_shutdown.pack_forget()
	btn_logout.pack_forget()
	
	# Adicionar Botões de Diálogo
	btn_shutdown_cancel.pack(padx=5, pady=5, side=LEFT)
	btn_shutdown_confirm.pack(padx=5, pady=5, side=RIGHT)


# Função do Botão Encerrar Sessão
def logout():
	# Redimensionar Janela
	root.geometry('250x75')
	root.minsize(250, 75)
	root.maxsize(250, 75)
	
	# Mudar Etiqueta
	info.config(text='Encerrar Sessão?')
	
	# Remover Botões iniciais
	btn.pack_forget()
	btn_shutdown.pack_forget()
	btn_logout.pack_forget()
	
	# Adicionar Botões de Diálogo
	btn_logout_cancel.pack(padx=5, pady=5, side=LEFT)
	btn_logout_confirm.pack(padx=5, pady=5, side=RIGHT)

# ----------------- Comandos ------------------------------------------#
# Função do Botão Não
def cancel():
	root.destroy()


# Função do Botão Sim --> Reiniciar
def reiniciar():
	os.system('systemctl reboot')


# Função do Botão Sim --> Desligar
def desligar():
	os.system('systemctl poweroff')
	

# Função do Botão Sim --> Encerrar Sessão
def encerrar_sessao():
	os.system('bspc quit')


# -------------------------- GUI Tkinter -------------------------------#
root = Tk()

root.title('Power Menu')
root.config(bg='#303030')
root.geometry('170x170')
root.minsize(170, 170)
root.maxsize(170, 170) 


#-------------------- Etiqueta  -------------------#
info = Label(root, text='Sistema')
info.config(bg='#303030', fg='#FFF')
info.pack(pady=5)

# --------------- REINICIAR (botões) --------------#

# reiniciar 1
btn = Button(root, text='Reiniciar', command=reboot)
btn.config(width=12, bg='#363636', fg='#FFF')
btn.pack(padx=5, pady=5)

# reiniciar cancel
btn_reboot_cancel =btn_reboot = Button(root, text='Não', command=cancel)
btn_reboot_cancel.config(bg='#363636', fg='#FFF')

# reiniciar confirm
btn_reboot_confirm =btn_reboot = Button(root, text='Sim', command=reiniciar)
btn_reboot_confirm.config(bg='#363636', fg='#FFF')


# --------------- DESLIGAR (botões) ----------------#
# desligar 1
btn_shutdown = Button(root, text='Desligar', command=shutdown)
btn_shutdown.config(width=12, bg='#363636', fg='#FFF')
btn_shutdown.pack(padx=5, pady=5)

# desligar cancel
btn_shutdown_cancel =btn_reboot = Button(root, text='Não', command=cancel)
btn_shutdown_cancel.config(bg='#363636', fg='#FFF')

# desligar confirm
btn_shutdown_confirm =btn_reboot = Button(root, text='Sim', command=desligar)
btn_shutdown_confirm.config(bg='#363636', fg='#FFF')

# --------------- LOGOUT (botões) -------------------#
# logout 1
btn_logout = Button(root, text='Encerrar Sessão', command=logout)
btn_logout.config(width=12, bg='#363636', fg='#FFF')
btn_logout.pack(padx=5, pady=5)

# logout cancel
btn_logout_cancel =btn_reboot = Button(root, text='Não', command=cancel)
btn_logout_cancel.config(bg='#363636', fg='#FFF')

# logout confirm
btn_logout_confirm =btn_reboot = Button(root, text='Sim', command=encerrar_sessao)
btn_logout_confirm.config(bg='#363636', fg='#FFF')

# Looping da Janela
root.mainloop()

Salve o arquivo.

Agora é só criar um atalho de teclado no arquivo sxhkd/sxhkdrc.

No meu caso eu substituí o atalho que anteriormente encerrava a sessão:

#power menu
super + alt + q
              python3 /home/user/power.py

Agora sempre que apertar super+alt+q vai aparecer o power menu.

Criei isso pq não consegui achar nenhum aplicativo no repositório da distro que funcionasse.

powermenu

powermenu2

Tmj

5 curtidas