Posso applicare un tema GTK3 diverso da quello principale a una singola applicazione?


46

Ad esempio, posso mantenere Ambiance come tema principale ma assegnare un tema elementare all'app elementare?


8
Risposte attuali su Gtk2, chiedo di Gtk3.
Neonboy,

Ho modificato la domanda per riflettere meglio ciò che cerchi. Siamo spiacenti, ma la risposta breve della mia ricerca è no , non puoi fare a meno di dedicare qualche sforzo alla creazione di un nuovo tema "ibrido" come ha spiegato @Kush :( Non è più così semplice come GTK2.
Ish

Risposte:


32

Puoi utilizzare la variabile d'ambiente GTK GTK_THEME=elementaryper avviare un'app con il tema elementare. Ad esempio, l'esecuzione GTK_THEME=elementary pantheon-filesavvierà l'app File elementare usando il tema GTK elementare.

Per fare in modo che si applichi ogni volta che avvii un'app specifica, è probabile che l'opzione migliore crei un file .desktop personalizzato (launcher).

Crea un file .desktop personalizzato

  1. Apri il tuo browser di file
  2. Navigare verso /usr/share/applications/
  3. Copia il programma di avvio (evidenziazione e Ctrl + C) per l'app che desideri avviare con il tema elementare
  4. Passare a ~/.local/share/applications/e incollare il programma di avvio (Ctrl + V)
  5. Fare clic con il tasto destro del mouse e aprire il programma di avvio con un editor di testo
  6. Modifica la riga che inizia con Exec=l'inclusione Exec=env GTK_THEME=elementarye quindi il contenuto esistente precedente della riga. (Così Exec=pantheon-filessarebbe diventato Exec=env GTK_THEME=elementary pantheon-files)
  7. Salva e chiudi il file

La prossima volta che avvierai l'app da Unity (o il tuo lanciatore di app preferito) userà il tema elementare.

Bonus: farlo funzionare quando si utilizza la riga di comando

Puoi anche avviare l'app con il tema elementare quando la avvii dalla riga di comando. Fare così:

  1. Apri l'app Terminale
  2. Digita alias pantheon-files="GTK_THEME=elementary pantheon-files"(sostituendo pantheon-filescon l'app desiderata)
  3. premere Invio

Avvertenze:

  1. Questo non cambierà il tema del tuo gestore di finestre nel tema elementare.
  2. Questo (di progettazione) si applicherà solo al tuo account, non a root o a chiunque altro sulla macchina.
  3. I nomi dei temi sono cAsE-sEnsItiVe e devono essere abbinati al nome della cartella dei temi.

fonti:

  1. Sono un collaboratore elementare;)
  2. Manuale di riferimento GTK + 3: Esecuzione di applicazioni GTK +
  3. Imposta la variabile nel file .desktop

Bella risposta ma non riesco a farlo funzionare per qualsiasi tema. Puoi fare un esempio usando il terminale find /usr/share/themes -type d -name 'gtk-3.0' | awk -F'/' '{print $5}'e geditper scopi dimostrativi? Ad esempio GTK_THEME="HighContrast" gedito env GTK_THEME="HighContrast" gedito GTK_THEME=Adwaita:dark gedit... niente.
Redsandro,

L'ho appena cambiato /usr/share/applications/<appname>.desktope ha funzionato per me.
Ha disegnato Chapin il

Un modo per farlo dal codice all'interno dell'app?
Anony-Mousse

1
Vale la pena notare che i nomi dei temi fanno distinzione tra maiuscole e minuscole.
Cedric Reichenbach il

Funziona con alcune app ma non per tutte.

10

La domanda è ancora valida e ho trovato un modo:

  • crea qualsiasi cartella path/to/MY_FOLDER
  • crea una /share/themes/cartella al suo interno (cioè path/to/MY_FOLDER/share/themes).
  • inserisci qualsiasi tema GTK3 all'interno di quest'ultimo
  • rinominare il tema con il nome del TEMA ATTUALMENTE ATTIVO.

    Alla fine, questo comando farà utilizzare un'app al tema rinominato anziché a quello attualmente attivo:

GTK_DATA_PREFIX=path/to/MY_FOLDER YOUR_APPLICATON

(Il percorso dopo GTK_DATA_PREFIX=deve essere quello ( e solo quello ) alla cartella che contiene /share/themes/RENAMED_THEME . Ecco perché NON è path/to/MY_FOLDER/share/themes/RENAMED_THEME , ma giusto path/to/MY_FOLDER.)

Per avere quello all'interno di un lanciatore, sostituire di conseguenza:

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

1
Ora questo funziona anche con Eclipse, a differenza delle altre risposte che ho provato.
Ruslan,

2
quale file / cartella intendiamo esattamente usare GTK_DATA_PREFIX?
eseguire DOSrun il

1
Questo è stato piuttosto confuso, ma l'ho capito e modificato la risposta.

Un altro modo è inserire il tema rinominato specifico dell'app ~/.themes(deve essere presente l'attuale attivo /usr/share/themes) e quindi utilizzare un percorso GTK_DATA_PREFIX=path/to/nowhere per avviare quell'app, che ripristinerà il tema dell'app a quello attuale, solo che guarderà per primo ~/.themese prenderà quello con lo stesso nome lì.

1
@runDOSrun - il percorso dopo GTK_DATA_PREFIX=deve essere quello ( e solo quello ) alla cartella che contiene /share/themes/RENAMED_THEME . Ecco perché NON lo è FOLDER/share/themes/RENAMED_THEME , ma solo FOLDER.

8

È certamente possibile, non ho molta esperienza con i temi, ma quando navighi nella /usr/share/themes/*Theme Name*/gtk-3.0/apps/directory, troverai i .cssfile, denominati con le app che hanno come target il tema, quindi sì puoi creare temi specifici per l'app.

Tieni presente che il modo in cui hai menzionato il tema delle tue app potrebbe richiedere un po 'di lavoro (come avere Ambiance e Elementary contemporaneamente, poiché ogni tema ha un file di base in cima al quale viene fatto lo stile specifico dell'app, (un file gtkrcin Gtk 2.0 mentre, un file gtk.cssnel caso di Gtk3.0 ).

E questo file di temi di base contiene regole di stile che hanno come target specifico il tema dato, quindi non è possibile creare un aspetto simile a Elementary dal file di temi di base di Ambiance senza apportare modifiche pesanti e, anche se lo fai, perderai lo stesso aspetto di Ambiance.

Inoltre, in GNOME, è possibile applicare solo un singolo tema alla volta, ad esempio, se hai utilizzato la finestra Aspetto in Ubuntu 12.04, sai che puoi selezionare qualsiasi singolo tema dal menu a discesa, nel caso in cui tu abbia usato gnome-tweak-tool, di puoi impostare temi diversi, per Gtk, cornici per finestre e icone, ma ancora, non consente di indirizzare applicazioni specifiche al tema, quindi, come ho detto prima, puoi impostare temi totalmente diversi per applicazioni diverse se lavori abilmente con file di temi di base, finora nessuna applicazione di terze parti può farlo da sola.

Un modo in cui puoi farlo da solo è che, lascia che il file del tema di base ( gtk.css) abbia solo regole essenziali che sono neutre rispetto a qualsiasi tema, che sia scuro o chiaro. E avere il disegno del tema effettivo scritto in file specifici dell'app che risiedono nella directory sopra menzionata, cioè per lo stile di Nautilus, è possibile scrivere tutte le proprietà richieste nel nautilus.cssfile. Lo stesso con ogni app che desideri scegliere come target. Ovviamente, fare questo richiede una discreta esperienza di temi Gtk.

Puoi fare riferimento a questo per creare il tuo tema usando il modello, inoltre c'è una buona documentazione sul tema Gtk +.


7
Non voglio creare un nuovo tema, voglio assegnarne uno esistente.
Neonboy,

@neonboy: Come ho detto che con GTK3, non è così semplice, un tema è distribuito su più file e se le dipendenze non sono soddisfatte, il tema spezzato è tutto ciò che otterrai. Ecco perché ho pubblicato la risposta che mostra la possibile soluzione con GTK3 e non GTK2 (in cui è abbastanza semplice farlo).
Kushal,

6

Sì, il modo semplice è di puntare l'applicazione sul percorso richiesto in cui risiede il tuo file rc, nel comando che esegue l'applicazione:

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

Questo su 12.04 per inkscape (che è ancora Gnome2 btw) produce questo:

finestra inkscape con tema windows

Vedi maggiori informazioni sul tema Gtk2 in esecuzione qui .


7
La domanda riguarda Gtk3 e non Gtk2, grazie.
Neonboy,

Non lo hai specificato nella domanda originale. Per favore, non antagonizzare i soggetti.
Martin Owens -doctormo-

5
Inizialmente era "Posso usare diversi temi GTK3 per singole app?" che era ancora oggetto di Gtk3 nella domanda, quindi la libertà del foss mi chiede di commentare risposte non valide e di modificare la domanda se fosse necessario, non sono in contrasto con nessuno.
Neonboy,

1

Sì, puoi, in realtà ho cercato su Google e ottenuto alcune risposte:

  1. Cercare l'eseguibile esatto per il programma che si desidera modificare il tema. Ad esempio, se lo si desidera per l'ufficio, digitare which oofficeil terminale.
  2. Cerca la cartella bin in cui tutte le applicazioni inseriscono i loro eseguibili binari. Digita echo $PATHil terminale e otterrai il percorso. Ti consiglio di creare una cartella bin nella tua home directory digitandomkdir ~/bin
  3. Digitare gedit ~/.bashrcper aprire il file rc bash.
  4. Vai in fondo a questo file e aggiungi questa riga export PATH=~/bin:${PATH}

Ora creeremo uno script che eseguirà il tuo programma con temi personalizzati:

  1. Crea il file di script dell'applicazione digitando: gedit ~/bin/ooffice
  2. Digita queste righe nel file aperto:

    #!/bin/bash
    env GTK2_RC_FILES=/usr/share/themes/SlicknessX/gtk-2.0/gtkrc /usr/bin/ooffice "$@"
    
  3. Modificare la modalità del file eseguibile digitando: chmod +x ~/bin/ooffice.

Spero che questo aiuti, devi ricordare solo una cosa, il formato dello script come mostrato di seguito:

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

È certamente possibile per le app GTK2 utilizzando GTK2_RC_FILES env. variabile. Inoltre, di quali temi stai parlando? La domanda riguarda i temi GTK a livello di sistema disponibili in Ubuntu.
ish,

1
Credo che il metodo che hai citato sia indirizzato a Gtk2.0 mentre Ubuntu 12.04 utilizza Gtk3.0 per i temi, quindi se potrebbe non funzionare.
Kushal,

6
Mi dispiace, questa è una soluzione per Gtk2, la domanda riguarda Gtk3.
Neonboy,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.