[Screenshots] Épatez la galerie, présentez votre bureau!

Ce qui ne concerne ni le forum ni des problèmes
Avatar de l’utilisateur
chipster
Maître du Kyudo
Messages : 2063
Inscription : ven. 11 août 2006, 22:25
Localisation : Saint-Étienne (42)
Contact :

Re: [Screenshots] Épatez la galerie, présentez votre bureau!

Message par chipster » mer. 15 août 2012, 11:04

Avec les infos de @onyx67, j'ai du refaire le programme lua en python car il merdait sec (segfault de conky entre autre)
Voici le résultat lorsque les scripts sont lancés :
Image

Avatar de l’utilisateur
onyx67
Elfe
Messages : 744
Inscription : dim. 06 nov. 2011, 18:12
Localisation : Alsace

Re: [Screenshots] Épatez la galerie, présentez votre bureau!

Message par onyx67 » mer. 15 août 2012, 13:04

@ chipster: :bravo:
Peux-tu poster le script pour récupérer les images satellites?
J'ai déjà tenté un conky du même style que le tien (conky central), mais j'ai lamentablement échoué à causes d'un soucis de police. Les polices utiliser par conky sont bien celles du répertoire /usr/share/fonts (j'avoue mes lacunes en la matière :oops: )
Tant qu'à faire, tu peux poster le .conkyrc?
Merci :)
"La complication est un effet de la simplicité mal acquise"

Intel i5-2320; Nvidia GeForce GT 520; ATA Hitachi 2To; Windows7/ArchLinux-Kde5

Avatar de l’utilisateur
chipster
Maître du Kyudo
Messages : 2063
Inscription : ven. 11 août 2006, 22:25
Localisation : Saint-Étienne (42)
Contact :

Re: [Screenshots] Épatez la galerie, présentez votre bureau!

Message par chipster » mer. 15 août 2012, 13:14

C'était prévu que je les publie sauf que j'ai mon petit qui m'a pas mal occupé donc je n'ai pas pu
Attention il faut python3 et python3-imaging. J'avais fait les mêmes en perl qui sont sur le fofo

Imagesat.py

Code : Tout sélectionner

#!/usr/bin/python
# jeu. 09 août 2012 à 10h40 
# python3-imaging

# -*- coding: utf-8 -*-

from urllib.request import urlopen
from Image import ANTIALIAS
from Image import open as open_image
from time import time
from os.path import join, exists, isfile, split
from os import stat, access, R_OK, W_OK
from sys import stderr, argv, exit
from getopt import getopt, GetoptError




############
# Définition de la classe Var
########################

class Var :
	def __init__(self):
		self.url         = str()
		self.picture     = str()
		self.emplacement = str()
		self.cible       = str()
		self.chaine      = str()
		self.page        = str()

		self.box         = list()
		self.resize      = list()

		self.time        = int()




############
# Définition des fonctions
########################

def help():
	print("Usage : {0} [options]".format(argv[0]))
	print(" Options :")
	print("  -c : Découpage AxBxLxH où A est le décalage x, B le décalage y, L et H la longueur et la hauteur à découper")
	print("  -h : Cette aide")
	print("  -i : Information sur la chaine à rechercher")
	print("  -o : Emplacement de sauvegarde ex.: /tmp/image_sat.jpg")
	print("  -p : Page internet où trouver l'url d'une image")
	print("  -r : Redimensionnement de l'image AxB")
	print("  -t : Temps avant de pouvoir retélécharger l'image initiale")
	print("  -u : L'adresse où télécharger l'image\n")
	print(" Exemple 1 :\n  {0} -c 0x110x1274x657 -r 400x220 -o /tmp/image_sat.jpg -u http://oiswww.eumetsat.org/IPPS/html/latestImages/EUMETSAT_MSG_RGB-naturalcolor-westernEurope.jpg -t 3600\n".format(argv[0]))
	print(" Exemple 2 :\n  {0} -c 0x0x960x528 -r 400x219 -o /tmp/image_marine.jpg -p http://marine.meteoconsult.fr/carte/meteo-marine/frontologie_0.php#etiquette -i http://images.meteoconsult.fr/image/mc-france/cartes/frontologie/produits/ -t 3600".format(argv[0]))
	exit(1)


def isNumber(number):
	try :
		a = int(number)
		return a
	except ValueError:
		stderr.write(number + " n'est pas un nombre valide !\n")
		exit(1)


def recup_arg(var, arg):
	if len(arg) < 2:
		help()
	else:
		try:
			# c : crop
			# h : help
			# i : information of search string
			# o : save file
			# p : page to search url image
			# r : resize
			# t : time
			# u : url
			opts, args = getopt(arg[1:], "c:hi:o:p:r:t:u:")
		except GetoptError as err:
			stderr.write(err + "\n")
			help()

		for o, a in opts:
			if o == "-c":
				var.box = [isNumber(val) for val in a.split("x")]

			elif o == "-h":
				help()

			elif o == "-i":
				var.chaine = a

			elif o == "-o":
				(var.emplacement, var.cible) = split(a)

				if not (access(var.emplacement, R_OK) and access(var.emplacement, W_OK)):
					stderr.write("Vous n'avez pas les droits sur : " + var.emplacement + "\n")
					exit(1)

			elif o == "-p":
				var.page = a

			elif o == "-r":
				var.resize = [isNumber(val) for val in a.split("x")]

			elif o == "-t":
				var.time = isNumber(a)

			elif o == "-u":
				(var.url, var.picture) = split(a)


def download():
	sav_file = join(var.emplacement, var.picture)

	# Téléchargement de l'image
	img = urlopen(join(var.url, var.picture))
	# Sauvegarde de l'image
	with open(sav_file, "wb") as source:
		source.write(img.read())


def crop():
	sav_file = join(var.emplacement, var.picture)

	# On ouvre l'image que l'on vient de télécharger
	img_source = open_image(sav_file)
	# Exemple: On découpe l'image en se plaçant à 0 pixel de la gauche et 110 à partir du haut. Ensuite on dessine un cadre de 1274x657. Pour finir, on redimensionne l'image avec de l'antialias
	img_cible = img_source.crop(var.box).resize((var.resize), ANTIALIAS)
	# On enregistre la nouvelle image
	img_cible.save(join(var.emplacement, var.cible))


def search_url():
	if var.page != str():
		dl = urlopen(var.page).read().decode('utf-8', 'ignore')

		for lecture in dl.split(" "):
			if var.chaine in lecture:
				(var.url, var.picture) = split(lecture.split("=")[1][1:-1])
				return




############
# Début du programme
########################

if __name__ == "__main__":
	# Initialisation des variables
	var = Var()

	# Récupération des arguments de la ligne de commandes
	recup_arg(var, argv)

	# On regarde si la photo existe déjà
	path_thumbnail = join(var.emplacement, var.cible)
	
	if exists(path_thumbnail) and isfile(path_thumbnail):
		# Si elle existe, on regarde si elle date de moins d'une heure
		now      = time()
		time_pic = stat(path_thumbnail)[8]

		if time_pic + var.time <= now:
			# On cherche l'url d'une image sur une page
			search_url()
			# on télécharge la nouvelle photo
			download()
			# On découpe l'image
			crop()

	else:
		# On cherche l'url d'une image sur une page
		search_url()
		# On télécharge la photo
		download()
		# On découpe l'image
		crop()
imagesat.conky

Code : Tout sélectionner

#Fonctionnement de conky 
  total_run_times 0            #Temps en secondes ; 0 = toujours actif
  background yes            #Pour que conky tourne en arrière plan ; no = pour les tests
  
#Mémoire
  double_buffer yes            #Éviter le clignotement
  no_buffers yes            #Soustraire les mémoires tampons de la mémoire utilisée
  text_buffer_size 1024            #Taille du cache pour le texte
  
#Affichage
  out_to_console no            #Affiche le texte sur la sortie standard
  update_interval 10            #Taux de rafraîchissement de la fenêtre (s)

#Fenêtre conky
  alignment bottom_left           #Alignement
  #---
  gap_x 2                #Écart avec le bord gauche / droit
  gap_y 26               #Écart avec le bord haut / bas
  #---
  draw_shades no            #Afficher les ombres
  draw_outline no            #Afficher les contours de fenêtre
  draw_borders yes            #Afficher des contours autour des blocs de texte
  border_width 2            #Largeur du contour
  border_inner_margin 0            #Largeur des marges
  #---
  own_window yes            #Utiliser sa propre fenêtre
	own_window_type override         #Type de fenêtre ; normal / override / desktop
#  own_window_type normal         #Type de fenêtre ; normal / override / desktop
  own_window_transparent yes        #Pseudo transparence
#  own_window_hints  undecorated,below,sticky,skip_taskbar,skip_pager # définition du type
  own_window_class Conky


#Mise en forme
  use_xft yes                #Utiliser Xft (polices lissées etc)
  xftalpha .1                #Utiliser Xft
  override_utf8_locale yes         #Force l'UTF8
  uppercase no                #Tout le texte en majuscule
  use_spacer right            #Ajoute des espaces après certains objets (qu'avec des polices fixes)
 #---
  xftfont Monospace:size=10        #Police par défaut
 #---
  default_bar_size 30 3            #Barre par défaut (longeur hauteur)
#  stippled_borders 5            #Taille des pointillés

#Couleurs
	default_color 000000             #Couleur par défaut
  default_shade_color 333333        #Couleur des ombres
  default_outline_color black        #Couleur des contours
 #---
  #color1 000000                #Gris foncé
  #color2 DDDDDD                #Gris clair
 #---
  short_units yes            #Unités courtes
  pad_percents 0            #Unité à 2 décimales


color1 333333 # Gris
#color2 006FC0 # Bleu
#color3 8AD749 # Vert
color4 EECE01 # Jaune
color5 F8981F # Orange
#color6 F80E27 # Rouge

color2 3465A4 # Bleu
color3 6FEF22 # Vert
color5 EF7E22 # Orange
color6 BD1B5E # Rouge

minimum_size 385 190 
maximum_width 400

TEXT
${exec python /home/julien/.config/openbox/Imagesat.py -c 0x110x1274x657 -r 400x220 -o /tmp/image_sat.jpg -u http://oiswww.eumetsat.org/IPPS/html/latestImages/EUMETSAT_MSG_RGB-naturalcolor-westernEurope.jpg -t 3600}${image /tmp/image_sat.jpg -p -5,-5 -n -s 400x220}
imagemarine.conky

Code : Tout sélectionner

#Fonctionnement de conky 
  total_run_times 0            #Temps en secondes ; 0 = toujours actif
  background yes            #Pour que conky tourne en arrière plan ; no = pour les tests
  
#Mémoire
  double_buffer yes            #Éviter le clignotement
  no_buffers yes            #Soustraire les mémoires tampons de la mémoire utilisée
  text_buffer_size 1024            #Taille du cache pour le texte
  
#Affichage
  out_to_console no            #Affiche le texte sur la sortie standard
  update_interval 10            #Taux de rafraîchissement de la fenêtre (s)

#Fenêtre conky
  alignment bottom_left           #Alignement
  #---
  gap_x 2                #Écart avec le bord gauche / droit
  gap_y 224               #Écart avec le bord haut / bas
  #---
  draw_shades no            #Afficher les ombres
  draw_outline no            #Afficher les contours de fenêtre
  draw_borders yes            #Afficher des contours autour des blocs de texte
  border_width 2            #Largeur du contour
  border_inner_margin 0            #Largeur des marges
  #---
  own_window yes            #Utiliser sa propre fenêtre
#	own_window_type override         #Type de fenêtre ; normal / override / desktop
#  own_window_type normal         #Type de fenêtre ; normal / override / desktop
  own_window_transparent yes        #Pseudo transparence
  own_window_hints  undecorated,below,sticky,skip_taskbar,skip_pager # définition du type
  own_window_class Conky


#Mise en forme
  use_xft yes                #Utiliser Xft (polices lissées etc)
  xftalpha .1                #Utiliser Xft
  override_utf8_locale yes         #Force l'UTF8
  uppercase no                #Tout le texte en majuscule
  use_spacer right            #Ajoute des espaces après certains objets (qu'avec des polices fixes)
 #---
  xftfont Monospace:size=10        #Police par défaut
 #---
  default_bar_size 30 3            #Barre par défaut (longeur hauteur)
#  stippled_borders 5            #Taille des pointillés

#Couleurs
	default_color 000000             #Couleur par défaut
  default_shade_color 333333        #Couleur des ombres
  default_outline_color black        #Couleur des contours
 #---
  #color1 000000                #Gris foncé
  #color2 DDDDDD                #Gris clair
 #---
  short_units yes            #Unités courtes
  pad_percents 0            #Unité à 2 décimales


color1 333333 # Gris
#color2 006FC0 # Bleu
#color3 8AD749 # Vert
color4 EECE01 # Jaune
color5 F8981F # Orange
#color6 F80E27 # Rouge

color2 3465A4 # Bleu
color3 6FEF22 # Vert
color5 EF7E22 # Orange
color6 BD1B5E # Rouge

minimum_size 385 190 
maximum_width 400

TEXT
${exec /home/julien/.config/openbox/Imagesat.py -c 0x0x960x528 -r 400x219 -o /tmp/image_marine.jpg -p http://marine.meteoconsult.fr/carte/meteo-marine/frontologie_0.php#etiquette -i http://images.meteoconsult.fr/image/mc-france/cartes/frontologie/produits/ -t 3600}${image /tmp/image_marine.jpg -p -5,-5 -n -s 400x219}
heurecentrale.conky

Code : Tout sélectionner

#Fonctionnement de conky 
  total_run_times 0            #Temps en secondes ; 0 = toujours actif
  background yes            #Pour que conky tourne en arrière plan ; no = pour les tests

#Réglages système
  cpu_avg_samples 1            #Nb d'échantillons pour calculer la moyenne d'utilisation CPU
  net_avg_samples 2            #Nb d'échantillons pour calculer la moyenne d'utilisation CPU

#Mémoire
  double_buffer yes            #Éviter le clignotement
  no_buffers yes            #Soustraire les mémoires tampons de la mémoire utilisée
  text_buffer_size 1024            #Taille du cache pour le texte

#Affichage
  out_to_console no            #Affiche le texte sur la sortie standard
  update_interval 1            #Taux de rafraîchissement de la fenêtre (s)

#Fenêtre conky
  alignment bottom_left           #Alignement
 #---
  minimum_size 1440 0            #Taille minimum (px) ; largeur / hauteur
  #maximum_width 150            #Largeur maximum (px)
 #---
  gap_x 5                #Écart avec le bord gauche / droit
  gap_y 400               #Écart avec le bord haut / bas
 #---
  draw_shades no            #Afficher les ombres
  draw_outline no            #Afficher les contours de fenêtre
  draw_borders no            #Afficher des contours autour des blocs de texte
  border_width 1            #Largeur du contour
  border_inner_margin 1            #Largeur des marges
 #---
  own_window yes            #Utiliser sa propre fenêtre
  own_window_type override         #Type de fenêtre ; normal / override / desktop
  own_window_transparent yes        #Pseudo transparence
#	own_window_hints  undecorated,below,sticky,skip_taskbar,skip_pager # définition du type

#Mise en forme
  use_xft yes                #Utiliser Xft (polices lissées etc)
  xftalpha .1                #Utiliser Xft
  override_utf8_locale yes         #Force l'UTF8
  uppercase no                #Tout le texte en majuscule
  use_spacer right            #Ajoute des espaces après certains objets (qu'avec des polices fixes)
 #---
  xftfont Monospace:size=10        #Police par défaut
 #---
  default_bar_size 30 3            #Barre par défaut (longeur hauteur)
  stippled_borders 5            #Taille des pointillés

#Couleurs
  default_color FFFFFF             #Couleur par défaut
  default_shade_color 333333        #Couleur des ombres
  default_outline_color black        #Couleur des contours
 #---
  color1 000000                #Gris foncé
  color2 DDDDDD                #Gris clair
 #---
  short_units yes            #Unités courtes
  pad_percents 2            #Unité à 2 décimales


#avoid flicker
double_buffer yes

#own window to run simultanious 2 or more conkys
#own_window_type normal
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager

xftfont monoalphabet:pixelsize=150

##############################################
#  Output
##############################################
TEXT
$alignc[  ${time %H:%M}  ]
${voffset -105}${font monoalphabet:size=45}$alignc${time %A %d %B}

Avatar de l’utilisateur
onyx67
Elfe
Messages : 744
Inscription : dim. 06 nov. 2011, 18:12
Localisation : Alsace

Re: [Screenshots] Épatez la galerie, présentez votre bureau!

Message par onyx67 » mer. 15 août 2012, 13:33

Cool, merci beaucoup :D
"La complication est un effet de la simplicité mal acquise"

Intel i5-2320; Nvidia GeForce GT 520; ATA Hitachi 2To; Windows7/ArchLinux-Kde5

Avatar de l’utilisateur
chipster
Maître du Kyudo
Messages : 2063
Inscription : ven. 11 août 2006, 22:25
Localisation : Saint-Étienne (42)
Contact :

Re: [Screenshots] Épatez la galerie, présentez votre bureau!

Message par chipster » jeu. 16 août 2012, 16:08

Voilà, le tout finalisé :
Image
Je donne juste les lignes nécessaires
Vent

Code : Tout sélectionner

${exec python /home/julien/.config/openbox/Imagesat.py -c 99x160x646x648 -r 547x488 -o /tmp/vent.png -u http://meteociel.fr/cartes_obs/vent.png -t 1800}${image /tmp/vent.png -p -5, -5 -n -s 230x200}
Température

Code : Tout sélectionner

${exec python /home/julien/.config/openbox/Imagesat.py -c 99x160x646x648 -r 547x488 -o /tmp/temperature.png -u http://meteociel.fr/cartes_obs/temp.png -t 1800}${image /tmp/temperature.png -p -5, -5 -n -s 230x200}
[edit1] Limite, il faudrait que je transforme mon programme python en daemon au lieu de l'appeler 4x toutes les x secondes
[edit2] On pourrait aussi rajouter cette carte (la 1) : http://www.chasseurs-orages.com/orages-online.php et aussi la carte vigilance europe ou france

Avatar de l’utilisateur
onyx67
Elfe
Messages : 744
Inscription : dim. 06 nov. 2011, 18:12
Localisation : Alsace

Re: [Screenshots] Épatez la galerie, présentez votre bureau!

Message par onyx67 » jeu. 16 août 2012, 22:29

Cool, ca fait quasiment un fond d'écran complet. Ca me donne des idées là...
chipster a écrit :
[edit1] Limite, il faudrait que je transforme mon programme python en daemon au lieu de l'appeler 4x toutes les x secondes
Il faut procéder comment pour l'avoir en daemon?

EDIT: tu utilises quoi comme barre en bas?
"La complication est un effet de la simplicité mal acquise"

Intel i5-2320; Nvidia GeForce GT 520; ATA Hitachi 2To; Windows7/ArchLinux-Kde5

Avatar de l’utilisateur
chipster
Maître du Kyudo
Messages : 2063
Inscription : ven. 11 août 2006, 22:25
Localisation : Saint-Étienne (42)
Contact :

Re: [Screenshots] Épatez la galerie, présentez votre bureau!

Message par chipster » jeu. 16 août 2012, 22:39

Pour le daemon il faut le coder correctement ^^. Donc en gros, un fichier de config qui est lu au chargement et la possibilité de faire un start stop restart. Pour systemd, aucune idée
Pour la barre du bas, j'utilise bmpanel2-git et bmpanel2-themes. Pour le thème, c'est striped (avec bmpanel2cfg)

Code : Tout sélectionner

yaourt -S bmpanel2-git bmpanel2-themes
J'avais fait un script perl (qui doit être sur le fofo normalement) qui permettait de lancer/arrêter un script conky ce qui permettait de définir un raccourci clavier dessus

Avatar de l’utilisateur
onyx67
Elfe
Messages : 744
Inscription : dim. 06 nov. 2011, 18:12
Localisation : Alsace

Re: [Screenshots] Épatez la galerie, présentez votre bureau!

Message par onyx67 » jeu. 16 août 2012, 22:44

Bon pour le daemon c'est pas de mon niveau!
Merci pour les infos.
"La complication est un effet de la simplicité mal acquise"

Intel i5-2320; Nvidia GeForce GT 520; ATA Hitachi 2To; Windows7/ArchLinux-Kde5

Avatar de l’utilisateur
chipster
Maître du Kyudo
Messages : 2063
Inscription : ven. 11 août 2006, 22:25
Localisation : Saint-Étienne (42)
Contact :

Re: [Screenshots] Épatez la galerie, présentez votre bureau!

Message par chipster » ven. 17 août 2012, 09:28

Ce n'est pas super compliqué pourtant. Lire un fichier de config et le choix entre 3 arguments, le reste ne changeant pas

Avatar de l’utilisateur
onyx67
Elfe
Messages : 744
Inscription : dim. 06 nov. 2011, 18:12
Localisation : Alsace

Re: [Screenshots] Épatez la galerie, présentez votre bureau!

Message par onyx67 » ven. 17 août 2012, 14:36

Où est ce que je pourrai trouver un exemple de config? Je ne sais pas trop comment goupillé cà en fait et ce qu'il faut y mettre.
"La complication est un effet de la simplicité mal acquise"

Intel i5-2320; Nvidia GeForce GT 520; ATA Hitachi 2To; Windows7/ArchLinux-Kde5

Avatar de l’utilisateur
vlamy
yeomen
Messages : 268
Inscription : ven. 20 juil. 2012, 15:19
Localisation : Grenoble

Re: [Screenshots] Épatez la galerie, présentez votre bureau!

Message par vlamy » ven. 17 août 2012, 14:42

@onyx, si tu veux j'ai un template pas mal (éprouvé) de daemon en python, avec un exemple qui l'utilise.
Si cela t'intéresse, ouvrons peut être un autre thread, ça m"intéresse de t'aider à le bidouiller si tu es motivé :)

Avatar de l’utilisateur
chipster
Maître du Kyudo
Messages : 2063
Inscription : ven. 11 août 2006, 22:25
Localisation : Saint-Étienne (42)
Contact :

Re: [Screenshots] Épatez la galerie, présentez votre bureau!

Message par chipster » ven. 17 août 2012, 14:53

Je vais m'en occuper je pense. D'après ce que j'ai pu voir, systemd ou pas, ça ne change rien

Avatar de l’utilisateur
chipster
Maître du Kyudo
Messages : 2063
Inscription : ven. 11 août 2006, 22:25
Localisation : Saint-Étienne (42)
Contact :

Re: [Screenshots] Épatez la galerie, présentez votre bureau!

Message par chipster » ven. 17 août 2012, 14:56

@vlamy: donne l'adresse de ton templace, j'aimerai le voir par curiosité

Avatar de l’utilisateur
vlamy
yeomen
Messages : 268
Inscription : ven. 20 juil. 2012, 15:19
Localisation : Grenoble

Re: [Screenshots] Épatez la galerie, présentez votre bureau!

Message par vlamy » ven. 17 août 2012, 15:00

@chipster, je n'ai plus l'URL du template de base, ça venait de "python.org".
Mais voici mon adaptation :

objet daemon à surcharger (ce que j'ai appelé template) :

Code : Tout sélectionner

#!/usr/bin/env python

import sys, os, time, atexit
from signal import SIGTERM 

class Daemon:
	"""
	A generic daemon class.
	
	Usage: subclass the Daemon class and override the run() method
	"""
	def __init__(self, pidfile, stdin='/dev/null', stdout='/dev/null', stderr='/dev/null'):
		self.stdin = stdin
		self.stdout = stdout
		self.stderr = stderr
		self.pidfile = pidfile
	
	def daemonize(self):
		"""
		do the UNIX double-fork magic, see Stevens' "Advanced 
		Programming in the UNIX Environment" for details (ISBN 0201563177)
		http://www.erlenstar.demon.co.uk/unix/faq_2.html#SEC16
		"""
		try: 
			pid = os.fork() 
			if pid > 0:
				# exit first parent
				sys.exit(0) 
		except OSError, e: 
			sys.stderr.write("fork #1 failed: %d (%s)\n" % (e.errno, e.strerror))
			sys.exit(1)
	
		# decouple from parent environment
		os.chdir("/") 
		os.setsid() 
		os.umask(0) 
	
		# do second fork
		try: 
			pid = os.fork() 
			if pid > 0:
				# exit from second parent
				sys.exit(0) 
		except OSError, e: 
			sys.stderr.write("fork #2 failed: %d (%s)\n" % (e.errno, e.strerror))
			sys.exit(1) 
	
		# redirect standard file descriptors
		sys.stdout.flush()
		sys.stderr.flush()
		si = file(self.stdin, 'r')
		so = file(self.stdout, 'a+')
		se = file(self.stderr, 'a+', 0)
		os.dup2(si.fileno(), sys.stdin.fileno())
		os.dup2(so.fileno(), sys.stdout.fileno())
		os.dup2(se.fileno(), sys.stderr.fileno())
	
		# write pidfile
		atexit.register(self.delpid)
		pid = str(os.getpid())
		file(self.pidfile,'w+').write("%s\n" % pid)
	
	def delpid(self):
		os.remove(self.pidfile)

	def start(self):
		"""
		Start the daemon
		"""
		# Check for a pidfile to see if the daemon already runs
		try:
			pf = file(self.pidfile,'r')
			pid = int(pf.read().strip())
			pf.close()
		except IOError:
			pid = None
	
		if pid:
			message = "pidfile %s already exist. Daemon already running?\n"
			sys.stderr.write(message % self.pidfile)
			sys.exit(1)
		
		# Start the daemon
		self.daemonize()
		self.run()

	def stop(self):
		"""
		Stop the daemon
		"""
		# Get the pid from the pidfile
		try:
			pf = file(self.pidfile,'r')
			pid = int(pf.read().strip())
			pf.close()
		except IOError:
			pid = None
	
		if not pid:
			message = "pidfile %s does not exist. Daemon not running?\n"
			sys.stderr.write(message % self.pidfile)
			return # not an error in a restart

		# Try killing the daemon process	
		try:
			while 1:
				os.kill(pid, SIGTERM)
				time.sleep(0.1)
		except OSError, err:
			err = str(err)
			if err.find("No such process") > 0:
				if os.path.exists(self.pidfile):
					os.remove(self.pidfile)
			else:
				print str(err)
				sys.exit(1)

	def restart(self):
		"""
		Restart the daemon
		"""
		self.stop()
		self.start()

	def run(self):
		"""
		You should override this method when you subclass Daemon. It will be called after the process has been
		daemonized by start() or restart().
		"""

implem d'un ptit test qui envoit des affichages pour awesome :

Code : Tout sélectionner

#!/usr/bin/env python
#####################
"""
 This sample module instantiates a daemon that sends awful notification
 it prints "coucou" every 2 seconds with an incremented counter.
"""

#########################################################################
#                              ADDING VLAM DEPS                         #
#########################################################################
import sys, os
PATH_TO_DEPENDENCIES =['unix']
    
if PATH_TO_DEPENDENCIES not in sys.path:
	vlam_path = os.environ['VLAM_PYTHON_WKS']
	if vlam_path == None:
		print "Unable to find ENV variable VLAM_PYTHON_WKS, using current working dir to find dependencies"
		vlam_path = "."

	for entry in PATH_TO_DEPENDENCIES:
		sys.path.append(vlam_path+"/"+entry)
		#print 'adding %s to python path' % (vlam_path+"/"+entry)

#########################################################################
#               ADDING PYTHON DEPS ANd METHODS                          #
#########################################################################
import time, shlex, subprocess, unix_cmd_wrapper
from daemon import Daemon
from subprocess import Popen,PIPE
from unix_cmd_wrapper import RunShellCommandWithoutWaiting, RunShellCommandWithPipeline

class MyDaemon(Daemon):
	"""
	Define a daemon that send "coucou" notifications
	"""

	def run(self):
		counter = 0
		while True:
			cmd = "notify-send \"coucou %s\"" % (counter)
                        RunShellCommandWithPipeline(cmd,"awesome-client")
			counter = counter +1
			time.sleep(2)
			

if __name__ == "__main__":
	"""
	Test main methods
	"""
	daemon = MyDaemon('/tmp/daemon-example.pid',stdout='/tmp/my_stdout',stderr='/tmp/my_stderr')
	if len(sys.argv) == 2:
		if 'start' == sys.argv[1]:
			daemon.start()
		elif 'stop' == sys.argv[1]:
			daemon.stop()
		elif 'restart' == sys.argv[1]:
			daemon.restart()
		else:
			print "Unknown command"
			sys.exit(2)
		sys.exit(0)
	else:
		print "usage: %s start|stop|restart" % sys.argv[0]
		sys.exit(2)

Avatar de l’utilisateur
onyx67
Elfe
Messages : 744
Inscription : dim. 06 nov. 2011, 18:12
Localisation : Alsace

Re: [Screenshots] Épatez la galerie, présentez votre bureau!

Message par onyx67 » ven. 17 août 2012, 20:50

Merci à tous les deux pour votre aide.
"La complication est un effet de la simplicité mal acquise"

Intel i5-2320; Nvidia GeForce GT 520; ATA Hitachi 2To; Windows7/ArchLinux-Kde5

Avatar de l’utilisateur
chipster
Maître du Kyudo
Messages : 2063
Inscription : ven. 11 août 2006, 22:25
Localisation : Saint-Étienne (42)
Contact :

Re: [Screenshots] Épatez la galerie, présentez votre bureau!

Message par chipster » sam. 18 août 2012, 18:46

La suite ici pour ne pas pourrir ce post

Avatar de l’utilisateur
3lazer4
archer de cavalerie
Messages : 192
Inscription : ven. 01 avr. 2011, 13:31

Re: [Screenshots] Épatez la galerie, présentez votre bureau!

Message par 3lazer4 » sam. 25 août 2012, 16:30

Bien le bonjour ! :D

Image
Cinnamon : Dark-Line par moi
GTK : Zukitwo par lassekongo83
Mutter : Zukini par lassekongo83
Fond d'écran : Joy (Debian Wheezy) sans le logo par moi

Applications : Nautilus, Avant-Window-Navigator
Applet Cinnamon supplémentaire : GMailNotifier

A+ :)

Avatar de l’utilisateur
Leo 7
Daikyu
Messages : 75
Inscription : dim. 09 oct. 2011, 15:12

Re: [Screenshots] Épatez la galerie, présentez votre bureau!

Message par Leo 7 » dim. 26 août 2012, 15:24

Salut tout le monde ! :D

Mon bureau sous i3. Le tiling c'est le pied !

Clean:

Image

Dirty:

Image

Ah et je voudrais peut-être passer à dwm mais j'aimerai savoir si c'est possible de masquer la barre du haut et de la faire réapparaitre avec un raccourci
clavier comme je fais sur i3. Est-ce possible ?

A+
hp 625 Archlinux i3 en dualscreen avec hp x2301
Mac Mini: Debian ppc lxde + xbmc > Media Center

Avatar de l’utilisateur
Ypnose
Maître du Kyudo
Messages : 1363
Inscription : sam. 01 mai 2010, 13:17
Contact :

Re: [Screenshots] Épatez la galerie, présentez votre bureau!

Message par Ypnose » dim. 26 août 2012, 19:40

Sur dwm, oui c'est possible de masquer la barre du haut mais pour la faire réapparaitre tu devras écrire un patch.
Ou sinon, tu peux demander ici: https://bbs.archlinux.org/viewtopic.php?id=92895

Avatar de l’utilisateur
Leo 7
Daikyu
Messages : 75
Inscription : dim. 09 oct. 2011, 15:12

Re: [Screenshots] Épatez la galerie, présentez votre bureau!

Message par Leo 7 » dim. 26 août 2012, 21:27

Merci de la réponse ! :)
Est-ce que c'est dur à écrire un patch ?
Parce que je n'ai aucune base en programmation.
J'ai commencé le free pascal et le bash mais voilà quoi ...
Jme démmerde avec un fichier à la syntaxe simple mais si c'est du lourd là
chuis paumé !
hp 625 Archlinux i3 en dualscreen avec hp x2301
Mac Mini: Debian ppc lxde + xbmc > Media Center

Répondre