Topic: OBLogout - replacement logout script for Openbox - Version 0.2

Ok, This is a replacement Openbox Logout script designed especially for #!, It's based on a few existing scripts by iggkoopa and adcomp, but it's almost a complete rewrite.

So I'd like to introduce cb-openbox-logout/Openbox Logout/oblogout (I've not picked a name yet!)

This is a graphical logout, allowing for buttons and few fancy rendering effects, such as darkening the background. If compositing is enabled then you'll have a "live" view of the background, much like setting the transparency on a window.

You can download it at: http://assets.tensixtyone.com/releases/oblogout/

Please, read the README file before installing. An example screenshot can be found here

CURRENT VERSION 0.2

KNOWN ISSUES

  * On small screens, the button may run off the screen.

Re: OBLogout - replacement logout script for Openbox - Version 0.2

Issue quasi-resolved by resizing the images, btw everyone.

I resized mine to half size and it's looking fine.

*screenie will be edited in*

Ex-KDE user.
Collects old PC's (Coz he can't afford new ones =P)
Crunchbang @ Distrowatch
My Blog (updated infrequently, and on the #! Planet too.)

Re: OBLogout - replacement logout script for Openbox - Version 0.2

Yes, different size icon sets and SVG icons will be in the next release smile

Re: OBLogout - replacement logout script for Openbox - Version 0.2

Wow! I have just installed it, it looks amazing! I will try and test it out on a few more machines as and when I get chance.

Re: OBLogout - replacement logout script for Openbox - Version 0.2

I think this is great stuff, a real improvement over the standard logout controls.

For my part I plan to revamp the icons: I'm going to try a set making better use of PNG transparency, and also provide a smaller size (64x64?). Of course, I'll also make the SVGs available. big_smile

http://dl.getdropbox.com/u/334785/oblogout_shot01.png

foomandoonian's tumblelog & twitter

Re: OBLogout - replacement logout script for Openbox - Version 0.2

http://i34.photobucket.com/albums/d145/MehallD/2009-01-19--1232407098_800x600_scro.png

Apologies for the minor cut out of the suspend button. This was caused by my mouse being annoying and not doing what I told it, so I ended up paintbrushing over that part of the image. I nvr noticed till I ran oblogout, and I'll fix it later. [=

edit: as I said, those have been resized. they are now 64x64 (so half the default size)

Last edited by Mehall (2009-01-19 23:26:50)

Ex-KDE user.
Collects old PC's (Coz he can't afford new ones =P)
Crunchbang @ Distrowatch
My Blog (updated infrequently, and on the #! Planet too.)

Re: OBLogout - replacement logout script for Openbox - Version 0.2

Love it.  But I miss the keyboard shortcuts in this script any chance that something like that could show up in the next rev?

FHSM: avoid vowels and exotic consonants and you'll get your handle every time.  identi.ca

Re: OBLogout - replacement logout script for Openbox - Version 0.2

Andrew, cool. Downloaded, read README and ran

./setup.py install

and got an error. Shame on me for not looking at it closer. Setup.py exited with error complaining of permissions with /usr/lib/python2.5...blah blah blah. Me's thought "permission!" I'll show ya.

sudo !!

and whipped into submission it ran nicely. Sorry I didn't write down the error exactly and now that it is installed I can not reproduce the error. When I try reinstalling it now reports

changing mode of /usr/bin/oblogout to 755
error: /usr/bin/oblogout: Operation not permitted

Maybe the problem is unique to me but I thought you'd like to know. Installing with sudo worked for me.

My web activities: Twitter | Identi.ca | Facebook | Blog

Re: OBLogout - replacement logout script for Openbox - Version 0.2

I had to sudo to. saw permission error, sudo'd and thought nothing of it - oops.

If I get my POS system running #! lite, I'll install there and give you the exact error.

Ex-KDE user.
Collects old PC's (Coz he can't afford new ones =P)
Crunchbang @ Distrowatch
My Blog (updated infrequently, and on the #! Planet too.)

Re: OBLogout - replacement logout script for Openbox - Version 0.2

installed on my eee pc 1000h, everything fits and works. Great job guys!

Re: OBLogout - replacement logout script for Openbox - Version 0.2

Ack, need to update the readme tongue

fshm, as for the shortcuts, it is on my todo list. Hopefully it should be in by the next release (0.2 is looking like quite a bit of coding).

Re: OBLogout - replacement logout script for Openbox - Version 0.2

This looks really exciting.
I tried to install it but i got

wmdiem@diem-acer:~/openboxlogout-0.1-1$ sudo ./setup.py 
[('/etc/', ['openbox-logout.conf'])]
usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
   or: setup.py --help [cmd1 cmd2 ...]
   or: setup.py --help-commands
   or: setup.py cmd --help

error: no commands supplied

I did ./setup.py --help and i didn't see anything important
I also read the README and it seemed to say I could just run setup.
Running the openboxlogout alone gives me traceback/misisng module error.

wmdiem@diem-acer:~/openboxlogout-0.1-1$ sudo ./openboxlogout.py
Traceback (most recent call last):
  File "./openboxlogout.py", line 28, in <module>
    from PIL import Image, ImageFilter
ImportError: No module named PIL

Thanks, can't wait to get it working.

EDIT: I went back and looked over the help, and noticed the build and install options.
Both return the same error:

wmdiem@diem-acer:~/openboxlogout-0.1-1$ sudo ./setup.py install
[('/etc/', ['openbox-logout.conf'])]
running install
running build
running build_py
error: package directory 'openboxlogout' does not exist
wmdiem@diem-acer:~/openboxlogout-0.1-1$ sudo ./setup.py build
[('/etc/', ['openbox-logout.conf'])]
running build
running build_py
error: package directory 'openboxlogout' does not exist
wmdiem@diem-acer:~/openboxlogout-0.1-1$ 

Last edited by wmdiem (2009-01-20 11:30:25)

Re: OBLogout - replacement logout script for Openbox - Version 0.2

thanks Nik_Doof, all works fine smile
very nice script !

my devart page

Re: OBLogout - replacement logout script for Openbox - Version 0.2

wmdiem wrote:

...

Mmm, very strange.

Ok, so heres some steps:

cd /tmp
wget http://assets.tensixtyone.com/releases/oblogout/openboxlogout-0.1-1.tar.gz
tar zxvf openboxlogout-0.1-1.tar.gz
cd openboxlogout-0.1
./oblogout

If that works, then:

sudo ./setup.py install

[EDIT]

INFACT, you've experienced a very odd error. What version of #! are you using? I suspect your missing a few python packages required for this software to run.

Re: OBLogout - replacement logout script for Openbox - Version 0.2

Everything went fine, no errors or anything, until "./oblogout" which gave the the error reported above.

I'm using 8.04.1
thanks for the help.

Re: OBLogout - replacement logout script for Openbox - Version 0.2

Ahh right, it's not tested on 8.04, so i'm not sure how to proceed.

I guess you need to sort the dependancies problem, so

sudo apt-get install python-imaging

And give ./oblogout a try.

Re: OBLogout - replacement logout script for Openbox - Version 0.2

After adding the python imaging mentioned above:

wmdiem@diem-acer:/tmp/openboxlogout-0.1$ ./oblogout
Traceback (most recent call last):
  File "./oblogout", line 30, in <module>
    app = openboxlogout.OpenboxLogout(config)
  File "/tmp/openboxlogout-0.1/openboxlogout/openboxlogout.py", line 50, in __init__
    self.load_config(config)
  File "/tmp/openboxlogout-0.1/openboxlogout/openboxlogout.py", line 184, in load_config
    self.bgcolor = gtk.gdk.Color(self.parser.get("looks", "bgcolor"))
TypeError: an integer is required

Last edited by wmdiem (2009-01-20 14:17:29)

Re: OBLogout - replacement logout script for Openbox - Version 0.2

So I came up with a kind of hack:
in openboxlogout.py I commented out lines 182-187

    # Set background color
      #  try:  
       #     self.bgcolor = gtk.gdk.Color(self.parser.get("looks", "bgcolor"))
      #   except ValueError:
       #     self.logger.warning(_("Color %s is not a valid color, defaulting to black") % self.parser.get("looks", "bgcolor"))
        #     self.bgcolor = gtk.gdk.Color("black")

The images are coming in as little error icons of some sort. Not sure what the deal is with that.
But on the plus side it runs.
Any idea how i could troubleshoot that?
I don't know python and I've never developed anything in a graphical environment, so I'm not sure where to start looking.

Last edited by wmdiem (2009-01-20 15:45:25)

Re: OBLogout - replacement logout script for Openbox - Version 0.2

No earthy idea why, but i have it working.
I went back to the version you had me wget.  Ran the setup again. some reason it ran this time without any problem.
Then when i ran the script ./oblogout it gave me the  *edit* integer required */edit* errors. I dug around and found the openboxlogout/openboxlogout.py and commented out the same lines i did before (on the other version).
Now it works perfectly. And it's very slick. Nice work.
One issue: The white text is almost unreadable if you have light colored window open under it. I assume I can correct this by changing the fade in the config file, but just an observation on the default settings.

Last edited by wmdiem (2009-01-20 17:03:45)

Re: OBLogout - replacement logout script for Openbox - Version 0.2

You could use PIL's histogram, you'd be able to tell if the background is light or dark and change the text color between black and white accordingly. some psuedo code following to base it off of:

hist = pilimg.histogram()
half = len(hist) / 2
text_color = "white"
darkness = 0
lightness = 0
for item in range(half):
    darkness = darkness + hist[item]
for item in range(half, len(hist)):
    lightness = lightness + hist[item]
if lightness > darkness:
    text_color = "black"

it's very basic brightness detection but it's a start. Also you would probably want to crop the detection area to the text area to improve detection speed.

Last edited by iggykoopa (2009-01-20 16:32:26)

I say never be complete, I say stop being perfect, I say lets evolve, let the chips fall where they may.

Re: OBLogout - replacement logout script for Openbox - Version 0.2

wmdiem wrote:

No earthy idea why, but i have it working.
I went back to the version you had me wget.  Ran the setup again. some reason it ran this time without any problem.
Then when i ran the script ./oblogout it gave me the module errors. I dug around and found the openboxlogout/openboxlogout.py and commented out the same lines i did before (on the other version).
Now it works perfectly. And it's very slick. Nice work.
One issue: The white text is almost unreadable if you have light colored window open under it. I assume I can correct this by changing the fade in the config file, but just an observation on the default settings.

I'll have a gander at the code tonight, thats a little odd.

As for text issues, real easy to resolve that with some dropshadow/text outline. I'd like to avoid using PIL for anything (as i'm trying to phase it out for the next release).

Re: OBLogout - replacement logout script for Openbox - Version 0.2

sounds good, guess I'm just to used to the military wink trying to over-engineer a simple problem.

I say never be complete, I say stop being perfect, I say lets evolve, let the chips fall where they may.

Re: OBLogout - replacement logout script for Openbox - Version 0.2

Installed and replaced 'Exit' on my menu with oblogout.

Kudos to Nik_Doof as well as adcomp and iggykoopa.

Great addition!

Michael

The 1-Man IT Department | Ubuntu User #16666 | Linux User #451972
My Social Nets: Identi.ca | twitter | friendfeed
Crunchbangin' and Loving Every Minute of IT!

Re: OBLogout - replacement logout script for Openbox - Version 0.2

so, as I've said, I'm really impressed with the script, an I think it would be a great addition to future #! versions.
I would like to recommend, however, that suspend, should first start gnome-screensaver to lock the screen, so when the computer gets brought back it is locked. As it is, coming back directly into the last session from a suspend, seems somewhat insecure.
And lest I be one of those annoying people who just makes recommendations and expects everyone else to implement them:
I made the following changes from line 309 openboxlogout.py:

        elif (data == 'shutdown'):
            self.dbus_powermanagement.Shutdown()
            #os.system('gdm-control --shutdown && openbox --exit')
        elif (data == 'suspend'):
            os.system('gnome-screensaver-command -l')
            os.system('sync')
            self.dbus_powermanagement.Suspend(0)
            #os.system('dbus-send --system --print-reply --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Suspend int32:0')
            self.quit()
        elif (data == 'hibernate'):
            os.system('gnome-screensaver-command -l')
            os.system('sync')
            self.dbus_powermanagement.Hiberate()
            #os.system('dbus-send --system --print-reply --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Hibernate')         
            self.quit()

As you see i also added it for hibernate too, and threw in a sync for good measure (I want to know my data is saved, not just floating around in RAM).  Now when I suspend, it comes back up locked, which makes me feel good inside.

Last edited by wmdiem (2009-01-21 10:25:45)

Re: OBLogout - replacement logout script for Openbox - Version 0.2

wmdiem wrote:

so, as I've said, I'm really impressed with the script, an I think it would be a great addition to future #! versions.
I would like to recommend, however, that suspend, should first start gnome-screensaver to lock the screen, so when the computer gets brought back it is locked. As it is, coming back directly into the last session from a suspend, seems somewhat insecure.
It was an easy (perhaps unelegant) change. from line 309 openboxlogout.py:

        elif (data == 'shutdown'):
            self.dbus_powermanagement.Shutdown()
            #os.system('gdm-control --shutdown && openbox --exit')
        elif (data == 'suspend'):
            os.system('gnome-screensaver-command -l')
            os.system('sync')
            self.dbus_powermanagement.Suspend(0)
            #os.system('dbus-send --system --print-reply --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Suspend int32:0')
            self.quit()
        elif (data == 'hibernate'):
            os.system('gnome-screensaver-command -l')
            os.system('sync')
            self.dbus_powermanagement.Hiberate()
            #os.system('dbus-send --system --print-reply --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Hibernate')         
            self.quit()

The execution of gnome-screensaver-command is exactly what I would do, but I dont understand the sync call. As part of the Hibernate/Suspend the kernel would sync everything to disc to clear the buffers, doing this seems a little unneeded smile