From 2347ff52bf876ca82bd9099b86195405914fc3a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Dzi=C4=99giel?= Date: Tue, 16 Feb 2021 14:42:12 +0100 Subject: [PATCH] Add option to show floating video on all workspaces Option to stick the floating mode window to all workspaces. Disabled by default. Can be enabled in player preferences. --- data/com.github.rafostar.Clapper.gschema.xml | 4 ++++ src/dbus.js | 10 +++++----- src/prefs.js | 3 +++ src/revealers.js | 8 +++++++- 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/data/com.github.rafostar.Clapper.gschema.xml b/data/com.github.rafostar.Clapper.gschema.xml index 18a823ff..391a1b03 100644 --- a/data/com.github.rafostar.Clapper.gschema.xml +++ b/data/com.github.rafostar.Clapper.gschema.xml @@ -40,6 +40,10 @@ '[]' Data storing unfinished videos resume info + + false + Auto stick floating window to all workspaces + diff --git a/src/dbus.js b/src/dbus.js index 1840d228..55a5cbf9 100644 --- a/src/dbus.js +++ b/src/dbus.js @@ -19,16 +19,16 @@ let shellProxy = new ShellProxyWrapper( Gio.DBus.session, 'org.gnome.Shell', '/org/gnome/Shell' ); -function callMakeAbove(isAbove) +function shellWindowEval(fn, isEnabled) { - const un = (isAbove) ? '' : 'un'; + const un = (isEnabled) ? '' : 'un'; - debug('changing window keep above'); + debug(`changing ${fn}`); shellProxy.EvalRemote( - `global.display.focus_window.${un}make_above()`, + `global.display.focus_window.${un}${fn}()`, (out) => { const debugMsg = (out[0]) - ? `window keep above: ${isAbove}` + ? `window ${fn}: ${isEnabled}` : new Error(out[1]); debug(debugMsg); diff --git a/src/prefs.js b/src/prefs.js index c780dba7..a28ce983 100644 --- a/src/prefs.js +++ b/src/prefs.js @@ -73,6 +73,9 @@ class ClapperBehaviourPage extends PrefsBase.Grid this.addTitle('Resume'); this.addCheckButton('Ask to resume last unfinished video', 'resume-enabled'); + + this.addTitle('Floating Mode'); + this.addCheckButton('Show on all workspaces', 'floating-stick'); } }); diff --git a/src/revealers.js b/src/revealers.js index 49774c81..e939b412 100644 --- a/src/revealers.js +++ b/src/revealers.js @@ -2,10 +2,12 @@ const { GLib, GObject, Gtk, Pango } = imports.gi; const { HeaderBar } = imports.src.headerbar; const Debug = imports.src.debug; const DBus = imports.src.dbus; +const Misc = imports.src.misc; const REVEAL_TIME = 800; const { debug } = Debug; +const { settings } = Misc; var CustomRevealer = GObject.registerClass( class ClapperCustomRevealer extends Gtk.Revealer @@ -266,7 +268,11 @@ class ClapperControlsRevealer extends Gtk.Revealer widget.height_request = widget.get_height(); this.reveal_child ^= true; - DBus.callMakeAbove(!this.reveal_child); + const isFloating = !this.reveal_child; + DBus.shellWindowEval('make_above', isFloating); + + const isStick = (isFloating && settings.get_boolean('floating-stick')); + DBus.shellWindowEval('stick', isStick); } _onControlsRevealed()