Économiseur d’écran personnalisé avec XSecureLock

Vincent Bernat

i3lock est une so­lu­tion po­pu­laire pour ver­rouiller une ses­sion X11. Les pos­si­bi­li­tés de per­son­na­li­sa­tion sont res­treintes : il ne per­met que de dé­fi­nir un fond d’écran à par­tir d’un fi­chier PNG. Cette li­mi­ta­tion fait par­tie de la concep­tion d’i3lock : son ob­jec­tif prin­ci­pal est de main­te­nir l’écran ver­rouillé, ce qui est déjà as­sez dif­fi­cile avec X11. Chaque fonc­tion­na­lité sup­plé­men­taire aug­mente la sur­face d’at­taque et s’éloigne de cet ob­jec­tif1. Beau­coup sont frus­trés par ces li­mi­ta­tions et étendent i3lock par le biais de simples scripts ou en mo­di­fiant son code source2. La pre­mière so­lu­tion est gé­né­ra­le­ment sûre, mais la se­conde va à l’en­contre de l’es­prit d’i3lock.

XSecureLock est une al­ter­na­tive moins connue à i3lock. L’une des ca­rac­té­ris­tiques les plus at­trayantes de ce pro­gramme est de dé­lé­guer la fonc­tion d’éco­no­mi­seur d’écran à un autre pro­ces­sus. Ce der­nier doit seule­ment s’at­ta­cher à une fe­nêtre exis­tante four­nie par XSecureLock qui ne lui trans­met­tra au­cune en­trée. Il pla­cera éga­le­ment une fe­nêtre noire en des­sous pour s’as­su­rer que l’écran reste ver­rouillé en cas de plantage.

XSecureLock contient déjà quelques éco­no­mi­seurs d’écran, no­tam­ment un uti­li­sant mpv pour af­fi­cher des pho­tos ou des vi­déos, comme les vi­déos aé­riennes de l’Apple TV. J’ai écrit mon propre éco­no­mi­seur à l’aide de Py­thon et GTK3. Il af­fiche un fond d’écran, une hor­loge et la météo4.

Économiseur d'écran personnalisé pour XSecureLock. Il affiche une
horloge au centre et la météo dans un
coin
Économiseur d’écran personnalisé pour XSecureLock

J’ap­porte deux mo­di­fi­ca­tions au-des­sus de XSecureLock :

  • Faire une pause avant d’af­fi­cher la fe­nêtre de l’éco­no­mi­seur d’écran. Cette rus­tine évite un flash noir au dé­mar­rage de XSecureLock en at­ten­dant un peu que l’écran de veille soit prêt avant de l’af­fi­cher. Comme j’uti­lise éga­le­ment une ap­pli­ca­tion de fondu vers l’ar­rière-plan avant de ver­rouiller l’écran, le flash noir était as­sez gê­nant pour moi. J’ai bon es­poir que cette rus­tine soit ac­cep­tée par l’auteur.
  • Ne pas ten­ter d’éteindre l’écran. Cette rus­tine em­pêche XSecureLock d’éteindre l’écran après un cer­tain temps. Je pense que c’est le rôle de l’ex­ten­sion X11 DPMS. Cela sim­pli­fie le code. Je ne suis pas sûr que cette rus­tine soit ac­cep­tée par l’auteur.

Mise à jour (05.2023)

La pre­mière rus­tine a été ac­cep­tée et est pré­sente dans la ver­sion 1.8.0. Au lieu d’uti­li­ser la se­conde rus­tine, j’ini­tia­lise la va­riable XSECURELOCK_​BLANK_​TIMEOUT à -1.

XSecureLock dé­lègue éga­le­ment la fe­nêtre d’au­then­ti­fi­ca­tion à un autre pro­ces­sus, mais je suis moins à l’aise avec l’idée de per­son­na­li­ser ce­lui-ci étant donné que c’est plus dé­li­cat d’un point de vue sé­cu­rité. Bien que ba­sique, l’ac­tuelle pré­sen­ta­tion me convient.

Je pense que les gens de­vraient évi­ter de mo­di­fier le code d’i3lock et uti­li­ser plu­tôt XSecureLock. J’es­père que cet ar­ticle ai­dera un peu.