Kann ich ein anderes GTK3-Thema als das Hauptthema auf eine einzelne Anwendung anwenden?


46

Kann ich beispielsweise Ambiance als Hauptthema beibehalten, der App von elementary jedoch ein elementares Thema zuweisen?


8
Aktuelle Antworten ara über Gtk2, ich frage nach Gtk3.
Neonboy

Ich habe die Frage bearbeitet, um besser zu reflektieren, was Sie suchen. Sorry, aber die kurze Antwort aus meiner Forschung ist nicht , kann man nicht ohne einige Mühe zu verbringen , mit einem neuen „Hybrid“ Thema zu schaffen als @Kush erklärte :( Es ist nicht so einfach , wie GTK2 mehr.
ish

Antworten:


32

Sie können die GTK-Umgebungsvariable verwenden GTK_THEME=elementary, um eine App mit dem elementaren Thema zu starten. Wenn Sie beispielsweise ausführen, GTK_THEME=elementary pantheon-fileswird die elementare Datei-App unter Verwendung des elementaren GTK-Themas gestartet.

Damit dies bei jedem Start einer bestimmten App angewendet wird, erstellen Sie am besten eine benutzerdefinierte .desktop-Datei (Launcher).

Erstellen Sie eine benutzerdefinierte .desktop-Datei

  1. Öffnen Sie Ihren Dateibrowser
  2. Navigiere zu /usr/share/applications/
  3. Kopieren Sie den Launcher (Hervorheben und Strg + C) für die App, die Sie mit dem elementaren Thema starten möchten
  4. Navigiere zum ~/.local/share/applications/Launcher und füge ihn ein (Strg + V)
  5. Klicken Sie mit der rechten Maustaste und öffnen Sie den Launcher mit einem Texteditor
  6. Ändern Sie die Zeile beginnend mit Exec=, um Exec=env GTK_THEME=elementaryden vorherigen vorhandenen Inhalt der Zeile einzuschließen. (So Exec=pantheon-fileswürde es werden Exec=env GTK_THEME=elementary pantheon-files)
  7. Speichern und schließen Sie die Datei

Wenn Sie die App das nächste Mal über Unity (oder einen App-Starter Ihrer Wahl) starten, wird das elementare Thema verwendet.

Bonus: Lass es funktionieren, wenn du die Kommandozeile benutzt

Möglicherweise möchten Sie auch, dass die App mit dem elementaren Thema gestartet wird, wenn Sie sie über die Befehlszeile starten. Um dies zu tun:

  1. Öffnen Sie Ihre Terminal-App
  2. Typ alias pantheon-files="GTK_THEME=elementary pantheon-files"(durch pantheon-filesdie gewünschte App ersetzen )
  3. Drücken Sie Enter

Vorsichtsmaßnahmen:

  1. Dadurch wird das Thema Ihres Fenstermanagers nicht in das elementare Thema geändert.
  2. Dies gilt (beabsichtigt) nur für Ihr Konto, nicht für root oder andere Personen auf dem Computer.
  3. Die Themennamen sind cAsE-sEnsItiVe und sollten mit dem Namen des Themenordners übereinstimmen.

Quellen:

  1. Ich bin ein elementarer Mitwirkender;)
  2. GTK + 3-Referenzhandbuch: Ausführen von GTK + -Anwendungen
  3. Variable in der .desktop-Datei setzen

Nette Antwort, aber ich kann das nicht für ein Thema zum Laufen bringen. Können Sie ein Beispiel mit Terminal find /usr/share/themes -type d -name 'gtk-3.0' | awk -F'/' '{print $5}'und geditzu Demonstrationszwecken geben? ZB GTK_THEME="HighContrast" geditoder env GTK_THEME="HighContrast" geditoder GTK_THEME=Adwaita:dark gedit... nichts.
Redsandro

Ich habe es gerade geändert /usr/share/applications/<appname>.desktopund es hat bei mir funktioniert.
Drew Chapin

Gibt es eine Möglichkeit, dies aus dem Code in der App heraus zu tun?
Anony-Mousse

1
Es ist erwähnenswert, dass bei Themennamen zwischen Groß- und Kleinschreibung unterschieden wird.
Cedric Reichenbach

Dies funktioniert für einige Apps, jedoch nicht für alle.

10

Die Frage ist noch gültig und ich habe einen Weg gefunden:

  • Erstelle einen beliebigen Ordner path/to/MY_FOLDER
  • Erstellen Sie einen /share/themes/Ordner darin (das heißt path/to/MY_FOLDER/share/themes).
  • Setze ein beliebiges GTK3-Thema in das letztere
  • Benennen Sie das Thema auf den Namen des gerade aktiven THEMA.

    Mit diesem Befehl kann eine App das umbenannte Design anstelle des derzeit aktiven Designs verwenden:

GTK_DATA_PREFIX=path/to/MY_FOLDER YOUR_APPLICATON

(Der Pfad danach GTK_DATA_PREFIX=muss der ( und nur der ) zu dem Ordner sein, der enthält /share/themes/RENAMED_THEME . Deshalb ist es NICHT path/to/MY_FOLDER/share/themes/RENAMED_THEME , sondern nur path/to/MY_FOLDER.)

Um das in einem Launcher zu haben, ersetzen Sie entsprechend:

Exec=sh -c 'GTK_DATA_PREFIX=path/to/MY_FOLDER YOUR_APPLICATION'

1
Jetzt funktioniert das sogar mit Eclipse, im Gegensatz zu den anderen Antworten, die ich versucht habe.
Ruslan

2
Auf welche Datei / welchen Ordner weisen wir genau hin GTK_DATA_PREFIX?
runDOSrun

1
Das war ziemlich verwirrend, aber ich habe es herausgefunden und die Antwort bearbeitet.

Eine weitere Möglichkeit ist es, das App-spezifische umbenannte Thema zu setzen in ~/.themes(der Strom aktiv hat in sein /usr/share/themes) und dann einige Pfade verwenden , GTK_DATA_PREFIX=path/to/nowhere um diese App zu starten, die das App Thema zum aktuellen zurückgesetzt, es nur zuerst schauen ~/.themesund nehmen der mit dem gleichen Namen dort.

1
@runDOSrun - der Pfad danach GTK_DATA_PREFIX=muss der ( und nur der ) zu dem Ordner sein, der enthält /share/themes/RENAMED_THEME . Deshalb ist es nicht FOLDER/share/themes/RENAMED_THEME , sondern nur FOLDER.

8

Es ist sicherlich möglich, ich habe nicht viel Erfahrung mit Themes , aber wenn Sie zum /usr/share/themes/*Theme Name*/gtk-3.0/apps/Verzeichnis navigieren , werden Sie .cssDateien finden , die mit Apps benannt sind, die auf Themes abzielen, also können Sie app-spezifische Themes erstellen.

Beachten Sie, dass für die Art und Weise, wie Sie das Thema Ihrer Apps erwähnt haben, möglicherweise einige Arbeiten erforderlich sind (z. B. die gleichzeitige Ausführung von Ambiance und Elementary), da für jedes Thema eine Basisdatei vorhanden ist, auf der das app-spezifische Design erstellt wird (eine Datei gtkrcin Gtk 2.0) während, eine Datei gtk.cssim Fall von Gtk3.0 ).

Und diese Basis-Designdatei enthält Stilregeln, die speziell auf das jeweilige Thema zugeschnitten sind. Daher können Sie kein elementares Erscheinungsbild aus der Basis-Designdatei von Ambiance erstellen, ohne umfangreiche Änderungen vorzunehmen, und selbst wenn Sie dies tun, verlieren Sie das Erscheinungsbild von Ambiance.

Außerdem ist es in GNOME möglich, immer nur ein Thema gleichzeitig anzuwenden. Wenn Sie beispielsweise in Ubuntu 12.04 das Fenster "Darstellung" verwendet haben, können Sie ein beliebiges Thema aus der Dropdown-Liste auswählen, falls Sie es verwendet gnome-tweak-toolhaben Sie können verschiedene Themen für Gtk, Fensterrahmen und Symbole festlegen, aber es ist immer noch nicht möglich, bestimmte Anwendungen auf ein Thema auszurichten. Wie bereits erwähnt, können Sie für verschiedene Anwendungen ganz unterschiedliche Themen festlegen, wenn Sie geschickt damit arbeiten Basis-Theme-Datei, ab sofort können keine Anwendungen von Drittanbietern dies selbst tun.

Eine Möglichkeit, wie Sie es selbst tun können, besteht darin, dass die Basis-Themendatei ( gtk.css) nur wesentliche Regeln enthält, die für ein beliebiges Thema neutral sind und dunkel oder hell sind. Und lassen Sie das eigentliche Theme-Design in app-spezifischen Dateien schreiben, die sich im oben genannten Verzeichnis befinden. Für das Styling von Nautilus können Sie alle erforderlichen Eigenschaften in eine nautilus.cssDatei schreiben . Das Gleiche gilt für jede App, auf die Sie abzielen möchten. Offensichtlich erfordert dies einiges an Erfahrung mit Gtk-Themes.

Sie können dies für das Erstellen Ihres eigenen Themas mit Vorlage verweisen. Es gibt auch eine anständige Dokumentation zu Gtk + Themeing.


7
Ich möchte kein neues Thema erstellen, sondern ein vorhandenes zuweisen.
Neonboy

@neonboy: Wie gesagt, mit GTK3 ist es nicht so einfach, ein Thema wird über mehrere Dateien verteilt, und wenn die Abhängigkeiten nicht erfüllt sind, erhalten Sie nur ein defektes Thema. Aus diesem Grund habe ich die Antwort gepostet, die die mögliche Lösung mit GTK3 und nicht mit GTK2 zeigt (wobei dies ziemlich einfacher ist).
Kushal

5

Ja, die einfache Möglichkeit besteht darin, die Anwendung in dem Befehl, mit dem Ihre Anwendung ausgeführt wird, auf den erforderlichen Pfad zu verweisen, in dem sich Ihre RC-Datei befindet:

GTK2_RC_FILES=/usr/share/themes/Redmond/gtk-2.0/gtkrc inkscape

Dies am 12.04 für inkscape (das übrigens immer noch Gnome2 ist) erzeugt dies:

Inkscape-Fenster mit Windows-Thema

Sehen Sie weitere Informationen über Gtk2 Thema läuft hier .


7
Frage ist über Gtk3 nicht Gtk2, danke.
Neonboy

Das haben Sie in Ihrer ursprünglichen Frage nicht angegeben. Bitte keine Gegenrede zu den Fragestellern.
Martin Owens -doctormo-

5
Ursprünglich hieß es "Kann ich verschiedene GTK3-Themes für einzelne Apps verwenden?" wich hatte noch gtk3 thema in der frage, dann frage mich foss freedom, zu ungültigen antworten Stellung zu nehmen und die frage zu bearbeiten wenn es nötig ist, ich bin niemandem zuwider.
Neonboy

1

Ja das kannst du, eigentlich habe ich gegoogelt und ein paar Antworten bekommen:

  1. Suchen Sie nach der genauen ausführbaren Datei für das Programm, dessen Thema Sie ändern möchten. Wenn Sie es beispielsweise für ein Büro benötigen, geben Sie which oofficedas Terminal ein.
  2. Suchen Sie nach dem Ordner bin, in dem alle Anwendungen ihre ausführbaren Binärdateien ablegen. Tippen Sie echo $PATHdas Terminal ein und Sie werden den Pfad sehen. Ich empfehle Ihnen, einen bin-Ordner in Ihrem Home-Verzeichnis zu erstellen, indem Sie Folgendes eingebenmkdir ~/bin
  3. Geben Sie ein gedit ~/.bashrc, um Ihre Bash-RC-Datei zu öffnen.
  4. Gehen Sie zum Ende dieser Datei und fügen Sie diese Zeile hinzu export PATH=~/bin:${PATH}

Nun erstellen wir ein Skript, das Ihr Programm mit einem benutzerdefinierten Thema ausführt:

  1. Erstellen Sie die Skriptdatei der Anwendung, indem Sie Folgendes eingeben: gedit ~/bin/ooffice
  2. Geben Sie diese Zeilen in die geöffnete Datei ein:

    #!/bin/bash
    env GTK2_RC_FILES=/usr/share/themes/SlicknessX/gtk-2.0/gtkrc /usr/bin/ooffice "$@"
    
  3. Ändern Sie den Modus der Datei ausführbar durch Eingabe: chmod +x ~/bin/ooffice.

Hoffe das hilft, du musst dir nur eines merken, das Format des Skripts wie unten gezeigt:

#!/bin/bash
env GTK2_RC_FILES=PATH_TO_GTKRC PATH_TO_EXECUTABLE "$@"

Für GTK2-Apps ist dies mit GTK2_RC_FILES env durchaus möglich. Variable. Über welche Themen sprechen Sie auch beim Kompilieren? Die Frage bezieht sich auf systemweite GTK-Themen, die in Ubuntu verfügbar sind.
ish

1
Ich glaube, die Methode, die Sie erwähnt haben, zielt auf Gtk2.0 ab, während Ubuntu 12.04 Gtk3.0 für Themes verwendet.
Kushal

6
Es tut mir leid, das ist eine Lösung für Gtk2, die Frage betrifft Gtk3.
Neonboy
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.