Codebase list gnome-shell-extensions / upstream/3.14.2 extensions / example / extension.js
upstream/3.14.2

Tree @upstream/3.14.2 (Download .tar.gz)

extension.js @upstream/3.14.2raw · history · blame

// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
// Sample extension code, makes clicking on the panel show a message
const St = imports.gi.St;
const Mainloop = imports.mainloop;

const Gettext = imports.gettext.domain('gnome-shell-extensions');
const _ = Gettext.gettext;

const Main = imports.ui.main;

const ExtensionUtils = imports.misc.extensionUtils;
const Me = ExtensionUtils.getCurrentExtension();
const Convenience = Me.imports.convenience;

function _showHello() {
    let settings = Convenience.getSettings();
    let text = settings.get_string('hello-text') || _("Hello, world!");

    let label = new St.Label({ style_class: 'helloworld-label', text: text });
    let monitor = Main.layoutManager.primaryMonitor;
    global.stage.add_actor(label);
    label.set_position(Math.floor (monitor.width / 2 - label.width / 2), Math.floor(monitor.height / 2 - label.height / 2));
    Mainloop.timeout_add(3000, function () { label.destroy(); });
}

// Put your extension initialization code here
function init(metadata) {
    log ('Example extension initalized');

    Convenience.initTranslations();
}

let signalId;

function enable() {
    log ('Example extension enabled');

    Main.panel.actor.reactive = true;
    signalId = Main.panel.actor.connect('button-release-event', _showHello);
}

function disable() {
    log ('Example extension disabled');

    if (signalId) {
	Main.panel.actor.disconnect(signalId);
	signalId = 0;
    }
}