diff --git a/scripts/videowall/contents/code/main.js b/scripts/videowall/contents/code/main.js
index e4d83de88f..cc27df9812 100644
--- a/scripts/videowall/contents/code/main.js
+++ b/scripts/videowall/contents/code/main.js
@@ -17,27 +17,28 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
*********************************************************************/
+
+var applyTo = readConfig("ApplyTo", true);
+var whitelist = readConfig("Whitelist", "vlc, xv, vdpau, smplayer, dragon, xine, ffplay, mplayer").toString().toLowerCase().split(",");
+for (i = 0; i < whitelist.length; ++i)
+ whitelist[i] = whitelist[i].trim();
+
+var ignore = readConfig("Ignore", false);
+var blacklist = readConfig("Blacklist", "").toString().toLowerCase().split(",");
+for (i = 0; i < blacklist.length; ++i)
+ blacklist[i] = blacklist[i].trim();
+
+
function isVideoPlayer(client) {
- if (client.resourceName == "vlc") {
- return true;
- }
- if (client.resourceName == "smplayer") {
- return true;
- }
- if (client.resourceName == "dragon") {
- return true;
- }
- if (client.resourceName == "xv") { //mplayer
- return true;
- }
- if (client.resourceName == "ffplay") {
- return true;
- }
- return false;
+ if (applyTo == true && whitelist.indexOf(client.resourceClass.toString()) < 0)
+ return false; // required whitelist match failed
+ if (ignore == true && blacklist.indexOf(client.resourceClass.toString()) > -1)
+ return false; // required blacklist match hit
+ return true;
}
var videowall = function(client, set) {
- if (isVideoPlayer(client) && set) {
+ if (set && isVideoPlayer(client)) {
client.geometry = workspace.clientArea(KWin.FullArea, 0, 1);
}
};
diff --git a/scripts/videowall/contents/config/main.xml b/scripts/videowall/contents/config/main.xml
new file mode 100644
index 0000000000..7baa80d459
--- /dev/null
+++ b/scripts/videowall/contents/config/main.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+ true
+
+
+ vlc, xv, vdpau, smplayer, dragon, xine, ffplay, mplayer
+
+
+ false
+
+
+
+
+
+
+
diff --git a/scripts/videowall/contents/ui/config.ui b/scripts/videowall/contents/ui/config.ui
new file mode 100644
index 0000000000..53543cdfcb
--- /dev/null
+++ b/scripts/videowall/contents/ui/config.ui
@@ -0,0 +1,148 @@
+
+
+ KWin::VideoWallConfigForm
+
+
+
+ 0
+ 0
+ 334
+ 59
+
+
+
+ Video Wall
+
+
+ -
+
+
+ Apply to
+
+
+ true
+
+
+
+ -
+
+
-
+
+
+ vlc, xv, vdpau, smplayer, dragon, xine, ffplay
+
+
+ Comma separated list of window classes
+
+
+
+ -
+
+
+ false
+
+
+ All
+
+
+
+
+
+ -
+
+
+ Ignore
+
+
+
+ -
+
+
-
+
+
+ false
+
+
+ Comma separated list of window classes
+
+
+
+ -
+
+
+ None
+
+
+
+
+
+
+
+
+
+
+ kcfg_ApplyTo
+ toggled(bool)
+ kcfg_Whitelist
+ setVisible(bool)
+
+
+ 41
+ 9
+
+
+ 143
+ 13
+
+
+
+
+ kcfg_ApplyTo
+ toggled(bool)
+ applyLabel
+ setHidden(bool)
+
+
+ 28
+ 15
+
+
+ 330
+ 20
+
+
+
+
+ kcfg_Ignore
+ toggled(bool)
+ kcfg_Blacklist
+ setVisible(bool)
+
+
+ 33
+ 44
+
+
+ 111
+ 45
+
+
+
+
+ kcfg_Ignore
+ toggled(bool)
+ ignoreLabel
+ setHidden(bool)
+
+
+ 51
+ 33
+
+
+ 327
+ 42
+
+
+
+
+
diff --git a/scripts/videowall/metadata.desktop b/scripts/videowall/metadata.desktop
index 73449839b7..fc8e6b68e0 100644
--- a/scripts/videowall/metadata.desktop
+++ b/scripts/videowall/metadata.desktop
@@ -101,5 +101,10 @@ X-KDE-PluginInfo-Version=1.0
X-KDE-PluginInfo-Depends=
X-KDE-PluginInfo-License=GPL
-X-KDE-ServiceTypes=KWin/Script
+X-KDE-ServiceTypes=KWin/Script,KCModule
+
+X-KDE-Library=kwin/effects/configs/kcm_kwin4_genericscripted
+X-KDE-PluginKeyword=videowall
+X-KDE-ParentComponents=videowall
+
Type=Service