diff --git a/config/Config.qml b/config/Config.qml index fe072865..d6f5d198 100644 --- a/config/Config.qml +++ b/config/Config.qml @@ -139,6 +139,7 @@ Singleton { function serializeGeneral(): var { return { logo: general.logo, + excludedScreens: general.excludedScreens, apps: { terminal: general.apps.terminal, audio: general.apps.audio, diff --git a/config/GeneralConfig.qml b/config/GeneralConfig.qml index 52ef0de3..0d1d1e19 100644 --- a/config/GeneralConfig.qml +++ b/config/GeneralConfig.qml @@ -2,6 +2,7 @@ import Quickshell.Io JsonObject { property string logo: "" + property list excludedScreens: [] property Apps apps: Apps {} property Idle idle: Idle {} property Battery battery: Battery {} diff --git a/modules/areapicker/AreaPicker.qml b/modules/areapicker/AreaPicker.qml index 0d8b2fe1..308b7d23 100644 --- a/modules/areapicker/AreaPicker.qml +++ b/modules/areapicker/AreaPicker.qml @@ -2,6 +2,7 @@ pragma ComponentBehavior: Bound import qs.components.containers import qs.components.misc +import qs.services import Quickshell import Quickshell.Wayland import Quickshell.Io @@ -15,7 +16,7 @@ Scope { property bool clipboardOnly Variants { - model: Quickshell.screens + model: Screens.screens StyledWindow { id: win diff --git a/modules/background/Background.qml b/modules/background/Background.qml index 682da624..c1f149a0 100644 --- a/modules/background/Background.qml +++ b/modules/background/Background.qml @@ -12,7 +12,7 @@ Loader { active: Config.background.enabled sourceComponent: Variants { - model: Quickshell.screens + model: Screens.screens StyledWindow { id: win diff --git a/modules/drawers/Drawers.qml b/modules/drawers/Drawers.qml index 93534ec2..86c9e99d 100644 --- a/modules/drawers/Drawers.qml +++ b/modules/drawers/Drawers.qml @@ -13,7 +13,7 @@ import QtQuick import QtQuick.Effects Variants { - model: Quickshell.screens + model: Screens.screens Scope { id: scope diff --git a/services/Brightness.qml b/services/Brightness.qml index 7eb7d51f..56782404 100644 --- a/services/Brightness.qml +++ b/services/Brightness.qml @@ -67,7 +67,7 @@ Singleton { Variants { id: variants - model: Quickshell.screens + model: Quickshell.screens // Don't respect excluded screens cause ipc Monitor {} } diff --git a/services/Screens.qml b/services/Screens.qml new file mode 100644 index 00000000..a6475178 --- /dev/null +++ b/services/Screens.qml @@ -0,0 +1,20 @@ +pragma Singleton + +import qs.config +import qs.utils +import Quickshell + +Singleton { + id: root + + readonly property list screens: { + const excluded = Config.general.excludedScreens; + if (excluded.length === 0) + return Quickshell.screens; + return Quickshell.screens.filter(s => !Strings.testRegexList(excluded, s.name)); + } + + function isExcluded(screen: ShellScreen): bool { + return Strings.testRegexList(Config.general.excludedScreens, screen.name); + } +}