From 121d59ee28709ca0229930f86d77d8e71fb9024d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Sat, 26 Sep 2015 17:42:34 +0200 Subject: [PATCH] add black/whitelist config to videowall REVIEW: 125410 BUG: 353153 FIXED-IN: 5.5 --- scripts/videowall/contents/code/main.js | 35 ++--- scripts/videowall/contents/config/main.xml | 22 +++ scripts/videowall/contents/ui/config.ui | 148 +++++++++++++++++++++ scripts/videowall/metadata.desktop | 7 +- 4 files changed, 194 insertions(+), 18 deletions(-) create mode 100644 scripts/videowall/contents/config/main.xml create mode 100644 scripts/videowall/contents/ui/config.ui 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