The Accessibility Shell
Find a file
Nolan Darilek e489b55f0f
All checks were successful
Test / test (push) Successful in 1m27s
chore: No need for fuse3 in Nix flake
2025-11-29 19:01:05 -06:00
.forgejo/workflows chore: Upgrade to actions/cache@v5 2025-11-29 13:08:45 -06:00
src doc: Update FUSE README.md with details on references and new examples section 2025-11-29 15:43:36 -06:00
.envrc chore: Add additional build and development environment setup 2025-11-13 15:33:20 -05:00
.gitignore feat: Add FUSE filesystem view of accessibility tree 2025-11-29 13:27:53 -06:00
.pre-commit-config.yaml chore: Move lint configuration into Cargo.toml 2025-11-26 14:30:41 -06:00
Cargo.lock feat: Add FUSE filesystem view of accessibility tree 2025-11-29 13:27:53 -06:00
Cargo.toml chore: Add license and README 2025-11-29 14:05:51 -06:00
flake.lock chore: Update Nix environment 2025-11-29 16:31:14 -06:00
flake.nix chore: No need for fuse3 in Nix flake 2025-11-29 19:01:05 -06:00
LICENSE chore: Add license and README 2025-11-29 14:05:51 -06:00
README.md chore: Add license and README 2025-11-29 14:05:51 -06:00

acsh

An interactive shell for exploring the AT-SPI2 accessibility tree on Linux desktops.

Repository: https://dev.thewordnerd.info/nolan/acsh

Features

  • Browse applications and their accessible elements with familiar shell commands (ls, cd, cat)
  • Watch accessibility events in real-time
  • Search the accessibility tree via name, role, or state
  • Cat individual accessible items for more details
  • Mount the accessibility tree as a FUSE filesystem

Installation

With a Rust toolchain:

cargo install --git https://dev.thewordnerd.info/nolan/acsh

To upgrade, re-run with --force.

Or with Nix:

nix profile install git+https://dev.thewordnerd.info/nolan/acsh

To upgrade:

nix profile upgrade acsh --refresh

Sample Session

$ acsh
acsh REPL - type 'help' or '--help' for commands
/> ls
+-------+---------------------------+--------------------+-------------+
| Index | Reference                 | Name               | Role        |
+-------+---------------------------+--------------------+-------------+
| 0     | org-gnome-terminal-1.10   | org.gnome.Terminal | application |
+-------+---------------------------+--------------------+-------------+
| 1     | firefox-1.20              | Firefox            | application |
+-------+---------------------------+--------------------+-------------+
| ...   | ...                       | ...                | ...         |
+-------+---------------------------+--------------------+-------------+
/> cd org-gnome-terminal-1.10
/org-gnome-terminal-1.10> ls
+-------+-------------+----------+-------+
| Index | Reference   | Name     | Role  |
+-------+-------------+----------+-------+
| 0     | terminal-78 | Terminal | frame |
+-------+-------------+----------+-------+
/org-gnome-terminal-1.10> watch terminal-78
[terminal-78] TextCaretMoved: position=1823
[terminal-78] TextChanged: operation="Insert", text="ls"
[terminal-78] BoundsChanged
^C
/org-gnome-terminal-1.10> exit

License

MIT