You are not logged in.
Offline
shijtin wrote:Hi, here is my first one, a simple one actually
I like it. What's the music widget thing?
Thx  
 
It's the Now Playing screenlet. The theme is a mod and I made a script for sonata.
Offline

WOW gotmor! configs please?
Offline

It's the Now Playing screenlet. The theme is a mod and I made a script for sonata.
Do you mind sharing your sonata scripts?
deviantART | GitHub | Last.fm
Offline

trx wrote:fvwm kicks ass, even in 2008...
yes indeed
Great pressh!
What do you use to have this small calendar?
A script from fvwm-lair?
@+
Shaika-Dzari
http://www.4nakama.net
Offline
iBertus wrote:/me can't wait to post a screenie of my new desktop setup tomorrow.... 2560x1600 on a single LCD screen! Anyone have a suggestion on what to do with all this space?
Guess I'll be the first to say it.... GIVE SOME TO ME!
Also, a wallpaper recommendation: http://nuwen.net/img/image/orion/2560x1600.png
Very nice WP! It's hard to find good wallpapers for this resolution. This is by far the most uniform LCD that I've ever owned. It dwarfs my previous 20" Acer. I'm thinking of wallmounting it to save ALL of my deskspace. It looks strange next to my SFF cube case... I look foward to having linux actually installed and not running from a live cd...
Offline
Do you mind sharing your sonata scripts?
Not at all. 
First, the package python-mpdclient2 has to be installed.
The script will look for covers in ~/.covers or for 'cover.jpg'/'album.jpg'/'folder.jpg' in the folder of the song (you have to change the "musicdir" value).
Here is the file Sonata.py that goes in ~/.screenlets/NowPlaying/Players/ :
#!/usr/bin/env python
import os
import dbus
import gobject
import mpdclient2
from GenericPlayer import GenericAPI
class SonataAPI(GenericAPI):
    __name__ = 'Sonata API'
    __version__ = '0.0'
    __author__ = ''
    __desc__ = ''
    playerAPI = None
    __timeout = None
    __interval = 2
    callbackFn = None
    __curplaying = None
    ns = "org.MPD.Sonata"
    iroot = "/org/MPD/Sonata"
    iface = "org.MPD.SonataInterface"
    host = 'localhost'
    port = 6600
    musicdir = '/media/MULTIMEDIA/music/'
    def __init__(self, session_bus):
        GenericAPI.__init__(self, session_bus)
    
    # Check if the player is active : Returns Boolean
    # A handle to the dbus interface is passed in : doesn't need to be used
    # if there are other ways of checking this (like dcop in amarok)
    def is_active(self, dbus_iface):
        if self.ns in dbus_iface.ListNames(): return True
        else: return False
    # Make a connection to the Player
    def connect(self):
        proxy_obj = self.session_bus.get_object(self.ns, self.iroot)
        self.playerAPI = dbus.Interface(proxy_obj, self.iface)    
    # The following return Strings
    def get_title(self):
                song = mpdclient2.connect().currentsong()
        return song.title
    
    def get_album(self):
                song = mpdclient2.connect().currentsong()
        return song.album
    def get_artist(self):
                song = mpdclient2.connect().currentsong()
        return song.artist
    def get_cover_path(self):
                artist = self.get_artist()
                album = self.get_album()
                filename = os.path.expanduser("~/.covers/" + artist + "-" + album + ".jpg")
                if os.path.isfile(filename):
                        return filename
                songfile = mpdclient2.connect().currentsong().file
                songpath = self.musicdir + os.sep + os.path.dirname(songfile)
                filename = songpath + "/cover.jpg"
                if os.path.isfile(filename):
                        return filename
                filename = songpath + "/album.jpg"
                if os.path.isfile(filename):
                        return filename
                filename = songpath + "/folder.jpg"
                if os.path.isfile(filename):
                        return filename
                return ''
                
    # Returns Boolean
    def is_playing(self):
                status = mpdclient2.connect().status()
                return (status.state != 'stop')
    # The following do not return any values
    def play_pause(self):
                status = mpdclient2.connect().status()
                if status.state == 'play':
                        mpdclient2.connect().pause(1)
                elif status.state == 'pause':
                        mpdclient2.connect().pause(0)
                else:
                        mpdclient2.connect().play()
    def next(self):
        mpdclient2.connect().next()
    def previous(self):
        mpdclient2.connect().previous()
    def register_change_callback(self, fn):
        self.callback_fn = fn
        # Could not find a callback signal for Banshee, so just calling after some time interval
        if self.__timeout:
            gobject.source_remove(self.__timeout)
        self.__timeout = gobject.timeout_add(self.__interval * 1000, self.info_changed)
    def info_changed(self, signal=None):
        # Only call the callback function if Data has changed
        if self.__timeout:
            gobject.source_remove(self.__timeout)
        try:
            if self.__curplaying != None and not self.is_playing():
                self.__curplaying = None
                self.callback_fn()
            playinguri = self.get_title()
            if self.is_playing() and self.__curplaying != playinguri:
                self.__curplaying = playinguri
                self.callback_fn()
            self.__timeout = gobject.timeout_add(self.__interval * 1000, self.info_changed)
        except:
            # The player exited ? call callback function
            self.callback_fn()And you have to change some lines in ~/.screenlets/NowPlaying/NowPlayingScreenlet.py :
...
PLAYER_LIST = {'Rhythmbox':'RhythmboxAPI',
                    'Listen':'ListenAPI',
                    'Banshee':'BansheeAPI',
                    'Amarok':'AmarokAPI',
                    'Exaile':'ExaileAPI',
                    'Sonata':'SonataAPI'}
PLAYER_LIST_LAUNCH = ['rhythmbox','listen','banshee','amarok','exaile','sonata --hidden']
...This should work with other mpd clients with some modifications.
Offline

Is there any way of having that screenlet but without using all those "heavy" DE and compiz or beryl or whatever its called now days ??
The applet itself is very nice and "eye-candy" but it requires the other things right ?
Offline

Is there any way of having that screenlet but without using all those "heavy" DE and compiz or beryl or whatever its called now days ??
The applet itself is very nice and "eye-candy" but it requires the other things right ?
You can use xcompmgr. Setup your xorg.conf for compositing:
Section "Extensions"
    Option         "Composite"  "Enable"
EndSectionand then run xcompmgr like this (example):
xcompmgr -l 0.5 -t 0.5 -o 0.5 -r 2 -cFf@shijtin
Thx! Doesn't work for me though. The screenlet starts without errors but it seems like it can't connect to mpd... the song change doesn't work either. Well I'll try to figure out what's wrong 
btw: I use this now-playing version. Maybe that's the wrong one because it's modified... witch one do you use shijtin?
Last edited by sen (2008-01-10 20:21:04)
deviantART | GitHub | Last.fm
Offline
Maybe that's the wrong one because it's modified... witch one do you use shijtin?
I took it from gnome-look too.
Do you have python-mpdclient2 installed ?
Offline

Offline

sen wrote:Maybe that's the wrong one because it's modified... witch one do you use shijtin?
I took it from gnome-look too.
Do you have python-mpdclient2 installed ?
Yes. I'll look into it tomorrow... maybe I made a stupid mistake! 
deviantART | GitHub | Last.fm
Offline
Playing with pekwm
http://www.jeah.net/~justin/archjan2008thumb.png
+ pekwm
+ sonata
+ urxvt
+ pypanel
+ visibilityJust a question I'll throw out there. Does anyone know if it's possible to click the far right/left side of the screen in Openbox to switch desktops? You can do this is pekwm, and it is a very convenient feature.
@upsidaisium: deerhoof <3
Mind sharing your .pypanelrc and .Xdefaults?
Arch Linux since 2006
Python Web Developer + Sys Admin (Gentoo/BSD)
Offline

Cactus. That girl can't stand up cause she is so top heavy!
Guarantee does not cover shark bite, bear attack, or children under 5.
Offline
Heh, cactus I remember using that wallpaper last Xmas http://crooksey.deviantart.com/art/Arch-Gnome-45284922 
Arch Linux since 2006
Python Web Developer + Sys Admin (Gentoo/BSD)
Offline

Heh, cactus I remember using that wallpaper last Xmas http://crooksey.deviantart.com/art/Arch-Gnome-45284922
I probably got the link from you back then.
It was just sitting innocently in my wallpaper folder.
"Be conservative in what you send; be liberal in what you accept." -- Postel's Law
"tacos" -- Cactus' Law
"t̥͍͎̪̪͗a̴̻̩͈͚ͨc̠o̩̙͈ͫͅs͙͎̙͊ ͔͇̫̜t͎̳̀a̜̞̗ͩc̗͍͚o̲̯̿s̖̣̤̙͌ ̖̜̈ț̰̫͓ạ̪͖̳c̲͎͕̰̯̃̈o͉ͅs̪ͪ ̜̻̖̜͕" -- -̖͚̫̙̓-̺̠͇ͤ̃ ̜̪̜ͯZ͔̗̭̞ͪA̝͈̙͖̩L͉̠̺͓G̙̞̦͖O̳̗͍
Offline
Yes. I'll look into it tomorrow... maybe I made a stupid mistake!
Ok. I haven't tested it on any other computer so the mistake may be mine 
You can try this one (it was the first version without dbus) :
#!/usr/bin/env python
import os
import gobject
import mpdclient2
from GenericPlayer import GenericAPI
class SonataAPI(GenericAPI):
    __name__ = 'Sonata API'
    __version__ = '0.0'
    __author__ = ''
    __desc__ = ''
    playerAPI = None
    __timeout = None
    __interval = 2
    callbackFn = None
    __curplaying = None
    host = 'localhost'
    port = 6600
    musicdir = '/media/MULTIMEDIA/music/'
    def __init__(self, session_bus):
        GenericAPI.__init__(self, session_bus)
    
    # Check if the player is active : Returns Boolean
    # A handle to the dbus interface is passed in : doesn't need to be used
    # if there are other ways of checking this (like dcop in amarok)
    def is_active(self, dbus_iface):
        if self.is_playing(): return True
        else: return False
    # Make a connection to the Player
    def connect(self):
        pass
    # The following return Strings
    def get_title(self):
                song = mpdclient2.connect().currentsong()
        return song.title
    
    def get_album(self):
                song = mpdclient2.connect().currentsong()
        return song.album
    def get_artist(self):
                song = mpdclient2.connect().currentsong()
        return song.artist
    def get_cover_path(self):
                artist = self.get_artist()
                album = self.get_album()
                filename = os.path.expanduser("~/.covers/" + artist + "-" + album + ".jpg")
                if os.path.isfile(filename):
                        return filename
                songfile = mpdclient2.connect().currentsong().file
                songpath = self.musicdir + os.sep + os.path.dirname(songfile)
                filename = songpath + "/cover.jpg"
                if os.path.isfile(filename):
                        return filename
                filename = songpath + "/album.jpg"
                if os.path.isfile(filename):
                        return filename
                filename = songpath + "/folder.jpg"
                if os.path.isfile(filename):
                        return filename
                return ''
                
    # Returns Boolean
    def is_playing(self):
                status = mpdclient2.connect().status()
                return (status.state != 'stop')
    # The following do not return any values
    def play_pause(self):
                status = mpdclient2.connect().status()
                if status.state == 'play':
                        mpdclient2.connect().pause(1)
                elif status.state == 'pause':
                        mpdclient2.connect().pause(0)
                else:
                        mpdclient2.connect().play()
    def next(self):
        mpdclient2.connect().next()
    def previous(self):
        mpdclient2.connect().previous()
    def register_change_callback(self, fn):
        self.callback_fn = fn
        # Could not find a callback signal for Banshee, so just calling after some time interval
        if self.__timeout:
            gobject.source_remove(self.__timeout)
        self.__timeout = gobject.timeout_add(self.__interval * 1000, self.info_changed)
    def info_changed(self, signal=None):
        # Only call the callback function if Data has changed
        if self.__timeout:
            gobject.source_remove(self.__timeout)
        try:
            if self.__curplaying != None and not self.is_playing():
                self.__curplaying = None
                self.callback_fn()
            playinguri = self.get_title()
            if self.is_playing() and self.__curplaying != playinguri:
                self.__curplaying = playinguri
                self.callback_fn()
            self.__timeout = gobject.timeout_add(self.__interval * 1000, self.info_changed)
        except:
            # The player exited ? call callback function
            self.callback_fn()Offline

/me can't wait to post a screenie of my new desktop setup tomorrow.... 2560x1600 on a single LCD screen! Anyone have a suggestion on what to do with all this space?
 30" monitor?
 30" monitor?
Offline

Roberth, that are some very nice screenshots. I've been playing with Evilwm on and off and the only thing I was missing was the ability to assign shortcut keys for application launches. (Of course, if it really bothered me, I would be investigating Xbindkeys, which I suspect would give me what I want.)
What chat client is that, by the way?
Offline

I remember seeing that desktop background a looong time ago.
Offline
iBertus wrote:/me can't wait to post a screenie of my new desktop setup tomorrow.... 2560x1600 on a single LCD screen! Anyone have a suggestion on what to do with all this space?
30" monitor?
Yep. It's too big. I now don't have room on my desk for anything else.
Also, I wanted to share this site with everyone. Has some good high-res wallpapers.
Last edited by iBertus (2008-01-11 07:09:36)
Offline

Also, I wanted to share this site with everyone. Has some good high-res wallpapers.
Hilarious. Thanks for the link!
celestary
Intel Core2Duo E6300 @ 1.86 GHz
kernel26
KDEmod current repository
Offline