Asıl olandan bir bireysel uygulamaya farklı bir GTK3 teması uygulayabilir miyim?


46

Örneğin, Ambiance'ı ana tema olarak tutabilir, ancak temel uygulamanın ilkine temayı atayabilir miyim?


8
Gtk2 ile ilgili güncel cevaplar, Gtk3 hakkında soruyorum.
neonboy

Aradığınızı daha iyi yansıtması için soruyu düzenledim. Maalesef ama benim araştırma Kısa cevap hayır sen @Kush açıklandığı gibi yeni bir "karma" temasını oluştururken biraz çaba harcamak zorunda kalmadan, olamaz :( O olmayacağım GTK2 artık olarak basit olarak.
imsi

Yanıtlar:


32

GTK ortam değişkenini GTK_THEME=elementary, temel temalı bir uygulama başlatmak için kullanabilirsiniz . Örneğin, koşu GTK_THEME=elementary pantheon-files, temel GTK temasını kullanarak temel Dosyalar uygulamasını başlatır.

Bunu belirli bir uygulamayı her başlatışınızda uygulamak için, en iyi seçeneğiniz özel bir .desktop dosyası (başlatıcı) oluşturmaktır.

Özel bir .desktop dosyası oluşturun

  1. Dosya tarayıcınızı açın
  2. Şu yöne rotayı ayarla /usr/share/applications/
  3. Temel tema ile başlatmak istediğiniz uygulama için başlatıcıyı (vurgulama ve Ctrl + C) kopyalayın
  4. ~/.local/share/applications/Başlatıcıya gidin ve yapıştırın (Ctrl + V)
  5. Başlatıcıya sağ tıklayın ve bir metin editörüyle açın
  6. İle başlayan hat değiştirme Exec=dahil etmek Exec=env GTK_THEME=elementaryve hattın bir önceki mevcut içeriği. (Böylece Exec=pantheon-filesolur Exec=env GTK_THEME=elementary pantheon-files)
  7. Dosyayı kaydedin ve kapatın

Uygulamayı Unity'den (veya tercih ettiğiniz uygulama başlatıcınızdan) bir sonraki başlatışınızda temel temayı kullanır.

Bonus: komut satırını kullanırken çalışmasını sağlayın

Ayrıca, uygulamanın komut satırından başlatırken temel temayla başlamasını da isteyebilirsiniz. Böyle yaparak:

  1. Terminal uygulamanızı açın
  2. Tür alias pantheon-files="GTK_THEME=elementary pantheon-files"( pantheon-filesistediğiniz uygulamayla değiştirme )
  3. Enter tuşuna basın

Uyarılar:

  1. Bu, pencere yöneticinizin temasını temel temayla değiştirmez.
  2. Bu (tasarım gereği) sadece hesabınız için geçerli olacaktır, root veya makinede bulunan herhangi biri.
  3. Tema isimleri cAsE-sEnsItiVe'dir ve tema klasör ismi ile eşleştirilmelidir.

Kaynaklar:

  1. Ben temel bir katılımcıyım;)
  2. GTK + 3 Referans Kılavuzu: GTK + Uygulamalarını Çalıştırma
  3. Değişken .desktop dosyasında ayarlayın

Güzel cevap ama bunun herhangi bir tema için çalışmasını sağlayamıyorum. Terminal kullanarak find /usr/share/themes -type d -name 'gtk-3.0' | awk -F'/' '{print $5}'ve geditgösteri amaçlı bir örnek verebilir misiniz ? Örneğin GTK_THEME="HighContrast" geditveya env GTK_THEME="HighContrast" geditveya GTK_THEME=Adwaita:dark gedit... hiçbir şey.
Redsandro

Sadece değiştirdim /usr/share/applications/<appname>.desktopve benim için çalıştı.
Drew Chapin

Bunu uygulamanın içindeki koddan yapmanın bir yolu var mı?
Anony-Mousse,

1
Tema adlarının büyük / küçük harfe duyarlı olduğunu belirtmekte fayda var.
Cedric Reichenbach

Bu, bazı uygulamalar için çalışır ancak herkes için değil.

10

Soru hala geçerli ve bir yolunu buldum:

  • herhangi bir klasör oluştur path/to/MY_FOLDER
  • /share/themes/içinde bir klasör yarat path/to/MY_FOLDER/share/themes.
  • herhangi bir GTK3 temasını ikincisinin içine koy
  • adlandırmak ANDA AKTİF THEME adının temasını.

    Sonunda, bu komut bir uygulamanın aktif olanın yerine yeniden adlandırılmış temayı kullanmasını sağlar:

GTK_DATA_PREFIX=path/to/MY_FOLDER YOUR_APPLICATON

(Sonrasındaki yol GTK_DATA_PREFIX=, ( ve yalnızca bu ) içerdiği klasöre ait olmalıdır /share/themes/RENAMED_THEME. Bu yüzden DEĞİL path/to/MY_FOLDER/share/themes/RENAMED_THEME , ama sadece path/to/MY_FOLDER.)

Bir başlatıcının içinde olması için, uygun şekilde değiştirin:

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

1
Şimdi bu aslında çalıştığım diğer cevapların aksine Eclipse ile bile çalışıyor.
Ruslan,

2
hangi dosya / klasörü tam olarak kullanacağımıza işaret ediyoruz GTK_DATA_PREFIX?
RunDOSrun

1
Bu oldukça kafa karıştırıcıydı, ancak çözdüm ve cevabı düzelttim.

Başka yolu da uygulamaya özgü adını tema koymaktır ~/.themes(olmak Geçerli etkin sahiptir /usr/share/themes) ve daha sonra bazı yolu kullanın GTK_DATA_PREFIX=path/to/nowhere sadece ilk bakacağız, şimdiki birine uygulaması tema sıfırlayacak söz konusu uygulamayı başlatmak için ~/.themesve take orada aynı adı taşıyan kişi.

1
@ runDOSrun - sonrasındaki yol , içeren klasöre GTK_DATA_PREFIX=( ve yalnızca o ) gelmelidir . Bu yüzden DEĞİL , ama sadece . /share/themes/RENAMED_THEME FOLDER/share/themes/RENAMED_THEMEFOLDER

8

Kesinlikle mümkün, çok fazla tema deneyimine sahip değilim, ancak /usr/share/themes/*Theme Name*/gtk-3.0/apps/dizine girdiğinizde , .csstemayı hedefleyen uygulamalarla adlandırılmış dosyaları bulursunuz , böylece evet, uygulamaya özel Temalar oluşturabilirsiniz.

Her tema uygulamaya özel stil yapılır hangi üstüne bir baz dosyası vardır beri uygulamalarınızın bazı çalışma gerektirebilir sen temasına belirtilen yolu (, aynı anda her iki Ambiance ve İlköğretim işi olması gibi (bir dosya sarf edilmesi gerektiğini ifade Not gtkrciçinde Gtk 2.0 iken, Gtk3.0gtk.css durumunda bir dosya ).

Ve bu temel tema dosyası, belirli temayı hedefleyen şekillendirme kurallarını içerir, bu nedenle Ambiance'ın temel tema dosyasından bazı ağır değişiklikler yapmadan İlkel görünüm ve his gibi hissedemezsiniz ve yapsanız bile, Ambiance'ın kendi görüntüsünü kaybedersiniz.

Ayrıca, GNOME'da, bir seferde yalnızca tek bir tema uygulamak mümkündür, Örneğin, Ubuntu 12.04'te Görünüm penceresini kullandıysanız gnome-tweak-tool, kullanmanız durumunda, açılır listeden herhangi bir tek temayı seçebileceğinizi biliyorsunuzdur. Gtk, Pencere çerçeveleri ve simgeler için farklı temalar belirleyebilirsiniz, ancak yine de, belirli uygulamaları temaya hedeflemenize izin vermez, bu nedenle daha önce de söylediğim gibi, akıllıca çalışırsanız farklı uygulamalar için tamamen farklı temalar ayarlayabilirsiniz. temel tema dosyası, şu an itibariyle, hiçbir üçüncü taraf uygulaması tarafından kendi başına yapamaz.

Bunu kendi başınıza yapmanın bir yolu, temel tema dosyasının ( gtk.css) yalnızca koyu veya açık olmak üzere herhangi bir temaya nötr olan temel kurallara sahip olmasına izin vermesidir. Ve asıl tema tasarımının yukarıda belirtilen dizinde yer alan uygulamaya özel dosyalarda yazılmasını sağlayın, örn. Nautilus'u şekillendirmek için gerekli tüm özellikleri nautilus.cssdosyaya yazabilirsiniz . Hedeflemek istediğiniz her uygulamayla aynı. Açıkçası, böyle bir şey yapmak, bazı iyi Gtk tema oluşturma deneyimini gerektiriyor.

Sen anlamlara gelebilir bu da iyi bir orada, şablonu kullanarak kendi temanızı oluşturmak için dokümantasyon GTK + themeing üzerinde.


7
Yeni bir tema oluşturmak istemiyorum, mevcut bir temayı atamak istiyorum.
neonboy

@neonboy: GTK3 ile dediğim gibi, bu kadar basit değil, bir temanın birden fazla dosyaya dağıtıldığı ve bağımlılıklar tatmin edilmezse, kırılan tema alacağınız tek şey. Bu nedenle GTK3 ile olası çözümü gösteren yanıtı verdim, GTK2'yi değil (bunu yapmak oldukça kolaydı).
Kushal,

5

Evet, basit yol, uygulamayı, rc dosyanızın yaşadığı gerekli yoldan, uygulamanızı çalıştıran komutta işaretlemektir:

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

Bu, inkscape (hala Gnome2 btw olan) için 12.04'te şunu üretir:

windows tema ile inkscape pencere

Burada çalışan Gtk2 teması hakkında daha fazla bilgi edinin .


7
Soru Gtk3 değil Gtk2 hakkında, teşekkürler.
neonboy

Bunu asıl sorunuzda belirtmediniz. Lütfen anketi kızdırmayın.
Martin Owens -doctormo-

5
Başlangıçta "Bireysel uygulamalar için farklı GTK3 temaları kullanabilir miyim?" hala soruda Gtk3 konusu vardı, sonra foss özgürlüğü benden geçerli olmayan cevaplar hakkında yorum yapmamı ve gerekirse soruyu düzenlememi istedi, kimseyi kızdırmam.
neonboy

1

Evet yapabilirsin, aslında googled ve bazı cevaplar aldım:

  1. Temayı değiştirmek istediğiniz program için tam olarak yürütülebilir dosyayı arayın. Mesela, eğer o kadar sıklık için istiyorsan which ooffice, terminali yaz.
  2. Tüm uygulamaların ikili çalıştırılabilir dosyalarını koydukları bin klasörünü arayın. Tip echo $PATHterminalde ve olacak ge yolu. Yazarak giriş dizininizde bir bin klasörü oluşturmanızı öneririm.mkdir ~/bin
  3. Tip gedit ~/.bashrcsizin bash rc dosyasını açmak için.
  4. Bu dosyanın altına git ve bu satırı ekle export PATH=~/bin:${PATH}

Şimdi programınızı özel temayla çalıştıracak bir script yaratacağız:

  1. Yazarak uygulamanın komut dosyasını oluşturun: gedit ~/bin/ooffice
  2. Açılan dosyaya bu satırları yazın:

    #!/bin/bash
    env GTK2_RC_FILES=/usr/share/themes/SlicknessX/gtk-2.0/gtkrc /usr/bin/ooffice "$@"
    
  3. Dosyanın modunu çalıştırılabilir olarak: ile yazarak değiştirin chmod +x ~/bin/ooffice.

Umarım bu yardımcı olur, yalnızca tek bir şeyi hatırlamanız gerekir, komut dosyasının biçimi aşağıda gösterilmiştir:

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

GTK2_RC_FILES env kullanarak GTK2 uygulamaları için kesinlikle mümkündür. değişken. Ayrıca, derleme hakkında hangi temalardan bahsediyorsun? Soru, Ubuntu'da bulunan sistem genelinde GTK temaları ile ilgilidir.
imsi

1
Bahsettiğiniz yöntem Gtk2.0'ı hedef alırken Ubuntu 12.04 temalar için Gtk3.0'ı kullanıyor, bu nedenle işe yaramayabilir.
Kushal

6
Üzgünüm, bu Gtk2 için bir çözüm, soru Gtk3 ile ilgili.
neonboy
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.