Pour ton probleme de paquet, voit si tu peux pas avoir des paquets plus récent avec le ppa de gnome shell. Si c'est déjà le cas, il existe un paquet ppa-purge je crois qui sert à downgrader un ppa précédemment installé pour faire le propre.
Bon sinon, j'ai progressé sur le début de l'extension. Il n'y a pas d'API claire donc ce n'est pas vraiment simple de comprendre comment, ça marche, j'avance pas mal à tâtons.
Avec pas mal d'acharnement, j'ai quand même réussit à créer un rectangle, et même à l'animer.
Il faut pour cela utiliser l'objet BoxLayout (le fameux) avec les bons paramètres.
J'ai trouvé un bon exemple ici:
http://git.gnome.org/browse/gnome-shell/tree/tests/interactive/box-layout.js
Pour ce qui d'animer un élément c'est super simple, il faut appeler l'objet Tweener et s'amuser avec les options. Il y a même une doc pour cela:
http://hosted.zeh.com.br/tweener/docs/en-us/
Donc pour
créer une extension: gnome-shell --create-extension
3 champs à compléter: name, description et UUID
Pour l’UUID, moi j’ai choisit au pif mais faut quand même ça ressemble à cela:
gnomenuts@gnomenuts.gmail.com (je ne possède pas l'adresse)
Ensuite on trouve
le dossier de l'extension ici:
home/kao/.local/share/gnome-shell/extensions/
gnomenuts@gnomenuts.gmail.com
On y trouve trois fichiers:
- extension.js dans lequel on depose le code javascript
- stylesheet.css si l'on veut utiliser CSS pour la mise en page des différents éléments
- et metadata.json qui regroupe les infos d'identification de l'extension
lancer gnome shell: gnome-shell --replace
relancer gnome shell après une modif de son extension: gnome-shell -r
Et pour finir, voici un code tout moche comme exemple, il suffit de cliquer sur la barre du menu pour activer l'extension:
// Sample extension code, makes clicking on the panel show a message
const St = imports.gi.St;
const Mainloop = imports.mainloop;
const Main = imports.ui.main;
const Tweener = imports.ui.tweener;
function _boite() {
//message hors du panel
let text = new St.Label({ style_class: 'helloworld-label', text: "Texte Hors Champ" });
let monitor = global.get_primary_monitor();
global.stage.add_actor(text);
text.set_position(Math.floor (monitor.width / 2 - text.width / 2), Math.floor(monitor.height / 1.5 - text.height / 2 ));
Mainloop.timeout_add(3000, function () { text.destroy(); });
//creation de la boite
var widthbox= monitor.width
var heightbox= Math.floor(monitor.height/ 4)
let box = new St.BoxLayout({ width: widthbox, height: heightbox, style: 'border: 2px solid gray; background: gray;'});
global.stage.add_actor(box);
box.set_position( 0 , -200 );
Tweener.addTween(box, { delay:0, time: 0.3, transition: 'easeOutQuad', scale_x: 1, scale_y: 1 , opacity: 200, x:0, y:26});
Mainloop.timeout_add(6000, function () { box.destroy(); });
//ajout de texte dans la boite
box.add(new St.Label({ text: "Short", style: 'background: #cceeff; ' + 'padding: 5px; ' + 'border: 1px solid #666666;' }), { expand: true });
box.add(new St.Label({ text: "plus long", style: 'padding: 5px; ' + 'border: 1px solid #666666;' }), { expand: true });
return box;
}
// Put your extension initialization code here
function main() {
Main.panel.actor.reactive = true;
Main.panel.actor.connect('button-release-event', _boite);
}
Affaire à suivre donc