Created
April 7, 2016 06:48
-
-
Save zviryatko/56b7d480ffcd4bee1b15a0d9eac25a9b to your computer and use it in GitHub Desktop.
Linux simple logout dialog based on pygtk. Wget, chmod and run.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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