View previous topic :: View next topic |
Author |
Message |
kwenspc Advocate
Joined: 21 Sep 2003 Posts: 4954
|
Posted: Mon Jan 31, 2005 3:43 pm Post subject: [SCRIPT] fond d'ecran fvwm, fluxbox et xfce4 (updated bis) |
|
|
version 0.6
Voilà, je viens de coder rapido un ptit script et je tenais à vous en faire part
Ce dernier est parti d'un post précédent
(ici)
Je me demandais si il existait un programme qui sache gérer les fonds d'écrans sous fvwm (et consors) en mode xinerama (double écran, je n'ai pas géré plus de 2 écrans). Je voulais en effet avoir un fond d'écran différent sur chaque écrans et pouvoir les changer de manière automatique.
N'ayant pas de réponse positive j'ai fais ce script.
NOUVEAU :Il est dorénavant codé en python, vu que c'est mon premier programme en python, soyez indulgents et faites moi part de vos remarques au niveau du code (bug, mauvais syntaxe, pas tres belle construction etc... ). De plus en ligne de code il est à peine plus long (301 lignes) que le script Bash original et il a une fonction en plus!
UPDATED BIS : Bon j'ai ajouté une petite gestion de signaux afin de commander le script pour qu'il change de fond si celui qu'il nous a mis ne nous interesse pas (./wp2d -c) et aussi pour lui dire de quitter proprement (./wp2d -q). Ah aussi, désormais il teste sir le repertoire temporaire où il va traiter les images existe bel et bien. voili voilou
Son nom: wp2d.py
Ce qu'il sait faire:
- afficher 1 fond pour 1 écran (wouaaaah)
- afficher 1 fond pour 2 écrans (c'est mieux)
- afficher 1 fond sur chaque écran 1 fois
- afficher 1 fond sur chaque écran selon un temps d'attente définis (toute les 10minutes par ex)
- le fond peut-être le même sur chaque écran
- le fond peut-être différent sur chaque écran
- l'affichage peut-être séquentiel (les uns après les autres selon leur rangement dans le repertoire)
- l'affichage peut-être "aléatoire"
- il peut utiliser Esetroot ou fbsetbg (j'en ai pas essayé d'autres)
NOUVEAU : - il peut respecter l'échelle des images à afficher (merci Prosper4tie pour l'idée!)
Ce qu'il ne sait pas faire:
- afficher 1 fond pour plus de 2 écrans
- faire le café...
[old]Au début j'avais commencer à le faire en Perl, langage que je connais un peu plus que le Bash-script.
Mais finalement j'ai choisi Bash car au moins tout le monde l'a ce fameux Bash.
Cependant, n'étant pas un crack en Bash-script (vous le verrez vous même), il est tout à fait possible que des erreurs ce soient glissées dans ce script et/ou que le code soit moche;
je ne verrais aucuns inconvénients à ce que vous me fassiez des remarques donc![/old]
nouveau :J'ai cette fois-ci choisis le python non seuleument parce que je suis en train de l'apprendre, mais aussi parce qu'il est plutôt simple et en plus là encore : tout les gentooïste l'ont alors pourquoi s'en priver!
En espérant qu'il servira à d'autres qu'à moi
Note : voici un exemple d'utilisation que j'en fais
wp2d.py -w /home/fond/ -1 1152x864 -2 1280x1024 -t 30 -m rand -d diff
(vous pouvez mettre une telle commande dans le .fluxbox/startup par exemple)
Attention : l'option "-t" ne prend plus que des temps en secondes donc ne mettez qu'un chiffre entier seul ça suffira.
Maintenant le code :
Code: |
#!/usr/bin/python
#
# wp2d.py
#
# WP2D
#
# WallPaper
# To
# Display
#
# version 0.6
# python version
#
# by kwenspc (for gentoo frensh's forum)
#
import os, sys, commands, getopt, time, random, signal
vg_user = os.environ['USER']
vg_wpList = []
vg_finalWp = '/tmp/' + vg_user + '/wp_' + vg_user + '.jpg'
vg_tmpWp1 = '/tmp/' + vg_user + '/wp_' + vg_user + '1.jpg'
vg_tmpWp2 = '/tmp/' + vg_user + '/wp_' + vg_user + '2.jpg'
vg_tmpImg = '/tmp/' + vg_user + '/tmp_' + vg_user + '.jpg'
# It just prints the help message
# No need of arguments
def fHelp():
print "Usage of wp2d\n"
print "Available options:"
print "-w [dir] : all path to wallpaper's directory\n"
print "-1 [size] : resolution of screen one (left screen)"
print "-2 [size] : resolution of screen two (right screen)"
print "note: size must be like [number]x[number] such as 1280x1024"
print " -1 option is needed, -2 is optional (if you have not a 2nd screen)"
print "-t [time] : time to wait before changing wallpaper"
print "note: time must be set in seconds"
print " set 0 if you want 1 turn (wp2d will left after that)"
print " by default time is set to 3600 seconds"
print "-p [prog] : program used to display wallpaper on screen"
print " by default fbsetbg"
print "-m [mode] : mode used to display wallpaper."
print " seq for sequential or rand for randomised."
print "-d [how] : how could be diff or same"
print " diff : different wallpapers will be displayed"
print " on each screen"
print " same : same wallpaper will be displayed"
print " on each screen"
print "note: by default how is set to same"
print "-s : scale respected image"
print "-c : send a signal, to current wp2d session, to change wallpaper."
print "-q : send a signal, to current wp2d session, to exit."
sys.exit(1)
# Used to set variables properly (from arguments)
# Usage : fInit(va_opt)
# va_opt is a list from getopt module
def fInit(va_opt):
vf_dir = ''
vf_size1 = ''
vf_size2 = ''
vf_wait = 3600
vf_prog = 'fbsetbg'
vf_mode = 'seq'
vf_how = 'same'
vf_scale = 0
vf_scrS1 = []
vf_scrS2 = []
for vf_option, vf_value in va_opt:
if vf_option in ('-h', '--help'):
fHelp()
elif vf_option in ('-c'):
fChangeWp()
elif vf_option in ('-q'):
fQuit()
elif vf_option in ('-w'):
vf_dir = vf_value
elif vf_option in ('-1'):
vf_size1 = vf_value
elif vf_option in ('-2'):
vf_size2 = vf_value
elif vf_option in ('-t'):
vf_wait = int(vf_value)
elif vf_option in ('-p'):
vf_prog = vf_value
elif vf_option in ('-m'):
vf_mode = vf_value
elif vf_option in ('-d'):
vf_how = vf_value
elif vf_option in ('-s'):
vf_scale = 1
if (vf_dir == ''):
print 'You need to set a wallpaper\'s directory'
sys.exit(1)
if ((vf_size2 != '') and (vf_size1 == '')):
vf_size1 = vf_size2
vf_size2 = ''
if (vf_size1 == ''):
print 'You need to set the screen size (see option -h for more information)'
sys.exit(1)
if (vf_size1 and vf_size2):
vf_trans = vf_size1.split('x')
vf_scrS1.append(int(vf_trans[0]))
vf_scrS1.append(int(vf_trans[1]))
vf_trans = vf_size2.split('x')
vf_scrS2.append(int(vf_trans[0]))
vf_scrS2.append(int(vf_trans[1]))
vf_tmpDir = '/tmp/' + vg_user + '/'
if(not os.path.isdir(vf_tmpDir)):
mkdir(vf_tmpDir)
return vf_dir, vf_size1, vf_size2, vf_wait, vf_prog, vf_mode, vf_how, vf_scale, vf_scrS1, vf_scrS2
# Lists all wallpaper present in a directory
# Usage : fList(va_wpDir)
# va_wpDir is the directory to list
def fListWp(va_wpDir):
vf_wpPath = os.path.abspath(va_wpDir)
vf_fileLst = os.listdir(vf_wpPath)
vf_wpLst = []
for vf_file in vf_fileLst:
vf_filePath = os.path.join(vf_wpPath, vf_file)
if os.path.isfile(vf_filePath):
vf_wpLst.append(vf_filePath)
vf_wpLst.sort()
return vf_wpLst
# Runs command through 'commands' module
# Usage : fExecCmd(va_cmdString)
# va_cmdString is the string command to execute
def fExecCmd(va_cmdString):
if (va_cmdString == ''):
print 'Can\'t execute void string command'
sys.exit(1)
vf_cmdError, vf_cmdResult = commands.getstatusoutput(va_cmdString)
if vf_cmdError:
print 'Error with command : ' + va_cmdString
print vf_cmdError
sys.exit(1)
return vf_cmdResult
# Returns the size of an image given
# Usage fGetSize(va_image)
# Return value : vf_size[0] is H and vf_size[1] is V
def fGetSize(va_image):
vf_size = []
vf_cmdRes = ''
vf_cmdString = 'identify ' + va_image + ' | awk -F \' \' \'{print $3}\''
vf_cmdRes = fExecCmd(vf_cmdString)
vf_trans = vf_cmdRes.split('x')
vf_size.append(int(vf_trans[0]))
vf_size.append(int(vf_trans[1]))
return vf_size
# Resizes an image given with a ratio
# Usage : fResizeImage(va_startImg, va_endImg, va_scrSize, va_ratio)
# va_ratio could be '!' (no respect for scale), '<' (scale respect while reducing an image size)
# and '>' (scale respect while increasing an image size)
def fResizeImage(va_startImg, va_endImg, va_scrSize, va_ratio):
vf_cmdString = 'nice -n 19 convert ' + va_startImg + ' -resize ' + va_scrSize + '\\' + va_ratio + ' ' + va_endImg
fExecCmd(vf_cmdString)
return 1
# Resize an image scale-respected
# Usage : fCreateScaleRespectedImage(va_startImg, va_endImg, va_scrSize , va_scrHV)
def fCreateScaleRespectedImage(va_startImg, va_endImg, va_scrSize , va_scrHV):
vf_imgHV = fGetSize(va_startImg)
if (vf_imgHV < va_scrHV):
vf_ratio = '<'
else:
vf_ratio = '>'
fResizeImage(va_startImg, va_endImg, va_scrSize, vf_ratio)
vf_imgHV = fGetSize(va_endImg)
vf_hBorder = (va_scrHV[0] - vf_imgHV[0])/2
vf_vBorder = (va_scrHV[1] - vf_imgHV[1])/2
if ((vf_hBorder != 0) or (vf_vBorder != 0)):
vf_cmdString = 'nice -n 19 convert ' + va_endImg + ' -bordercolor black -border ' + str(vf_hBorder) + 'x' + str(vf_vBorder) + ' ' + va_endImg
fExecCmd(vf_cmdString)
return 1
# Generates a wallpaper and displaying it (on 1 or 2 screens)
# Usage : fGenerateWp(va_indexWp1, va_indexWp2)
# (va_indexWp2 is optional, sets to -1 by default)
def fGenerateWp(va_indexWp1, va_indexWp2 = -1):
if vg_scaleRespect:
fCreateScaleRespectedImage(vg_wpList[va_indexWp1], vg_tmpWp1, vg_scrSize1, vg_scrHV1)
else:
fResizeImage(vg_wpList[va_indexWp1], vg_tmpWp1, vg_scrSize1, '!')
if ((va_indexWp2 > -1) and (va_indexWp2 != va_indexWp1)):
if vg_scaleRespect:
fCreateScaleRespectedImage(vg_wpList[va_indexWp2], vg_tmpWp2, vg_scrSize2, vg_scrHV2)
else:
fResizeImage(vg_wpList[va_indexWp2], vg_tmpWp2, vg_scrSize2, '!')
vf_cmdString = 'nice -n 19 montage ' + vg_tmpWp1 + ' ' + vg_tmpWp2 + ' -mode Concatenate ' + vg_finalWp
elif (va_indexWp2 == va_indexWp1):
vf_cmdString = 'nice -n 19 montage ' + vg_tmpWp1 + ' ' + vg_tmpWp1 + ' -mode Concatenate ' + vg_finalWp
else:
vf_cmdString = 'cp ' + vg_tmpWp1 + ' ' + vg_finalWp
fExecCmd(vf_cmdString)
vf_cmdString = 'chmod 600 ' + vg_finalWp
fExecCmd(vf_cmdString)
vf_cmdString = vg_wpProgName + ' ' + vg_finalWp
fExecCmd(vf_cmdString)
vf_cmdString = 'rm ' + vg_tmpWp1
fExecCmd(vf_cmdString)
if (va_indexWp2 > -1):
vf_cmdString = 'rm ' + vg_tmpWp2
fExecCmd(vf_cmdString)
return
# Displays sequentialy wallpapers
# No need of arguments
def fSeqTurn():
vf_index = 0
while (1):
if (vf_index >= len(vg_wpList)):
vf_index = 0
if (vg_scrSize2 == ''):
fGenerateWp(vf_index)
else:
if (vg_how == 'same'):
fGenerateWp(vf_index, vf_index)
else:
fGenerateWp(vf_index, (vf_index + 1))
vf_index = vf_index + 1
if (vg_timeToWait == 0):
sys.exit(1)
time.sleep(float(vg_timeToWait))
return
# Displays randomly wallpapers
# No need of arguments
def fRandTurn():
while (1):
vf_index = random.randint(0, len(vg_wpList))
if (vg_scrSize2 == ''):
fGenerateWp(vf_index)
else:
if (vg_how == 'same'):
fGenerateWp(vf_index, vf_index)
else:
fGenerateWp(vf_index, (random.randint(0, len(vg_wpList))))
if (vg_timeToWait == 0):
sys.exit(1)
time.sleep(float(vg_timeToWait))
return
# Send a SIGUSR1 signal to the top wp2d launched process telling him to change wallpaper
# No nedd of arguments
def fChangeWp():
vf_cmdString = 'ps x | grep wp2d | awk -F \' \' \'{print $1}\''
vf_cmdResult = fExecCmd(vf_cmdString)
vf_pid = vf_cmdResult.split('\n')
os.kill(int(vf_pid[0]), signal.SIGUSR1)
sys.exit(1)
# Send a SIGUSR2 signal to the top wp2d launched process telling him to exit properly
# No nedd of arguments
def fQuit():
vf_cmdString = 'ps x | grep wp2d | awk -F \' \' \'{print $1}\''
vf_cmdResult = fExecCmd(vf_cmdString)
vf_pid = vf_cmdResult.split('\n')
os.kill(int(vf_pid[0]), signal.SIGUSR2)
sys.exit(1)
# Handle SIGUSR1 signal : it changes the wallpaper
# Arguments are used by system
def fHandleSigusr1(va_signum, va_frame):
if (vg_mode == 'rand'):
fRandTurn()
else:
fSeqTurn()
# Handle SIGUSR2 signal : it exit properly
# Arguments are used by system
def fHandleSigusr2(va_signum, va_frame):
vf_cdmString = 'rm ' + vg_finalWp
fExecCmd(vf_cdmString)
sys.exit(1)
# We need to get arguments
options, args = getopt.getopt(sys.argv[1:], 'hcqw:1:2:t:p:m:d:s', ['help'])
if (len(options) == 0):
print 'Usage:'
print './wp2d.py [options]'
print 'See ./wp2d.py --help (or -h) for more information'
sys.exit(1)
# ############## #
# Script starts here #
# ############## #
# Setting variables from arguments properly
vg_wpDirectory, vg_scrSize1, vg_scrSize2, vg_timeToWait, vg_wpProgName, vg_mode, vg_how, vg_scaleRespect, vg_scrHV1, vg_scrHV2 = fInit(options)
# We list wallpaper's directory
vg_wpList = fListWp(vg_wpDirectory)
# Let's go!
if (len(vg_wpList) == 0):
print 'There is no files in ' + vg_wpDirectory
sys.exit(1)
# On prend en charge les signaux SIGUSR1 et SIGUSR2
signal.signal(signal.SIGUSR1, fHandleSigusr1)
signal.signal(signal.SIGUSR2, fHandleSigusr2)
if (vg_mode == 'rand'):
fRandTurn()
else:
fSeqTurn()
# EOF #
|
Note: au moment de lister le repertoire de fond d'écrans, wp2d récupère aussi la résolution de chaque image. Ainsi il verra si il est nécéssaire de redimensionner l'image pour l'écran ou non (pour gagner du temps).
Cependant j'ai remarqué qu'avec un rep de 100 images c'est assez long à initiliser à cause de ça et je me demande si ça ne serait pas mieux de ne pas gérer cette résolution et de redimensionner quoiqu'il arrive l'image pour l'écran où elle va aller...
Dites moi ce que vous en pensez
Update : Si vous êtes encore sur une version 6.1.7-r1 d'ImageMagick vous aures un bug, en effet le programme "convert" d'ImageMagick souffre d'un bug dans cette version. IL s'agit des opsions pour rajouter des bord à une image : convert truc.jpg ... -border 36x0 res.jpg par exemple ne marche pas. Donc un petti emerge sync && emerge imagemagick s'impose
Last edited by kwenspc on Fri Mar 11, 2005 4:05 pm; edited 5 times in total |
|
Back to top |
|
|
Trevoke Advocate
Joined: 04 Sep 2004 Posts: 4099 Location: NY, NY
|
Posted: Mon Jan 31, 2005 4:53 pm Post subject: |
|
|
Desole - si ca sait pas faire le cafe je m'en tapotte le popotin avec un concombre epluche a la main par les bonnes soeurs.
Mais a part ca, tres joli le script
Merci! _________________ Votre moment detente
What is the nature of conflict? |
|
Back to top |
|
|
kwenspc Advocate
Joined: 21 Sep 2003 Posts: 4954
|
Posted: Mon Jan 31, 2005 6:22 pm Post subject: |
|
|
je sais pas si il est joli mais au moins sert-il à quelque chose???
siou plait un peu de retour! |
|
Back to top |
|
|
Darkael Veteran
Joined: 10 Aug 2004 Posts: 1321 Location: France
|
Posted: Mon Jan 31, 2005 6:42 pm Post subject: |
|
|
kwenspc wrote: | je sais pas si il est joli mais au moins sert-il à quelque chose???
siou plait un peu de retour! |
Salut, il a l'air pas mal le script, je l'ai pas essayé vu que j'ai qu'un seul écran donc ça limite un peu l'interet
Par contre je vois que les -s1 et -s2 doivent être spécifiés par l'utilisateur, à mon avis ce serait peut-être mieux si le script se chargeait automatiquement de déterminer les résolutions de chaque écran. |
|
Back to top |
|
|
kwenspc Advocate
Joined: 21 Sep 2003 Posts: 4954
|
Posted: Mon Jan 31, 2005 7:35 pm Post subject: |
|
|
ça existe un utilitaire qui fait ça? (qui donne la résolution courantes des ecrans)
parce que là à part une combinaison avec more,grep,awk,sed sur le fichier de log de Xorg, j'ai beau chercher je vois pas trop... |
|
Back to top |
|
|
Prosper4tie Tux's lil' helper
Joined: 02 Apr 2004 Posts: 94 Location: France (74)
|
Posted: Mon Jan 31, 2005 8:01 pm Post subject: |
|
|
Pour ma part, a par un warning, tout fonctionne bien.
Code: | prosper@altrus prosper $ ./wp2d.sh -w Images/ -s1 1280x1024 -s2 1024x768 -t 30s -m rand -d diff
sh: line 1: html2ps: command not found identify: Delegate failed `"html2ps" -U -o "%o" "%i"'. |
Juste un petite remarque, si l'image est plus petite que la résolution de l'écran, elle est redimensionnée, et ça c'est mal, parce que les photos en portrait ca devient des gens tout écrasés.
Sinon bon boulot. |
|
Back to top |
|
|
kwenspc Advocate
Joined: 21 Sep 2003 Posts: 4954
|
Posted: Mon Jan 31, 2005 8:39 pm Post subject: |
|
|
ok je vais penser à tout ça
par contre ton warning est plus qu'étrange, je ne'arrive pas à comprendre où il lit un "html2ps" quelque part...(surtout à la ligne 1) |
|
Back to top |
|
|
Darkael Veteran
Joined: 10 Aug 2004 Posts: 1321 Location: France
|
Posted: Mon Jan 31, 2005 9:10 pm Post subject: |
|
|
kwenspc wrote: | ça existe un utilitaire qui fait ça? (qui donne la résolution courantes des ecrans)
parce que là à part une combinaison avec more,grep,awk,sed sur le fichier de log de Xorg, j'ai beau chercher je vois pas trop... |
Hmm pour un seul écran "xwininfo -root" donne des infos facilement exploitables, mais je suppose que pour du double écran ça va misérablement foirer.
Bon sinon comme tu dis la solution serait de chercher dans les logs (tu peux aussi chercher dans les fichiers de conf, mais je sais pas où se configure le double écran) |
|
Back to top |
|
|
kwenspc Advocate
Joined: 21 Sep 2003 Posts: 4954
|
Posted: Mon Jan 31, 2005 9:27 pm Post subject: |
|
|
oui j'avais déjà essayer xwininfo, et en effte c'est pas exploitable car pour il ne fournit que la resolution totale et non la résolution de chaque écran. bon c'est pas grave je vais parser le log ou le conf on verra bien.
j'ai ptet une idée à ajouter aussi à ce script (je verrais si c'est faisable) : je vias faire en sorte qu'il puisse afficher un fond d'écran différent sur chaque bureau virtuel (flux, fvwm etc...). Mais je pense que c'est plus facile de faire cette manip directement en configurant le wm utilisé. |
|
Back to top |
|
|
Darkael Veteran
Joined: 10 Aug 2004 Posts: 1321 Location: France
|
Posted: Mon Jan 31, 2005 9:48 pm Post subject: |
|
|
kwenspc wrote: |
j'ai ptet une idée à ajouter aussi à ce script (je verrais si c'est faisable) : je vias faire en sorte qu'il puisse afficher un fond d'écran différent sur chaque bureau virtuel (flux, fvwm etc...). Mais je pense que c'est plus facile de faire cette manip directement en configurant le wm utilisé. |
C'est possible de faire ça autrement que par le wm?
Pour fluxbox je sais pas, pour FVWM il te faudra surement passer par FvwmBacker ou FvwmEvent. |
|
Back to top |
|
|
kwenspc Advocate
Joined: 21 Sep 2003 Posts: 4954
|
Posted: Tue Feb 01, 2005 12:54 pm Post subject: |
|
|
Bon je suis en train d'essayer de parser le fichier de conf xorg mais pour le moment j'ai pas de solution "lgère".
Est ce que quelqu'un sait comment faire un grep qui permette par exemple de récupérer toutes les section "Section Screen" (je veux dire on récupère le "Section Screen" ce qu'il y a au milieu et la fin "EndSection)?
@Prosper4tie : je me creuse la tête pour le problème de portrait mais je crains que je ne vais pas implémenter le truc faute de temps... j'ai bien une solution. Donc en gros je vérifie le rapport de l'image par rapport à la résolution de l'écran courant, je reconstruit une image avec agrandissement de l'image originale mais en faisant bien attention que le rapport original soit gardé et je la plaque sur un fond (de même résolution de l'écran) et je concatene le tout...
Bah ecoutes je vais voir ce que je peus faire |
|
Back to top |
|
|
yoyo Bodhisattva
Joined: 04 Mar 2003 Posts: 4273 Location: Lyon - France
|
Posted: Tue Feb 01, 2005 1:09 pm Post subject: |
|
|
kwenspc wrote: | @Prosper4tie : je me creuse la tête pour le problème de portrait mais je crains que je ne vais pas implémenter le truc faute de temps... j'ai bien une solution. Donc en gros je vérifie le rapport de l'image par rapport à la résolution de l'écran courant, je reconstruit une image avec agrandissement de l'image originale mais en faisant bien attention que le rapport original soit gardé et je la plaque sur un fond (de même résolution de l'écran) et je concatene le tout... | Bon, j'ai pas regardé le script (de toute façon j'y connais pas grand chose) mais le comportement que tu décris correspond à l'option "-a" de fbsetbg :
man fbsetbg wrote: | -a file
Set maximized wallpaper, preserving aspect (if your bgsetter doesn't support this option fbsetbg falls back to -f ). |
Mes 0.02 cents _________________ La connaissance s'accroît quand on la partage.
JCB |
|
Back to top |
|
|
Prosper4tie Tux's lil' helper
Joined: 02 Apr 2004 Posts: 94 Location: France (74)
|
Posted: Tue Feb 01, 2005 1:14 pm Post subject: |
|
|
Faut pas non plus se prende la tête la dessus, je disais ca comme ca (:
Sinon j'ai pas precisé, le script est lancé sous xfce4, donc tu peux mettre le tampon "xfce4 certified" en plus de fvwm et fluxbox |
|
Back to top |
|
|
kwenspc Advocate
Joined: 21 Sep 2003 Posts: 4954
|
Posted: Tue Feb 01, 2005 1:20 pm Post subject: |
|
|
@yoyo : ookiii! bon je vais voir ça, ça va me faciliter la tâche!
[edit] ah ouais mais non en fait dans mon cas ça va pas être possible, car en fait le fbsetbg je le fais sur le fond d'écran résultant de la concaténation et non sur l'image original...bon pas grave je vais voir ce qu'imagemagick a à me mettre sous la dent pour ça[/edit]
@Prosper4tie : t'inkièt! au contraire c'était une remarque qui va faire avancer les choses!
et je met le tip pour xfce4 thx! |
|
Back to top |
|
|
yoyo Bodhisattva
Joined: 04 Mar 2003 Posts: 4273 Location: Lyon - France
|
Posted: Tue Feb 01, 2005 1:29 pm Post subject: |
|
|
KarnEvil wrote: | kwenspc wrote: |
j'ai ptet une idée à ajouter aussi à ce script (je verrais si c'est faisable) : je vias faire en sorte qu'il puisse afficher un fond d'écran différent sur chaque bureau virtuel (flux, fvwm etc...). Mais je pense que c'est plus facile de faire cette manip directement en configurant le wm utilisé. |
C'est possible de faire ça autrement que par le wm?
Pour fluxbox je sais pas, pour FVWM il te faudra surement passer par FvwmBacker ou FvwmEvent. | Pour fluxbox, il y a "fluxspace" qui permet non-seulement d'avoir des fonds d'écrans différents, mais aussi des icônes et dockapps différentes sur chaque bureau etc. (plus d'infos ici : http://fluxspace.sourceforge.net/).
EDIT : kwenspc wrote: | ah ouais mais non en fait dans mon cas ça va pas être possible, car en fait le fbsetbg je le fais sur le fond d'écran résultant de la concaténation et non sur l'image original...bon pas grave je vais voir ce qu'imagemagick a à me mettre sous la dent pour ça | Arf ... _________________ La connaissance s'accroît quand on la partage.
JCB |
|
Back to top |
|
|
kwenspc Advocate
Joined: 21 Sep 2003 Posts: 4954
|
Posted: Thu Feb 17, 2005 6:39 pm Post subject: |
|
|
J'ai eu le temps de retoucher mon script cet après-midi, voilà le résultat (premier post de ce topic) |
|
Back to top |
|
|
Prosper4tie Tux's lil' helper
Joined: 02 Apr 2004 Posts: 94 Location: France (74)
|
Posted: Sun Feb 20, 2005 12:33 pm Post subject: |
|
|
Ma connaissance en pyhton étant aussi limitée qu'une recette à base de vache qui rit, je préfère m'en remettre à la communauté.
Code: | prosper@altrus prosper $ ./wp2d.py -w Images/ -1 1280x1024 -2 1024x768 -t 30s -m rand -d diff
Traceback (most recent call last):
File "./wp2d.py", line 286, in ?
vg_wpDirectory, vg_scrSize1, vg_scrSize2, vg_timeToWait, vg_wpProgName, vg_mode, vg_how, vg_scaleRespect, vg_scrHV1, vg_scrHV2 = fInit(options)
File "./wp2d.py", line 77, in fInit
vf_wait = int(vf_value)
ValueError: invalid literal for int(): 30s
prosper@altrus prosper $ |
|
|
Back to top |
|
|
pititjo Apprentice
Joined: 19 Sep 2004 Posts: 245 Location: Paris (France)
|
Posted: Sun Feb 20, 2005 12:45 pm Post subject: |
|
|
D'après le message d'erreur, il semblerais que -t demande un entier.
Renplace donc 30s par 30 et ça devrait marcher. _________________ pititjo.net
Le Mus. Et si c'était vrai ? |
|
Back to top |
|
|
Prosper4tie Tux's lil' helper
Joined: 02 Apr 2004 Posts: 94 Location: France (74)
|
Posted: Sun Feb 20, 2005 1:56 pm Post subject: |
|
|
yep c'était ca, j'avais essayer de mettre "s" à la place de "m" mais j'avais pas suivi qu'il attendait pas l'unité.
Sinon il faudrait corriger le topic de départ qui indique :
Quote: | Note : voici un exemple d'utilisation que j'en fais
wp2d.py -w /home/fond/ -1 1152x864 -2 1280x1024 -t 30m -m rand -d diff
(vous pouvez mettre une telle commande dans le .fluxbox/startup par exemple) |
Par contre j'arrive pas a activer l'option -s.
J'ai modifié le script à la ligne 182 pour indiquer wg_tmpImage à la place de wa_tmpImage, et maintenant j'obtiens ceci
Code: |
prosper@altrus prosper $ ./wp2d.py -w Images/ -1 1280x1024 -2 1024x768 -t 10 -m rand -d diff -s
Error with command : nice -n 19 convert /tmp/prosper/tmp_prosper.jpg -bordercolor black -border 0x85 /tmp/prosper/wp_prosper1.jpg
256
prosper@altrus prosper $
|
Pour info
Code: | * media-gfx/imagemagick
Latest version available: 6.1.8.8
Latest version installed: 6.1.8.8
|
|
|
Back to top |
|
|
kwenspc Advocate
Joined: 21 Sep 2003 Posts: 4954
|
Posted: Sun Feb 20, 2005 5:22 pm Post subject: |
|
|
je vois ça dès que je rentre, pour va_tmpImg il faut mettre va_endImg
je change ça de suite sur le poste original
je vais revoir ça. (j'espère aussi qu'ImageMagick n'a pas un autre bug)
Oui par contre désolé de ne pas avoir notifé le fait qu'il ne faut plus mettre 's', 'm' ou 'h' au côté du temps et exprimer ce dernier qu'en secondes.
Bien evidemment c'est un premier coup d'essai en python. je vais essayer de le rendre plus "user friendly" si possible.
Appel aux developpeurs python : si vous connaissez des bibliothèques de fonctions permettant de gérer X (résoltuion d'écran etc..) faites moi signe, je pourrais implémenter la fonction de détection automatique de la résoltuion écran. ce qui eviterait de le passer ne paramètre. A propos de paramètres le "-1" et "-2" me semble pas très parlant, mais je n'arrivais pas à faire "-s1" "-s2"...enfin si j'arrive à faire la fonction ci-dessus ces deux paramètres dispraîtront.
et encore merci Prosper4tie! vu que tu sembles être le seul à tester ce script |
|
Back to top |
|
|
ppierre n00b
Joined: 17 Aug 2004 Posts: 35
|
Posted: Mon Feb 21, 2005 12:28 pm Post subject: |
|
|
Il existe :
Code: | # emerge -va dev-python/python-xlib |
et cela donne :
Quote: | Method: Display screen ( sno = None )
width_in_pixels
height_in_pixels
The size of the root window in pixels, i.e. the size of the entire screen. |
J'ai jamais testé mais cela devrait marcher. |
|
Back to top |
|
|
Prosper4tie Tux's lil' helper
Joined: 02 Apr 2004 Posts: 94 Location: France (74)
|
Posted: Mon Feb 21, 2005 1:19 pm Post subject: |
|
|
Pour ma part plus de problème depuis la correction de variable, le script tourne nickel. |
|
Back to top |
|
|
kwenspc Advocate
Joined: 21 Sep 2003 Posts: 4954
|
Posted: Mon Feb 21, 2005 5:21 pm Post subject: |
|
|
merci ppierre il semblerait que ça soit exactement ce que je cherche
Au fait, est ce que vous avez rencontré un problème de "court ralentissement" de la machine dès lors que le script change de fond d'écran?
j'ai beau avoir mis un nice -n 19 au commande pour imagemagick chez moi il y a toujours un petit à-coup dès que le sleep se termine
c'est assez embêtant.
Je vais essayer de regler ce petit problème.
Pendant que j'y pense, pour ceux qui passent dans le coin : y en aurait-il qui font du xinerama avec 3 écrans ou plus?
(ça serait intéréssant que le script sache gérer n'importe quelle configuration xinerama non?) |
|
Back to top |
|
|
kwenspc Advocate
Joined: 21 Sep 2003 Posts: 4954
|
Posted: Fri Mar 11, 2005 4:06 pm Post subject: |
|
|
j'ai rajouté 3 ptits trucs rapido qui rendent le script souple. (j'ai mis à jour le topic)
je suis toujours à l'écoute de vos suggestions |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|