Skocz do treści

Okienko "Wyloguj, Zrestartuj lub Zamknij" dla Openboksa

Dwa miesiące temu przesiadłem się z standardowego Ubuntu na CrunchBang (wraz z pojawieniem się piątej wersji testowej Ubuntu 8.04 powróciłem do niego, ale ponownie zainstalowałem serce CrunchBang, czyli OpenBoksa).

CrunchBang Linux jest bardziej wersją Ubuntu niż nową dystrybucją, w której domyślnym (i jedynym dostępnym bezpośrednio po instalacji) menedżerem okien jest Openbox. Dodatkową zaletą CrunchBang jest minimalny zestaw instalowanych paczek, co gwarantuje równowagę pomiędzy funkcjonalnością i obsługą urządzeń a szybkością działania.

To, co może doskwierać klikaczom to oczywiście dotychczasowe przyzwyczajenia. Dość długo brakowało mi ładnego i prostego okienka do blokowania komputera, wylogowywania użytkownika i zamykania systemu. Na szczęście najnowsza wersja Openboksa pozwala wykorzystać w tym celu skrypty GDM. Skrypty te pozwalają wysyłać użytkownikowi komendy restartu i zamknięcia komputera do GDM spod Openboksa.

Screenshot of Openbox logout, reboot, shutdown script.

Powyższe okienko to skrypt Philipa Newborough napisany w PyGTK. Dla zainteresowanych kod źródłowy:

#!/usr/bin/env python

import pygtk
pygtk.require('2.0')
import gtk
import os

class DoTheLogOut:

    # Cancel/exit
    def delete_event(self, widget, event, data=None):
        gtk.main_quit()
        return False

    # Logout
    def logout(self, widget):
        os.system("openbox --exit")

    # Reboot
    def reboot(self, widget):
        os.system("gdm-control --reboot && openbox --exit")

    # Shutdown
    def shutdown(self, widget):
        os.system("gdm-control --shutdown && openbox --exit")

    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)

        # 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 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()

Skrypt pochodzi z bloga CrunchBang: Openbox Logout, Reboot & Shutdown Script.

Dołącz do toczącej się dyskusji!

Możesz śledzić komentarze czytelników przez RSS , napisać, co o tym wszystkim sądzisz lub zostawić ślad prowadzący do Twojej strony.

  1. Wlasnie powoli buduje sobie desktop w debianie oparty na openboksie, wiec ten wpis napewno mi sie przyda :)

    favicon

    Scytale

    1 Kwi 2008 23:21:12

  2. Po półtora roku pracy z Ubuntu zastanawiam się nad szybszym Xubuntu. CrunchBang będzie lepszy / szybszy?

    favicon

    grizzly3

    1 Kwi 2008 23:23:06

  3. @Scytale: A budujesz na własne potrzeby i użytek, czy masz zamiar udostępnić? Jeśli to drugie to najlepiej obierz taką strategię jak CrunchBang, który korzysta z podstawowych (domyślnych) repozytoriów Ubuntu.

    @grizzly3: Będzie dużo szybszy, bo miałem okazje używać obu ;) Ale jak potrzeba Ci czegoś naprawdę lekkiego to zobacz też LXDE

  4. Zbliżone rozwiązanie można znaleźć także tutaj:
    Taeril: Okienko kończące Openboksa

Dodaj komentarz

Markdown (szczegółowy opis znaczników):
*em* | 1. lista 2. numerowana | * lista wypunktowana | _strong_ | [link](http://) | <http://> | > cytat.