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.
This commit is contained in:
Rafał Dzięgiel
2021-02-16 14:42:12 +01:00
parent 530f60bce9
commit 2347ff52bf
4 changed files with 19 additions and 6 deletions

View File

@@ -40,6 +40,10 @@
<default>'[]'</default>
<summary>Data storing unfinished videos resume info</summary>
</key>
<key name="floating-stick" type="b">
<default>false</default>
<summary>Auto stick floating window to all workspaces</summary>
</key>
<!-- Audio -->
<key name="audio-offset" type="d">

View File

@@ -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);

View File

@@ -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');
}
});

View File

@@ -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()