ฉันสามารถใช้ธีม GTK3 ที่แตกต่างจากธีมหลักกับแอปพลิเคชันแต่ละรายการได้หรือไม่


46

ตัวอย่างเช่นฉันสามารถทำให้บรรยากาศเป็นธีมหลัก แต่กำหนดธีมหลักให้กับแอปของประถมได้หรือไม่


8
คำตอบปัจจุบันเกี่ยวกับ Gtk2 ฉันกำลังถาม Gtk3
neonboy

ฉันแก้ไขคำถามเพื่อสะท้อนสิ่งที่คุณแสวงหาให้ดีขึ้น ขออภัย แต่คำตอบสั้น ๆ จากการวิจัยของฉันคือไม่คุณไม่ต้องใช้ความพยายามในการสร้างชุดรูปแบบ "ไฮบริด" ใหม่ตามที่ @Kush อธิบาย :( มันไม่ง่ายเหมือน GTK2 อีกต่อไปแล้ว
ish

คำตอบ:


32

คุณสามารถใช้ตัวแปรสภาพแวดล้อม GTK GTK_THEME=elementaryเพื่อเปิดแอพด้วยธีมพื้นฐาน ตัวอย่างเช่นการรันGTK_THEME=elementary pantheon-filesจะเปิดแอพไฟล์พื้นฐานโดยใช้ธีม GTK หลัก

ในการรับสิ่งนี้เพื่อใช้งานทุกครั้งที่คุณเปิดแอพเฉพาะตัวเลือกที่ดีที่สุดของคุณมีแนวโน้มที่จะสร้างไฟล์ .desktop แบบกำหนดเอง (ตัวเรียกใช้งาน)

สร้างไฟล์ .desktop แบบกำหนดเอง

  1. เปิดไฟล์เบราว์เซอร์ของคุณ
  2. นำทางไปยัง /usr/share/applications/
  3. คัดลอกตัวเรียกใช้ (ไฮไลต์และ Ctrl + C) สำหรับแอพที่คุณต้องการเปิดด้วยธีมพื้นฐาน
  4. นำทางไป~/.local/share/applications/และวางตัวเรียกใช้งาน (Ctrl + V)
  5. คลิกขวาและเปิดตัวเรียกใช้งานด้วยโปรแกรมแก้ไขข้อความ
  6. แก้ไขบรรทัดที่เริ่มต้นด้วยExec=เพื่อรวมExec=env GTK_THEME=elementaryแล้วเนื้อหาที่มีอยู่ก่อนหน้าของบรรทัด (ดังนั้นExec=pantheon-filesจะกลายเป็นExec=env GTK_THEME=elementary pantheon-files)
  7. บันทึกและปิดไฟล์

ครั้งต่อไปที่คุณเปิดแอพจาก Unity (หรือตัวเลือกแอปที่คุณเลือก) มันจะใช้ธีมหลัก

โบนัส: ทำให้มันทำงานเมื่อใช้บรรทัดคำสั่ง

คุณอาจต้องการให้แอปเปิดด้วยธีมพื้นฐานเมื่อเปิดใช้จากบรรทัดคำสั่ง โดยทำดังนี้

  1. เปิดแอป Terminal ของคุณ
  2. ประเภทalias pantheon-files="GTK_THEME=elementary pantheon-files"(แทนที่pantheon-filesด้วยแอพที่ต้องการ)
  3. กดปุ่มตกลง

คำเตือน:

  1. สิ่งนี้จะไม่เปลี่ยนธีมผู้จัดการหน้าต่างของคุณเป็นธีมพื้นฐาน
  2. สิ่งนี้ (โดยการออกแบบ) จะมีผลกับบัญชีของคุณเท่านั้นไม่ใช่การรูทหรือใครก็ตามในเครื่อง
  3. ชื่อชุดรูปแบบคือ cAsE-sEnsItiVe และควรจับคู่กับชื่อโฟลเดอร์ชุดรูปแบบ

แหล่งที่มา:

  1. ฉันเป็นผู้สนับสนุนขั้นพื้นฐาน;)
  2. คู่มืออ้างอิง GTK + 3: การรันแอปพลิเคชัน GTK +
  3. ตั้งค่าตัวแปรในไฟล์ .desktop

ตอบกลับดี แต่ฉันไม่สามารถใช้งานได้กับธีมใด ๆ คุณสามารถยกตัวอย่างโดยใช้เทอร์มินัลfind /usr/share/themes -type d -name 'gtk-3.0' | awk -F'/' '{print $5}'และgeditเพื่อการสาธิตได้หรือไม่? เช่นGTK_THEME="HighContrast" geditหรือenv GTK_THEME="HighContrast" geditหรือGTK_THEME=Adwaita:dark gedit... ไม่มีอะไร
Redsandro

ฉันเพิ่งเปลี่ยนมัน/usr/share/applications/<appname>.desktopและมันก็ใช้ได้สำหรับฉัน
Drew Chapin

มีวิธีใดบ้างที่จะทำเช่นนี้จากรหัสภายในแอพ
Anony-Mousse

1
เป็นที่น่าสังเกตว่าชื่อธีมนั้นเล็กและใหญ่
Cedric Reichenbach

สิ่งนี้ใช้ได้กับบางแอพ แต่ไม่ใช่สำหรับทุกคน

10

คำถามยังคงใช้ได้และฉันพบวิธี:

  • สร้างโฟลเดอร์ใด ๆ path/to/MY_FOLDER
  • สร้าง/share/themes/โฟลเดอร์ภายใน (นั่นคือpath/to/MY_FOLDER/share/themes)
  • ใส่ธีม GTK3 ไว้ด้านหลัง
  • เปลี่ยนชื่อธีมเป็นชื่อของธีมที่ใช้งานอยู่ในปัจจุบัน

    ในที่สุดคำสั่งนี้จะทำให้แอปใช้ธีมที่เปลี่ยนชื่อแทนที่จะเป็นธีมที่ใช้งานในปัจจุบัน:

GTK_DATA_PREFIX=path/to/MY_FOLDER YOUR_APPLICATON

(เส้นทางหลังจากGTK_DATA_PREFIX=นั้นจะต้องเป็นแบบนั้น ( และเฉพาะที่ ) ไปยังโฟลเดอร์ที่มี /share/themes/RENAMED_THEMEอยู่นั่นคือสาเหตุที่ไม่ใช่ path/to/MY_FOLDER/share/themes/RENAMED_THEMEแต่เพียงpath/to/MY_FOLDER)

หากต้องการรับสิ่งนั้นภายในตัวเรียกใช้งานให้แทนที่ดังนี้:

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

1
ตอนนี้ใช้งานได้จริงกับ Eclipse ซึ่งต่างจากคำตอบอื่นที่ฉันได้ลอง
Ruslan

2
ซึ่งไฟล์ / โฟลเดอร์ว่าเราจะชี้ไปใช้GTK_DATA_PREFIX?
runDOSrun

1
นี่ค่อนข้างสับสน แต่ฉันคิดออกแล้วแก้ไขคำตอบ

อีกวิธีหนึ่งคือการใส่เฉพาะแอปเปลี่ยนรูปแบบใน~/.themes(ปัจจุบันใช้งานจะต้องมีใน/usr/share/themes) และจากนั้นใช้เส้นทางบางส่วนGTK_DATA_PREFIX=path/to/nowhere เพื่อเปิด app ที่ซึ่งจะรีเซ็ตธีมให้แอปหนึ่งในปัจจุบันเพียง แต่มันจะมีลักษณะเป็นครั้งแรกใน ~/.themesและใช้เวลา ชื่อที่มีชื่อเดียวกัน

1
@runDOSrun - เส้นทางหลังจากที่GTK_DATA_PREFIX=ได้จะเป็นที่ ( และคนเดียวที่ ) ไปยังโฟลเดอร์ที่มี /share/themes/RENAMED_THEMEนั่นเป็นเหตุผลที่มันไม่ แต่เพียงFOLDER/share/themes/RENAMED_THEME FOLDER

8

เป็นไปได้อย่างแน่นอนว่าฉันไม่มีประสบการณ์ด้านธีมมาก แต่เมื่อคุณนำทางไปยัง/usr/share/themes/*Theme Name*/gtk-3.0/apps/ไดเรกทอรีคุณจะพบ.cssไฟล์ที่มีชื่อด้วยแอพที่พวกเขากำหนดเป้าหมายเป็นธีมดังนั้นใช่คุณสามารถสร้างธีมเฉพาะแอพได้

โปรดทราบว่าวิธีที่คุณกล่าวถึงธีมของคุณอาจต้องใช้งานบางอย่าง (เช่นมีทั้ง Ambiance และ Elementary ทำงานพร้อมกันเนื่องจากทุกชุดรูปแบบมีไฟล์พื้นฐานด้านบนซึ่งเป็นสไตล์เฉพาะของแอพ (ไฟล์gtkrcในGtk 2.0ในขณะที่ไฟล์gtk.cssในกรณีของGtk3.0 )

และไฟล์ชุดรูปแบบพื้นฐานนี้มีกฎการจัดแต่งทรงผมที่กำหนดเป้าหมายเฉพาะชุดรูปแบบที่กำหนดดังนั้นคุณไม่สามารถสร้าง Elementary เช่นรูปลักษณ์และความรู้สึกจากไฟล์ชุดรูปแบบพื้นฐานของ Ambiance โดยไม่ทำการเปลี่ยนแปลงใด ๆ อย่างหนักและแม้ว่าคุณจะทำก็ตาม

นอกจากนี้ใน GNOME เป็นไปได้ที่จะมีการใช้ชุดรูปแบบครั้งเดียวเท่านั้นตัวอย่างเช่นถ้าคุณใช้หน้าต่างลักษณะที่ปรากฏใน Ubuntu 12.04 คุณรู้ว่าสามารถเลือกชุดรูปแบบใดก็ได้จากเมนูแบบเลื่อนลงในกรณีที่คุณใช้gnome-tweak-toolมากกว่า คุณสามารถตั้งค่าชุดรูปแบบที่แตกต่างกันสำหรับ Gtk กรอบหน้าต่างและไอคอน แต่ก็ยังไม่อนุญาตให้กำหนดเป้าหมายแอปพลิเคชันเฉพาะเป็นชุดรูปแบบดังนั้นอย่างที่ฉันได้กล่าวไปแล้วก่อนหน้านี้คุณสามารถตั้งค่าชุดรูปแบบที่แตกต่างกันโดยสิ้นเชิง ไฟล์ชุดรูปแบบพื้นฐาน ณ ตอนนี้ไม่มีแอปพลิเคชันของบุคคลที่สามที่สามารถทำได้ด้วยตัวเอง

วิธีหนึ่งที่คุณสามารถทำได้ด้วยตัวเองคือให้ไฟล์ธีมพื้นฐาน ( gtk.css) มีกฎที่จำเป็นซึ่งเป็นกลางกับธีมใด ๆ ไม่ว่าจะมืดหรือสว่าง และมีการออกแบบชุดรูปแบบจริงที่เขียนในไฟล์เฉพาะแอปที่อยู่ในไดเรกทอรีที่กล่าวถึงข้างต้นเช่นสำหรับการใส่สไตล์ Nautilus คุณสามารถเขียนคุณสมบัติที่จำเป็นทั้งหมดในnautilus.cssไฟล์ เช่นเดียวกันกับทุกแอปที่คุณต้องการกำหนดเป้าหมาย เห็นได้ชัดว่าการทำเช่นนี้ต้องมีประสบการณ์ธีม Gtk ที่เหมาะสม

คุณสามารถอ้างอิงสิ่งนี้เพื่อสร้างธีมของคุณเองโดยใช้เทมเพลตนอกจากนี้ยังมีเอกสารที่ดีเกี่ยวกับการกำหนดธีมของ Gtk +


7
ฉันไม่ต้องการสร้างธีมใหม่ฉันต้องการกำหนดธีมที่มีอยู่
neonboy

@neonboy: ตามที่ฉันบอกว่าด้วย GTK3 มันไม่ง่ายเลยมีการเผยแพร่ธีมหลายไฟล์และหากการพึ่งพาไม่พึงพอใจธีมที่แตกก็คือทั้งหมดที่คุณจะได้รับ นั่นเป็นเหตุผลที่ฉันโพสต์คำตอบที่แสดงวิธีแก้ปัญหาที่เป็นไปได้กับ GTK3 ไม่ใช่ GTK2 (ซึ่งการทำเช่นนี้ค่อนข้างง่ายกว่า)
Kushal

5

ใช่วิธีง่ายๆคือชี้แอปพลิเคชันไปที่พา ธ ที่ต้องการซึ่งไฟล์ rc ของคุณอยู่ในคำสั่งที่เรียกใช้แอปพลิเคชันของคุณ:

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

สิ่งนี้ใน 12.04 สำหรับ inkscape (ซึ่งยังคงเป็น Gnome2 btw) จะสร้างสิ่งนี้:

หน้าต่าง inkscape ด้วยธีม windows

ดูข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบ GTK2 ทำงานที่นี่


7
คำถามเกี่ยวกับ Gtk3 ไม่ใช่ Gtk2 ขอบคุณ
neonboy

คุณไม่ได้ระบุไว้ในคำถามเดิมของคุณ กรุณาไม่เป็นปรปักษ์กันผู้สอบถาม
Martin Owens -doctormo-

5
เดิมทีคือ "ฉันจะใช้ธีม GTK3 ที่แตกต่างกันสำหรับแต่ละแอพได้หรือไม่" ซึ่งยังมีหัวข้อ Gtk3 อยู่ในคำถามจากนั้นฟอสส์อิสระขอให้ฉันแสดงความคิดเห็นเกี่ยวกับคำตอบที่ไม่ถูกต้องและแก้ไขคำถามหากจำเป็นฉันไม่ได้เป็นศัตรูกันทุกคน
Neonboy

1

ใช่คุณทำได้จริง ๆ แล้วฉันก็ Google และได้คำตอบ:

  1. ค้นหาความสามารถในการเรียกใช้งานที่แน่นอนสำหรับโปรแกรมที่คุณต้องการเปลี่ยนธีม ตัวอย่างเช่นถ้าคุณต้องการมันสำหรับสำนักงานแล้วพิมพ์which oofficeใน terminal
  2. ค้นหาโฟลเดอร์ช่องเก็บที่แอปพลิเคชันทั้งหมดใส่ไบนารีที่เรียกทำงานได้ พิมพ์echo $PATHใน terminal และคุณจะ ge เส้นทาง ฉันแนะนำให้คุณสร้างโฟลเดอร์ bin ในโฮมไดเร็กตอรี่ของคุณด้วยการพิมพ์mkdir ~/bin
  3. พิมพ์gedit ~/.bashrcเพื่อเปิดไฟล์ bash rc ของคุณ
  4. ไปที่ด้านล่างของไฟล์นี้และเพิ่มบรรทัดนี้ export PATH=~/bin:${PATH}

ตอนนี้เราจะสร้างสคริปต์ที่จะรันโปรแกรมของคุณด้วยธีมที่กำหนดเอง:

  1. สร้างไฟล์สคริปต์ของแอปพลิเคชันโดยพิมพ์: gedit ~/bin/ooffice
  2. พิมพ์บรรทัดเหล่านี้ในไฟล์ที่เปิด:

    #!/bin/bash
    env GTK2_RC_FILES=/usr/share/themes/SlicknessX/gtk-2.0/gtkrc /usr/bin/ooffice "$@"
    
  3. chmod +x ~/bin/oofficeเปลี่ยนโหมดของแฟ้มที่จะปฏิบัติการโดยการพิมพ์:

หวังว่าสิ่งนี้จะช่วยคุณต้องจำเพียงสิ่งเดียวเท่านั้นรูปแบบของสคริปต์ดังที่แสดงด้านล่าง:

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

แน่นอนว่าเป็นไปได้สำหรับแอพ GTK2 ที่ใช้ GTK2_RC_FILES env ตัวแปร. นอกจากนี้คุณกำลังพูดถึงการรวบรวมชุดรูปแบบอะไร? คำถามเกี่ยวกับธีม GTK ทั่วทั้งระบบมีอยู่ใน Ubuntu
ish

1
ฉันเชื่อว่าวิธีที่คุณกล่าวถึงเป้าหมาย Gtk2.0 ในขณะที่ Ubuntu 12.04 ใช้ Gtk3.0 สำหรับธีมดังนั้นหากอาจไม่ทำงาน
Kushal

6
ฉันขอโทษนั่นเป็นวิธีแก้ปัญหาสำหรับ Gtk2 คำถามเกี่ยวกับ Gtk3
neonboy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.