Skip to content

Instantly share code, notes, and snippets.

@zviryatko
Created April 7, 2016 06:48
Show Gist options
  • Save zviryatko/56b7d480ffcd4bee1b15a0d9eac25a9b to your computer and use it in GitHub Desktop.
Save zviryatko/56b7d480ffcd4bee1b15a0d9eac25a9b to your computer and use it in GitHub Desktop.
Linux simple logout dialog based on pygtk. Wget, chmod and run.
#!/usr/bin/env python
import pygtk
pygtk.require('2.0')
import gtk
import os
class DoTheLogOut:
# Close window
def escape(self, widget, event):
if gtk.gdk.keyval_name(event.keyval) == "Escape":
gtk.main_quit()
return False
# Cancel/exit
def delete_event(self, widget, event, data=None):
gtk.main_quit()
return False
# Logout
def logout(self, widget):
os.system("openbox --exit")
# Suspend
def suspend(self, widget):
os.system("systemctl suspend")
# Hibernate
def hibernate(self, widget):
os.system("systemctl hibernate")
# Hybrid-sleep
def sleep(self, widget):
os.system("systemctl hybrid-sleep")
# Reboot
def reboot(self, widget):
os.system("systemctl reboot")
# Shutdown
def shutdown(self, widget):
os.system("systemctl poweroff")
def __init__(self):
# 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(20)
# Create a box to pack widgets into
self.box1 = gtk.HBox(False, 0)
self.window.add(self.box1)
# Close on escape
self.window.connect('key_press_event', self.escape)
# Create cancel button
self.button1 = gtk.Button("Cancel")
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.button1.show()
# Create logout button
self.button2 = gtk.Button("Log out")
self.button2.set_border_width(10)
self.button2.connect("clicked", self.logout)
self.box1.pack_start(self.button2, True, True, 0)
self.button2.show()
# Create suspend button
self.button2 = gtk.Button("Suspend")
self.button2.set_border_width(10)
self.button2.connect("clicked", self.suspend)
self.box1.pack_start(self.button2, True, True, 0)
self.button2.show()
# Create hibernate button
self.button2 = gtk.Button("Hibernate")
self.button2.set_border_width(10)
self.button2.connect("clicked", self.hibernate)
self.box1.pack_start(self.button2, True, True, 0)
self.button2.show()
# Create sleep button
self.button2 = gtk.Button("Sleep")
self.button2.set_border_width(10)
self.button2.connect("clicked", self.sleep)
self.box1.pack_start(self.button2, True, True, 0)
self.button2.show()
# Create reboot button
self.button3 = gtk.Button("Reboot")
self.button3.set_border_width(10)
self.button3.connect("clicked", self.reboot)
self.box1.pack_start(self.button3, True, True, 0)
self.button3.show()
# Create shutdown button
self.button4 = gtk.Button("Shutdown")
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.box1.show()
self.window.show()
def main():
gtk.main()
if __name__ == "__main__":
gogogo = DoTheLogOut()
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment