Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#76 Le 07/03/2023, à 18:20

lynn

Re : [ Script bash ] Verrouiller son écran en utilisant le bluetooth

J'ai modifié le script dans le premier message pour ajouter une condition de reconnexion entre le pc et le smartphone. En effet, certaines fois, alors que smartphone revient à proximité du pc, il ne se passe rien... pas de reconnexion. Ça fonctionne bien si on perd la connexion pendant cinq ou dix minutes mais si la séparation des deux objets est plus longue, ça ne se reconnecte pas automatiquement. Alors est-ce un bug ou peut-être une sécurité du système bluetooth ?

La modif : Dans le cas où l'écran est verrouillé, que la connexion bluetooth n'est pas rétablie entre le pc et le smartphone alors qu'ils sont proches, on forcera la connexion lors du déverrouillage de l'écran ; pas besoin de tenter en permanence la reconnexion tant que le smartphone n'est pas à proximité.


«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»

Coluche

Hors ligne

#77 Le 09/03/2023, à 15:49

lynn

Re : [ Script bash ] Verrouiller son écran en utilisant le bluetooth

Mise à jour du script. Ajout d'une vérification trust / untrust dans la première boucle. Dans certains cas, il est possible que cette valeur soit sur 'no' alors que le smartphone a été précédemment appairé et connecté.
Logiquement, il ne devrait pas y avoir besoin de cette vérification mais dans le doute et en attente d'autres tests, je préfère la rajouter.


N.B : En lien avec mon script, j'ajoute également une méthode trouvée ici pour appairer un smartphone avec plusieurs systèmes d'exploitation (multi-boot) mais avec un même module/dongle bluetooth sur le pc. Ça doit fonctionner de la même façon avec autre chose qu'un smartphone mais je n'ai pas d'autre appareil en bluetooth sous la main alors je ne peux pas tester.

L'idée est de recopier la clé d'appairage du matériel voulu, d'un système à l'autre. D'après la documentation, ça peut aussi fonctionner sur Win$. Pour commencer, il prendre soin d'avoir appairé son matériel sur un système d'exploitation et de considérer celui ci comme 'maître' en ce qui concerne la clé d'appairage du dît matériel. C'est cette clé qui devra servir sur tous les autres systèmes d'exploitation utilisés.

Une fois l'appareil appairé sur le système d'exploitation maître, sa clé sera disponible dans le fichier 'info' situé ici :
/!\ Attention : visualisation du fichier 'info' et manipulations à faire en mode admin /!\

/var/lib/bluetooth/A0:B1:C2:D3:E4:F5/G0:H1:I2:J3:K4:L5/info

/var/lib/bluetooth/A0:B1:C2:D3:E4:F5 <-- MAC du module bluetooth du PC
G0:H1:I2:J3:K4:L5 <-- MAC de l'appareil visé. En cas de MAC multiples, bluetoothctl info


La partie intéressante du fichier 'info' :

info a écrit :

[LinkKey]
Key=EACFBBFC47B42703BDCD8CE3F27C5391 <-- Ce n'est pas ma clé réelle tongue
Type=5
PINLength=0

Conserver ce numéro quelque part et démarrer sur une autre distribution. Ceci fait, appairer le matériel à nouveau et éditer le fichier info de ce système (en remplaçant les XX:XX:.. et ZZ:ZZ:... par les MAC réels, bien entendu) :

sudo -i
$EDITOR /var/lib/bluetooth/XX:XX:XX:XX:XX:XX/ZZ:ZZ:ZZ:ZZ:ZZ:ZZ/info

Remplacer le numéro dans la partie Key=........ avec le numéro récupéré plus tôt. Enregistrer les modifications et relancer le service bluetooth ou redémarrer le pc.


«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»

Coluche

Hors ligne

#78 Le 10/03/2023, à 19:51

lynn

Re : [ Script bash ] Verrouiller son écran en utilisant le bluetooth

J'ai modifié la partie IsScreenLock par ce qui suit car gawk n'est pas installé par défaut sur toutes les distributions.

isScreenLocked() {
    local XDG_SESSION_ID=$(loginctl user-status | awk '/^[[:space:]]+Sessions/{for(i=1;i<=NF;i++){if(index($i,"*")==1){ sub(/^\*/,"", $i);print $i;}}}')
    readarray -t properties < <(loginctl show-session $XDG_SESSION_ID --value -p State -p Type -p LockedHint)
    read type state locked < <(printf '%s ' "${properties[@]}") 
    [[ $state == active && $type == @(x11|wayland) && $locked == yes ]]
}

Pour la partie clé bluetooth expliquée dans mon précédent message, il y a encore plus simple en copiant/collant le fichier info (ou son contenu) de la distribution maître sur l'autre distribution.


«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»

Coluche

Hors ligne

#79 Le 24/03/2023, à 13:01

lynn

Re : [ Script bash ] Verrouiller son écran en utilisant le bluetooth

J'ai modifié le script dans mon premier message. Le niveau d'urgence des bulles de notifications est repassé à «normal» et celles ci disparaîtront au bout de quelques secondes au lieu d'avoir à cliquer dessus pour les éliminer.


«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»

Coluche

Hors ligne

#80 Le 13/04/2023, à 18:48

lynn

Re : [ Script bash ] Verrouiller son écran en utilisant le bluetooth

J'ai modifié le script en lui ajoutant une vérification si l'utilisateur passe sur un autre TTY, même sans se connecter à ce dernier. Sous Ubuntu 23.04 et peut-être Ubuntu 22.10, ça a pour effet de couper la connexion bluetooth.
Dans ce cas là, ça ne déclenchera pas le verrouillage de l'écran sur timeout mais se reconnectera après retour en session graphique.


«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»

Coluche

Hors ligne

#81 Le 08/05/2023, à 11:15

lynn

Re : [ Script bash ] Verrouiller son écran en utilisant le bluetooth

J'ai modifié le script en l'allégeant de certaines parties inutiles. Parfois, les reconnexions ne se faisaient pas toujours (notamment sur déconnexions TTY). Maintenant, ça devrait bien fonctionner tout le temps... tout du moins, j'espère ! tongue

N.B : La déconnexion du bluetooth quand on passe sur un TTY se produit également avec Ubuntu 23.10 (Mantic Minotaur)


«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»

Coluche

Hors ligne

#82 Le 29/05/2023, à 11:19

lynn

Re : [ Script bash ] Verrouiller son écran en utilisant le bluetooth

J'ajoute une méthode pour lancer le script au démarrage du pc en utilisant systemd.

[1] Créer le service en question

systemctl --user edit --full --force smartlock-screen.service

[2] Dans la fenêtre qui s'ouvre, copier/coller ce qui suit

[Unit]
Description=Verrouillage de l'écran sur déconnexion d'un périphérique bluetooth

[Service]
Type=simple
ExecStart=/home/%u/bin/smartlock-screen.sh

[Install]
WantedBy=graphical-session.target

Enregistrer les modifications

N.B : la partie suivante indique le chemin à prendre pour exécuter le script. %u représente le nom de l'utilisateur. La suite est à modifier en conséquence.

ExecStart=/home/%u/bin/smartlock-screen.sh

[3] Activer le service

systemctl --user enable smartlock-screen.service

«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»

Coluche

Hors ligne

#83 Le 09/06/2023, à 18:32

lynn

Re : [ Script bash ] Verrouiller son écran en utilisant le bluetooth

J'ai modifié le script en lui ajoutant la reconnexion bluetooth après un retour en session graphique.

N'hésitez pas à commenter si ça merdouille ou pas... pour ma part, c'est testé et fonctionnel sur les versions suivantes d'Ubuntu : 22.04, 22.10, 23.04 et 23.10.


«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»

Coluche

Hors ligne