515 lines
11 KiB
Groff
515 lines
11 KiB
Groff
.TH FENRIR 1 "2025" "Fenrir Screen Reader" "User Commands"
|
|
.SH NAME
|
|
fenrir \- A modern, modular console screen reader for Linux
|
|
|
|
.SH SYNOPSIS
|
|
.B fenrir
|
|
.RB [ \-h ]
|
|
.RB [ \-v ]
|
|
.RB [ \-f ]
|
|
.RB [ \-s
|
|
.IR SETTING-FILE ]
|
|
.RB [ \-o
|
|
.IR SECTION#SETTING=VALUE;.. ]
|
|
.RB [ \-d ]
|
|
.RB [ \-p ]
|
|
.RB [ \-e ]
|
|
.RB [ \-E ]
|
|
.RB [ \-F ]
|
|
|
|
.SH DESCRIPTION
|
|
Fenrir is a modern, modular, flexible and fast console screen reader written in Python 3.
|
|
It provides spoken feedback for Linux console applications and supports multiple interface types including TTY, terminal emulators, and desktop environments.
|
|
|
|
Fenrir features a modular driver architecture supporting multiple speech synthesizers, sound systems, input methods, and screen reading techniques. It includes advanced features like review mode, multiple clipboards, spell checking, bookmarks, and configurable key bindings.
|
|
|
|
.SH OPTIONS
|
|
.TP
|
|
.BR \-h ", " \-\-help
|
|
Show help message and exit.
|
|
|
|
.TP
|
|
.BR \-v ", " \-\-version
|
|
Show version information and exit.
|
|
|
|
.TP
|
|
.BR \-f ", " \-\-foreground
|
|
Run Fenrir in the foreground instead of as a daemon. Useful for debugging and testing.
|
|
|
|
.TP
|
|
.BR \-s ", " \-\-setting " " \fISETTING-FILE\fR
|
|
Path to a custom settings file. Default is /etc/fenrir/settings/settings.conf.
|
|
|
|
.TP
|
|
.BR \-o ", " \-\-options " " \fISECTION#SETTING=VALUE;..\fR
|
|
Override settings file options. Format: SECTION#SETTING=VALUE;... (case sensitive).
|
|
Multiple settings can be separated by semicolons.
|
|
|
|
.TP
|
|
.BR \-d ", " \-\-debug
|
|
Enable debug mode. Debug information will be logged to /var/log/fenrir.log.
|
|
|
|
.TP
|
|
.BR \-p ", " \-\-print
|
|
Print debug messages to screen in addition to logging them.
|
|
|
|
.TP
|
|
.BR \-e ", " \-\-emulated-pty
|
|
Use PTY emulation with escape sequences for input. This enables usage in desktop/X11/Wayland environments and terminal emulators.
|
|
|
|
.TP
|
|
.BR \-E ", " \-\-emulated-evdev
|
|
Use PTY emulation with evdev for input (single instance mode).
|
|
|
|
.TP
|
|
.BR \-F ", " \-\-force-all-screens
|
|
Force Fenrir to respond on all screens, ignoring the ignoreScreen setting. This temporarily overrides screen filtering for the current session.
|
|
|
|
.SH KEY CONCEPTS
|
|
|
|
.SS Fenrir Key
|
|
The Fenrir Key is used to invoke screen reader commands. By default, the following keys act as Fenrir Keys:
|
|
.IP \[bu] 2
|
|
Insert
|
|
.IP \[bu] 2
|
|
Keypad Insert
|
|
.IP \[bu] 2
|
|
Meta (Super/Windows key)
|
|
|
|
.SS Keyboard Layouts
|
|
Fenrir supports two main keyboard layouts:
|
|
.IP \[bu] 2
|
|
.B Desktop Layout
|
|
\- Uses numeric keypad for navigation (recommended for desktop users)
|
|
.IP \[bu] 2
|
|
.B Laptop Layout
|
|
\- Alternative bindings for keyboards without numeric keypad
|
|
|
|
.SS Review Mode
|
|
Fenrir provides a virtual cursor that allows navigation around the screen without changing the text cursor position. This is essential for reviewing content without disrupting your work.
|
|
|
|
.SH BASIC COMMANDS
|
|
|
|
.SS Essential Navigation
|
|
.TP
|
|
.B Ctrl
|
|
Stop speech (shut up)
|
|
|
|
.TP
|
|
.B Fenrir + H
|
|
Toggle tutorial mode (interactive help system)
|
|
|
|
.TP
|
|
.B Fenrir + Q
|
|
Quit Fenrir
|
|
|
|
.TP
|
|
.B Fenrir + Keypad 5
|
|
Read current screen
|
|
|
|
.TP
|
|
.B Keypad 8
|
|
Read current line
|
|
|
|
.TP
|
|
.B Keypad 5
|
|
Read current word
|
|
|
|
.TP
|
|
.B Keypad 2
|
|
Read current character
|
|
|
|
.TP
|
|
.B Fenrir + T
|
|
Announce current time
|
|
|
|
.TP
|
|
.B Fenrir + S
|
|
Spell check current word
|
|
|
|
.SS Review Commands (Desktop Layout)
|
|
.TP
|
|
.B Keypad 7
|
|
Review previous line
|
|
|
|
.TP
|
|
.B Keypad 9
|
|
Review next line
|
|
|
|
.TP
|
|
.B Keypad 4
|
|
Review previous word
|
|
|
|
.TP
|
|
.B Keypad 6
|
|
Review next word
|
|
|
|
.TP
|
|
.B Keypad 1
|
|
Review previous character
|
|
|
|
.TP
|
|
.B Keypad 3
|
|
Review next character
|
|
|
|
.TP
|
|
.B Fenrir + Keypad dot
|
|
Exit review mode
|
|
|
|
.SS Clipboard Operations
|
|
.TP
|
|
.B Fenrir + C
|
|
Copy marked text to clipboard
|
|
|
|
.TP
|
|
.B Fenrir + V
|
|
Paste clipboard contents
|
|
|
|
.TP
|
|
.B Fenrir + Shift + C
|
|
Read current clipboard
|
|
|
|
.TP
|
|
.B Fenrir + X
|
|
Set mark (for text selection)
|
|
|
|
.TP
|
|
.B Fenrir + Shift + X
|
|
Announce marked text
|
|
|
|
.SH CONFIGURATION
|
|
|
|
.SS Settings File
|
|
The main configuration file is located at:
|
|
.IP \[bu] 2
|
|
.B /etc/fenrir/settings/settings.conf
|
|
(system-wide installation)
|
|
.IP \[bu] 2
|
|
.B config/settings/settings.conf
|
|
(development/git version)
|
|
|
|
.SS Key Sections
|
|
.TP
|
|
.B [speech]
|
|
Configure speech synthesis (rate, pitch, volume, driver)
|
|
|
|
.TP
|
|
.B [sound]
|
|
Configure sound output and sound icons
|
|
|
|
.TP
|
|
.B [keyboard]
|
|
Configure input driver and keyboard layout
|
|
|
|
.TP
|
|
.B [screen]
|
|
Configure screen reading driver and ignored screens
|
|
|
|
.TP
|
|
.B [general]
|
|
General settings like punctuation, clipboard, and debug levels
|
|
|
|
.SS Driver Configuration
|
|
Fenrir uses a modular driver system:
|
|
|
|
.TP
|
|
.B Speech Drivers:
|
|
.IP \[bu] 4
|
|
speechdDriver - Speech-dispatcher (recommended)
|
|
.IP \[bu] 4
|
|
genericDriver - Command-line TTS (espeak, etc.)
|
|
.IP \[bu] 4
|
|
debugDriver - Debug/testing
|
|
|
|
.TP
|
|
.B Sound Drivers:
|
|
.IP \[bu] 4
|
|
genericDriver - Sox-based (default)
|
|
.IP \[bu] 4
|
|
gstreamerDriver - GStreamer-based
|
|
.IP \[bu] 4
|
|
debugDriver - Debug/testing
|
|
|
|
.TP
|
|
.B Input Drivers:
|
|
.IP \[bu] 4
|
|
evdevDriver - Linux evdev (recommended for Linux)
|
|
.IP \[bu] 4
|
|
ptyDriver - Terminal emulation (cross-platform)
|
|
.IP \[bu] 4
|
|
atspiDriver - AT-SPI for desktop environments
|
|
|
|
.TP
|
|
.B Screen Drivers:
|
|
.IP \[bu] 4
|
|
vcsaDriver - Linux VCSA devices (TTY)
|
|
.IP \[bu] 4
|
|
ptyDriver - Terminal emulation
|
|
|
|
.TP
|
|
.B Remote Drivers:
|
|
.IP \[bu] 4
|
|
unixDriver - Unix socket remote control (recommended)
|
|
.IP \[bu] 4
|
|
tcpDriver - TCP socket remote control (localhost only)
|
|
|
|
.SH EXAMPLES
|
|
|
|
.TP
|
|
.B fenrir
|
|
Start Fenrir as a daemon with default settings.
|
|
|
|
.TP
|
|
.B fenrir -f -d
|
|
Run Fenrir in foreground with debug output.
|
|
|
|
.TP
|
|
.B fenrir -e
|
|
Run Fenrir with PTY emulation for desktop/terminal use.
|
|
|
|
.TP
|
|
.B fenrir -o "speech#rate=0.8;sound#volume=0.5"
|
|
Override speech rate and sound volume settings.
|
|
|
|
.TP
|
|
.B fenrir -F
|
|
Force Fenrir to work on all screens, ignoring ignoreScreen settings.
|
|
|
|
.TP
|
|
.B fenrir -s /home/user/my-fenrir.conf
|
|
Use a custom configuration file.
|
|
|
|
.SH REMOTE CONTROL
|
|
|
|
Fenrir includes a powerful remote control system for automation and integration with external applications.
|
|
|
|
.SS Configuration
|
|
Enable remote control in /etc/fenrir/settings/settings.conf:
|
|
|
|
.EX
|
|
[remote]
|
|
enable=True
|
|
driver=unixDriver
|
|
enableSettingsRemote=True
|
|
enableCommandRemote=True
|
|
.EE
|
|
|
|
.SS Using socat with Unix Sockets
|
|
|
|
.TP
|
|
.B Basic Speech Control:
|
|
.EX
|
|
# Interrupt current speech
|
|
echo "command interrupt" | socat - UNIX-CLIENT:/tmp/fenrirscreenreader-deamon.sock
|
|
|
|
# Speak custom text
|
|
echo "command say Hello, this is a test" | socat - UNIX-CLIENT:/tmp/fenrirscreenreader-deamon.sock
|
|
|
|
# Temporarily disable speech
|
|
echo "command tempdisablespeech" | socat - UNIX-CLIENT:/tmp/fenrirscreenreader-deamon.sock
|
|
.EE
|
|
|
|
.TP
|
|
.B Settings Control:
|
|
.EX
|
|
# Enable highlight tracking
|
|
echo "setting set focus#highlight=True" | socat - UNIX-CLIENT:/tmp/fenrirscreenreader-deamon.sock
|
|
|
|
# Change speech rate
|
|
echo "setting set speech#rate=0.8" | socat - UNIX-CLIENT:/tmp/fenrirscreenreader-deamon.sock
|
|
|
|
# Change punctuation level (none/some/most/all)
|
|
echo "setting set general#punctuationLevel=all" | socat - UNIX-CLIENT:/tmp/fenrirscreenreader-deamon.sock
|
|
|
|
# Voice and TTS control
|
|
echo "setting set speech#voice=en-us+f3" | socat - UNIX-CLIENT:/tmp/fenrirscreenreader-deamon.sock
|
|
|
|
# Multiple settings at once
|
|
echo "setting set speech#rate=0.8;sound#volume=0.7;general#punctuationLevel=most" | socat - UNIX-CLIENT:/tmp/fenrirscreenreader-deamon.sock
|
|
|
|
# Reset all settings
|
|
echo "setting reset" | socat - UNIX-CLIENT:/tmp/fenrirscreenreader-deamon.sock
|
|
.EE
|
|
|
|
.TP
|
|
.B Clipboard Operations:
|
|
.EX
|
|
# Add text to clipboard
|
|
echo "command clipboard Text to copy" | socat - UNIX-CLIENT:/tmp/fenrirscreenreader-deamon.sock
|
|
|
|
# Export clipboard to file
|
|
echo "command exportclipboard" | socat - UNIX-CLIENT:/tmp/fenrirscreenreader-deamon.sock
|
|
.EE
|
|
|
|
.SS Command Reference
|
|
|
|
.TP
|
|
.B Speech Commands:
|
|
.IP \[bu] 2
|
|
command say <text> - Speak the specified text
|
|
.IP \[bu] 2
|
|
command interrupt - Stop current speech
|
|
.IP \[bu] 2
|
|
command tempdisablespeech - Disable speech until next key press
|
|
|
|
.TP
|
|
.B Settings Commands:
|
|
.IP \[bu] 2
|
|
setting set <section>#<key>=<value> - Set configuration value
|
|
.IP \[bu] 2
|
|
setting reset - Reset all settings to defaults
|
|
.IP \[bu] 2
|
|
setting save [path] - Save current settings
|
|
|
|
.TP
|
|
.B Other Commands:
|
|
.IP \[bu] 2
|
|
command clipboard <text> - Add text to clipboard
|
|
.IP \[bu] 2
|
|
command window <x1> <y1> <x2> <y2> - Define window area
|
|
.IP \[bu] 2
|
|
command resetwindow - Reset to full screen
|
|
.IP \[bu] 2
|
|
command vmenu <menu_path> - Set virtual menu
|
|
.IP \[bu] 2
|
|
command resetvmenu - Reset virtual menu
|
|
.IP \[bu] 2
|
|
command quitapplication - Quit Fenrir
|
|
|
|
.SS Important Controllable Settings
|
|
|
|
.TP
|
|
.B Speech Control:
|
|
.IP \[bu] 2
|
|
general#punctuationLevel=none/some/most/all - Punctuation verbosity
|
|
.IP \[bu] 2
|
|
speech#rate=0.1-1.0 - Speech rate
|
|
.IP \[bu] 2
|
|
speech#pitch=0.1-1.0 - Speech pitch
|
|
.IP \[bu] 2
|
|
speech#volume=0.1-1.0 - Speech volume
|
|
.IP \[bu] 2
|
|
speech#voice=voice_name - Voice selection
|
|
.IP \[bu] 2
|
|
speech#module=module_name - TTS module
|
|
|
|
.TP
|
|
.B Screen Control:
|
|
.IP \[bu] 2
|
|
screen#ignoreScreen=1,2,3 - TTY screens to ignore
|
|
.IP \[bu] 2
|
|
focus#highlight=True/False - Follow text highlighting
|
|
|
|
.TP
|
|
.B Input Control:
|
|
.IP \[bu] 2
|
|
keyboard#charEchoMode=0-2 - Character echo mode
|
|
.IP \[bu] 2
|
|
keyboard#wordEcho=True/False - Word echo
|
|
|
|
.SH FILES
|
|
.TP
|
|
.B /etc/fenrir/settings/settings.conf
|
|
Main configuration file
|
|
|
|
.TP
|
|
.B /etc/fenrir/keyboard/
|
|
Keyboard layout definitions
|
|
|
|
.TP
|
|
.B /etc/fenrir/punctuation/
|
|
Punctuation level definitions
|
|
|
|
.TP
|
|
.B /usr/share/sounds/fenrirscreenreader/
|
|
System sound themes
|
|
|
|
.TP
|
|
.B ~/.local/share/fenrirscreenreader/sounds/
|
|
User sound themes
|
|
|
|
.TP
|
|
.B /var/log/fenrir.log
|
|
Debug log file
|
|
|
|
.TP
|
|
.B /run/fenrir.pid
|
|
Process ID file when running as daemon
|
|
|
|
.SH ENVIRONMENT
|
|
Fenrir respects standard Linux permissions and requires appropriate access to:
|
|
.IP \[bu] 2
|
|
/dev/input/* (for evdev input driver)
|
|
.IP \[bu] 2
|
|
/dev/uinput (for key injection)
|
|
.IP \[bu] 2
|
|
/dev/vcsa* (for VCSA screen driver)
|
|
.IP \[bu] 2
|
|
DBus system bus (for screen change detection)
|
|
|
|
.SH DEPENDENCIES
|
|
.SS Required
|
|
.IP \[bu] 2
|
|
Python 3.6 or later
|
|
.IP \[bu] 2
|
|
python3-evdev (for evdev input driver)
|
|
.IP \[bu] 2
|
|
python3-pyudev (for device detection)
|
|
|
|
.SS Recommended
|
|
.IP \[bu] 2
|
|
speech-dispatcher and python3-speechd (for speech)
|
|
.IP \[bu] 2
|
|
sox with opus support (for sound)
|
|
.IP \[bu] 2
|
|
espeak-ng (for speech synthesis)
|
|
|
|
.SS Optional
|
|
.IP \[bu] 2
|
|
python3-pyenchant and aspell-* (for spell checking)
|
|
.IP \[bu] 2
|
|
python3-daemonize (for daemon mode)
|
|
.IP \[bu] 2
|
|
pyalsaaudio (for ALSA volume control)
|
|
|
|
.SH SIGNALS
|
|
.TP
|
|
.B SIGTERM, SIGINT
|
|
Gracefully shut down Fenrir
|
|
|
|
.SH EXIT STATUS
|
|
.TP
|
|
.B 0
|
|
Success
|
|
|
|
.TP
|
|
.B 1
|
|
General error (configuration, permission, etc.)
|
|
|
|
.SH BUGS
|
|
Report bugs to the project maintainer or via the project repository.
|
|
|
|
.SH AUTHORS
|
|
.B Current maintainer:
|
|
Storm Dragon
|
|
|
|
.B Previous developer:
|
|
Chrys
|
|
|
|
.B Contributors:
|
|
Jeremiah and others
|
|
|
|
.SH COPYRIGHT
|
|
This software is licensed under the LGPL v3.
|
|
|
|
.SH SEE ALSO
|
|
.BR speechd (1),
|
|
.BR espeak (1),
|
|
.BR espeak-ng (1),
|
|
.BR sox (1)
|
|
|
|
.PP
|
|
Full documentation: https://git.stormux.org/storm/fenrir/wiki
|
|
|
|
.PP
|
|
Support: stormux+subscribe@groups.io |