Skip to content

[Feature request] Accessibility improvement! #357

@DP-Hridayan

Description

@DP-Hridayan

Is your feature request related to a problem? Please describe.

We rely on screen readers (such as Google TalkBack or Jieshuo/Commentary Screen Reader) to interact with our devices. While Jetpack Compose offers powerful accessibility semantics, the current implementation in aShell You seems to miss these crucial properties, rendering key features unusable.
Specific Issues Requiring Urgent Attention:
Main Interface & Navigation: The main layout headers and titles are not identified as headings. Navigation between menus is disjointed, and the focus order often becomes unpredictable.
Unlabeled Composables: Crucial interactive elements—specifically the "Send/Execute" button, icon buttons in the top bar, and menu items—are announced simply as "Unlabeled" or "Button."
Input Fields: The TextFields (for command entry) lack proper semantic labels, making it difficult to know what information is expected.
Bookmarks & Output Screen:
Bookmarks: The lazy lists used for bookmarks do not expose their items correctly to the accessibility tree.
Terminal Output: New text appearing in the console output is not announced automatically. We have to manually explore the screen to check if a command has finished or returned a result.

Describe the solution you'd like

Suggested Fixes (Jetpack Compose Implementation):
​Since you are using Jetpack Compose, please consider applying the following Modifier.semantics:
​Content Descriptions: Ensure all Icon and IconButton composables have a valid contentDescription parameter set (e.g., contentDescription = "Run Command"), rather than null.
​Headings: For screen titles and section headers, please apply the heading semantic:
Modifier.semantics { heading() }
This allows TalkBack users to jump quickly between sections.
​Live Regions (For Terminal Output): To make the console output announce updates automatically without stealing focus, please apply:
Modifier.semantics { liveRegion = LiveRegionMode.Polite } to the output container.
​Click Labels: For custom clickable elements, use:
Modifier.clickable(onClickLabel = "Open Settings") { ... }
​I strongly urge you to prioritize these fixes in the next update. Accessibility is a core part of the Android ecosystem, and fixing these semantic properties in Compose is often a quick process that makes a massive difference.
​I am available to beta test any future builds to verify these improvements.
​Best regards,

Describe alternatives you've considered

No response

Additional context

No response

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions