123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- #!/usr/bin/env -S gjs -m
- // SPDX-FileCopyrightText: GSConnect Developers https://github.com/GSConnect
- //
- // SPDX-License-Identifier: GPL-2.0-or-later
- // -*- mode: js; -*-
- 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';
- 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));
|