Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Provide screen-reader-friendly Vertical Layout #1474

Open
humenda opened this issue Feb 22, 2024 · 7 comments
Open

Provide screen-reader-friendly Vertical Layout #1474

humenda opened this issue Feb 22, 2024 · 7 comments
Labels
area: terminal: layout Options for the UI layout (autohide, scaling, full-screen) area: UI General user interface update enhancement New feature or request help wanted This issue should be clear enough to work on

Comments

@humenda
Copy link

humenda commented Feb 22, 2024

Zulip-terminal uses a "TUI", i.e. vertical splits of the terminal, to provide an
intuitive user experience.
Unfortunately, screen readers read, on the command line, the screen from left to
right, hence mixing all vertical splits into a single one, when navigating the
screen line by line. This renders the UI unusable.

For screen readers, a vertical split works much better (compare irssi, mutt,
...).
If the different windows could be displayed from top to bottom, it would make
this application accessible.

Screens are usually wider these days, so this would likely be an optional
feature, but I would appreciate if this could be considered, as this would allow
me to use Zulip.

@neiljp neiljp added enhancement New feature or request area: UI General user interface update labels Feb 22, 2024
@neiljp
Copy link
Collaborator

neiljp commented Feb 22, 2024

@humenda Thanks for reporting this!

My initial query on how to resolve this was how the content in the sidebars might be shown, if it would be above/below the other content, not in sidebars. Aspects such as the list of streams, topics and users naturally fall into lists after all :)

There is currently an autohide mode that mainly shows the central message list. Upon moving left or right, the left or right columns are temporarily overlaid on top of the message list until an element is selected, or upon moving back into the central message list column. Currently this does both overlay the content over the message list, and show small 'tabs' in the main view to hint that the left/right columns are present.

Therefore, one possible solution might be to have a less TUI-heavy autohide mode, where moving left/right switches into showing only the content of the left/right side bars, and the hinting 'tabs' in the message list could also be hidden.

Would that design work?

@humenda
Copy link
Author

humenda commented Feb 23, 2024 via email

@neiljp
Copy link
Collaborator

neiljp commented Feb 23, 2024

A left hinting tab looks a little like like below, with message content to the right of it, which is why I thought to avoid it:

< |
S |
T |
R |
E |
A |
M |
S |
< |

The design I described above, without tabs or the left/right columns, would essentially make each of the main columns 'full screen' and have no need for vertical line symbols.

Other design elements off the top of my head which would be useful to know if they would impact screenreader usage:

  • we have 'popup' windows, which are overlaid over the other UI parts (eg. the message list); need to be 'fullscreen'?
  • there are various horizontal lines to separate sections and indicate titles
  • message sender/date-time/starring is shown in a line above the message content
  • message content is offset by a vertical bar, with a possible 'EDITED' to the left
  • a full message is selected at once, over multiple lines, and up/down motion selects previous/next messages; I'm not sure how a screenreader would pick up on the range of lines being considered as one element?

This may be too detailed, but in general, a message element can currently look a little like this:

 [stream symbol] stream-name [right triangle] topic-name [horizontal line]
[sender-status symbol] sender-name      [message-sent date/time] [optional star]
[possible EDITED] [block] [first line of message content]
                  [block] [second lines of message content]

Footlinks and reactions are shown below a message, though the former are configurable, and the latter are already in text form which I suspect is useful - compared to emoji?

Re your original point about screen width, were you meaning that your screen is narrow? I didn't quite understand that.

@humenda
Copy link
Author

humenda commented Feb 25, 2024 via email

@neiljp
Copy link
Collaborator

neiljp commented Apr 23, 2024

Apologies for not getting back sooner, let me see if I can address your points:

  • the best design would seem to be to switch between various full-screen windows: the left panel (streams/topics/views), messages panel (center), right panel (users), and then overlay popups as full-screen too
  • regarding line-characters, no vertical/corner lines
  • the message example is as I posted
  • stream symbols are currently # (public stream), P (private stream) and another for web-public (no account required, though ZT doesn't support browsing like this); symbols are just mapped in a source file however, so they could be customized, and we've discussed 'theming' them for those with or without emoji - or with very basic terminals!
  • the current message layout is based on the web design; it varies but I often see long Zulip messages, compared to the short ones on IRC, which I suspect is why the meta info is used as a header
  • there are also 'conversation' headers in interleaved views like all-messages, or all direct messages, or a stream view, to describe each conversation (topics, recipients); you need not see those depending on the view you look at
  • reactions, or emoji in messages, are shown as eg. :smile: for 😄

For implementation, I suspect we could try the full-screen aspects first, to see if that makes it testable for your system to read?

The messages seem like the other tricky aspect to consider after that.

@humenda
Copy link
Author

humenda commented Apr 23, 2024 via email

@neiljp neiljp added area: terminal: layout Options for the UI layout (autohide, scaling, full-screen) help wanted This issue should be clear enough to work on labels Apr 26, 2024
@neiljp
Copy link
Collaborator

neiljp commented Apr 26, 2024

Thanks for clarifying the situation, it looks like we have a plan on how to take this forward 👍
I've labelled this as help-wanted, since the provisional plan could help someone get started.

This looks a little like other issues I've been browsing, such as #1170 (collapse sidebars)

There was also various related work to eg. scale the UI with terminal width, so I've labelled these with a new area to help anyone working on this look at similar ideas.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area: terminal: layout Options for the UI layout (autohide, scaling, full-screen) area: UI General user interface update enhancement New feature or request help wanted This issue should be clear enough to work on
Projects
None yet
Development

No branches or pull requests

2 participants