0
0
mirror of https://github.com/ihabunek/toot.git synced 2025-06-30 22:18:36 -04:00

Add tui --show-display-names option

fixes #501
This commit is contained in:
Ivan Habunek 2024-11-14 19:30:32 +01:00
parent 45e78fa286
commit 65f426fbcb
No known key found for this signature in database
GPG Key ID: 01DB3DD0D824504C
3 changed files with 21 additions and 8 deletions

View File

@ -45,6 +45,12 @@ COLOR_OPTIONS = ", ".join(TUI_COLORS.keys())
type=click.Choice(IMAGE_FORMAT_CHOICES),
help="Image output format; support varies across terminals. Default: block"
)
@click.option(
"--show-display-names",
is_flag=True,
default=False,
help="Show display names instead of account names in the list view."
)
@pass_context
def tui(
ctx: Context,
@ -54,7 +60,8 @@ def tui(
relative_datetimes: bool,
cache_size: Optional[int],
default_visibility: Optional[str],
image_format: Optional[str]
image_format: Optional[str],
show_display_names: bool,
):
"""Launches the toot terminal user interface"""
if colors is None:
@ -68,6 +75,7 @@ def tui(
default_visibility=default_visibility,
always_show_sensitive=always_show_sensitive,
image_format=image_format,
show_display_names=show_display_names,
)
tui = TUI.create(ctx.app, ctx.user, options)
tui.run()

View File

@ -40,6 +40,7 @@ class TuiOptions(NamedTuple):
cache_size: int
default_visibility: Optional[str]
image_format: Optional[str]
show_display_names: bool
class Header(urwid.WidgetWrap):
@ -97,12 +98,12 @@ class TUI(urwid.Frame):
screen: urwid.BaseScreen
@staticmethod
def create(app: App, user: User, args: TuiOptions):
def create(app: App, user: User, options: TuiOptions):
"""Factory method, sets up TUI and an event loop."""
screen = TuiScreen()
screen.set_terminal_properties(args.colors)
screen.set_terminal_properties(options.colors)
tui = TUI(app, user, screen, args)
tui = TUI(app, user, screen, options)
palette = PALETTE.copy()
overrides = settings.get_setting("tui.palette", dict, {})

View File

@ -87,7 +87,7 @@ class Timeline(urwid.Columns):
return urwid.ListBox(walker)
def build_list_item(self, status):
item = StatusListItem(status, self.tui.options.relative_datetimes)
item = StatusListItem(status, self.tui.options)
urwid.connect_signal(item, "click", lambda *args:
self.tui.show_context_menu(status))
return urwid.AttrMap(item, None, focus_map={
@ -593,14 +593,14 @@ class StatusDetails(urwid.Pile):
class StatusListItem(SelectableColumns):
def __init__(self, status, relative_datetimes):
def __init__(self, status, options):
edited_at = status.original.edited_at
# TODO: hacky implementation to avoid creating conflicts for existing
# pull requests, refactor when merged.
created_at = (
time_ago(status.created_at).ljust(3, " ")
if relative_datetimes
if options.relative_datetimes
else status.created_at.strftime("%Y-%m-%d %H:%M")
)
@ -610,6 +610,10 @@ class StatusListItem(SelectableColumns):
is_reblog = ("dim", "") if status.reblog else " "
is_reply = ("dim", "") if status.original.in_reply_to else " "
display_name = status.original.author.display_name
account_name = status.original.account
name = display_name if display_name and options.show_display_names else account_name
return super().__init__([
("pack", SelectableText(("status_list_timestamp", created_at), wrap="clip")),
("pack", urwid.Text(("status_list_timestamp", edited_flag))),
@ -618,7 +622,7 @@ class StatusListItem(SelectableColumns):
("pack", urwid.Text(" ")),
("pack", urwid.Text(reblogged)),
("pack", urwid.Text(" ")),
urwid.Text(("status_list_account", status.original.account), wrap="clip"),
urwid.Text(("status_list_account", name), wrap="clip"),
("pack", urwid.Text(is_reply)),
("pack", urwid.Text(is_reblog)),
("pack", urwid.Text(" ")),