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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
"""
Profanity plugin to display buffer activity in tmux pane name.
Requires something like:
`F=~/.local/share/profanity/micmot-fifo; mkfifo $F; tail -f $F &`
Also requires ":set-option allow-rename on" in the tmux buffer.
"""
import os
import re
from sys import platform
from typing import List
# https://profanity-im.github.io/plugins/0.5.1/python/html/index.html
import prof # type: ignore
TMUX_FIFO = os.environ.get('PROFANITY_TMUX_FIFO',
os.environ['HOME'] + '/.local/share/profanity/micmot-fifo')
PANE_NAME = os.environ.get('PROFANITY_TMUX_PANE', 'profanity')
PANE_MAXLEN = 30
unread: List[str] = []
def set_pane_name(name):
with open(TMUX_FIFO,'a') as f:
f.write("\x1bk%s\x1b\\" % name)
def highlight_pane():
with open(TMUX_FIFO,'a') as f:
f.write("\x07")
def set_pane_title(name):
with open(TMUX_FIFO, 'a') as f:
f.write("\x1b]2;%s\x1b\\" % name)
def update_pane_name():
global unread
if len(unread) == 0:
set_pane_name(PANE_NAME)
else:
tmux = ""
for part in unread:
if tmux == "":
tmux = part
else:
tmux += "," + part
set_pane_name("[{}]".format(
re.sub(r'[^.,@#0-9A-Za-z-]+', '', tmux[:PANE_MAXLEN])))
def post_message_display(barejid, resource, message):
global unread
if barejid != prof.get_current_recipient():
if not barejid in unread:
unread.append(barejid)
update_pane_name()
highlight_pane()
def prof_on_chat_win_focus(barejid):
global unread
if barejid in unread:
unread.remove(barejid)
update_pane_name()
def prof_post_chat_message_display(barejid, resource, message):
post_message_display(barejid, resource, message)
return message
def prof_post_room_message_display(barejid, nick, message):
post_message_display(barejid, resource, message)
return message
def prof_post_priv_message_display(barejid, nick, message):
post_message_display(barejid, resource, message)
return message
def prof_init(version, status, account_name, fulljid):
prof.cons_show("Started micmot." + PANE_NAME + TMUX_FIFO)
set_pane_name(PANE_NAME)
set_pane_title(PANE_NAME)
# vim: ft=python
|