"Einfache" Gnomen-Applets in Unity - Stickynotes


7

Ich denke, dies ist eine verwandte Frage zu Kann ich GNOME-Applets in Unity verwenden? (bewegt auf Vorschlag von @ Jorge Castro )

Ich möchte es stickynotes_appletin Unity verwenden. Jetzt in Gnome wird dieses Applet zu einer Leiste hinzugefügt. Dann muss ich darauf klicken, um eine neue Notiz zu erstellen, und ich kann Einstellungen aufrufen, damit die Notizen auf dem Desktop bleiben alles was ich brauche.

Wie hier erwähnt, ist es natürlich nicht möglich, dieses Applet direkt in Unity zu verwenden. Aber im Grunde müsste ich nur das Fenster "Einstellungen" öffnen (damit die Notizen hängen bleiben) und irgendwie einen Befehl für eine neue Notiz ausgeben (der sonst durch Klicken auf das Applet-Symbol in ausgeführt würde die Gnome Bar).

Ich habe versucht, ' /usr/lib/gnome-applets/stickynotes_applet' auszuführen, und anscheinend wird es ausgeführt, obwohl kein Applet-Symbol angezeigt wird (was erwartet wird) und auch keine anderen Fenster (von denen ich sonst gehofft habe, dass sie angezeigt werden :)).

Angesichts der Tatsache, dass dieses Applet nichts Besonderes mit dem Desktop zu tun hat, gibt es eine Befehlszeilenmethode , um dieses Applet grundsätzlich auszuführen, einen Befehl "Einstellungen anzeigen" auszugeben und eine neue Notiz auszugeben Befehl dazu in einer Unity-Umgebung ( derzeit kann ich über die tomboyBefehlszeile aufrufen und es funktioniert - aber die Fenster sind für meinen Geschmack zu klobig )?

(und Bonusfrage - wie würden Sie ein Applet-bezogenes Fenster nur über die Befehlszeile im klassischen Gnome starten?)

Die Desktop-Integration ist mir nicht so wichtig - ich würde dies gerne manuell über die Befehlszeile ausführen, solange ich kleine kompakte Notizen erhalte, die auf dem Desktop bleiben (solange der Prozess aktiv ist).

Vielen Dank für alle Kommentare,
Prost!


1
Sie könnten in den Code eintauchen und prüfen, wie dies realisiert werden könnte ... Dann wäre es einfach, dies einfach zu teilen und die Lösung über eine PPA bereitzustellen. :) Ich werde es bald untersuchen ...
Sebastian Rühl

Vielen Dank für den Link, @Sebastian R. - toll, ihn zur Hand zu haben! Im Wesentlichen hatte ich gehofft, es zu vermeiden, es durchzusehen, indem ich eine Befehlszeilenmethode fand, um nur den 'Fenster'-Teil der' Anwendung 'zu öffnen und den Rest der Funktionalität zu umgehen, die Applet-Symbolen und dergleichen innewohnt. Aber ich bin es Vermutung, dass das nicht möglich ist. Nochmals vielen Dank - Prost!
Sdaau

Antworten:


3

Sie könnten ein kleines Gnome-Panel haben, auf dem nur Ihr Applet ausgeführt wird. Siehe Wie verwende ich das GNOME-Bedienfeld in Unity?


Awesome @Egil - vielen Dank! Ich habe es immer noch nicht ausprobiert, aber dieser Ansatz scheint für mich zu funktionieren ... Nochmals vielen Dank, Prost! (Sobald ich es getestet habe, werde ich dieser Antwort eine Annahme hinzufügen)
sdaau

Nun, endlich habe ich diese gnome-appletTechnik getestet - und tatsächlich funktioniert sie gut für mich auf Natty! In der Zwischenzeit habe ich jedoch eine befehlszeilenbasierte Technik gefunden, die ich in dieser Antwort gepostet habe , also habe ich das stattdessen akzeptiert. Nochmals vielen Dank - Prost!
Sdaau

3

Ich bin wieder auf dieses Problem zurückgekommen (immer noch auf Natty); Also dachte ich, ich würde meine Ergebnisse veröffentlichen.

Zuerst habe ich nachgeschlagen, ob Sie Gnome-Applets über die Befehlszeile ausführen können, und in einem separaten Fenster - es stellte sich heraus, dass dies eine Technik zum Debuggen von Python-Applets war.

Invest-Applet-Unity-Standalone

Dies ist das Skript:

import sys
import gtk
import pygtk
pygtk.require('2.0')
# sudo apt-get install python-gnomeapplet
import gnomeapplet
import CORBA # must have import gnomeapplet before!
import bonobo
import bonobo.ui
import bonobo.activation

bcontrol = bonobo.activation.activate_from_id('OAFIID:Invest_Applet', 0, False)
win = bonobo.ui.Window("foo", "FOOOOO")
buiwid = bonobo.ui.widget_new_control_from_objref(bcontrol, win.get_ui_container().corba_objref())
win.set_contents(buiwid)
win.show_all()
win.connect("destroy", lambda x: sys.exit(0))
bonobo.ui.main()

... und das erweiterte Skript (mit Debug-Ausgabe und einer Menge chaotischer Kommentare) befindet sich in gtk_bonobo_applet_widget.py .


Dies ist genau das , was ich wollte, und zuerst dachte ich, dass es für alle Applets gelten würde - zumindest in Natty (und unter ihnen stickynotes); aber leider nein :

Jetzt ist Natty ein bisschen spezifisch, weil es das letzte Gnome 2 Ubuntu ist - es enthält jedoch auch (das erste) Unity. So wie:

  • Einige Applets basieren auf (oder legen eine) bonobo/ CORBASchnittstelle offen (in Python über gnomeapplet). Diese, wie invest-appletoder brightness-applet, können die oben genannte Technik verwenden, um in ihrem eigenen Fenster angehoben zu werden - und können über libbonobo2-binWerkzeuge (wie activation-client) abgefragt werden.
  • andere Applets wie stickynotesz. B. wurden in Richtung GSettings / DBUS-Basis (Schnittstelle) migriert.

In der Tat stickynotesmigriert von bonobobis dbuskurz vor Natty herauskam (in der Revision Port auf neue libpanel-Applet-API ); Dies wird durch das Ersetzen des PANEL_APPLET_BONOBO_FACTORYMakros durch deutlich PANEL_APPLET_OUT_PROCESS_FACTORY. Wenn man die letzte Version von stickynotesbasierend auf überprüft und erstellt, sollte man wahrscheinlich bonoboauch in der Lage sein, das Applet in einem separaten Fenster zu instanziieren und von dort aus auszuführen, auch ohne gnome-panel.

Ich hätte sonst geglaubt, dass alle Applets (oder besser gesagt Applet-Entwicklungs-Frameworks) die Fähigkeit haben sollten, in einem separaten Fenster wie diesem ausgeführt zu werden - wenn nicht aus einem anderen Grund, um das Debuggen von Applets während der Entwicklung zu erleichtern. Und da einige Applets über Befehlszeilenschalter verfügen, die in einem separaten Fenster ausgeführt werden können (sowohl die oben stehende "Anfängeranleitung" als auch invest-appletsolche Schalter), hoffte ich, dass sie möglicherweise auch stickynotessolche Befehlszeilenargumente enthalten. Ich habe jedoch die Quelldateien durchsucht - und leider kann ich keine Erwähnung von Befehlszeilenoptionen finden.

Aber dann fragte ich mich - warum diese Migration? Nun, es liegt daran bonobo, dass es schon eine Weile veraltet ist (oder eher ist):

AppletsDbusMigration - GNOME Live! : (2009)

Gnome Panel hat die libbonobo-Abhängigkeit kürzlich gelöscht (siehe Fehler # 572131 ).

gnome-devel-list mailing list - Was ersetzt bonobo? (2009)

Dbus ist kein direkter Ersatz für Bonobo. Es gibt keinen genauen Ersatz für Bonobo als solches.
...
Der Hauptanwendungsfall von Bonobo, bei dem eine Anwendung in eine andere eingebettet wird (z. B. Minenräumer in gnumerischer Sprache oder (etwas nützlicher) ein Diagramm in gnumerischer Sprache), wird jedoch nur selten verwendet.

Mailingliste für Gnome-Komponenten 'Re: Was wird Bonobo ersetzen?' (2005)

> Über DBUS ist es schwer zu sagen, dass es eines Tages ersetzt wird.
> Das erste Problem ist, dass es sich nicht um ein Komponentensystem handelt, sondern nur um eine API zur Nachrichtenübermittlung.
Vertrauen Sie mir, es gibt definitiv Pläne, einen IDL-Compiler zu implementieren, um RPC im CORBA-Stil zusätzlich zu D-BUS-Nachrichten zu imitieren. Es wird früher oder später passieren.

Nun, shucks - ich selbst denke, das "Einbetten einer Anwendung in eine andere" war in diesem Fall sehr nützlich - um (zumindest einige) Applets in Unity auszuführen, wobei die Unterstützung für sie entfernt wurde. :)Natürlich war es mehr oder weniger ein " Glückliche "Anordnung von Desktop-Paketen in Natty, die dies ermöglichten (vorausgesetzt, es ist immer noch Gnome 2 und verfügt immer noch über die bonoboBibliotheken) - offensichtlich wurden spätere Versionen, die auf Gnome 3 basieren, bonobovollständig entfernt - und das obige Python-Skript-Instanziierungs-In -a-Fenster-Technik wird dort definitiv nicht funktionieren:/

Die letzte Frage lautet: Könnten wir in ähnlicher Weise ein Python-Skript verwenden, jedoch mit Bindungen für dbus, um etwas Ähnliches wie das oben beschriebene bonoboSkript zu erreichen?

Am nächsten daran bin ich mit dem Skript gtk_dbus_applet_widget.py. Dieses Skript löst jedoch kein Applet in einem Fenster aus - und kann der Leiste nicht einmal ein Applet hinzufügen! Das einzige, was es tun kann, ist, mit dem Applet "factory" über zu sprechen dbusund es anzuweisen, ein Applet zu erstellen. Aber dieses Applet bleibt einfach als Daten irgendwo im Dateisystem ( und es bleibt über Neustarts hinweg bestehen! ) und wird nie als Gnome-Widget instanziiert ... Und angesichts der obigen Kommentare bezweifle ich, dass so etwas derzeit ist (na ja, bei Natty unter am wenigsten möglich mit dbus.

Fazit: Ich denke, dies gnome-panelerschöpft zusammen mit der Technik die Möglichkeiten, Applets unter Unity in Natty leichtfertig auszuführen.


2

Rhinote hat Tastaturkürzel


Vielen Dank für den Vorschlag, @ aking1012 - Ich war mehr an dem Prinzip interessiert, relativ einfache Gnome-Applets unter Unity
auszuführen

1
Wenn Sie Applets möchten, deaktivieren Sie die Einheit, auf die hier verwiesen wird
RobotHumans

Danke für den netten Link, @ aking1012! Grundsätzlich gehe ich jedoch von der Annahme aus, dass Gnome-Applets am Ende ein Gnome-Fenster anzeigen - und ein einfaches Gnome-Fenster sollte (glaube ich) auch unter Unity ausgeführt werden :) Also, im Wesentlichen ist alles, was ich verlange Eine Möglichkeit, den 'Fenster'-Teil der' Anwendung 'auszuführen - alle Arten von Symbol- / Ereignis-Hooking zu umgehen, die der Applet-Architektur inhärent sind (was meiner Meinung nach für Dinge wie Stickynotes möglich ist -, aber offensichtlich nicht für beispielsweise das System Applet überwachen). Nochmals vielen Dank für den Kommentar - Prost!
Sdaau

0

Für diejenigen, die noch nach einer ähnlichen, praktischen und unterstützenden Funktion für die Notizkategorie suchen, gibt es Indikator-Haftnotizen.

Installation:

sudo add-apt-repository ppa:umang/indicator-stickynotes

sudo apt-get update

sudo apt-get install indicator-stickynotes

Hoffe es wird helfen ... Viel Spaß!


Quelle: techandtux.wordpress.com/2013/10/26/… NB: Website auf Französisch.
SAdATT
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.