Puis-je appliquer un thème GTK3 différent du thème principal à une application individuelle?

46

Par exemple, puis-je conserver Ambiance comme thème principal mais affecter un thème élémentaire à l'application de l'élémentaire?

Rossi
la source
8
Les réponses actuelles à propos de Gtk2, je demande à propos de Gtk3.
neonboy
J'ai modifié la question pour mieux refléter ce que vous recherchez. Désolé, mais la réponse courte de mes recherches est pas , vous ne pouvez pas sans avoir à dépenser un peu d' effort de créer un nouveau thème « hybride » comme @Kush expliqué :( Il est pas aussi simple que GTK2 plus.
ish

Réponses:

32

Vous pouvez utiliser la variable d'environnement GTK GTK_THEME=elementarypour lancer une application avec le thème élémentaire. Par exemple, l'exécution GTK_THEME=elementary pantheon-fileslancera l'application élémentaire Fichiers en utilisant le thème élémentaire GTK.

Pour que cela s'applique chaque fois que vous lancez une application spécifique, votre meilleure option est probablement de créer un fichier .desktop personnalisé (lanceur).

Créer un fichier .desktop personnalisé

  1. Ouvrez votre navigateur de fichiers
  2. Aller vers /usr/share/applications/
  3. Copiez le lanceur (surbrillance et Ctrl + C) pour l'application que vous souhaitez lancer avec le thème élémentaire
  4. Accédez au ~/.local/share/applications/lanceur et collez-le (Ctrl + V)
  5. Faites un clic droit et ouvrez le lanceur avec un éditeur de texte
  6. Modifiez la ligne en commençant par Exec=inclure Exec=env GTK_THEME=elementarypuis le contenu précédent de la ligne. (Ainsi Exec=pantheon-filesdeviendrait Exec=env GTK_THEME=elementary pantheon-files)
  7. Enregistrez et fermez le fichier

La prochaine fois que vous lancerez l'application depuis Unity (ou le lanceur de votre choix), elle utilisera le thème élémentaire.

Bonus: le faire fonctionner en ligne de commande

Vous pouvez également souhaiter que l'application se lance avec le thème élémentaire lors du lancement à partir de la ligne de commande. Faire cela:

  1. Ouvrez votre application Terminal
  2. Type alias pantheon-files="GTK_THEME=elementary pantheon-files"(en remplaçant pantheon-filespar l'application souhaitée)
  3. appuyez sur Entrée

Mises en garde:

  1. Cela ne changera pas le thème de votre gestionnaire de fenêtres au thème élémentaire.
  2. Ceci (par conception) ne s'appliquera qu'à votre compte, pas à root ni à quiconque sur la machine.
  3. Les noms de thème sont cAsE-sEnsItiVe et doivent correspondre au nom de dossier du thème.

Sources:

  1. Je suis un contributeur élémentaire;)
  2. Manuel de référence GTK + 3: Exécution d'applications GTK +
  3. Définir la variable dans le fichier .desktop
Cassidy James
la source
Bonne réponse, mais je ne peux pas que cela fonctionne pour aucun thème. Pouvez-vous donner un exemple en utilisant un terminal find /usr/share/themes -type d -name 'gtk-3.0' | awk -F'/' '{print $5}'et gedità des fins de démonstration? Par exemple GTK_THEME="HighContrast" geditou env GTK_THEME="HighContrast" geditou GTK_THEME=Adwaita:dark gedit... rien.
Redsandro
Je viens de le changer /usr/share/applications/<appname>.desktopet cela a fonctionné pour moi.
Drew Chapin
Avez-vous un moyen de le faire à partir du code contenu dans l'application?
Anony-Mousse
1
Il est à noter que les noms de thèmes sont sensibles à la casse.
Cedric Reichenbach
Cela fonctionne pour certaines applications mais pas pour tous.
10

La question est toujours valable et j'ai trouvé un moyen:

  • créer n'importe quel dossier path/to/MY_FOLDER
  • créer un /share/themes/dossier à l'intérieur (c'est-à-dire path/to/MY_FOLDER/share/themes).
  • mettre n'importe quel thème GTK3 dans ce dernier
  • renommez le thème avec le nom du THEME ACTUELLEMENT ACTIF.

    Enfin, cette commande obligera une application à utiliser le thème renommé au lieu du thème actif:

GTK_DATA_PREFIX=path/to/MY_FOLDER YOUR_APPLICATON

(Le chemin après GTK_DATA_PREFIX=doit être que ( et seulement cela ) dans le dossier qui contient /share/themes/RENAMED_THEME . C'est pourquoi ce n'est PAS path/to/MY_FOLDER/share/themes/RENAMED_THEME , mais juste path/to/MY_FOLDER.)

Pour avoir cela dans un lanceur, remplacez en conséquence:

Exec=sh -c 'GTK_DATA_PREFIX=path/to/MY_FOLDER YOUR_APPLICATION'
Tsu Jan
la source
1
Maintenant, cela fonctionne même avec Eclipse, contrairement aux autres réponses que j'ai essayées.
Ruslan
2
quel fichier / dossier voulons-nous utiliser exactementGTK_DATA_PREFIX ?
runDOSrun
1
C'était assez déroutant, mais je l'ai compris et modifié la réponse.
Une autre façon est de mettre le thème renommé spécifique à l'application dans ~/.themes(l'a actuellement actif à être /usr/share/themes) et ensuite utiliser un certain chemin GTK_DATA_PREFIX=path/to/nowhere pour lancer cette application, qui réinitialisera le thème de l' application à l'actuel, seulement il regardera d' abord dans ~/.themeset prendre celui avec le même nom là-bas.
1
@runDOSrun - le chemin après GTK_DATA_PREFIX=doit être celui ( et seulement celui-là ) du dossier qui contient /share/themes/RENAMED_THEME . C'est pourquoi ce n'est pas FOLDER/share/themes/RENAMED_THEME , mais juste FOLDER.
8

C'est certainement possible, je n'ai pas beaucoup d'expérience en matière de thème, mais lorsque vous accédez à un /usr/share/themes/*Theme Name*/gtk-3.0/apps/répertoire, vous trouvez des .cssfichiers, nommés avec les applications qu'ils ciblent, ainsi vous pouvez créer des thèmes spécifiques à chaque application.

Notez que la façon dont vous avez mentionné le thème de vos applications peut nécessiter du travail (comme avoir simultanément Ambiance et Elémentaire, car chaque thème a un fichier de base sur lequel un style spécifique est appliqué, (un fichier gtkrcdans Gtk 2.0). tandis que, un fichier gtk.cssdans le cas de Gtk3.0 ).

Et ce fichier de thème de base contient des règles de style qui ciblent spécifiquement le thème donné. Par conséquent, vous ne pouvez pas créer un élément similaire à Elementary à partir du fichier de thème de base d'Ambiance sans apporter de modifications lourdes. Même si vous le faites, vous perdrez l'apparence d'Ambiance.

En outre, dans GNOME, il est possible d'avoir qu'un seul thème appliqué à la fois, par exemple, si vous avez utilisé la fenêtre Apparence dans Ubuntu 12.04, vous savez peut peut sélectionner un thème unique dans le menu déroulant, au cas où vous avez utilisé gnome-tweak-tool, que vous pouvez définir différents thèmes, pour Gtk, des cadres de fenêtre et des icônes, mais cela ne permet toujours pas de cibler des applications spécifiques sur un thème. Par conséquent, comme je l'ai dit précédemment, vous pouvez définir des thèmes totalement différents pour différentes applications si vous travaillez intelligemment. fichier de thème de base, à partir de maintenant, aucune application tierce ne peut le faire par elle-même.

Une façon de le faire vous-même est de laisser le fichier de thème de base ( gtk.css) n'avoir que des règles essentielles neutres par rapport à tout thème, qu'il soit sombre ou clair. Et faites en sorte que la conception du thème soit écrite dans des fichiers spécifiques à l’application qui se trouvent dans le répertoire mentionné ci-dessus, c’est-à-dire que, pour le style de Nautilus, vous pouvez écrire toutes les propriétés requises dans un nautilus.cssfichier. Même avec chaque application que vous souhaitez cibler. De toute évidence, cela nécessite une expérience de thématisation décente de Gtk.

Vous pouvez consulter ce pour créer votre propre thème en utilisant le modèle, il y a aussi une bonne documentation sur Gtk + themeing.

Kushal
la source
7
Je ne veux pas créer un nouveau thème, je veux assigner un thème existant.
Neonboy
@neonboy: Comme je l'ai dit avec GTK3, ce n'est pas si simple, un thème est distribué sur plusieurs fichiers, et si les dépendances ne sont pas satisfaites, un thème brisé est tout ce que vous aurez. C'est pourquoi j'ai posté la réponse qui montre une solution possible avec GTK3, et non pas GTK2 (dans laquelle c'est assez facile).
Kushal le
6

Oui, le moyen le plus simple est de pointer l'application sur le chemin requis où réside votre fichier rc, dans la commande qui exécute votre application:

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

Ceci sur 12.04 pour inkscape (qui est toujours Gnome2 btw) produit ceci:

fenêtre d'Inkscape avec le thème Windows

Voir plus d'informations sur le thème Gtk2 en cours d'exécution ici .

Martin Owens -doctormo-
la source
7
La question concerne Gtk3 et non Gtk2, merci.
Neonboy
Vous ne l'avez pas précisé dans votre question initiale. S'il vous plaît ne contrariez pas les questionneurs.
Martin Owens -doctormo-
5
À l'origine, il s'agissait de "Puis-je utiliser différents thèmes GTK3 pour des applications individuelles?" Gtk3 avait encore un sujet dans la question, puis foss freedom me demande de commenter les réponses non valides et de modifier la question si elle était nécessaire, je ne contrarie personne.
Neonboy
1

Oui vous pouvez, en fait j'ai googlé et obtenu quelques réponses:

  1. Recherchez l'exécutable exact du programme dont vous souhaitez modifier le thème. Par exemple, si vous le souhaitez pour le bureau, tapez which oofficele terminal.
  2. Recherchez le dossier bin où toutes les applications placent leurs exécutables binaires. Tapez echo $PATHle terminal et vous verrez le chemin. Je vous recommande de créer un dossier bin dans votre répertoire personnel en tapantmkdir ~/bin
  3. Tapez gedit ~/.bashrcpour ouvrir votre fichier rc bash.
  4. Allez au bas de ce fichier et ajoutez cette ligne export PATH=~/bin:${PATH}

Nous allons maintenant créer un script qui exécutera votre programme avec un thème personnalisé:

  1. Créez le fichier de script de l'application en tapant: gedit ~/bin/ooffice
  2. Tapez ces lignes dans le fichier ouvert:

    #!/bin/bash
    env GTK2_RC_FILES=/usr/share/themes/SlicknessX/gtk-2.0/gtkrc /usr/bin/ooffice "$@"
    
  3. Changer le mode du fichier exécutable pour en tapant: chmod +x ~/bin/ooffice.

J'espère que cela vous aidera, vous ne devez vous rappeler qu'une chose, le format du script, comme indiqué ci-dessous:

#!/bin/bash
env GTK2_RC_FILES=PATH_TO_GTKRC PATH_TO_EXECUTABLE "$@"
Ravi Raj
la source
C'est certainement possible pour les applications GTK2 utilisant GTK2_RC_FILES env. variable. Aussi, quels thèmes parlez-vous de la compilation? La question concerne les thèmes GTK disponibles dans Ubuntu à l’échelle du système.
Ish
1
Je crois que la méthode que vous avez mentionnée cible Gtk2.0 alors que Ubuntu 12.04 utilise Gtk3.0 pour les thèmes, donc if pourrait ne pas fonctionner.
Kushal
6
Je suis désolé, c'est une solution pour Gtk2, la question concerne Gtk3.
neonboy