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"
EndSection
and 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?
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