Scroll to navigation

FENRIR(1) User Commands FENRIR(1)

NAME

fenrir - A modern, modular console screen reader for Linux

SYNOPSIS

fenrir [-h] [-v] [-f] [-s SETTING-FILE] [-o SECTION#SETTING=VALUE;..] [-d] [-p] [-e] [-E] [-F]

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.

OPTIONS

Show help message and exit.

Show version information and exit.

Run Fenrir in the foreground instead of as a daemon. Useful for debugging and testing.

Path to a custom settings file. Default is /etc/fenrir/settings/settings.conf.

Override settings file options. Format: SECTION#SETTING=VALUE;... (case sensitive). Multiple settings can be separated by semicolons.

Enable debug mode. Debug information will be logged to /var/log/fenrir.log.

Print debug messages to screen in addition to logging them.

Use PTY emulation with escape sequences for input. This enables usage in desktop/X11/Wayland environments and terminal emulators.

Use PTY emulation with evdev for input (single instance mode).

Force Fenrir to respond on all screens, ignoring the ignoreScreen setting. This temporarily overrides screen filtering for the current session.

Ignore specific screen(s). Can be used multiple times to ignore multiple screens. This is equivalent to setting ignoreScreen in the configuration file and will be combined with any existing ignore settings.

KEY CONCEPTS

Fenrir Key

The Fenrir Key is used to invoke screen reader commands. By default, the following keys act as Fenrir Keys:

Insert
Keypad Insert
Meta (Super/Windows key)

Keyboard Layouts

Fenrir supports two main keyboard layouts:

Desktop Layout - Uses numeric keypad for navigation (recommended for desktop users)
Laptop Layout - Alternative bindings for keyboards without numeric keypad

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.

BASIC COMMANDS

Essential Navigation

Stop speech (shut up)

Toggle tutorial mode (interactive help system)

Quit Fenrir

Read current screen

Read current line

Read current word

Read current character

Announce current time

Spell check current word

Review Commands (Desktop Layout)

Review previous line

Review next line

Review previous word

Review next word

Review previous character

Review next character

Exit review mode

Clipboard Operations

Copy marked text to clipboard

Paste clipboard contents

Read current clipboard

Set mark (for text selection)

Announce marked text

CONFIGURATION

Settings File

The main configuration file is located at:

/etc/fenrir/settings/settings.conf (system-wide installation)
config/settings/settings.conf (development/git version)

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 uses a modular driver system:

speechdDriver - Speech-dispatcher (recommended)
genericDriver - Command-line TTS (espeak, etc.)
debugDriver - Debug/testing

genericDriver - Sox-based (default)
gstreamerDriver - GStreamer-based
debugDriver - Debug/testing

evdevDriver - Linux evdev (recommended for Linux)
ptyDriver - Terminal emulation (cross-platform)
atspiDriver - AT-SPI for desktop environments

vcsaDriver - Linux VCSA devices (TTY)
ptyDriver - Terminal emulation

unixDriver - Unix socket remote control (recommended)
tcpDriver - TCP socket remote control (localhost only)

EXAMPLES

Start Fenrir as a daemon with default settings.

fenrir -f -d
Run Fenrir in foreground with debug output.

fenrir -e
Run Fenrir with PTY emulation for desktop/terminal use.

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, ignoring ignoreScreen settings.

fenrir -s /home/user/my-fenrir.conf
Use a custom configuration file.

REMOTE CONTROL

Fenrir includes a powerful remote control system for automation and integration with external applications.

Configuration

Enable remote control in /etc/fenrir/settings/settings.conf:

[remote]
enable=True
driver=unixDriver
enableSettingsRemote=True
enableCommandRemote=True

Using socat with Unix Sockets

# 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
    

# 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
    

# 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
    

Command Reference

command say <text> - Speak the specified text
command interrupt - Stop current speech
command tempdisablespeech - Disable speech until next key press

setting set <section>#<key>=<value> - Set configuration value
setting reset - Reset all settings to defaults
setting save [path] - Save current settings

command clipboard <text> - Add text to clipboard
command window <x1> <y1> <x2> <y2> - Define window area
command resetwindow - Reset to full screen
command vmenu <menu_path> - Set virtual menu
command resetvmenu - Reset virtual menu
command quitapplication - Quit Fenrir

Important Controllable Settings

general#punctuationLevel=none/some/most/all - Punctuation verbosity
speech#rate=0.1-1.0 - Speech rate
speech#pitch=0.1-1.0 - Speech pitch
speech#volume=0.1-1.0 - Speech volume
speech#voice=voice_name - Voice selection
speech#module=module_name - TTS module

screen#ignoreScreen=1,2,3 - TTY screens to ignore
focus#highlight=True/False - Follow text highlighting

keyboard#charEchoMode=0-2 - Character echo mode
keyboard#wordEcho=True/False - Word echo

FILES

/etc/fenrir/settings/settings.conf
Main configuration file

/etc/fenrir/keyboard/
Keyboard layout definitions

/etc/fenrir/punctuation/
Punctuation level definitions

/usr/share/sounds/fenrirscreenreader/
System sound themes

~/.local/share/fenrirscreenreader/sounds/
User sound themes

/var/log/fenrir.log
Debug log file

/run/fenrir.pid
Process ID file when running as daemon

ENVIRONMENT

Fenrir respects standard Linux permissions and requires appropriate access to:

/dev/input/* (for evdev input driver)
/dev/uinput (for key injection)
/dev/vcsa* (for VCSA screen driver)
DBus system bus (for screen change detection)

DEPENDENCIES

Required

Python 3.6 or later
python3-evdev (for evdev input driver)
python3-pyudev (for device detection)

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

Gracefully shut down Fenrir

EXIT STATUS

0
Success

1
General error (configuration, permission, etc.)

BUGS

Report bugs to the project maintainer or via the project repository.

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

2025 Fenrir Screen Reader