[gnome] Update extensions
This commit is contained in:
@ -1,104 +1,19 @@
|
||||
#!/usr/bin/env -S gjs -m
|
||||
#!/bin/sh
|
||||
|
||||
// SPDX-FileCopyrightText: GSConnect Developers https://github.com/GSConnect
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# SPDX-FileCopyrightText: GSConnect Developers https://github.com/GSConnect
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
// -*- mode: js; -*-
|
||||
fallback_dir=$HOME/.local/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/
|
||||
|
||||
import Gdk from 'gi://Gdk?version=3.0';
|
||||
import 'gi://GdkPixbuf?version=2.0';
|
||||
import Gio from 'gi://Gio?version=2.0';
|
||||
import GLib from 'gi://GLib?version=2.0';
|
||||
import GObject from 'gi://GObject?version=2.0';
|
||||
import Gtk from 'gi://Gtk?version=3.0';
|
||||
if [ ! -f "./gsconnect-preferences.js" ]; then
|
||||
# Try to find home path
|
||||
extension_dir="$(dirname "$(realpath "$(command -v "$0")")")"
|
||||
# try even harder
|
||||
if [ ! -d "$extension_dir" ]; then
|
||||
extension_dir="$fallback_dir"
|
||||
fi
|
||||
cd "$extension_dir" || exit 1
|
||||
fi
|
||||
exec /usr/bin/env gjs -m gsconnect-preferences.js
|
||||
|
||||
import system from 'system';
|
||||
|
||||
import './preferences/init.js';
|
||||
import {Window} from './preferences/service.js';
|
||||
import Config from './config.js';
|
||||
|
||||
import('gi://GioUnix?version=2.0').catch(() => {}); // Set version for optional dependency
|
||||
|
||||
|
||||
/**
|
||||
* Class representing the GSConnect service daemon.
|
||||
*/
|
||||
const Preferences = GObject.registerClass({
|
||||
GTypeName: 'GSConnectPreferences',
|
||||
Implements: [Gio.ActionGroup],
|
||||
}, class Preferences extends Gtk.Application {
|
||||
|
||||
_init() {
|
||||
super._init({
|
||||
application_id: 'org.gnome.Shell.Extensions.GSConnect.Preferences',
|
||||
resource_base_path: '/org/gnome/Shell/Extensions/GSConnect',
|
||||
});
|
||||
|
||||
GLib.set_prgname('gsconnect-preferences');
|
||||
GLib.set_application_name(_('GSConnect Preferences'));
|
||||
}
|
||||
|
||||
vfunc_activate() {
|
||||
if (this._window === undefined) {
|
||||
this._window = new Window({
|
||||
application: this,
|
||||
});
|
||||
}
|
||||
|
||||
this._window.present();
|
||||
}
|
||||
|
||||
vfunc_startup() {
|
||||
super.vfunc_startup();
|
||||
|
||||
// Init some resources
|
||||
const provider = new Gtk.CssProvider();
|
||||
provider.load_from_resource(`${Config.APP_PATH}/application.css`);
|
||||
Gtk.StyleContext.add_provider_for_screen(
|
||||
Gdk.Screen.get_default(),
|
||||
provider,
|
||||
Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION
|
||||
);
|
||||
|
||||
const actions = [
|
||||
['refresh', null],
|
||||
['connect', GLib.VariantType.new('s')],
|
||||
];
|
||||
|
||||
for (const [name, type] of actions) {
|
||||
const action = new Gio.SimpleAction({
|
||||
name: name,
|
||||
parameter_type: type,
|
||||
});
|
||||
this.add_action(action);
|
||||
}
|
||||
}
|
||||
|
||||
vfunc_activate_action(action_name, parameter) {
|
||||
try {
|
||||
const paramArray = [];
|
||||
|
||||
if (parameter instanceof GLib.Variant)
|
||||
paramArray[0] = parameter;
|
||||
|
||||
this.get_dbus_connection().call(
|
||||
'org.gnome.Shell.Extensions.GSConnect',
|
||||
'/org/gnome/Shell/Extensions/GSConnect',
|
||||
'org.freedesktop.Application',
|
||||
'ActivateAction',
|
||||
GLib.Variant.new('(sava{sv})', [action_name, paramArray, {}]),
|
||||
null,
|
||||
Gio.DBusCallFlags.NONE,
|
||||
-1,
|
||||
null,
|
||||
null
|
||||
);
|
||||
} catch (e) {
|
||||
logError(e);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
await (new Preferences()).runAsync([system.programInvocationName].concat(ARGV));
|
||||
|
||||
Reference in New Issue
Block a user