merci rolinh, dans le même genre, il y a un script "openbox-logout.py" modifié qui va pas mal :
#!/usr/bin/env python
# coding=utf-8
import pygtk
pygtk.require('2.0')
import gtk
import os
class DoTheLogOut:
def keypress(self, widget, event) :
if event.keyval == gtk.keysyms.Escape :
gtk.main_quit()
def confirmation_dlg(self):
dialog = gtk.Dialog("T'es sur?",self.window,gtk.DIALOG_MODAL,
(gtk.STOCK_YES, gtk.RESPONSE_YES,gtk.STOCK_NO, gtk.RESPONSE_NO))
dialog.vbox.add(gtk.Label("T'es sûr ?"))
dialog.set_has_separator(False)
dialog.vbox.show_all()
rep=dialog.run()
dialog.destroy()
return rep
# Cancel/exit
def delete_event(self, widget, event, data=None):
gtk.main_quit()
return False
# Logout
def logout(self, widget):
rep = self.confirmation_dlg()
if rep == gtk.RESPONSE_YES:
os.system("echo 'awesome.quit()' | awesome-client")
# Reboot
def reboot(self, widget):
rep = self.confirmation_dlg()
if rep == gtk.RESPONSE_YES:
#os.system("gdm-control --reboot && echo 'awesome.quit()' | awesome-client")
os.system('sudo dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart')
# Shutdown
def shutdown(self, widget):
rep = self.confirmation_dlg()
if rep == gtk.RESPONSE_YES:
#os.system("sudo shutdown -h now && echo 'awesome.quit()' | awesome-client")
os.system('sudo dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop')
#hibernate
def hibernate(self, widget):
rep = self.confirmation_dlg()
if rep == gtk.RESPONSE_YES:
os.system('sudo dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Hibernate')
#suspend
def suspend(self, widget):
rep = self.confirmation_dlg()
if rep == gtk.RESPONSE_YES:
os.system('sudo dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend')
def add_button(self, label, proc, stock):
self.btn = gtk.Button(label)
self.btn.set_relief(gtk.RELIEF_NONE)
image = gtk.Image()
image.set_from_stock(stock,gtk.ICON_SIZE_LARGE_TOOLBAR)
self.btn.set_image(image)
self.btn.connect("clicked", self.click_button, proc)
self.box1.add(self.btn)
def __init__(self):
size_icon = gtk.ICON_SIZE_SMALL_TOOLBAR
# Create a new window
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.set_title("Exit? Choose an option:")
self.window.set_resizable(False)
self.window.set_position(1)
self.window.connect("delete_event", self.delete_event)
self.window.set_border_width(10)
self.window.connect("key-press-event", self.keypress)
# Create a box to pack widgets into
self.box1 = gtk.VBox(True, 0)
self.window.add(self.box1)
# Create cancel button
self.button1 = gtk.Button("Ann_uler")
self.button1.set_border_width(10)
self.button1.connect("clicked", self.delete_event, "Changed me mind :)")
self.box1.pack_start(self.button1, True, True, 0)
self.image1 = gtk.Image()
self.image1.set_from_stock(gtk.STOCK_CANCEL, size_icon)
self.button1.set_image(self.image1)
self.image1.show()
# Create logout button
self.button2 = gtk.Button("Déc_onnexion")
self.button2.set_border_width(10)
self.button2.connect("clicked", self.logout)
self.box1.pack_start(self.button2, True, True, 0)
self.image2 = gtk.Image()
self.image2.set_from_stock(gtk.STOCK_DISCONNECT, size_icon)
self.button2.set_image(self.image2)
self.image2.show()
# Create reboot button
self.button3 = gtk.Button("Redém_arrer")
self.button3.set_border_width(10)
self.button3.connect("clicked", self.reboot)
self.box1.pack_start(self.button3, True, True, 0)
self.image3 = gtk.Image()
self.image3.set_from_stock(gtk.STOCK_REFRESH, size_icon)
self.button3.set_image(self.image3)
self.image3.show()
# Create shutdown button
self.button4 = gtk.Button("On _ferme")
self.button4.set_border_width(10)
self.button4.connect("clicked", self.shutdown)
self.box1.pack_start(self.button4, True, True, 0)
self.button4.show()
self.image4 = gtk.Image()
self.image4.set_from_stock(gtk.STOCK_QUIT, size_icon)
self.button4.set_image(self.image4)
self.image4.show()
self.button4.grab_focus()
# Create hibernate button
self.button5 = gtk.Button("Hibernation")
self.button5.set_border_width(10)
self.button5.connect("clicked", self.hibernate)
self.box1.pack_start(self.button5, True, True, 0)
self.button5.show()
self.image5 = gtk.Image()
self.image5.set_from_stock(gtk.STOCK_GO_DOWN, size_icon)
self.button5.set_image(self.image5)
self.image5.show()
# Create suspend button
self.button6 = gtk.Button("Suspend")
self.button6.set_border_width(10)
self.button6.connect("clicked", self.suspend)
self.box1.pack_start(self.button6, True, True, 0)
self.button6.show()
self.image6 = gtk.Image()
self.image6.set_from_stock(gtk.STOCK_MEDIA_PAUSE, size_icon)
self.button6.set_image(self.image6)
self.image6.show()
self.box1.show()
self.window.show_all()
def main():
gtk.main()
if __name__ == "__main__":
gogogo = DoTheLogOut()
main()
A appeler par un raccourci clavier bien sûr 🙂