FENRIR(1)
πΊβ¨ FENRIR(1) β¨πΊ
user commands Β· section 1 Β· the console screen reader that actually gets you π
πΈ NAME πΈ
fenrir β a modern, modular console screen reader for Linux π¦
π SYNOPSIS π
fenrir [-h] [-v] [-f] [-s SETTING-FILE] [-o SECTION#SETTING=VALUE;..]
[-d] [-p] [-x] [--x11-window-id WINDOWID] [-F] [-i SCREEN]
π DESCRIPTION π
okay bestie, so Fenrir is a modern, modular, flexible and fast console screen reader, and it's written in Python 3. literally. It gives you spoken feedback for Linux console applications, and it supports Linux TTYs plus X11 terminal mode. π
And the way that it's built?? Modular driver architecture, no cap β it supports multiple speech synthesizers, sound systems, input methods, and screen reading techniques. It also has advanced features like review mode, multiple clipboards, spell checking, bookmarks, and configurable key bindings. it's giving Swiss Army knife but make it accessible π§°β¨
π OPTIONS π
-h,--helpβ show the help message and dip out. π-v,--versionβ show version info and exit. iconic, brief, slays. β¨-f,--foregroundβ run Fenrir in the foreground instead of as a daemon. so useful for debugging and testing, fr fr. π-s,--setting SETTING-FILEβ path to a custom settings file. the default is/etc/fenrirscreenreader/settings/settings.conffor root, and~/.local/share/stormux/fenrirscreenreader/settings/settings.conffor regular-user saves. ποΈ-o,--options SECTION#SETTING=VALUE;..β override settings file options. format:SECTION#SETTING=VALUE;...and yes it's case sensitive bestie. multiple settings get separated by semicolons. π«-d,--debugβ enable debug mode. debug info gets logged to/var/log/fenrir.log. π-p,--printβ print debug messages to the screen in addition to logging them. double the chaos, double the info. π¨οΈ-F,--force-all-screensβ force Fenrir to respond on all screens, ignoring theignore_screensetting. this temporarily overrides screen filtering for the current session. main character energy, it refuses to be ignored πββοΈ-i,-I,--ignore-screen SCREENβ ignore specific screen(s). can be used multiple times to ignore multiple screens. this is equivalent to settingignore_screenin the configuration file, and it gets combined with any existing ignore settings. π«-x,--x11β run in X11 terminal mode using PTY screen monitoring and X11 keyboard input scoped to the terminal window. πͺ--x11-window-id WINDOWIDβ use a specific X11 terminal window id for X11 terminal mode. π―
π KEY CONCEPTS π
π Fenrir Key
The Fenrir Key is what you press to invoke screen reader commands. by default, these keys act as Fenrir Keys:
InsertKeypad InsertMeta(that's the Super/Windows key πͺ)
β¨οΈ Keyboard Layouts
Fenrir supports two main keyboard layouts:
- Desktop Layout β uses the numeric keypad for navigation (recommended for desktop users) π₯οΈ
- Laptop Layout β alternative bindings for keyboards without a numeric keypad π»
π Review Mode
Fenrir gives you a virtual cursor that lets you navigate around the screen without changing the text cursor position. lowkey essential for reviewing content without disrupting your work. π§
π BASIC COMMANDS π
π§ Essential Navigation
Ctrlβ stop speech (shut up) π€«Fenrir+Hβ toggle tutorial mode (interactive help system) πFenrir+Qβ quit Fenrir πFenrir+Keypad 5β read current screen πKeypad 8β read current line πKeypad 5β read current word πKeypad 2β read current character π€Fenrir+Tβ announce current time β°Fenrir+Sβ spell check current word β
π Review Commands (Desktop Layout)
Keypad 7β review previous line β¬οΈKeypad 9β review next line β¬οΈKeypad 4β review previous word β¬ οΈKeypad 6β review next word β‘οΈKeypad 1β review previous character πΎKeypad 3β review next character πΎFenrir+Keypad dotβ exit review mode πͺ
π Clipboard Operations
Fenrir+Cβ copy marked text to clipboard πFenrir+Vβ paste clipboard contents π₯Fenrir+Shift+Cβ read current clipboard πFenrir+Xβ set mark (for text selection) ποΈFenrir+Shift+Xβ announce marked text π’
βοΈ CONFIGURATION βοΈ
π Settings File
the main configuration file lives at:
/etc/fenrirscreenreader/settings/settings.conf(system-wide installation) π~/.local/share/stormux/fenrirscreenreader/settings/settings.conf(user-local settings) π§Έconfig/settings/settings.conf(development/git version) π§βπ»
okay here's the tea: when Fenrir runs as a regular user, including fenrir -x, it loads the user-local settings file if it exists. if it does not exist, Fenrir falls back to the system settings file β but saving settings writes to the user-local path. and when Fenrir runs as root, settings save to the system-wide path by default. π
also: user sound themes are loaded before system themes from~/.local/stormux/fenrir/sounds/. user scripts are loaded before configured system scripts from~/.local/stormux/fenrir/. order matters bestie π«Ά
ποΈ Key Sections
[speech]β configure speech synthesis (rate, pitch, volume, driver) π£οΈ[sound]β configure sound output and sound icons π[keyboard]β configure input driver and keyboard layout β¨οΈ[screen]β configure screen reading driver and ignored screens π₯οΈ[general]β general settings like punctuation, clipboard, and debug levels π§Ύ
π§© Driver Configuration
Fenrir runs a modular driver system, so you can mix and match:
Speech Drivers:
speechdDriverβ Speech-dispatcher (recommended) βgenericDriverβ command-line TTS (espeak, etc.) πdectalkDriverβ DECtalk-compatible serial hardware speech π£οΈlitetalkDriverβ LiteTalk-compatible serial hardware speech π£οΈdoubletalkDriverβ DoubleTalk LT-compatible serial hardware speech π£οΈtripletalkDriverβ TripleTalk-compatible serial hardware speech π£οΈdebugDriverβ debug/testing π
Sound Drivers:
genericDriverβ Sox-based (default) π΅gstreamerDriverβ GStreamer-based πΆdebugDriverβ debug/testing π
Input Drivers:
evdevDriverβ Linux evdev (recommended for Linux) π§x11Driverβ X11 terminal-scoped input forfenrir -xπͺ
Screen Drivers:
vcsaDriverβ Linux VCSA devices (TTY) πΊptyDriverβ terminal emulation π»
Remote Drivers:
unixDriverβ Unix socket remote control (recommended) πtcpDriverβ TCP socket remote control (localhost only) π
π EXAMPLES π
fenrirβ start Fenrir as a daemon with default settings. β¨fenrir -f -dβ run Fenrir in the foreground with debug output. πfenrir -o speech#rate=0.8;sound#volume=0.5β override speech rate and sound volume settings. ποΈfenrir -Fβ force Fenrir to work on all screens, ignoringignore_screensettings. πͺfenrir -s /home/user/my-fenrir.confβ use a custom configuration file. ποΈ
β¨ REMOTE CONTROL β¨
Fenrir ships with a whole remote control system for automation and plugging into other apps, and honestly? it's giving main character energy π
Configuration
Turn remote control on in /etc/fenrirscreenreader/settings/settings.conf or in your user-local settings file:
[remote]
enable=True
driver=unixDriver
enable_settings_remote=True
enable_command_remote=True
Using socat with Unix Sockets
π Instance Discovery
# List registered Fenrir instances and their socket paths
echo "ls" | socat - UNIX-CLIENT:/tmp/fenrirscreenreader-daemon.sock
In X terminal mode (fenrir -x), multiple Fenrir instances can run at the same time, no cap. Each instance has its own private socket at /tmp/fenrirscreenreader-<pid>.sock, 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. Commands sent to the standard socket get handled by its owner when possible; otherwise they get forwarded to a registered private socket, preferring the sender's Fenrir ancestor when one can be found. Bestie behavior fr fr π«Ά
π£οΈ Basic Speech Control
# Interrupt current speech
echo "command interrupt" | socat - UNIX-CLIENT:/tmp/fenrirscreenreader-daemon.sock
# Speak custom text
echo "command say Hello, this is a test" | socat - UNIX-CLIENT:/tmp/fenrirscreenreader-daemon.sock
# Temporarily disable speech
echo "command tempdisablespeech" | socat - UNIX-CLIENT:/tmp/fenrirscreenreader-daemon.sock
βοΈ Settings Control
# Enable highlight tracking
echo "setting set focus#highlight=True" | socat - UNIX-CLIENT:/tmp/fenrirscreenreader-daemon.sock
# Change speech rate
echo "setting set speech#rate=0.8" | socat - UNIX-CLIENT:/tmp/fenrirscreenreader-daemon.sock
# Change punctuation level (none/some/most/all)
echo "setting set general#punctuation_level=all" | socat - UNIX-CLIENT:/tmp/fenrirscreenreader-daemon.sock
# Voice and TTS control
echo "setting set speech#voice=en-us+f3" | socat - UNIX-CLIENT:/tmp/fenrirscreenreader-daemon.sock
# Multiple settings at once
echo "setting set speech#rate=0.8;sound#volume=0.7;general#punctuation_level=most" | socat - UNIX-CLIENT:/tmp/fenrirscreenreader-daemon.sock
# Reset all settings
echo "setting reset" | socat - UNIX-CLIENT:/tmp/fenrirscreenreader-daemon.sock
π Clipboard Operations
# Add text to clipboard
echo "command clipboard Text to copy" | socat - UNIX-CLIENT:/tmp/fenrirscreenreader-daemon.sock
# Export clipboard to file
echo "command exportclipboard" | socat - UNIX-CLIENT:/tmp/fenrirscreenreader-daemon.sock
Command Reference
π¬ Speech Commands
command say <text>β speak the text you give it, out loud, iconiccommand interruptβ stop whatever speech is happening right nowcommand tempdisablespeechβ no talking until the next key pressls/list/command ls/command listβ list all the registered Fenrir instances
ποΈ Settings Commands
setting set <section>#<key>=<value>β set a configuration valuesetting resetβ reset all the settings back to defaultssetting save [path]β save your current settings
π Other Commands
command clipboard <text>β add text to the clipboardcommand window <x1> <y1> <x2> <y2>β define the window areacommand resetwindowβ go back to full screencommand vmenu <menu_path>β set the virtual menucommand resetvmenuβ reset the virtual menucommand quitapplicationβ quit Fenrir
Important Controllable Settings
π£οΈ Speech Control
general#punctuation_level=none/some/most/allβ how much punctuation gets spokenspeech#rate=0.1-1.0β speech ratespeech#pitch=0.1-1.0β speech pitchspeech#volume=0.1-1.0β speech volumespeech#voice=voice_nameβ pick your voicespeech#module=module_nameβ pick your TTS module
π₯οΈ Screen Control
screen#ignore_screen=1,2,3β the TTY screens to ignorefocus#highlight=True/Falseβ follow the text highlighting
β¨οΈ Input Control
keyboard#char_echo_mode=0-2β character echo modekeyboard#word_echo=True/Falseβ word echo on or off
π FILES π
/etc/fenrirscreenreader/settings/settings.confβ the main configuration file~/.local/share/stormux/fenrirscreenreader/settings/settings.confβ you guessed it, the user-local configuration file/etc/fenrirscreenreader/keyboard/β where the keyboard layout definitions live/etc/fenrirscreenreader/punctuation/β punctuation level definitions, hi/usr/share/sounds/fenrirscreenreader/β system sound themes~/.local/stormux/fenrir/sounds/β your own user sound themes π~/.local/stormux/fenrir/β user scripts/var/log/fenrir.logβ the debug log file/run/fenrir.pidβ process ID file, only when running as a daemon
π± ENVIRONMENT π±
Fenrir respects standard Linux permissions and needs appropriate access to these:
/dev/input/*(for the evdev input driver)/dev/uinput(for key injection)/dev/vcsa*(for the VCSA screen driver)- DBus system bus (for screen change detection)
π¦ DEPENDENCIES π¦
β Required
- Python 3.6 or later
- python3-evdev (for the evdev input driver)
- python3-pyudev (for device detection)
π Recommended
- speech-dispatcher and python3-speechd (for speech)
- sox with opus support (for sound)
- espeak-ng (for speech synthesis)
β¨ Optional
- python3-pyenchant and aspell-* (for spell checking)
- python3-daemonize (for daemon mode)
- pyalsaaudio (for ALSA volume control)
π¦ SIGNALS π¦
SIGTERM,SIGINTβ gracefully shut down Fenrir
π― EXIT STATUS π―
0β success, we slayed1β general error (configuration, permission, etc.)
π BUGS π
Report bugs to the project maintainer or through the project repository. Spill the tea, bestie, they wanna know π
π AUTHORS π
- Current maintainer: Storm Dragon
- Previous developer: Chrys
- Contributors: Jeremiah and others
Β©οΈ COPYRIGHT Β©οΈ
This software is licensed under the LGPL v3.
π SEE ALSO π
speechd(1),espeak(1),espeak-ng(1),sox(1)- Full documentation:
https://git.stormux.org/storm/fenrir/wiki - Support:
stormux+subscribe@groups.io
okay that's literally the whole page, bestie, we did it π this gorgeous thing is the Fenrir Screen Reader, version/date 2025, and yes you may absolutely screenshot and send it to the group chat. periodt. π β¨π¦
π¦ where this page comes from
- ubuntu stonking: fenrir 2026.0.5.25-1 Β· LGPL-3.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms