ฉันจะสคริปต์การตั้งค่าที่ทำโดย gnome-tweak-tool ได้อย่างไร


15

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

ตั้งแต่ "อัปเกรด" เป็น Ubuntu 17.10 ฉันพบว่าฉันต้องใช้ gnome-tweak-tool เพื่อตั้งค่าบางอย่างตามที่ฉันต้องการ

เมื่อฉันพบการตั้งค่าใน gnome-tweak-tool GUI ฉันจะเข้าใจการแปลที่ใช้สคริปต์ได้อย่างไร

ตัวอย่างเช่นบรรทัด gsettings ต่อไปนี้ตรงกับรายการที่เกี่ยวข้องในหน้าจอ gnome-tweak-tool ด้านล่าง ...

gsettings set org.gnome.desktop.wm.preferences titlebar-font "Tahoma Bold 8"
gsettings set org.gnome.desktop.interface font-name "Tahoma 8"
gsettings set org.gnome.desktop.interface document-font-name "Tahoma 8"
gsettings set org.gnome.desktop.interface monospace-font-name "FixedSC 10"

สกรีนช็อตจาก gnome-tweak-tool ... แต่ใครจะเดาได้อย่างไร ตัวอย่างเช่นฉันจะหาตำแหน่งที่จะรับการตั้งค่าที่เกี่ยวข้องสำหรับคำใบ้และการลดรอยหยักได้อย่างไร


1
TBH ฉันเคย resorted เพื่อ grepping keyspace เช่นgsettings list-recursively | grep -e alias -e hint- อยากจะรู้ว่ามีวิธีที่ดีกว่า
steeldriver

นอกเหนือจากการเรียกดูซอร์สโค้ดหรือ dconf-editor (หรือ gsettings โดยตรงเช่น @steeldriver) ไม่มีใครสามารถทำได้
muru

คำตอบ:


23

ค้นหาสิ่งที่กำลังตั้งค่าได้อย่างง่ายดาย

แทนที่จะค้นหาผ่านตัวเลือกไดเรกทอรีทั้งหมด:

  1. เปิดหน้าต่างเทอร์มินัล
  2. เรียกใช้คำสั่ง:

    dconf watch /
  3. ทำการเปลี่ยนแปลงของคุณและดูว่าเครื่องแสดงอะไร:

    ป้อนคำอธิบายรูปภาพที่นี่

    ... และที่นั่นคุณ

ตั้งค่า & gsettings

dconfในตัวอย่างคุณเห็นผลลัพธ์จาก Gsettings เป็นส่วนหนึ่งของ dconf หลายครั้งคุณสามารถใช้ทั้งdconfคำสั่งหรือgsettingsคำสั่ง ในกรณีนี้ทั้ง:

dconf write /org/gnome/desktop/background/show-desktop-icons false

หรือ:

gsettings set org.gnome.desktop.background show-desktop-icons false

หากมีคีย์ gsettings จะถือว่าเป็นวิธีปฏิบัติที่ดีกว่าเพื่อปกป้องความสมบูรณ์ของdconfฐานข้อมูลของคุณ

ดูเพิ่มเติมที่นี่และที่นี่


นี่มันยอดเยี่ยมมากขอบคุณ คำถามเล็ก ๆ : (1) ฉันจะรู้ได้อย่างไรว่า "ถ้าคีย์ gsettings มีอยู่"? (2) จุดเชื่อมต่อบรรทัดคำสั่งสองจุดที่ใช้สำหรับจุดประสงค์และจุดประสงค์ทั้งหมดเหมือนกับผู้ใช้คืออะไร (3) ความแตกต่างระหว่างตัวแรกและตัวที่สามของ "ที่นี่" คืออะไร? พวกเขาดูเหมือนหน้าเดียวกันกับฉัน
st01

@ st01 สำหรับ (1) คุณสามารถเรียกใช้คำสั่ง gsettings ได้โดยดูว่าทำงานหรือไม่หรือเช็คอินโปรแกรมแก้ไข dconf (ไม่ได้ติดตั้งโดยค่าเริ่มต้น แต่เป็นเครื่องมือที่ยอดเยี่ยม) หากมีคีย์ gsettings (เช่นกัน) (2) gsettings เป็นส่วนหน้า cli เพื่อแก้ไขฐานข้อมูล dconf Gsettings จะตรวจสอบความสมบูรณ์ของฐานข้อมูลด้วยดังนั้นจึงเป็นที่นิยมมากกว่าในการแก้ไขฐานข้อมูล dconf โดยตรง เนื่องจาก gsettings อยู่ในระดับที่สูงกว่าจึงช้ากว่า (3), อา, นั่นมันโง่ :) คุณพูดถูก จะแก้ไข
Jacob Vlijm

@JacobVlijm ขอบคุณมาก! คุณช่วยชีวิตฉัน!!
Marslo

8

สำหรับการตั้งค่าส่วนใหญ่คุณสามารถใช้วิธีนี้ :

  • ส่งออกรายการgsettingsไปเป็นไฟล์ชั่วคราว:

    gsettings list-recursively > /tmp/gsettings.before
  • ทำการเปลี่ยนแปลงของคุณโดยgnome-tweak-tool(หรือunity-control-center);

  • ส่งออกรายการgsettingsไปยังไฟล์ชั่วคราวอื่น:

    gsettings list-recursively > /tmp/gsettings.after
  • เปรียบเทียบสองไฟล์ ( .beforeและ. after ) และรับความแตกต่าง:

    diff /tmp/gsettings.before /tmp/gsettings.after | grep '[>|<]'

    หรือเปรียบเทียบและรับเฉพาะค่าใหม่ ( แหล่งที่มา ):

    diff /tmp/gsettings.before /tmp/gsettings.after | grep -Po '> \K.*'

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

    diff /tmp/gsettings.before /tmp/gsettings.after | sed 's/>/gsettings set/;tx;d;:x'

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

gsettings list-recursively > /tmp/gsettings.before; gnome-tweak-tool; gsettings list-recursively > /tmp/gsettings.after; diff /tmp/gsettings.before /tmp/gsettings.after | grep '[>|<]'

การสาธิตครั้งต่อไปถูกสร้างขึ้นภายใน Ubuntu 16.04 ฉันคิดว่าวิธีนี้ใช้ได้ผลภายใน 17.10:

ป้อนคำอธิบายรูปภาพที่นี่


อัปเดต:ฉันเพิ่งค้นพบวิธีง่ายๆภายใน Ubuntu 17.10:

ป้อนคำอธิบายรูปภาพที่นี่


1
มีประโยชน์มากขอบคุณฉันไม่รู้ว่าคุณสามารถถ่ายโอนการตั้งค่าทั้งหมดเช่นนี้ได้
st01

1
มันยอดเยี่ยมมากขอบคุณมาก! ตอนนี้ฉันสามารถคืนค่าการตั้งค่าเดิมของฉันเมื่อฉันยุ่งใน gsettings
Nicholas Stommel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.