Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 26-09-2018 01:43:23

lebardix
Membre
Lieu : Plan de Cuques
Distrib. : Version 9.2 (Stretch) 64 bits
Noyau : Linux 4.9.0-3-amd64
(G)UI : Gnome
Inscription : 15-10-2013

Affecter une variable d'environnement par le gestionnaire de session

Bonjour,

Je voudrais depuis le gestionnaire de session (lightDM, ou autre), ajouter une variable d’environnement pour la session X,

comme, par exemple, le fait le sélecteur du langage avec la variable LANG
cette variable pourrait etre prédéfinie dans un fichier du type /etc/default/ptx_config
et les différentes valeurs possibles dans un fichier de config du gestionnaire de session

la littérature de lightDM et autres ne m'ont guère aidé.

Merci de pistes...scratchhead.gif

Hors ligne

#2 26-09-2018 03:08:03

David5647
Membre
Distrib. : Debian Bullseye/Sid
Noyau : 5.2.0-3-amd64
(G)UI : KDE/i3wm
Inscription : 27-08-2017

Re : Affecter une variable d'environnement par le gestionnaire de session

des pistes... des mots : systray/tray icon, notifications area, drop-down, osd, shortcut, hotkey

un truc du genre?
https://github.com/dfaust/plasma-applet-popup-launcher
dispo dans e store kde https://store.kde.org/p/1084934#files-panel

Enfin c'est ce que j'ai en stock qui s'en rapproche le plus,
tu dois pouvoir lancer des scripts perso, personnaliser l'icône (mais le rendre dynamique... je sais pas)

Hors ligne

#3 26-09-2018 13:14:25

empanada
Membre
Distrib. : Debian 9 (Stretch)
Noyau : 4.9.0-7-amd64
(G)UI : LXDE
Inscription : 19-09-2018

Re : Affecter une variable d'environnement par le gestionnaire de session

lebardix a écrit :

Bonjour,
Je voudrais depuis le gestionnaire de session (lightDM, ou autre), ajouter une variable d’environnement pour la session X,
comme, par exemple, le fait le sélecteur du langage avec la variable LANG



Par example avec le fichier$HOME/.xsessionrc . Voici le mien:

 cat $HOME/.xsessionrc


export LANG=fr_FR.UTF-8
export LANGUAGE=fr_FR.UTF-8



Comme d'habitude, la Wiki Debian as la reponse:
Xsession

Salut

Dernière modification par empanada (26-09-2018 13:16:18)


"blues are the roots and the other musics are the fruits" . Willie Dixon

Hors ligne

#4 26-09-2018 14:08:20

lebardix
Membre
Lieu : Plan de Cuques
Distrib. : Version 9.2 (Stretch) 64 bits
Noyau : Linux 4.9.0-3-amd64
(G)UI : Gnome
Inscription : 15-10-2013

Re : Affecter une variable d'environnement par le gestionnaire de session

OK empanada,

mais mon probleme est bien en amont, ajouter une ressource quelconque lorsque l'utilisateur est connecté ça va de soi,
(pour du reseau samba gigolo fait bien l'affaire, et meme du script shell -parfois avec des droits root en plus .... )
mais ici j'ai à faire à des enfants,
mon probleme est de connaitre au moment de la connexion une caractéristique particulière,
J'ai pris l'exemple de la langue puisque le gestionnaire de session sait le transmettre à X,
et donc j'aimerai faire la meme chose avec une variable spécifique

l'utilisateur, avant sa connexion,  choisit une option parmi un choix proposé de valeurs, (comme il peut le faire pour la langue)
et  cette option est transmise à sa session lors de son login.

Hors ligne

#5 26-09-2018 14:31:06

empanada
Membre
Distrib. : Debian 9 (Stretch)
Noyau : 4.9.0-7-amd64
(G)UI : LXDE
Inscription : 19-09-2018

Re : Affecter une variable d'environnement par le gestionnaire de session

lebardix a écrit :

l'utilisateur, avant sa connexion,  choisit une option parmi un choix proposé de valeurs, (comme il peut le faire pour la langue)
et  cette option est transmise à sa session lors de son login.


Je ne suis pas sûr d'avoir compris exactement ce que tu veux faire, mais je suppose que ce logiciel où l'utilisateur choisit une option, c'est fait pour toi, donc met le choix dans .xsessionrc . Tout les variables de .xsessionrc  se chargeront au début de saison (juste après le gestionnaire de session).


"blues are the roots and the other musics are the fruits" . Willie Dixon

Hors ligne

#6 26-09-2018 21:36:19

lebardix
Membre
Lieu : Plan de Cuques
Distrib. : Version 9.2 (Stretch) 64 bits
Noyau : Linux 4.9.0-3-amd64
(G)UI : Gnome
Inscription : 15-10-2013

Re : Affecter une variable d'environnement par le gestionnaire de session

merci encore, mettre le choix dans .xsessionrc c'est très bien, mais  faire un choix lors de la connexion  dans le gestionnaire de session, c'est une autre paire de manches.

je veux faire un choix comme celui de l'option "language" dans le gestionnaire de session, mais bien entendu pas pour le langage mais pour une variable autre (exemple: choisir une classe depuis une liste de classes existantes)

tu me comprends ?

merci

Hors ligne

#7 26-09-2018 21:51:42

empanada
Membre
Distrib. : Debian 9 (Stretch)
Noyau : 4.9.0-7-amd64
(G)UI : LXDE
Inscription : 19-09-2018

Re : Affecter une variable d'environnement par le gestionnaire de session

lebardix a écrit :

merci encore, mettre le choix dans .xsessionrc c'est très bien, mais  faire un choix lors de la connexion  dans le gestionnaire de session, c'est une autre paire de manches.

je veux faire un choix comme celui de l'option "language" dans le gestionnaire de session, mais bien entendu pas pour le langage mais pour une variable autre (exemple: choisir une classe depuis une liste de classes existantes)

tu me comprends ?

merci


Je crois que finalement oui, mais...t'auras besoin de modifier le code du gestionnaire de session. Je ne crois pas que les gestionnaires de session aient la posibilité d'ajouter un tel menu. Le problème ce n'est pas passer la variable dans le début de session , mais plutôt de montrer ces options "custom" aux utilisateurs,
Une fois la session ouverte, c'est facile de montrer un menu pour choisir parmi plusieurs options (depuis bash, par example, avec zenity, yad....), mais modifier le gestionnaire de session....scratchhead.gif
J'ai installés lightdm, slim et lxdm. Je vais chercher d'info mais il me semble que ça va être dur...


"blues are the roots and the other musics are the fruits" . Willie Dixon

Hors ligne

#8 26-09-2018 22:15:45

empanada
Membre
Distrib. : Debian 9 (Stretch)
Noyau : 4.9.0-7-amd64
(G)UI : LXDE
Inscription : 19-09-2018

Re : Affecter une variable d'environnement par le gestionnaire de session

J'ai une idée: de creer des nouveaux *.desktop sous /usr/share/xsessions/ . Voyons.
Voici mon repertoire:

ls /usr/share/xsessions/


lightdm-xsession.desktop  LXDE.desktop  openbox.desktop



Par example, l'openbox.desktop:

cat /usr/share/xsessions/openbox.desktop
[code][Desktop Entry]
Name=Openbox
Comment=Log in using the Openbox window manager (without a session manager)
Exec=/usr/bin/openbox-session
TryExec=/usr/bin/openbox-session
Icon=openbox
Type=Application[/code]



Et le script qui lance X11 dans ce cas:

cat /usr/bin/openbox-session


#!/bin/sh

if test -n "$1"; then
    echo "Syntax: openbox-session"
    echo
    echo "See the openbox-session(1) manpage for help."
  exit
fi

# Clean up after GDM
xprop -root -remove _NET_NUMBER_OF_DESKTOPS \
      -remove _NET_DESKTOP_NAMES \
      -remove _NET_CURRENT_DESKTOP 2> /dev/null

# Set up the environment
A="/etc/xdg/openbox/environment"
test -r $A && . $A
A="${XDG_CONFIG_HOME:-"$HOME/.config"}/openbox/environment"
test -r $A && . $A

# Run Openbox, and have it run the autostart stuff
exec /usr/bin/openbox --startup "/usr/lib/x86_64-linux-gnu/openbox-autostart OPENBOX" "$@"
 



Alors, tu peux creer des *.desktop suplementaires (et les /usr/bin/NOMQUELCONQUE-session associés) , par example "LXDE A", "LXDE B" où A ou B peuvent être les variables que tu veux montrer aux utilisateurs comme options.
Je me suis bien exprimé ?

Salut


"blues are the roots and the other musics are the fruits" . Willie Dixon

Hors ligne

#9 26-09-2018 22:18:15

lebardix
Membre
Lieu : Plan de Cuques
Distrib. : Version 9.2 (Stretch) 64 bits
Noyau : Linux 4.9.0-3-amd64
(G)UI : Gnome
Inscription : 15-10-2013

Re : Affecter une variable d'environnement par le gestionnaire de session

j'ai pensé à un truc bête et méchant en utilisant le sélecteur de langue, mais avec des langues bidons, la seule langue dans primtux est le français, mais ce sera cool de faire croire au gestionnaire de session qu'il y a des langues toto, titi, tat...
et donc là pouvoir faire le choix

Hors ligne

#10 26-09-2018 22:21:57

empanada
Membre
Distrib. : Debian 9 (Stretch)
Noyau : 4.9.0-7-amd64
(G)UI : LXDE
Inscription : 19-09-2018

Re : Affecter une variable d'environnement par le gestionnaire de session

lebardix a écrit :

j'ai pensé à un truc bête et méchant en utilisant le sélecteur de langue, mais avec des langues bidons, la seule langue dans primtux est le français, mais ce sera cool de faire croire au gestionnaire de session qu'il y a des langues toto, titi, tat...
et donc là pouvoir faire le choix


L'idée que je t'ai proposée c'est plus au  moins la même.

J'oublié dire que ça serait aussi simple que d'ajouter dans le script *-session l'edition de .xsessionrc.


"blues are the roots and the other musics are the fruits" . Willie Dixon

Hors ligne

#11 26-09-2018 22:23:37

lebardix
Membre
Lieu : Plan de Cuques
Distrib. : Version 9.2 (Stretch) 64 bits
Noyau : Linux 4.9.0-3-amd64
(G)UI : Gnome
Inscription : 15-10-2013

Re : Affecter une variable d'environnement par le gestionnaire de session

pardon , j'avais pas le message ...
je regarde

Hors ligne

#12 26-09-2018 22:29:05

lebardix
Membre
Lieu : Plan de Cuques
Distrib. : Version 9.2 (Stretch) 64 bits
Noyau : Linux 4.9.0-3-amd64
(G)UI : Gnome
Inscription : 15-10-2013

Re : Affecter une variable d'environnement par le gestionnaire de session

oui, c'est à essayer

Hors ligne

#13 26-09-2018 23:39:22

lebardix
Membre
Lieu : Plan de Cuques
Distrib. : Version 9.2 (Stretch) 64 bits
Noyau : Linux 4.9.0-3-amd64
(G)UI : Gnome
Inscription : 15-10-2013

Re : Affecter une variable d'environnement par le gestionnaire de session

salut,
oui c'est valable l'option xsession, en plus ça a plus de sens que mes histoires de langues ....
reste a voir comment je récupére le nom...

Hors ligne

#14 27-09-2018 09:42:26

empanada
Membre
Distrib. : Debian 9 (Stretch)
Noyau : 4.9.0-7-amd64
(G)UI : LXDE
Inscription : 19-09-2018

Re : Affecter une variable d'environnement par le gestionnaire de session

lebardix a écrit :

oui c'est valable l'option xsession, en plus ça a plus de sens que mes histoires de langues ....


Parfait!! Donc...¿résolu? Si oui il faudrait que tu l'indiques dans le titre du post.

lebardix a écrit :

reste a voir comment je récupére le nom...


Le nom...de quoi? scratchhead.gif

Salut


"blues are the roots and the other musics are the fruits" . Willie Dixon

Hors ligne

#15 27-09-2018 11:02:26

lebardix
Membre
Lieu : Plan de Cuques
Distrib. : Version 9.2 (Stretch) 64 bits
Noyau : Linux 4.9.0-3-amd64
(G)UI : Gnome
Inscription : 15-10-2013

Re : Affecter une variable d'environnement par le gestionnaire de session

et bien je ne récupère pas le nom de la session dans les scripts de lightdm dans le env...
DISPLAY=:0
USER=01-mini
PWD=/
HOME=/home/01-mini
SHELL=/bin/sh
SHLVL=1
LOGNAME=01-mini
XAUTHORITY=/var/run/lightdm/root/:0
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
_=/usr/bin/env

mais j'ai trouvé qu'il était inscrit dans le fichier .dmrc
[Desktop]
Language=fr_FR.utf8
Session=fluxbox-cp

ouf... sauvé
donc à moi le shell, et je vais pouvoir effectuer les montages en root ....

Hors ligne

#16 27-09-2018 11:06:45

lebardix
Membre
Lieu : Plan de Cuques
Distrib. : Version 9.2 (Stretch) 64 bits
Noyau : Linux 4.9.0-3-amd64
(G)UI : Gnome
Inscription : 15-10-2013

Re : Affecter une variable d'environnement par le gestionnaire de session

encore un effort pour modifier le greeter lightdm-webkit-greeter qui n'affiche pas de bouton pour le choix de la session....

Hors ligne

#17 27-09-2018 11:41:56

empanada
Membre
Distrib. : Debian 9 (Stretch)
Noyau : 4.9.0-7-amd64
(G)UI : LXDE
Inscription : 19-09-2018

Re : Affecter une variable d'environnement par le gestionnaire de session

J'ai fais un essai avec lightdm et LXDE, et ça marche nickel. Je n'ai eu pas même besoin de toucher $HOME/.xsessionrc.
J'ai créé une nouvelle option qui s'affiche sous le menu de session de lightdm (mais ça fonctionne sous slim, lxdm....), qui écrase le choix de langue. Elle s'appelle LXDE-fr:

1er) Créer un nouveau *.desktop sous /usr/share/xsessions/. C'est /usr/share/xsessions/LXDE-FR.desktop:

nano /usr/share/xsessions/LXDE-FR.desktop


[Desktop Entry]
# The names/descriptions should really be better
Name=LXDE-FR
Comment=LXDE in french language
Comment[es]=LXDE - LXDE en francés
Comment[fr]=LXDE - LXDE en français
Exec=/usr/bin/startlxde-fr
# Icon=
Type=Application
 



2éme) Créer un nouveau fichier pour appeler lxsession. C'est presque égal a l'original /usr/bin/startlxde mais avec deux lignes à la fin qui exportent les variables d'environnement  LANG et LANGUAGE:

nano /usr/bin/startlxde-fr


#!/bin/sh

export XDG_DATA_DIRS="/usr/local/share/:/usr/share/:/usr/share/gdm/:/var/lib/menu-xdg/"

if [ -z "$XDG_CONFIG_HOME" ]; then
        export XDG_CONFIG_HOME="$HOME/.config"
fi

if [ -z "$XDG_DATA_HOME" ]; then
        export XDG_DATA_HOME="$HOME/.local/share"
fi

# Ensure the existance of openbox config file
OPENBOX_CONF_DIR="$XDG_CONFIG_HOME/openbox"
if [ ! -f "$OPENBOX_CONF_DIR/lxde-rc.xml" ]; then
        mkdir -p "$OPENBOX_CONF_DIR"
        cp /etc/xdg/openbox/LXDE/rc.xml "$OPENBOX_CONF_DIR/lxde-rc.xml"
fi

# Ensure the existance of the 'Desktop' folder
if [ -e "$XDG_CONFIG_HOME/user-dirs.dirs" ]; then
        . "$XDG_CONFIG_HOME/user-dirs.dirs"
else
        XDG_DESKTOP_DIR="$HOME/Desktop"
fi
mkdir -p "$XDG_DESKTOP_DIR"

# Ensure the existance of the user applications folder
USER_APPS_DIR="$XDG_DATA_HOME/applications"
mkdir -p "$USER_APPS_DIR"

# Clean up after GDM (GDM sets the number of desktops to one)
xprop -root -remove _NET_NUMBER_OF_DESKTOPS -remove _NET_DESKTOP_NAMES -remove _NET_CURRENT_DESKTOP 2> /dev/null

# Enable GTK+2 integration for OpenOffice.org, if available.
export SAL_USE_VCLPLUGIN=gtk

# Launch DBus if needed
if which dbus-launch >/dev/null && test -z "$DBUS_SESSION_BUS_ADDRESS"; then
        if test -z "$XDG_RUNTIME_DIR" -o ! -S "$XDG_RUNTIME_DIR/bus" -o ! -O "$XDG_RUNTIME_DIR/bus"; then
                eval "$(dbus-launch --sh-syntax --exit-with-session)"
        fi
fi

export XDG_MENU_PREFIX="lxde-"
export XDG_CURRENT_DESKTOP="LXDE"

####ADDED LINES############
#Export language user environment variables
export LANG=fr_FR.UTF-8
export LANGUAGE=fr_FR.UTF-8
###########################

# Start the LXDE session
exec /usr/bin/lxsession -s LXDE -e LXDE
 



Ça y est!!

Il ne reste que vérifier le fonctionnement:
Capture d'écran ligthdm file-Rcadf0e5a58cc35050a6827484f6e0876
Noter que la langue choisi est l'anglais. La sélection LXDE-FR va écraser ce choix et imposer le français comme la langue à utiliser dans la session.

Voilà le resultat:

Capture d'écran du desktopfile-Rf4d13ac219c43d47c0b2994d13c982f1

Salut


"blues are the roots and the other musics are the fruits" . Willie Dixon

Hors ligne

Pied de page des forums