-
-
Notifications
You must be signed in to change notification settings - Fork 251
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
Comments
@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 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? |
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.
If the result is that per "physical" screen line, there is just one view, i.e.
content line, then this would indeed help.
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.
What are "hinting tabs"? Without knowing the actual effect, this might be a
workable solution. I would anyway rely on one view/UI frame at a time, so the
hiding functionality sounds reasonable. Justlike the tabs on Android where you
swipe left/right.
Thanks!
|
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:
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:
This may be too detailed, but in general, a message element can currently look a little like this:
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. |
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 |
< |
```
Yes, this is cumbersome to read, indeed.
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.
Yes.
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'?
Yes, I would say so. Note though that horizontal splits aren't a problem, as
the screen reader operates per line (as a simplification).
However, if we would have a horizontal split, the screen reader would
obviously only see changes at the current cursor position, missing out on
updates in the other split, unless explictly asked for.
- 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
I assume it is the example that you provided below?
- 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?
There is a mode to navigate the screen, so if up/down selects messages, I
would expect the cursor always to be positioned at the first charcter of the
message and then navigate the screeen to read the rest.
*personally* I do prefer being able to navigate messages line-wise, as in
Vim/w3m, but that's not an a11y requirement. The screen reader provides
functionality to emulate this.
```
[stream symbol] stream-name [right triangle] topic-name [horizontal line]
```
What would be a stream symbol?
```
[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]
```
When reading a bunch of messages, it is often most important to read the name
of the sender and the message. Is this configurable? If not, I would probably
propose:
```
name: message | meta info
```
(regarding the order, not as a template for spacing, formatting or
punctuation)
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?
Yes, they probably are. My screen reader actually interprets some unicode
symbols, but a text equivalent is probably more portable.
Re your original point about screen width, were you meaning that your screen is narrow? I didn't quite understand that.
A braille display has commonly 40 or 80 characters and a single line. I just
wanted to make you aware that I see a line at a time, so am lacking context.
The amount of characters on a braille display don't really matter.
|
Apologies for not getting back sooner, let me see if I can address your points:
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. |
- 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
Yes, though it would be ok to have a horizontal split. At least pure
command-line screen readers have commands to remember screen positions and to
jump the the top or bottom. If it is visually appealing, two windows on top of
one another aren't problematic. Compare Irssi or Mutt or any other
command-line application with a status bar.
- regarding line-characters, no vertical/corner lines
Yes, I would say so.
- the message example is as I posted
Fine. The message format looks akin to the one of Irssi.
- 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!
Any is fine. As @, #, etc. are spoken aloud and displayed on a braille display
without issues, they could be left as-is.
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.
Agreed. Thanks a lot for taking the time to implement this!
|
Thanks for clarifying the situation, it looks like we have a plan on how to take this forward 👍 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. |
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.
The text was updated successfully, but these errors were encountered: