¿Puedo aplicar un tema GTK3 diferente del principal a una aplicación individual?

46

Por ejemplo, ¿puedo mantener Ambiance como tema principal pero asignar un tema elemental a la aplicación de elementary?

Rossi
fuente
8
Las respuestas actuales ara sobre Gtk2, estoy preguntando sobre Gtk3.
neonboy
Edité la pregunta para reflejar mejor lo que buscas. Lo siento, pero la respuesta breve de mi investigación es no , no puedes hacerlo sin tener que gastar un poco de esfuerzo creando un nuevo tema "híbrido" como explicó @Kush :( Ya no es tan simple como GTK2.
ish

Respuestas:

32

Puede usar la variable de entorno GTK GTK_THEME=elementarypara iniciar una aplicación con el tema elemental. Por ejemplo, al ejecutar GTK_THEME=elementary pantheon-filesse iniciará la aplicación de archivos elementales usando el tema elemental GTK.

Para que esto se aplique cada vez que inicie una aplicación específica, es probable que su mejor opción sea crear un archivo .desktop personalizado (iniciador).

Crear un archivo .desktop personalizado

  1. Abre tu buscador de archivos
  2. Navegar a /usr/share/applications/
  3. Copie el iniciador (resaltado y Ctrl + C) para la aplicación que desea iniciar con el tema elemental
  4. Navega ~/.local/share/applications/y pega el iniciador (Ctrl + V)
  5. Haga clic derecho y abra el iniciador con un editor de texto
  6. Modifique la línea comenzando Exec=por incluir Exec=env GTK_THEME=elementaryy luego el contenido existente anterior de la línea. (Entonces Exec=pantheon-filesse convertiría Exec=env GTK_THEME=elementary pantheon-files)
  7. Guarde y cierre el archivo

La próxima vez que inicie la aplicación desde Unity (o el iniciador de su elección) usará el tema elemental.

Bonificación: haz que funcione cuando uses la línea de comando

También es posible que desee que la aplicación se inicie con el tema elemental cuando se inicie desde la línea de comandos. Para hacerlo:

  1. Abre tu aplicación de Terminal
  2. Tipo alias pantheon-files="GTK_THEME=elementary pantheon-files"(reemplazando pantheon-filescon la aplicación deseada)
  3. Presione Entrar

Advertencias:

  1. Esto no cambiará el tema de su administrador de ventanas al tema elemental.
  2. Esto (por diseño) solo se aplicará a su cuenta, no a la raíz ni a ninguna otra persona en la máquina.
  3. Los nombres de los temas son cAsE-sEnsItiVe y deben coincidir con el nombre de la carpeta del tema.

Fuentes:

  1. Soy un contribuyente elemental;)
  2. GTK + 3 Reference Manual: Ejecución de aplicaciones GTK +
  3. Establecer variable en archivo .desktop
Cassidy James
fuente
Buena respuesta, pero no puedo hacer que esto funcione para ningún tema. ¿Puedes dar un ejemplo usando terminal find /usr/share/themes -type d -name 'gtk-3.0' | awk -F'/' '{print $5}'y geditcon fines de demostración? Por ejemplo, GTK_THEME="HighContrast" gedito env GTK_THEME="HighContrast" gedito GTK_THEME=Adwaita:dark gedit... nada.
Redsandro
Lo acabo de cambiar /usr/share/applications/<appname>.desktopy funcionó para mí.
Drew Chapin el
¿Alguna forma de hacer esto desde el código dentro de la aplicación?
Anony-Mousse
1
Vale la pena señalar que los nombres de los temas distinguen entre mayúsculas y minúsculas.
Cedric Reichenbach
Esto funciona para algunas aplicaciones pero no para todas.
10

La pregunta sigue siendo válida y encontré una manera:

  • crear cualquier carpeta path/to/MY_FOLDER
  • crear una /share/themes/carpeta dentro de ella (es decir path/to/MY_FOLDER/share/themes).
  • poner cualquier tema GTK3 dentro de este último
  • cambie el nombre del tema al nombre del TEMA ACTUALMENTE ACTIVO.

    Por fin, este comando hará que una aplicación use el tema renombrado en lugar del actualmente activo:

GTK_DATA_PREFIX=path/to/MY_FOLDER YOUR_APPLICATON

(La ruta posterior GTK_DATA_PREFIX=debe ser esa ( y solo eso ) a la carpeta que contiene /share/themes/RENAMED_THEME . Es por eso que NO es path/to/MY_FOLDER/share/themes/RENAMED_THEME , sino simplemente path/to/MY_FOLDER).

Para tener eso dentro de un lanzador, reemplácelo en consecuencia:

Exec=sh -c 'GTK_DATA_PREFIX=path/to/MY_FOLDER YOUR_APPLICATION'
Tsu Jan
fuente
1
Ahora esto realmente funciona incluso con Eclipse, a diferencia de las otras respuestas que probé.
Ruslan
2
¿ Qué archivo / carpeta apuntamos exactamente al uso GTK_DATA_PREFIX?
runDOSrun
1
Esto fue bastante confuso, pero lo descubrí y edité la respuesta.
Otra forma es poner el tema renombrado específico de la aplicación ~/.themes(el activo actual debe estar en /usr/share/themes) y luego usar alguna ruta GTK_DATA_PREFIX=path/to/nowhere para iniciar esa aplicación, que restablecerá el tema de la aplicación al actual, solo se verá primero ~/.themesy tomará el que tiene el mismo nombre allí.
1
@runDOSrun: la ruta posterior GTK_DATA_PREFIX=debe ser esa ( y solo eso ) a la carpeta que contiene /share/themes/RENAMED_THEME . Es por eso que NO FOLDER/share/themes/RENAMED_THEME , sino solo FOLDER.
8

Es ciertamente posible, no tengo mucha experiencia en temas, pero cuando navegas al /usr/share/themes/*Theme Name*/gtk-3.0/apps/directorio, encontrarás .cssarchivos, nombrados con aplicaciones que apuntan al tema, así que sí, puedes crear Temas específicos de la aplicación.

Tenga en cuenta que la forma en que mencionó el tema de sus aplicaciones puede requerir cierto trabajo (como hacer que Ambiance y Elementary trabajen simultáneamente, ya que cada tema tiene un archivo base además del estilo específico de la aplicación que se realiza, (un archivo gtkrcen Gtk 2.0) mientras, un archivo gtk.cssen caso de Gtk3.0 ).

Y este archivo de tema base contiene reglas de estilo que se dirigen específicamente al tema dado, por lo tanto, no puede crear una apariencia Elemental a partir del archivo de tema base de Ambiance sin hacer algunos cambios pesados, e incluso si lo hace, perderá la apariencia de Ambiance.

Además, en GNOME, es posible tener sólo un solo tema aplicado a la vez, por ejemplo, si ha utilizado la ventana Apariencia en Ubuntu 12.04, usted sabe puede puede seleccionar cualquier tema único en el menú desplegable, en caso de que haya utilizado gnome-tweak-tool, que puede configurar diferentes temas, para Gtk, marcos de ventana e íconos, pero aún así, no permite apuntar aplicaciones específicas al tema, por lo que, como dije antes, puede configurar temas totalmente diferentes para diferentes aplicaciones si trabaja inteligentemente con archivo de tema base, a partir de ahora, ninguna aplicación de terceros puede hacerlo por sí mismo.

Una forma en que puede hacerlo usted mismo es que, deje que el archivo de tema base ( gtk.css) tenga solo reglas esenciales que sean neutrales para cualquier tema, ya sea oscuro o claro. Y tenga el diseño del tema real escrito en archivos específicos de la aplicación que residen en el directorio mencionado anteriormente, es decir, para diseñar Nautilus, puede escribir todas las propiedades requeridas en el nautilus.cssarchivo. Lo mismo con todas las aplicaciones que deseas apuntar. Obviamente, hacer eso requiere una experiencia decente de tema Gtk.

Puede consultar esto para crear su propio tema usando la plantilla. También hay una documentación decente sobre el tema Gtk +.

Kushal
fuente
77
No quiero crear un nuevo tema, quiero asignar uno existente.
neonboy
@neonboy: Como dije que con GTK3, no es tan simple, un tema se distribuye en varios archivos, y si no se satisfacen las dependencias, todo lo que obtendrá será un tema roto. Es por eso que publiqué la respuesta que muestra una posible solución con GTK3, y no con GTK2 (en la que hacer esto es bastante más fácil).
Kushal
6

Sí, la manera simple es apuntar la aplicación a la ruta requerida donde vive su archivo rc, en el comando que ejecuta su aplicación:

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

Esto en 12.04 para inkscape (que todavía es Gnome2 por cierto) produce esto:

ventana de inkscape con tema de windows

Ver más información sobre Gtk2 tema recurrente aquí .

Martin Owens -doctormo-
fuente
77
La pregunta es sobre Gtk3 no Gtk2, gracias.
neonboy
No especificó eso en su pregunta original. Por favor, no antagonice a los interrogadores.
Martin Owens -doctormo-
55
Originalmente era "¿Puedo usar diferentes temas GTK3 para aplicaciones individuales?" que todavía tenía el tema Gtk3 en la pregunta, luego foss freedom, pídeme que comente sobre respuestas no válidas y edite la pregunta si fuera necesario, no estoy en contra de nadie.
neonboy
1

Sí puedes, en realidad busqué en Google y obtuve algunas respuestas:

  1. Busque el ejecutable exacto para el programa que desea cambiar el tema. Por ejemplo, si lo desea para la oficina, escriba which oofficeel terminal.
  2. Busque la carpeta bin donde todas las aplicaciones colocan sus ejecutables binarios. Escriba echo $PATHla terminal y obtendrá la ruta. Le recomiendo que cree una carpeta bin en su directorio de inicio escribiendomkdir ~/bin
  3. Escriba gedit ~/.bashrcpara abrir su archivo bash rc.
  4. Ir al final de este archivo y agregar esta línea export PATH=~/bin:${PATH}

Ahora crearemos un script que ejecutará su programa con un tema personalizado:

  1. Cree el archivo de script de la aplicación escribiendo: gedit ~/bin/ooffice
  2. Escriba estas líneas en el archivo abierto:

    #!/bin/bash
    env GTK2_RC_FILES=/usr/share/themes/SlicknessX/gtk-2.0/gtkrc /usr/bin/ooffice "$@"
    
  3. Cambiar el modo del archivo ejecutable a escribiendo: chmod +x ~/bin/ooffice.

Espero que esto ayude, debe recordar solo una cosa, el formato del script como se muestra a continuación:

#!/bin/bash
env GTK2_RC_FILES=PATH_TO_GTKRC PATH_TO_EXECUTABLE "$@"
Ravi Raj
fuente
Ciertamente, es posible que las aplicaciones GTK2 utilicen GTK2_RC_FILES env. variable. Además, ¿de qué temas estás hablando de compilar? La pregunta es sobre los temas GTK de todo el sistema disponibles en Ubuntu.
ish
1
Creo que el método que mencionó apunta a Gtk2.0, mientras que Ubuntu 12.04 usa Gtk3.0 para los temas, por lo que si no funciona.
Kushal
66
Lo siento, esa es una solución para Gtk2, la pregunta es sobre Gtk3.
neonboy 01 de