Postez ici vos trucs & astuces.
Répondre

Autologin (ou pas) sans gestionnaire de connexion

#1Messageil y a 8 ans

Salut,

Un gestionnaire de connexion, ça sert à quoi ? normalement, à saisir son mot de passe, choisir son environnement (quand on en a plusieurs)...
et du coup, si on a qu'un environnement, qu'on est seul à utiliser la machine, et qu'on a activé l'autologin, on a un gestionnaire de connexion qu'on ne voit jamais, qui ne sert à rien :siffle
le mieux serait de s'en passer, ça ferait un service en moins qui tourne en tâche de fond...

ce qu'on va apprendre à faire maintenant peut être dissocié, c'est à dire que l'on va réaliser 3 actions différentes, qui toutes ensembles font démarrer l'ordinateur jusqu'au bureau sans demander le mot de passe, mais on peut n'en utiliser que certaines pour des buts particuliers.

1)Se faire un ~/.xinitrc qui peut lancer un environnement

Ce point permet d'utiliser la commande "startx" sans passer d'argument: l'environnement choisi sera lancé par l'utilisateur...

le meilleur point de départ, c'est de récupérer une copie de celui fourni avec le système:

cp /etc/X11/xinit/xinitrc ~/.xinitrc
dans notre nouveau ~/.xinitrc (caché) on ne va pas toucher au contenu existant (certaines choses sont utiles), on va juste désactiver ce qui ne nous sert pas, et mettre la commande pour notre environnement:

#!/bin/sh

userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/etc/X11/xinit/.Xresources
sysmodmap=/etc/X11/xinit/.Xmodmap

# merge in defaults and keymaps

if [ -f $sysresources ]; then







    xrdb -merge $sysresources

fi

if [ -f $sysmodmap ]; then
    xmodmap $sysmodmap
fi

if [ -f "$userresources" ]; then







    xrdb -merge "$userresources"

fi

if [ -f "$usermodmap" ]; then
    xmodmap "$usermodmap"
fi

# start some nice programs

if [ -d /etc/X11/xinit/xinitrc.d ] ; then
 for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
  [ -x "$f" ] && . "$f"
 done
 unset f
fi

# ici on désactive le lancement du gestionnaire de fenêtre de Xorg
#twm &
#xclock -geometry 50x50-1+1 &
#xterm -geometry 80x50+494+51 &
#xterm -geometry 80x20+494-0 &
#exec xterm -geometry 80x66+0+0 -name login

# et on lance NOTRE environnement
exec startxfce4
il y a plusieurs écoles sur un point, certains disent qu'il doit être exécutable, d'autres non; dans le doute:

chmod u+x ~/.xinitrc
ici, on a mis Xfce, mais on peut démarrer d'autres environnements; pour trouver la ligne de commande adéquate, il suffit de regarder le fichier *.desktop correspondant à la session qu'on veut lancer dans /usr/share/xsessions, à la ligne "Exec=".

ça c'est fait, quand on lancera "startx", ça démarrera notre environnement...

2)Faire en sorte que "startx" soit lancé automatiquement au login de l'utilisateur

si on arrive sur un terminal après le boot, on saisit son login, son mot de passe, et après il faut lancer la commande "startx" pour obtenir l'environnement graphique; ici, on fera en sorte que ce soit automatique dès que le mot de passe a été entré...
il faut éditer le fichier ~/.bash_profile (s'il n'existe pas, copier celui de /etc/skel ) et s'assurer d'avoir ceci dedans:

[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx
sauvegarder, c'est tout: "startx" sera automatique quand l'user se connectera...

3)Autologin dans le TTY1 de l'utilisateur

Ici, on fait en sorte que l'utilisateur désigné soit connecté automatiquement à la fin du boot, sans demande de mot de passe, et sur le TTY1 (celui qui fera tourner Xorg).
ça se fait en modifiant le service getty@tty1, au moyen des outils fournis avec Systemd; la modification est placée dans /etc/systemd/system/getty@tty1.service.d et donc pas modifiée par les mises à jour.

Edit 2021

Systemd a évolué et cette commande ne crée plus le fichier . On peux toutefois le créer manuellement avec :

sudo mkdir -p /etc/systemd/system/getty@tty1.service.d/
sudo nano /etc/systemd/system/getty@tty1.service.d/override.conf
[Obsolète]sudo systemctl edit getty@tty1.service[/Obsolète]
ceci ouvre un nouveau fichier avec votre éditeur (Nano par défaut) dans lequel il faut mettre ceci:

[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin username --noclear %I 38400 linux
il faut bien sûr remplacer "username" par le vrai nom de l'utilisateur.
il peut arriver que DBus ne se lance pas assez vite, et on se retrouve avec certains daemon de la session (comme Thunar sous Xfce) qui tournent sans lui, avec pour résultat, un problème de permissions (sur les clés USB par exemple). on peut donc s'arranger pour que la session ne démarre qu'une fois DBus lancé, en mettant ceci (à la place du code précédent):

[Unit]
Requires=dbus.Service
After=dbus.Service

[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin username --noclear %I 38400 linux
on enregistre (Ctrl-O) et on quitte (Ctrl-X).

et c'est tout...
à ce stade, on peut désactiver le gestionnaire de connexion utilisé, par exemple pour Lightdm

sudo systemctl disable lightdm.service
ou si Plymouth est utilisé

sudo systemctl disable lightdm-plymouth.service
(au passage, je pense qu'il serait utile de supprimer Plymouth aussi pour gagner de la vitesse).
et on redémarre...

si tout est OK, on pourra désinstaller le gestionnaire de connexion; en cas de pépin, on peut réactiver en remplaçant "disable" par "enable" dans la commande.

NB: on avait déjà un tuto pour ça dans le forum, mais il est trop succin et l'accent n'est pas mis sur le fait que les 3 points sont utilisables séparément; et ce présent tuto est à jour.

Autologin (ou pas) sans gestionnaire de connexion

#2Messageil y a 8 ans

Salut D...

Intéressant ton truc, j'ai tentée la première modif, de xinitrc, mais ça marche pas, je me retrouve toujours avec l'écran de connexion! :triste:
J'ai fais les modifs sur mon portable pour pas risquer de refoutre ma tour en l'air!
Distrib installée 0.8.13 kde5

Autologin (ou pas) sans gestionnaire de connexion

#3Messageil y a 8 ans

c'est parce que tu n'as pas lu les explications entières; à la première partie, la création de ~/.xinitrc, il y a écrit ça:
Ce point permet d'utiliser la commande "startx" sans passer d'argument: l'environnement choisi sera lancé par l'utilisateur...

concrètement le point 1 sert juste à avoir le bon environnement quand tu fais la commande "startx".
si tu veux tester que cette partie fonctionne, il faut:
-te déconnecter de ton environnement, tu arrives donc à la fenêtre de login
-passer sur un autre TTY avec la combinaison de touche Ctrl-Alt-F2
-te connecter sur ce TTY (ton login et ton MDP)
-désactiver temporairement le gestionnaire de login (si j'en juge par ta signature, tu as Kde5, donc c'est Sddm)

sudo systemctl stop sddm.service

comme je l'ai dit, c'est temporaire, et si quelque chose ne va pas, au reboot tout sera normal.
-à ce moment là, tu reviens sur le TTY1 (Ctrl-Alt-F1) et tu verras qu'il n'y a plus ton gestionnaire de login
----> tu peux donc te logguer en texte (comme tu l'as fait sur le TTY2), et essayer la commande:

startx

si ton environnement de bureau se lance normalement, c'est tout bon, tu peux rebooter et passer à l'étape suivante

attention, pour ton ~/.xinitrc, comme tu es sous Kde, il faut remplacer

exec startxfce4

par

exec startkde


chaque étape peut être testée séparément; par exemple, quand tu auras fini l'étape 2, tu pourras tester de la même façon que pour l'étape 1, mais là, tu te rendras compte que ton environnement se lance sans que tu aies à taper "startx", dès que tu as fini de saisir ton MDP
l'étape 3 quand à elle sera testée en désactivant ton gestionnaire de connexion

sudo systemctl disable sddm.service

et tu redémarres...

si pour une raison ou une autre, tu t'aperçois au redémarrage que ça ne marche pas, n'oublie pas que les deux premières étapes étaient fonctionnelles, donc même sans gestionnaire de connexion, le simple fait de te logguer en texte sur le TTY1 lancera ton environnement, te permettant de faire le nécessaire pour revenir en arrière. dans ce cas, il suffit de supprimer le répertoire /etc/systemd/system/getty@tty1.service.d/ et le fichier override.conf qui est dedans:

sudo rm -R /etc/systemd/system/getty@tty1.service.d

puis de remettre ton ~/.bash_profile comme il était au départ.
et de réactiver ton gestionnaire de connexion

sudo systemctl enable sddm.service

inutile de toucher au ~/.xinitrc, Sddm n'en tient pas compte.
au reboot, tout sera comme avant...

Autologin (ou pas) sans gestionnaire de connexion

#4Messageil y a 8 ans

Je crois avoir compris, j'essaie ça demain! Merci

Autologin (ou pas) sans gestionnaire de connexion

#5Messageil y a 8 ans

je me suis dit que quand on a plusieurs environnements de bureau, ma solution pose un problème: il faut modifier le ~/.xinitrc à chaque fois qu'on veut changer d'environnement...

donc j'ai cherché une solution, et j'en suis arrivé à faire un petit menu sur mesure; la modification du tuto concerne uniquement le point 1 (le ~/.xinitrc).

d'abord, il faut installer Zenity si ce n'est pas déjà fait:

sudo pacman -S zenity

(on se sert de Zenity, et pas Dialog, parce que quand on lance startx, on passe en graphique, et que Dialog obligerait à ouvrir un terminal en plus)

puis la modif du ~/.xinitrc est simple, on remplace ce qu'il y avait à la ligne "exec..."

exec startxfce4

par ce bout de code:

CHOICE=$(zenity --title "Choix de l'environnement" --entry --text="Choisissez le bureau" \
    --timeout=8 \
    --entry-text="Xfce" Openbox Budgie TTY)
 
case $CHOICE in
        "Xfce")
         exec startxfce4 ;;
        "Openbox")
         exec openbox-session ;;
        "Budgie")
         exec budgie-session ;;
        "TTY")
         clear && exit 0 ;;
    esac

on enregistre et on quitte, et on peut tester tout de suite...

dans cet exemple, j'ai Xfce, Openbox, et Budgie; au lancement de Xorg, une petite fenêtre avec un menu déroulant s'affichera: il suffira de sélectionner l'environnement voulu et de cliquer sur OK.
l'option "--entry-text="Xfce" permet d'avoir un choix par défaut (ici "Xfce") et combiné avec l'option "--timeout=8", ça signifie que si on ne touche à rien, ce choix par défaut sera lancé au bout de 8 secondes.
le quatrième choix "TTY" permet de résoudre un problème de l'autologin: il était impossible de ne pas lancer un environnement et de rester en TTY1; ce choix rend la chose possible.

je vais remettre le code avec des couleurs pour qu'on voit bien ce qu'il faut modifier et comment pour mettre les environnements de son choix:
CHOICE=$(zenity --title "Choix de l'environnement" --entry --text="Choisissez le bureau" \
--timeout=8 \
--entry-text="Xfce" OpenboxBudgieTTY)

case $CHOICE in
"Xfce")
exec startxfce4 ;;
"Openbox")
exec openbox-session ;;
"Budgie")
exec budgie-session ;;
"TTY")
clear && exit 0 ;;
esac

comme ça, on voit bien que si on modifie "Xfce" dans la commande avec Zenity, il faut modifier à l'identique dans le "case". et bien sûr, les commandes "exec...." pour chaque environnement sont à adapter pour votre environnement.
si vous avez un doute, n'hésitez pas à demander comment faire dans votre cas précis...

NB: ça, je l'ai trouvé nulle part, c'est de mon cru, et je suis assez nul en bash, donc si quelqu'un voit quelque chose qui cloche, qu'il me le dise, je corrigerai; chez moi ça fonctionne très bien, mais possible que ce soit moche, ou qu'il manque un "exit" quelque part...

Autologin (ou pas) sans gestionnaire de connexion

#6Messageil y a 8 ans

Merci pour le script Loubrix :gsourire:

je me suis permis de le modifier un peu et de le mettre sur aur pour pouvoir le tester plus facilement

1) l'installer

yaourt plus-dm
il copie juste un fichier dans /etc/X11/xinit/, ne casse rien c'est sans danger :siffle

mettre ces 3(4) lignes dans ~/.xinitrc a la place du lanceur du bureau

#exec gnome-session-cinnamon (startkde ...)
#export DESKTOP_SESSION='Cinnamon' # permet de forcer sans menu un bureau
source /etc/X11/xinit/plus-dm.sh
default_session='TTY'
dm_timer=8
runDM


2) Usage
démarrage en mode texte
Avec systemd, si comme moi on n'a pas suivit le tuto de Loubrix:

systemctl set-default -f multi-user.target
ps: bien noter "graphical.target" a la place de multi-user.target pour un retour en arrière avec un login normal dans un gestionnaire de connection :sos:

La commande startx lancera le menu graphique pour choisir le bureau
ImageImage
Le dernier choix de bureau sera enregistré automatiquement (dans le fichier ~/.xinitrc)

3) Configuration optionnelle
Pour une configuration manuelle: créer un fichier ~/plus-dm.menu.conf et l'éditer. Ce fichier permet d'avoir une liste personnalisée avec plus ou moins de choix et des commandes différentes.

# ~/.config/plus-dm.menu.conf
[Systems]
Xfce=exec startxfce4
Budgie=echo budgie-session
OpenBox=echo openbox-session
TTY=clear && exit 0
KDE 5=echo startkde


code source
Dernière modification par papajokeil y a 8 ans, modifié au total 4 fois.

Autologin (ou pas) sans gestionnaire de connexion

#7Messageil y a 8 ans

Salut.
En voyant ta capture, j'en profite pour faire un petit HS.
C'en est ou Budgie?

Autologin (ou pas) sans gestionnaire de connexion

#8Messageil y a 8 ans

ça reste utilisable et sans bug majeur, mais bien qu'ayant un peu évolué, ça reste maigre en possibilité de configuration.
les points intéressants sont sa légèreté et le fait que bien que basé sur Gnome ça puisse tourner sans aucun élément Gnome; c'est donc adapté à la cohabitation avec d'autres environnements puisqu'on peut utiliser les éléments de ceux-ci.

Autologin (ou pas) sans gestionnaire de connexion

#9Messageil y a 8 ans

j'ai eu quelques problèmes de permissions sur les clés et disques USB, et je me suis rendu compte que DBus ne démarrait pas assez vite, et n'était pas lancé quand le daemon Thunar démarrait.
j'ai donc édité le tuto pour ajouter la solution (étape 3).

Autologin (ou pas) sans gestionnaire de connexion

#10Messageil y a 8 ans

Bonjour,

Peut-on conserver l'activation automatique du pavé numérique?

Ps: J'ai fait votre manip' sur un ultra-portable et cela fonctionne trés bien, et c'est pour cela que j'aimerais le faire sur ma machine principale, qui, elle, possède un pavé numérique activé par défaut grâce a numlockx et a la ligne 'greeter-setup-script =/usr/bin/numlockx on' dans lightdm.conf.

Merci

Autologin (ou pas) sans gestionnaire de connexion

#11Messageil y a 8 ans

comme tu ne passes plus par lightdm, tu peux lancer Numlockx avec ton environnement de bureau; si c'est Xfce, tu vas dans "session et démarrage", "démarrage automatique d'applications", là tu fais "ajouter", et tu remplis la petite fenêtre:
-Nom = numlockx
-Description = verrouillage du pavé numérique
-commande = numlockx on (inutile de mettre le chemin complet, ça marche sans ça)

Autologin (ou pas) sans gestionnaire de connexion

#12Messageil y a 8 ans

sinon il existe un service dans AUR qui va activer numlockOnTty si tu le désires absolument dès la console

systemd-numlockontty

Autologin (ou pas) sans gestionnaire de connexion

#14Messageil y a 8 ans

Bonjour,
J'ai Manjaro avec Xfce et j'ai testé la ligne "greeter-setup-script =/usr/bin/numlockx on" dans lightdm.conf mais visiblement, j'aurais pas du le faire comme ça car mon PC ne ne veut plus accéder à l'écran de connexion utilisateur au démarrage. Il est bloqué sur un écran noir avec un curseur blanc en haut à gauche qui clignote.
Y'a un moyen de corriger le tir mis à part une réinstallation...

Merci d'avance.

Autologin (ou pas) sans gestionnaire de connexion

#15Messageil y a 8 ans

Bon, je te conseillerais dans un premier temps derebooter en console depuis Grub ou de passer en chroot depuis un autre système Linux, idéalement une Live de Manjaro.
En console, tu te connecte en root, puis

nano /etc/lightdm/lightdm.conf

En navigant avec les flèches , tu modifie la ligne en remettant l'originale, puis Ctrl+x pour sortir du mode d'édition, "O" pour enregistrer. Normalement, tu n'aurais pas a avoir du modifier ce fichier, puisque le but est de ce passer de DM.... As tu bien relu ce tuto???

Autologin (ou pas) sans gestionnaire de connexion

#16Messageil y a 8 ans

Merci pour l'aide mais j'ai finalement pu régler le problème ainsi :
crlt+alt+f2 sur l'écran noir
saisie du login et mot de passe
tapez "startxfce4"

Une fois sous Xfce, j'ai bien entendu annuler la ligne dans lightdm.conf :)
Répondre