[openbox] Menu d'extinction graphique

Xorg, Compiz, KDE / Gnome / Xfce / Fluxbox / e17 / fvwm ... GDM/KDM/XDM...
Avatar de l’utilisateur
veka
archer
Messages : 141
Inscription : sam. 21 nov. 2009, 11:36

[openbox] Menu d'extinction graphique

Message par veka »

Bonjour a tous,

Je vais vous présenter un petit script python ( pas de moi ) qui me permet d'avoir le menu d'extinction ci-dessous :

Image

0) Requis : python

1) Télécharger le script : Script-quitter.zip

2) Editer le fichier "ob_logout" :

Code : Tout sélectionner

## Lien vers le fond d'ecran
IMG_FILE = '/home/veka/.FOND/bg.jpg' 

## Commande pour se deconnecter
CMD_LOGOUT = 'openbox --exit'

## Commande pour reboot
CMD_REBOOT = 'sudo shutdown -r now'

## Commande pour etteindre l'ordinateur
CMD_SHUTDOWN = 'sudo shutdown -h now'
3) Accorder les droit d'utiliser les commande d'extinction sans etre Root. Pour cela, éditez le fichier /etc/sudoers grace à la commande visudo et ajouter ceci : ( Se fichier doit etre édité en ROOT )

Code : Tout sélectionner

%users  ALL=NOPASSWD: /sbin/shutdown
ASTUCE : ( OPTIONNEL )

Pour ne pas avoir a changer manuellement le lien vers le fond d'ecran a chaque modification de se dernier, jutilise une méthode qui change le fond d'ecran du bureau et le celui du script en même temps.

0) Requis : feh ( pour gerer le fond d'ecran )

1) Creer un dossier caché qui contiendra le fond d'ecran, dans cette exemple le dossier ".FOND" :

2) Inserer un fond d'ecran dans se dossier.

3 ) Editer le fichier ob_logout" pour ciblé le nouveau fond d'ecran.

4) Et enfin, utiliser la commande suivante pour changer le fond d'ecran :

Code : Tout sélectionner

/bin/cp "/....../....../fond_ecran_que _l'on_veux.jpg" "/....../....../.FOND/fond_ecran.jpg"   &&  feh --bg-scale '/....../....../.FOND/fond_ecran.jpg' 
Il est possible d'utiliser cette commande dans une action personnaliser ( clic droit ) avec Thunar, Nautilus, ...

4' ) Pour ceux qui n'utiliser pas feh comme gestionnaire de fond d'ecran n'oublier pas d'ajouter cette commande au démarrage de la session :

Code : Tout sélectionner

#Fond ecran 
				 feh --bg-scale '/....../....../.FOND/fond_ecran.jpg'   & 
Attention:
Cette methode ne permet que des fond d'ecran avec la même extension ( jpg, png, ... ).
Il est toutefois possible de faire un petit script qui peut arranger cela.


PS :
Si vous trouvez une erreur dans mes expliquation n'esitez pas a me le signaler.
Désoler pour l'orthographe.
Dernière modification par veka le mar. 12 janv. 2010, 14:01, modifié 2 fois.
desmogone
Hankyu
Messages : 27
Inscription : ven. 01 janv. 2010, 18:56

Re: [Openbox-ASTUCE] Menu d'extinction graphique

Message par desmogone »

Salut !

Juste pour compléter et sauf erreur de ma part, pour éditer le fichier /etc/sudoers, il faut faire (sous root effectivement)

Code : Tout sélectionner

visudo
.
Cette commande permet de contrôler l'intégrité du fichier et de détecter les erreurs éventuelles.

Sinon, je vais tester ce petit script @home après avoir fait certaines modifications (Déjà, j'utilise Nitrogen au lieu de Feh) ...

Desmogone, qui précise et qui dit merci.
Phenom II X4 940 - RAM 4Go - 9600GT - HDD Sata 500Go - Archlinux KDE SC 4.8.0 64 bits
MSI Wind Atom N270 - RAM 1Go - i945 - HDD Sata 80Go - Archlinux KDE SC 4.7.4 32 bits
Dell Inspiron 4100 - PIIIm 1Ghz - RAM 512Mo - Ati M6ly - HDD IDE 40Go - Ubuntu 8.04 32bits
Cel220 Mini-ITX - RAM 1Go - SiS - HDD Sata 250Go - Ubuntu Server 8.04 64bits
Avatar de l’utilisateur
gyo
Maître du Kyudo
Messages : 1049
Inscription : jeu. 19 avr. 2007, 10:40
Localisation : Nantes (44)

Re: [Openbox-ASTUCE] Menu d'extinction graphique

Message par gyo »

desmogone a écrit :Juste pour compléter et sauf erreur de ma part, pour éditer le fichier /etc/sudoers, il faut faire (sous root effectivement)

Code : Tout sélectionner

visudo
.
Cette commande permet de contrôler l'intégrité du fichier et de détecter les erreurs éventuelles.
Oui, c'est tout à fait ça et d'ailleurs c'est hautement recommandé car on a vite fait de faire des erreurs et ça peut entraver la sécurité du système.
D'ailleurs visudo n'utilise pas forcément vi comme éditeur, il va regarder si la variable EDITOR est alimentée.
commentaire rédigé à l’aide d’un clavier ergonomique bépo
KISS MY ARCH
Avatar de l’utilisateur
veka
archer
Messages : 141
Inscription : sam. 21 nov. 2009, 11:36

Re: [Openbox-ASTUCE] Menu d'extinction graphique

Message par veka »

précision de l'utilisation de visudo corigé.

Merci.
Avatar de l’utilisateur
joedu12
yeomen
Messages : 214
Inscription : dim. 23 nov. 2008, 20:45

Re: [Openbox-ASTUCE] Menu d'extinction graphique

Message par joedu12 »

Moi j'ai fait ma propre version a moi en faisant un mélange de celui à ADcomp et celui de veka :

Code : Tout sélectionner

#!/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("Retour",x+75, y+170)
        self.add_label("Deconnexion",x+196, y+170)
        self.add_label("Redemarrage",x+333, y+170)
        self.add_label("Extinction",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/" + 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('sudo shutdown -r now')

        elif (data=='system-shutdown'):
            os.system('sudo shutdown -h now')


    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()
PS : J'ai les même fichiers que veka dans le répertoire img :wink:


Édit : voila un petit screen shoot :
Image
Avatar de l’utilisateur
banditblue
Elfe
Messages : 591
Inscription : dim. 10 janv. 2010, 10:19

Re: [Openbox-ASTUCE] Menu d'extinction graphique

Message par banditblue »

joedu12 a écrit :Moi j'ai fait ma propre version a moi en faisant un mélange de celui à ADcomp et celui de veka :

Code : Tout sélectionner

#!/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("Retour",x+75, y+170)
        self.add_label("Deconnexion",x+196, y+170)
        self.add_label("Redemarrage",x+333, y+170)
        self.add_label("Extinction",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/" + 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('sudo shutdown -r now')

        elif (data=='system-shutdown'):
            os.system('sudo shutdown -h now')


    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()
PS : J'ai les même fichiers que veka dans le répertoire img :wink:


Édit : voila un petit screen shoot :
Image
mais vous mettez ou le fichier ob-logout je suppose dans /home??
La connaîssance n'a pas de limite.
Mais sa valeur, est d'autant plus grande, une fois partagé


Pc fixe --- MSI MPG Z490 Gaming Edge WiFi, I9-9900Kf, RTX3070Ti, 64Go DDR4, SSD 1Tera nvme gen4 Samsung 980 pro, SSD 1Tera WD Blacksn850X,3HDD 5Tera
Eeepc Asus 1015pem --- Intel Atom N550 Dual-core 1.5Ghz / DD 1Tera 7200rpm / Ram 2Go

Screenshot + Les Conky ===> http://forums.archlinux.fr/post85405.html#p85405
Avatar de l’utilisateur
joedu12
yeomen
Messages : 214
Inscription : dim. 23 nov. 2008, 20:45

Re: [Openbox-ASTUCE] Menu d'extinction graphique

Message par joedu12 »

Ben n'importe ou du moment que tu a les droits sur le fichier. Moi par exemple j'ai créé un dossier .pygtkexit dans mon home avec mon fichier .py et les images :wink:
Avatar de l’utilisateur
banditblue
Elfe
Messages : 591
Inscription : dim. 10 janv. 2010, 10:19

Re: [Openbox-ASTUCE] Menu d'extinction graphique

Message par banditblue »

ca me parait farfelue

d'un coté j'ai le script je l'ai éditer et changer le racourci de mon image puis mis dans /home
ensuite c'est la que je sais pas quoi faire

quand je clic dans mon menu openbox j'ai toujours ce cadre
" Etes vous certain de vouloir quitter openbox? "

alors que vous vous avez ce superbe logout
La connaîssance n'a pas de limite.
Mais sa valeur, est d'autant plus grande, une fois partagé


Pc fixe --- MSI MPG Z490 Gaming Edge WiFi, I9-9900Kf, RTX3070Ti, 64Go DDR4, SSD 1Tera nvme gen4 Samsung 980 pro, SSD 1Tera WD Blacksn850X,3HDD 5Tera
Eeepc Asus 1015pem --- Intel Atom N550 Dual-core 1.5Ghz / DD 1Tera 7200rpm / Ram 2Go

Screenshot + Les Conky ===> http://forums.archlinux.fr/post85405.html#p85405
Avatar de l’utilisateur
veka
archer
Messages : 141
Inscription : sam. 21 nov. 2009, 11:36

Re: [Openbox-ASTUCE] Menu d'extinction graphique

Message par veka »

je me demande si tu utilise mal le script.
essai de le lancer simplement en double cliquant dessus ou en le lancant via un terminal.
tu dit :
quand je clic dans mon menu openbox j'ai toujours ce cadre
" Etes vous certain de vouloir quitter openbox? "
Je ne comprend pas de quoi tu parle. parle tu d'un menu d'extinction qui etait deja présent ? Si oui, le script n'a rien avoir avec cela, il s'agit d'un autre systeme d'extinction.
cavolo
Hankyu
Messages : 45
Inscription : sam. 05 sept. 2009, 02:12

Re: [Openbox-ASTUCE] Menu d'extinction graphique

Message par cavolo »

salut, il me semble que c'est un type qui s'appelle ad-comp, il m'avait donner un lien sur ubuntu-fr ^^, par contre j'avais pas réussit a mettre toute les commande, notamment a cause de sudo me semble :D )

c'est quand même vachement beau je trouve, en plus c'est entièrement configurable ^^
Avatar de l’utilisateur
banditblue
Elfe
Messages : 591
Inscription : dim. 10 janv. 2010, 10:19

Re: [Openbox-ASTUCE] Menu d'extinction graphique

Message par banditblue »

Si quelqu'un pouvais en faire un Wiki
La connaîssance n'a pas de limite.
Mais sa valeur, est d'autant plus grande, une fois partagé


Pc fixe --- MSI MPG Z490 Gaming Edge WiFi, I9-9900Kf, RTX3070Ti, 64Go DDR4, SSD 1Tera nvme gen4 Samsung 980 pro, SSD 1Tera WD Blacksn850X,3HDD 5Tera
Eeepc Asus 1015pem --- Intel Atom N550 Dual-core 1.5Ghz / DD 1Tera 7200rpm / Ram 2Go

Screenshot + Les Conky ===> http://forums.archlinux.fr/post85405.html#p85405
Kiljaeden
archer
Messages : 107
Inscription : sam. 19 sept. 2009, 12:31
Localisation : France

Re: [Openbox-ASTUCE] Menu d'extinction graphique

Message par Kiljaeden »

Ce script a l'air sympa mais il ne fonctionnait pas chez moi au départ :
Je le lance via le terminal :

Code : Tout sélectionner

python ./py_logout/ob_logout
Et python me renvoyait :

Code : Tout sélectionner

File ".pylogout/ob_logout", line 12, in <module>
    from PIL import Image, ImageFilter
ImportError: No module named PIL
Du coup, j'ai installé python-imaging et ça marche. Il faudrait préciser ça si une page de wiki est créée. (EDIT: je commence à créer une page openbox-logout )
Arch Linux x86_64 sur Dell Latitude 6490
Avatar de l’utilisateur
hatdn
Daikyu
Messages : 60
Inscription : mar. 24 nov. 2009, 19:23

Re: [Openbox-ASTUCE] Menu d'extinction graphique

Message par hatdn »

le même avec modification http://pastebin.archlinux.fr/378944
Kiljaeden
archer
Messages : 107
Inscription : sam. 19 sept. 2009, 12:31
Localisation : France

Re: [Openbox-ASTUCE] Menu d'extinction graphique

Message par Kiljaeden »

Tu as une screen STP ?

J'ai légèrement modifié le script si on utilise Nitrogen : ça va chercher dans le fichier de config de nitrogen (~/.config/nitrogen/bg-saved.cfg) quel est le fond d'écran courant et ça l'utilise comme image de fond. C'est un peu fait à la barbare parce que je maîtrise pas totalement python, mais ça marche. :lol:
A la place de ça :

Code : Tout sélectionner

## Lien vers le fond d'ecran
IMG_FILE = '/home/veka/.FOND/bg.jpg'

## Commande pour se deconnecter
CMD_LOGOUT = 'openbox --exit'

## Commande pour reboot
CMD_REBOOT = 'sudo shutdown -r now'

## Commande pour etteindre l'ordinateur
On met ça :

Code : Tout sélectionner

## Lien vers le fond d'ecran
wpp = os.popen('grep file= .config/nitrogen/bg-saved.cfg|cut -c 6-')
chemin_wpp = wpp.read()
wpp.close()
image = chemin_wpp[:-1]
IMG_FILE = image

## Commande pour se deconnecter
CMD_LOGOUT = 'openbox --exit'

## Commande pour reboot
CMD_REBOOT = 'sudo shutdown -r now'

## Commande pour etteindre l'ordinateur
J'ai jamais utilisé feh, mais il doit y avoir moyen de faire pareil je suppose. :wink:
Arch Linux x86_64 sur Dell Latitude 6490
Avatar de l’utilisateur
banditblue
Elfe
Messages : 591
Inscription : dim. 10 janv. 2010, 10:19

Re: [Openbox-ASTUCE] Menu d'extinction graphique

Message par banditblue »

je viend de changer mon disque dur qui était hs
j'ai tout réinstallé dans les régles de l'art
j'ai un petit souci avec le fond d'écran d'extinction

auparavant j'arrivais à installé ce script qui est fort sympa sur mon eepc

voila ce que je fait

je télécharge le fichier script-quitter sur ce lien http://wiki.archlinux.fr/openbox-logout ... []=logout
je le dézip et dans mon /home/moi ce qui me crée un dossier Script-quitter je prend le dossier img et le fichier ob_logout que je copie dans ce répertoire .openbox-logout-py

pour etre sur de pouvoir compiler pacman -S pygtk python gtk gtk2 python2 (en root)
toujours sous root je renseigne /etc/sudoers ==> %users ALL=NOPASSWD: /sbin/shutdown
je me reconnecte en mode user
je copie le fichier de joe12 qui ce trouve dans le wiki cité plus haut et le renomme en openbox_logout-py que je met également dans .openbox-logout-py
dans ob_logout je renseigne l'image de fond /home/moi/wallpaper/1.jpg

sous user
/home/moi/.openbox-logout-py ==> chmod +x ob_logout pour le rendre executable
et pout finaliser ==> python .openbox-logout-py/ob_logout


voila ce que j'ai comme erreur dans mon terminal Xterm


[moi@Eeepc100HA ~]$ python .openbox-logout-py/ob_logout
Traceback (most recent call last):
File ".openbox-logout-py/ob_logout", line 3, in <module>
import gtk, os
ImportError: No module named gtk
[moi@Eeepc100HA ~]$

qu'est ce que j'ai oublier de faire?
La connaîssance n'a pas de limite.
Mais sa valeur, est d'autant plus grande, une fois partagé


Pc fixe --- MSI MPG Z490 Gaming Edge WiFi, I9-9900Kf, RTX3070Ti, 64Go DDR4, SSD 1Tera nvme gen4 Samsung 980 pro, SSD 1Tera WD Blacksn850X,3HDD 5Tera
Eeepc Asus 1015pem --- Intel Atom N550 Dual-core 1.5Ghz / DD 1Tera 7200rpm / Ram 2Go

Screenshot + Les Conky ===> http://forums.archlinux.fr/post85405.html#p85405
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17187
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Openbox-ASTUCE] Menu d'extinction graphique

Message par benjarobin »

Code : Tout sélectionner

python2 .openbox-logout-py/ob_logout
Ne marche pas mieux ?
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
veka
archer
Messages : 141
Inscription : sam. 21 nov. 2009, 11:36

Re: [Openbox-ASTUCE] Menu d'extinction graphique

Message par veka »

il faut remplacer :

Code : Tout sélectionner

#!/usr/bin/python
par

Code : Tout sélectionner

#!/usr/bin/python2
suite a la mise a jour de python.
Avatar de l’utilisateur
wido
Chu Ko Nu
Messages : 497
Inscription : mar. 21 oct. 2008, 20:59

Re: [Openbox-ASTUCE] Menu d'extinction graphique

Message par wido »

Voici le mien:

Code : Tout sélectionner

#!/usr/bin/env python3
# -*- coding:utf8 -*-
#=================
# Dependance:
# python, tk, dbus, openbox

from tkinter import *
import os
import subprocess

# Logout
def logout():
    pid1 = subprocess.Popen("openbox --exit", stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True).pid
    fen1.destroy()
    print('résultat:', pid1)
# Reboot
def reboot():
    pid2 = subprocess.Popen('dbus-send --system --print-reply --dest="org.freedesktop.Hal" /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Reboot', stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True).pid
    print('résultat:', pid2)
    fen1.destroy()

# Shutdown
def shutdown():
    pid3 = subprocess.Popen('dbus-send --system --print-reply --dest="org.freedesktop.Hal" /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown', stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True).pid
    print('résultat:', pid3)
    fen1.destroy()

    
fen1 = Tk()
fen1.title("Openbox")
fen1.maxsize(width=300, height=60)
fen1.minsize(width=150, height=30)
fen1.resizable(width=YES, height=NO)
bou1 = Button(fen1, text='Eteindre', command=shutdown)
bou1.pack(side=LEFT)
bou2 = Button(fen1, text='Redémarrer', command=reboot)
bou2.pack(side=LEFT)
bou3 = Button(fen1, text='Logout', command=logout)
bou3.pack(side=LEFT)
bou4 = Button(fen1, text='Annuler', command=fen1.quit)
bou4.pack(side=LEFT)
fen1.mainloop()
fen1.destroy()
Image
Avatar de l’utilisateur
banditblue
Elfe
Messages : 591
Inscription : dim. 10 janv. 2010, 10:19

Re: [Openbox-ASTUCE] Menu d'extinction graphique

Message par banditblue »

merci veka, j'avais zappé cette astuce

parcontre quand je lance ob_logout j'ai ce petit probléme

le bouton annuler fonctionne
le bouton extinction fonctionne lui aussi

mais les boutons redémarrage et extinction ne fonctionne pas

j'ai bien renseigner /etc/sudoers édité en root avec nano ( je ne connais pas vi)

Code : Tout sélectionner

%users ALL=NOPASSWD: /sbin/shutdown
est ce que j'ai oublié quelque chose ?
La connaîssance n'a pas de limite.
Mais sa valeur, est d'autant plus grande, une fois partagé


Pc fixe --- MSI MPG Z490 Gaming Edge WiFi, I9-9900Kf, RTX3070Ti, 64Go DDR4, SSD 1Tera nvme gen4 Samsung 980 pro, SSD 1Tera WD Blacksn850X,3HDD 5Tera
Eeepc Asus 1015pem --- Intel Atom N550 Dual-core 1.5Ghz / DD 1Tera 7200rpm / Ram 2Go

Screenshot + Les Conky ===> http://forums.archlinux.fr/post85405.html#p85405
Avatar de l’utilisateur
veka
archer
Messages : 141
Inscription : sam. 21 nov. 2009, 11:36

Re: [Openbox-ASTUCE] Menu d'extinction graphique

Message par veka »

banditblue, d'aprés moi il n'y a pas de problème mais je ne suis pas un expert avec les regle de sudo.

La seul chose que je puisse faire c'est te montrer mes reglage dans l'espoir que cela puisse t'aider :

/etc/sudoers

Code : Tout sélectionner

# Privilège ROOT
root    ALL=(ALL) ALL

# Exception a sudo
%users  ALL=NOPASSWD: /etc/rc.d/wicd
%users  ALL=NOPASSWD: /sbin/shutdown
%users  ALL=NOPASSWD: /usr/bin/pacman
Verrouillé