Titre de la fenêtre courante dans i3status 🇫🇷

Étant donné la nature même d’i3, le nom de la fenêtre actuelle peut être difficile, voire impossible à déchiffrer, en particulier ces looongs titres de pages web.

Le script Python suivant obtient ledit titre - ne s’étouffe pas lorsqu’il n’y en a pas - et l’envoie dans un fichier d’une ligne qui peut être lu à son tour par i3status.

Voir ~/.config/i3/i3status.conf plus bas.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/usr/bin/env python3

import os
import i3ipc
from html import escape

TMPFILE = os.path.expanduser("/tmp/.current_window_name.txt")

i3 = i3ipc.Connection()

thisId = 0

root = i3.get_tree()

def writeTmpFile(wname):
if wname:
wname = escape(wname)
else:
wname = 'Unnamed window'

with open(TMPFILE, 'w') as the_file:
the_file.write(wname)

def on_window(i3, e):
global thisId
if e.change == "focus":
thisId = e.container.id
writeTmpFile(e.container.name)
if e.change == "title":
if e.container.id == thisId:
writeTmpFile(e.container.name)

def on_workspace(i3, e):
if e.change == "focus":
writeTmpFile("Workspace " + e.current.name)

i3.on('window', on_window)
i3.on('workspace', on_workspace)

i3.main()

in ~/.config/i3/i3status.conf

~/.config/i3/i3status.conf
1
2
3
4
5
6
7
order += "read_file current_window_name"

read_file current_window_name {
format = "<span foreground='#ff8c00'>%content</span>"
format_bad = ""
path = "/tmp/.current_window_name.txt"
}

Ne pas oublier d’installer i3ipc

1
python3 -m pip install i3ipc

NB si vous faites les choses comme il faut, inutile de retenir tout ça ; Tout ce qui précède est automatiquement installé sur chacune de mes nouvelles machines ; ça prend quelques minutes en fonction de la météo marine.

Restez à l’écoute pour en savoir plus à ce sujet - déploiement et maintenance automatiques à l’aide d’un seul script shell simple en place de mastodontes comme Guix - entre autres.