diff --git a/README.md b/README.md index 7a809d23..da37b5ee 100644 --- a/README.md +++ b/README.md @@ -511,6 +511,7 @@ fenrir [OPTIONS] - `-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) - `-F, --force-all-screens` - Force Fenrir to respond on all screens, ignoring ignoreScreen setting +- `-i, -I, --ignore-screen SCREEN` - Ignore specific screen(s). Can be used multiple times. Combines with existing ignore settings. ### Examples: ```bash @@ -525,6 +526,10 @@ sudo fenrir -o "speech#rate=0.8;sound#volume=0.5" # Force Fenrir to work on all screens (ignore ignoreScreen setting) sudo fenrir -F + +# Ignore specific screens +sudo fenrir --ignore-screen 1 +sudo fenrir -i 1 -i 2 # Ignore screens 1 and 2 ``` ## Localization diff --git a/docs/fenrir.1 b/docs/fenrir.1 index c6347dd0..3d50c0fb 100644 --- a/docs/fenrir.1 +++ b/docs/fenrir.1 @@ -65,6 +65,10 @@ Use PTY emulation with evdev for input (single instance mode). .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. +.TP +.BR \-i ", " \-I ", " \-\-ignore-screen " \fISCREEN\fR" +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. + .SH KEY CONCEPTS .SS Fenrir Key diff --git a/docs/fenrir.adoc b/docs/fenrir.adoc index 80a419da..1f2a5b4f 100644 --- a/docs/fenrir.adoc +++ b/docs/fenrir.adoc @@ -1240,6 +1240,9 @@ Use PTY emulation with evdev for input (single instance mode). `+-F, --force-all-screens+`:: Force Fenrir to respond on all screens, ignoring the ignoreScreen setting. This temporarily overrides screen filtering for the current session. +`+-i, -I, --ignore-screen +`:: +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. + ==== Set settings options You can specify options that overwrite the setting.conf. This is done diff --git a/docs/user.md b/docs/user.md index e1e9a04d..22af87ad 100644 --- a/docs/user.md +++ b/docs/user.md @@ -297,6 +297,7 @@ fenrir [OPTIONS] - `-e, --emulated-pty` - PTY emulation for desktop use - `-E, --emulated-evdev` - PTY + evdev emulation - `-F, --force-all-screens` - Ignore ignoreScreen setting +- `-i, -I, --ignore-screen SCREEN` - Ignore specific screen(s), can be used multiple times ## Troubleshooting diff --git a/src/fenrir b/src/fenrir index 02fb6347..8f91aba1 100755 --- a/src/fenrir +++ b/src/fenrir @@ -72,6 +72,12 @@ def create_argument_parser(): action='store_true', help='Force Fenrir to respond on all screens, ignoring ignoreScreen setting' ) + argumentParser.add_argument( + '-i', '-I', '--ignore-screen', + metavar='SCREEN', + action='append', + help='Ignore specific screen(s). Can be used multiple times. Same as ignoreScreen setting.' + ) return argumentParser def validate_arguments(cliArgs): diff --git a/src/fenrirscreenreader/core/settingsManager.py b/src/fenrirscreenreader/core/settingsManager.py index 83227365..897e2d12 100644 --- a/src/fenrirscreenreader/core/settingsManager.py +++ b/src/fenrirscreenreader/core/settingsManager.py @@ -320,6 +320,14 @@ class settingsManager(): if cliArgs.force_all_screens: environment['runtime']['force_all_screens'] = True + + if cliArgs.ignore_screen: + currentIgnoreScreen = self.getSetting('screen', 'ignoreScreen') + if currentIgnoreScreen: + ignoreScreens = currentIgnoreScreen.split(',') + cliArgs.ignore_screen + else: + ignoreScreens = cliArgs.ignore_screen + self.setSetting('screen', 'ignoreScreen', ','.join(ignoreScreens)) if not os.path.exists(self.getSetting('sound','theme') + '/soundicons.conf'): if os.path.exists(soundRoot + self.getSetting('sound','theme')):