app: add F1 self-deafen toggle and bold TX indicator

This commit is contained in:
Username
2026-02-24 13:02:38 +01:00
parent a6bdc02484
commit 89ebad6c15
2 changed files with 26 additions and 5 deletions

View File

@@ -11,9 +11,10 @@ tuimble --host mumble.example.com --user myname
| Key | Action |
|-----|--------|
| `q` | Quit |
| `F1` | Toggle self-deafen |
| `F4` | Push-to-talk (configurable) |
| `Enter` | Send message |
| `q` | Quit |
| `Ctrl+C` | Quit |
## Push-to-Talk Modes

View File

@@ -53,6 +53,7 @@ class StatusBar(Static):
ptt_active = reactive(False)
connected = reactive(False)
self_deaf = reactive(False)
server_info = reactive("")
def render(self) -> str:
@@ -67,17 +68,20 @@ class StatusBar(Static):
if self.ptt_active:
ptt_sym = "[#e0af68]\u25cf[/]"
ptt_full = f"{ptt_sym} TX"
ptt_full = f"{ptt_sym} [bold]TX[/bold]"
else:
ptt_sym = "[#565f89]\u25cb[/]"
ptt_full = f"{ptt_sym} idle"
deaf_sym = "[#f7768e]\u2298[/]" if self.self_deaf else ""
deaf_full = "[#f7768e]\u2298[/] deaf" if self.self_deaf else ""
if w < 40:
return f" {conn_sym} {ptt_sym}"
return f" {conn_sym} {deaf_sym}{ptt_sym}"
if w < 60:
return f" {conn_full} {ptt_full}"
return f" {conn_full} {deaf_full}{' ' if deaf_full else ''}{ptt_full}"
info = f" [dim]{self.server_info}[/]" if self.server_info else ""
return f" {conn_full} {ptt_full}{info}"
return f" {conn_full} {deaf_full}{' ' if deaf_full else ''}{ptt_full}{info}"
class ChannelTree(Static):
@@ -238,6 +242,7 @@ class TuimbleApp(App):
"""
BINDINGS = [
("f1", "toggle_deaf", "Deafen"),
("q", "quit", "Quit"),
("ctrl+c", "quit", "Quit"),
]
@@ -406,6 +411,21 @@ class TuimbleApp(App):
tree = self.query_one("#sidebar", ChannelTree)
tree.set_state(channels, users_by_channel)
# -- deafen --------------------------------------------------------------
def action_toggle_deaf(self) -> None:
"""Toggle self-deafen."""
deafened = not self._audio.deafened
self._audio.deafened = deafened
self._client.set_self_deaf(deafened)
status = self.query_one("#status", StatusBar)
status.self_deaf = deafened
chatlog = self.query_one("#chatlog", ChatLog)
if deafened:
chatlog.write("[#f7768e]\u2298 deafened[/]")
else:
chatlog.write("[#9ece6a]\u2713 undeafened[/]")
# -- PTT -----------------------------------------------------------------
def on_key(self, event: events.Key) -> None: