99 lines
2.6 KiB
Python
Executable File
99 lines
2.6 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
"""
|
|
Prosty demoninik do aktualizacji nazw workspace
|
|
"""
|
|
|
|
from i3ipc import Connection, Event
|
|
|
|
i3 = Connection()
|
|
|
|
|
|
def glyph(ws_number):
|
|
"""
|
|
Nazwy worspace
|
|
"""
|
|
# glyphs = ["", "", "", "", "", "", "", ""]
|
|
glyphs = [
|
|
".::term[1]:::.",
|
|
".::web.[2]:::.",
|
|
".::work[3]::.",
|
|
".::code[4]::.",
|
|
".::debu[5]::.",
|
|
".::note[6]:::.",
|
|
".::read[7]::.",
|
|
".::meet[8]::.",
|
|
".::musi[9]::.",
|
|
".::mail[0]:::."
|
|
]
|
|
try:
|
|
return glyphs[ws_number - 1]
|
|
except IndexError:
|
|
return "?"
|
|
|
|
|
|
def change_workspace_name(name):
|
|
"""
|
|
Zmiana nazwy
|
|
"""
|
|
try:
|
|
pass
|
|
except Exception:
|
|
raise
|
|
else:
|
|
pass
|
|
finally:
|
|
pass
|
|
|
|
|
|
def assign_generic_name(i3, e):
|
|
"""
|
|
i3 events
|
|
"""
|
|
try:
|
|
if not e.change == 'rename': # avoid looping
|
|
con = i3.get_tree().find_focused()
|
|
if not con.type == 'workspace':
|
|
if not e.change == 'new':
|
|
is_floating = con.type == 'floating_con' or con.floating and '_on' in con.floating
|
|
|
|
# Tiling mode or floating indication. Change symbols if necessary.
|
|
ws_old_name = con.workspace().name
|
|
ws_name = "%s: %s " % (
|
|
con.workspace().num, glyph(con.workspace().num))
|
|
|
|
i3.command('rename workspace "%s" to %s' %
|
|
(ws_old_name, ws_name))
|
|
else:
|
|
# In sway we may open a new window w/o moving focus; let's give the workspace a name anyway.
|
|
con = i3.get_tree().find_by_id(e.container.id)
|
|
ws_num = con.workspace().num
|
|
w_name = con.name if con.name else ''
|
|
|
|
if w_name and ws_num:
|
|
name = "%s: %s\u00a0%s" % (
|
|
ws_num, glyph(ws_num), w_name)
|
|
i3.command('rename workspace "%s" to %s' %
|
|
(ws_num, name))
|
|
|
|
else:
|
|
# Give the (empty) workspace a generic name: "number: glyph" (like "1: ")
|
|
ws_num = con.workspace().num
|
|
ws_new_name = "%s: %s" % (ws_num, glyph(ws_num))
|
|
|
|
i3.command('rename workspace to "{}"'.format(ws_new_name))
|
|
except:
|
|
pass
|
|
|
|
|
|
def main():
|
|
# Subscribe to events
|
|
i3.on(Event.WORKSPACE_FOCUS, assign_generic_name)
|
|
i3.on(Event.BINDING, assign_generic_name)
|
|
|
|
i3.main()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|