#1 Le 10/12/2011, à 21:47
- VPCL
Quitter Open Box
Bonsoir à tous,
je cherche à installer des boutons d' extinction, déconnexion et redémarrage sur Open Box. Pour cela j' ai téléchargé "Script Quitter", j' ai décompressé le fichier,dans le script j'ai indiqué le chemin du fond d' écran puis je l' ai rendu exécutable.Jusque là pas de problème.
Mais ensuite impossible de le lancer.J'ai bien suivi les instruction trouvées sur le site d'Archlinux mais cela ne fonctionne pas.
Pourriez vous m' aider SVP?
Cordialement,VPCL.
Hors ligne
#2 Le 11/12/2011, à 15:46
- Skubu
Re : Quitter Open Box
Salut,
Quel(s) version(s) de python as-tu ?
Chez moi, cette commande fonctionne :
python2 ~/.script-quitter/ob_logout
Il faut, je crois, aussi installer python-imaging. À confirmer. Essaies sans pour commencer.
Debian / Archlinux | Gnome / KDE
Hors ligne
#3 Le 11/12/2011, à 18:39
- loubrix
Re : Quitter Open Box
si je me suis pas trompé de doc sur le site d'Archlinux, ton "Script Quitter" fait appel à Sudo pour appeler "shutdown"; sauf que c'est maintenant inutile: un simple utilisateur peut arrêter son système sans appel à Sudo grâce à D-Bus.
donc la commande pour redémarrer est:
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart
et celle pour arrêter:
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
ça peut très facilement être inclus dans le menu d'Openbox, en ajoutant ceci dans menu.xml:
<item id="exit" label="Déconnexion">
<action name="Execute">
<execute>
openbox --exit
</execute>
</action>
</item>
<item id="reboot" label="Redémarrer">
<action name="Execute">
<execute>
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart
</execute>
</action>
</item>
<item id="halt" label="Éteindre">
<action name="Execute">
<execute>
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
</execute>
</action>
</item>
ça peut aussi s'ajouter dans le menu de Fbpanel si tu l'utilises (je te dirai comment au besoin), ou dans un script...
PS: comme les commandes sont longues, elles apparaissent sur 2 lignes, mais en fait c'est sur une seule...
Dernière modification par loubrix (Le 11/12/2011, à 18:42)
Asus X50VL - Ubuntu 12.04 AMD64
HP G62 - Ubuntu 12.10 AMD64
Fujitsu-Siemens Amilo EL - Lubuntu 12.04 i686
Manjaro, une rolling pour débutants
Hors ligne
#4 Le 11/12/2011, à 21:35
- VPCL
Re : Quitter Open Box
Skubu,
j'ai les versions 2.7.2+ et 3.2.2, la commande que tu m'as indiquée ne fonctionne pas, j'essayerai plus tard en installant Python-Imaging.
Loubrix,
j' ai complété mon menu suivant tes conseils et cela fonctionne.Cependant, au redémarrage j' obtiens le message suivant:
Erreur de syntaxe... Ligne 165...Premature end of data in tag openbox-menu line 2.
Merci à vous deux et bonne soirée,VPCL.
Hors ligne
#5 Le 11/12/2011, à 23:40
- VPCL
Re : Quitter Open Box
AIE!!!
Obmenu ne répond plus.J'ai désinstallé puis réinstallé Openbox mais ce que j' avais configuré est resté.
Si j' ai bien compris, il faudrait que je supprime le fichier: ~/.config/openbox/rc.xml mais comment faire?
Bonne soirée,VPCL.
Dernière modification par VPCL (Le 11/12/2011, à 23:41)
Hors ligne
#6 Le 11/12/2011, à 23:56
- chibbata
Re : Quitter Open Box
salut
verifie dans /etc/xdg/openbox
il doit y avoir un fichier rc.xml,celui d'origine
j'ai une installation de archlinux qui utilise oblogout
les commandes d'arret,reboot,logout sont :
shutdown = sudo shutdown -h 0
restart = sudo reboot
logout = openbox --exit
ou
éteindre: gksudo shutdown -h now
redémarrer: gksudo shutdown -r now
Dernière modification par chibbata (Le 12/12/2011, à 00:13)
Hors ligne
#7 Le 12/12/2011, à 00:17
- VPCL
Re : Quitter Open Box
Il est bien présent.
Donc il faut que je supprime ma configuration:
rm ~/.config/openbox/menu.xml
puis création d'un nouveau fichier:
sudo nano ~/.config/openbox/menu.xml
et enfin copier coller du fichier que tu m' as indiqué.
Correct ou je suis complètement à coté de la plaque?
Hors ligne
#8 Le 12/12/2011, à 00:31
- chibbata
Re : Quitter Open Box
renomme le fichier menu.xml en menu.xml.old dans ~/.config/openbox/menu.xml
c'est un fichier caché,pour le voir
ouvres pcmanfm,dans le menu voir
coche montrer les fichiers cachés
la meme chose avec un autres gestionnaire de fichier,cherches dans les menus la meme option
puis vas dans /etc/xdg/openbox,copier le fichier et coller dans ~/.config/openbox/
Dernière modification par chibbata (Le 12/12/2011, à 00:33)
Hors ligne
#9 Le 12/12/2011, à 00:40
- Skubu
Re : Quitter Open Box
moi je ferai :
mv ~/.config/openbox/menu.xml ~/.config/openbox/menu.xml.backup
mieux vaut le conserver pour te souvenir de ce que tu as fait et suppr le une fois ton nouveau menu.xml parfait.
Puis :
sudo cp /etc/xdg/openbox/menu.xml ~/.config/openbox/
pour retrouver le menu d'origine.
Mais on s'est égaré là...
Reprenons, tu as essayé cette commande :
python2.7 /chemin/vers/.script-quitter/ob_logout
?
As-tu eu quelque chose comme ça : ?
Note : les îcones peuvent être différentes.
Si oui, teste chacune des options pour voir s'il est totalement fonctionnel; si non installes python-imaging
sudo apt-get install python-imaging
Retentes la commande et si tu n'as toujours rien, postes nous ce que renvoie la commande.
Au cas où le tien utiliserait shutdown, reboot ou halt, je mets à disposition le mien qui reprend les commandes citées par loubrix.
#!/usr/bin/env python2.5
##
# Script to Exit , logout , reboot , suspend [ gdm / openbox ]
#
# http://crunchbanglinux.org/forums/topic/295/updated-openboxlogout-script/
##
import gtk
import os
import pwd
from PIL import Image, ImageFilter
class MyApp():
def __init__(self):
self.window = gtk.Window()
self.window.set_title("Log Out ..")
self.window.connect("destroy", self.doquit)
self.window.connect("key-press-event", self.onkeypress)
self.window.set_decorated(False)
self.mainpanel = gtk.Fixed()
self.window.add(self.mainpanel)
self.screen_x , self.screen_y = gtk.gdk.screen_width(), gtk.gdk.screen_height()
x = ( self.screen_x / 2 ) - ( 140 * 4 / 2 ) - 30
y = ( self.screen_y / 2 ) - 100
## 1st Line
self.add_bouton("application-exit",x+30,y+30)
self.add_bouton("system-log-out",x+170,y+30)
self.add_bouton("system-restart",x+310,y+30)
self.add_bouton("system-shutdown",x+450,y+30)
self.add_label("Cancel",x+80, y+170)
self.add_label("Log out",x+215, y+170)
self.add_label("Reboot",x+357, y+170)
self.add_label("Shutdown",x+486, y+170)
self.set_background()
def set_background(self):
img_file = "/tmp/root_window.jpg"
w = gtk.gdk.get_default_root_window()
sz = w.get_size()
pb = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB,False,8,sz[0],sz[1])
pb = pb.get_from_drawable(w,w.get_colormap(),0,0,0,0,sz[0],sz[1])
if (pb != None):
pb.save(img_file,"jpeg")
image = Image.open(img_file)
color = 'black'
alpha = 0.5
mask = Image.new("RGB", image.size, color)
image = Image.blend(image, mask, alpha)
image.save(img_file,"jpeg")
pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(img_file, self.screen_x, self.screen_y)
pixmap, mask = pixbuf.render_pixmap_and_mask()
# width, height = pixmap.get_size()
self.window.set_app_paintable(True)
self.window.resize(self.screen_x, self.screen_y)
self.window.realize()
self.window.window.set_back_pixmap(pixmap, False)
self.window.move(0,0)
del pixbuf
del pixmap
def add_bouton(self, name, x, y):
image = gtk.Image()
image.set_from_file("img/foom/" + name + ".png")
image.show()
# un bouton pour contenir le widget image
bouton = gtk.Button()
bouton.set_relief(gtk.RELIEF_NONE)
bouton.set_focus_on_click(False)
bouton.set_border_width(0)
bouton.set_property('can-focus', False)
bouton.add(image)
bouton.show()
self.mainpanel.put(bouton, x,y)
bouton.connect("clicked", self.clic_bouton, name)
def add_label(self, name, x, y):
label = gtk.Label(name)
label.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse("white"))
self.mainpanel.put(label, x, y)
# Cette fonction est invoquee quand on clique sur un bouton.
def clic_bouton(self, widget, data=None):
if (data=='application-exit'):
self.doquit()
elif (data=='system-log-out'):
os.system('openbox --exit')
elif (data=='system-restart'):
os.system('dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart')
elif (data=='system-shutdown'):
os.system('dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop')
def onkeypress(self, widget=None, event=None, data=None):
if event.keyval == gtk.keysyms.Escape:
self.doquit()
def doquit(self, widget=None, data=None):
gtk.main_quit()
def run(self):
self.window.show_all()
gtk.main()
#-------------------------
if __name__ == "__main__":
#-------------------------
## need to change directory
SRC_PATH = os.path.dirname( os.path.realpath( __file__ ) )
os.chdir(SRC_PATH)
app = MyApp()
app.run()
Si tu le veux en français, de la ligne 37 à 40 traduis "Cancel", Log out", "Reboot" et "Shutdown" par "Annuler", Déconnexion", Redémarrer" et "Éteindre".
Voilà, bon courage.
Dernière modification par Skubu (Le 12/12/2011, à 00:57)
Debian / Archlinux | Gnome / KDE
Hors ligne
#10 Le 12/12/2011, à 01:13
- VPCL
Re : Quitter Open Box
Premier point, la methode de chibbata a parfaitement fonctionné.
Second point, Script Quitter est dans le fichier "Téléchargements", où dois l' installer et comment (copier- coller?)
Hors ligne
#11 Le 12/12/2011, à 10:07
- loubrix
Re : Quitter Open Box
@VPCL: il faudrait montrer à quoi correspond la ligne 165 chez toi (dans TON menu.xml)...
ce que je t'ai donné est un copier-coller de mon menu.xml, venant de ma config sous Arch qui fonctionne; je dirais que tu as fait une erreur en recopiant (coupure de ligne transformée en retour chariot).
@Chibbata: l'utilisation de Sudo t'oblige à modifier /etc/sudoers (pour éviter la demande de mot de passe); sous Arch on s'en fout: si tu fais une erreur, il te reste un vrai compte root; sous Ubuntu, planter Sudo signifierait "plus de compte root", c'est pourquoi je conseille d'éviter cette solution (bien que Visudo vérifie la syntaxe avant de valider la modif).
pour un bon script-quitter, la solution de Skubu est la bonne, mais vérifie la version de Python installée chez toi ("#!/usr/bin/env python2.5").
Asus X50VL - Ubuntu 12.04 AMD64
HP G62 - Ubuntu 12.10 AMD64
Fujitsu-Siemens Amilo EL - Lubuntu 12.04 i686
Manjaro, une rolling pour débutants
Hors ligne
#12 Le 12/12/2011, à 23:12
- Skubu
Re : Quitter Open Box
@VPCL : Tu le mets où tu veux mais je te conseille soit dans /home/"user"/ en répertoire caché soit dans /home/"user"/.config/openbox/
"user" est a remplacé par ton nom d'utilisateur.
Sinon je reviens sur la traduction. Le script ne gère pas les accents (problème de table ASCII)... De plus, les mots français sont généralement plus long que leur voisin anglais, ils apparaîtront mal centrés donc à toi de jouer avec les x+"..." sur les mêmes lignes citées ci-dessus.
Debian / Archlinux | Gnome / KDE
Hors ligne
#13 Le 12/12/2011, à 23:48
- chibbata
Re : Quitter Open Box
salut
il ne faut pas oublier de rendre le script executable,click droit sur le fichier,proprietés,onglet permission,cocher rendre le fichier executable
Hors ligne
#14 Le 13/12/2011, à 17:19
- VPCL
Re : Quitter Open Box
J'ai déplacé le fichier comme indiqué mais j' ai une erreur dans le chemin du fond d'écran:
'/home/user/.config/nitrogen/.bg-saved.cfd
j'ai essayé de nombreuses versions possible mais sans succès.
Hors ligne
#15 Le 15/12/2011, à 13:07
- Skubu
Re : Quitter Open Box
Vois pas le rapport. ^^
Debian / Archlinux | Gnome / KDE
Hors ligne