Improve socket handling for -x spawned fenrir instances.
This commit is contained in:
@@ -8,7 +8,7 @@ This software is licensed under the LGPL v3.
|
||||
|
||||
## Key Features
|
||||
|
||||
- **Multiple Interface Support**: Works in Linux TTY, and terminal emulators
|
||||
- **Linux Console Support**: Works as a Linux TTY screen reader, with optional X11 terminal mode
|
||||
- **Flexible Driver System**: Modular architecture with multiple drivers for speech, sound, input, and screen
|
||||
- **Review Mode**: Navigate and review screen content without moving the edit cursor
|
||||
- **Table Navigation**: Advanced table mode with column headers, cell-by-cell navigation, and boundary feedback
|
||||
@@ -29,10 +29,8 @@ Fenrir is a Linux screen reader. Linux is the only officially supported platform
|
||||
|
||||
**Other platforms (macOS, BSD, Windows):** Pull requests adding support for other operating systems may be accepted provided they do not break Linux functionality. However, no special care will be taken to preserve functionality on secondary platforms. If changes to Fenrir break support on a non-Linux OS, it is the responsibility of third-party contributors to submit fixes.
|
||||
|
||||
- Linux (ptyDriver, vcsaDriver, evdevDriver) - Full support
|
||||
- macOS (ptyDriver) - Community-maintained, no guarantees
|
||||
- BSD (ptyDriver) - Community-maintained, no guarantees
|
||||
- Windows (ptyDriver) - Community-maintained, no guarantees
|
||||
- Linux TTY (`vcsaDriver`, `evdevDriver`) - Full support
|
||||
- X11 terminal emulators (`-x`, `ptyDriver`, `x11Driver`) - Supported
|
||||
|
||||
|
||||
## Core Requirements
|
||||
@@ -52,11 +50,8 @@ Fenrir is a Linux screen reader. Linux is the only officially supported platform
|
||||
- ReadWrite permission:
|
||||
- /dev/input
|
||||
- /dev/uinput
|
||||
2. **ptyDriver** - Terminal emulation input driver (cross-platform)
|
||||
- python-pyte
|
||||
3. **atspiDriver** - AT-SPI input driver for desktop environments
|
||||
- python-pyatspi2
|
||||
|
||||
2. **x11Driver** - X11 terminal-scoped input driver for `fenrir -x`
|
||||
- python-xlib
|
||||
### Remote Drivers:
|
||||
1. **unixDriver** - Unix socket remote control (default)
|
||||
- socat (for command-line interaction)
|
||||
@@ -73,7 +68,7 @@ Fenrir is a Linux screen reader. Linux is the only officially supported platform
|
||||
- /dev/tty[1-64]
|
||||
- /dev/vcsa[1-64]
|
||||
- read logind DBUS
|
||||
2. **ptyDriver** - Terminal emulation driver (cross-platform)
|
||||
2. **ptyDriver** - Terminal emulation screen driver for `fenrir -x`
|
||||
- python-pyte
|
||||
|
||||
|
||||
@@ -134,8 +129,8 @@ Settings are located in:
|
||||
By default Fenrir uses:
|
||||
- **Sound driver**: genericDriver (via sox)
|
||||
- **Speech driver**: speechdDriver (via speech-dispatcher)
|
||||
- **Input driver**: evdevDriver (Linux) or ptyDriver (other platforms)
|
||||
- **Screen driver**: vcsaDriver (Linux TTY) or ptyDriver (terminal emulation)
|
||||
- **Input driver**: evdevDriver for Linux TTY, x11Driver for `fenrir -x`
|
||||
- **Screen driver**: vcsaDriver for Linux TTY, ptyDriver for `fenrir -x`
|
||||
|
||||
## Audio Configuration
|
||||
|
||||
@@ -266,7 +261,8 @@ enable_command_remote=True # allow command execution
|
||||
### Remote Drivers
|
||||
|
||||
1. **unixDriver** (recommended): Uses Unix domain sockets
|
||||
- Socket location: `/tmp/fenrirscreenreader-deamon.sock` (TTY mode) or `/tmp/fenrirscreenreader-<pid>.sock`
|
||||
- Socket location: `/tmp/fenrirscreenreader-deamon.sock` for the standard control socket
|
||||
- `fenrir -x` instances also create private sockets: `/tmp/fenrirscreenreader-<pid>.sock`
|
||||
- More secure, local-only access
|
||||
- Works with `socat`
|
||||
|
||||
@@ -279,6 +275,19 @@ enable_command_remote=True # allow command execution
|
||||
|
||||
The `socat` command provides the easiest way to send commands to Fenrir:
|
||||
|
||||
#### Instance Discovery
|
||||
```bash
|
||||
# List registered Fenrir instances and their socket paths
|
||||
echo "ls" | socat - UNIX-CLIENT:/tmp/fenrirscreenreader-deamon.sock
|
||||
```
|
||||
|
||||
In X terminal mode (`fenrir -x`), multiple Fenrir instances can run at the same
|
||||
time. Each instance has a private socket, and one instance may also own the
|
||||
standard control socket. Use `ls` or `command ls` on the standard socket to find
|
||||
the private socket for a specific instance. Untargeted commands sent through a
|
||||
shared or broadcast path are claimed by one instance so duplicate instances do
|
||||
not all perform the same action.
|
||||
|
||||
#### Basic Speech Control
|
||||
```bash
|
||||
# Interrupt current speech
|
||||
@@ -406,6 +415,9 @@ setting <action> [parameters]
|
||||
**Application Commands:**
|
||||
- `command quitapplication` - Quit Fenrir
|
||||
|
||||
**Instance Commands:**
|
||||
- `ls` / `list` / `command ls` / `command list` - List registered Fenrir instances and their socket paths
|
||||
|
||||
#### Available Settings
|
||||
|
||||
**Settings Commands:**
|
||||
@@ -711,8 +723,6 @@ fenrir [OPTIONS]
|
||||
- `-o, --options SECTION#SETTING=VALUE;..` - Override settings file options
|
||||
- `-d, --debug` - Enable debug mode
|
||||
- `-p, --print` - Print debug messages to screen
|
||||
- `-e, --emulated-pty` - Use PTY emulation with escape sequences for input (enables desktop/X/Wayland usage)
|
||||
- `-E, --emulated-evdev` - Use PTY emulation with evdev for input (single instance)
|
||||
- `-x, --x11` - Use PTY emulation with X11 keyboard input scoped to the terminal window
|
||||
- `--x11-window-id WINDOWID` - X11 window id to use for `--x11` terminal mode
|
||||
- `-F, --force-all-screens` - Force Fenrir to respond on all screens, ignoring ignore_screen setting
|
||||
@@ -723,9 +733,6 @@ fenrir [OPTIONS]
|
||||
# Run in foreground with debug output
|
||||
sudo fenrir -f -d
|
||||
|
||||
# Use PTY emulation for desktop use
|
||||
sudo fenrir -e
|
||||
|
||||
# Use PTY emulation with X11 terminal-scoped keybindings
|
||||
fenrir -x
|
||||
|
||||
@@ -753,6 +760,8 @@ X11 terminal mode uses the normal keyboard layout files, including desktop and l
|
||||
|
||||
This mode requires `python-xlib`.
|
||||
|
||||
For users who want a dedicated PTY/terminal screen reader instead of Fenrir's Linux console focus, see TDSR: https://github.com/tspivey/tdsr
|
||||
|
||||
## Localization
|
||||
Translation files are located in the `locale/` directory. To install translations:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user