ฉันจะได้รับแถบเลื่อนแบบคงที่ที่ใหญ่กว่า (หรือแถบเลื่อนปกติ) ได้อย่างไร


40

ฉันดีใจที่แถบเลื่อนด้านนอกซ้อนทับหายไปในที่สุด

แต่แถบเลื่อนยังคงเป็นเส้นบางที่กลายเป็นแถบเลื่อนขนาดเล็กที่มีมีดโกนน้อยกว่า แต่ยังคงเป็นแถบเลื่อนแบบบางเมื่อเมาส์เลื่อน

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

ฉันลองแล้ว

gsettings set com.canonical.desktop.interface scrollbar-mode normal

แต่ไม่มีโชค


2
ปัญหานี้ยังคงเป็นปัญหาอยู่หรือไม่และไม่สามารถแก้ไข / เป็นส่วนหนึ่งของการตั้งค่าระบบมาตรฐานได้? lordy สี่ปีที่แล้วฉันโกรธอูบุนตูมากกว่าสิ่งนี้และไปทุ่งหญ้ามินต์ ... lol
neuronet

@neuronet อาเมนพี่ชาย
Steve Cohen

คำตอบ:


22

แก้ไขไฟล์นี้/ usr/share/themes/Ambiance/gtk-3.0/gtk-widgets.css

มองหาบรรทัดนี้ (ประมาณบรรทัดที่ 1200): -GtkRange-slider-width: 10;

และเปลี่ยน 10 เป็นจำนวนที่มากขึ้นเช่น 20 หรือ 30 แล้วทำ :)

ฉันคิดว่ามันเล็กเกินไป ...

ดูภาพนี้:

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

หากคุณเปลี่ยนขนาดแถบเลื่อนเป็น 16 และคุณต้องการให้ขนาดดังกล่าวอยู่ในระดับนั้นและไม่ย่อขนาดเมื่อคุณไม่มีเมาส์ให้ทำการเปลี่ยนแปลงในภาพด้านบน

หากคุณใช้ขนาดอื่นที่ไม่ใช่ 16 เพียงทดสอบด้วยขนาดขอบเพื่อให้ได้ขนาดที่ถูกต้อง


1
ฉันตั้งไว้ที่ 16 และแสดงความคิดเห็นทุกสิ่งที่เลื่อน / ลากและตอนนี้แถบเลื่อนเป็นแบบคงที่เก่าดี ... พวกเขายังคงหายไปหลังจากไม่กี่วินาทีแม้ว่า มีฟังก์ชั่นแอนิเมชันที่ฉันไม่เห็นหรือไม่?
Simon

ตกลงดังนั้นด้านล่างที่คุณทำเปลี่ยนแปลงครั้งแรกคุณจะเห็นเหล่านี้: margin-left: 2px;เช่นเดียวกับและmargin-right margin-topเปลี่ยนทั้งสามอย่างนี้จาก 2px เป็น 7px และแถบเลื่อนของคุณจะกว้าง
Dorian

ฉันเพิ่มรูปภาพในคำตอบเพื่อพยายามทำให้ชัดเจนว่าคุณต้องเปลี่ยนอะไรเพื่อให้แถบเลื่อนใหญ่ขึ้น
Dorian

6
ขอบคุณมาก! ปู่ของฉันกำลังดิ้นรนกับแถบเลื่อนขนาดเล็กมาก ๆ แต่ฉันเปลี่ยนเป็น 25px และตอนนี้เขาเลื่อนอย่างมืออาชีพ!
Erty Seidohl

1
หมายเหตุฉันเปลี่ยนของฉันเป็น 24 และ 7px ยังคงมีขนาดที่เหมาะสมที่จะใช้สำหรับระยะขอบเพื่อให้แน่ใจว่าถูกต้องเมื่อเลื่อนเมาส์ หมายเหตุให้แน่ใจว่าได้รีสตาร์ทโปรแกรมของคุณ (เช่น Firefox) เพื่อให้แน่ใจว่าการเปลี่ยนแปลงของคุณจะมีผล สิ่งที่ดี
neuronet

26

ฉันคิดว่าคุณควรระวังที่นั่น พวกเราหลายคนจะไม่แนะนำให้คุณแก้ไขค่าเริ่มต้นทั้งระบบสำหรับธีมเว้นแต่ว่าคุณตั้งใจจะแทรกแซงกิจกรรมของบัญชีผู้ใช้ทั้งหมดในระบบ หากคุณเกิดข้อผิดพลาดขณะทำสิ่งนั้นจะมีผลกับบัญชีผู้ใช้ทั้งหมด ข้อควรระวังอีกประการหนึ่งคือเมื่ออัพเดตแพ็กเกจการเปลี่ยนแปลงของคุณจะถูกลบ

ข้อบกพร่องอีกประการหนึ่งของกลยุทธ์นี้คือการเปลี่ยนลักษณะการทำงานของธีม GTK หนึ่งธีมเท่านั้น แต่คุณอาจต้องการเปลี่ยนขนาดแถบเลื่อนในธีม GTK-3.0 ทั้งหมด

ให้แก้ไขไฟล์การกำหนดค่าภายในบัญชีผู้ใช้แทน เคล็ดลับคือการหาว่าอันไหนที่อยู่ห่างจากจุดปลายทางที่สั้นที่สุด ไฟล์ GTK ที่คุณแก้ไขเป็นส่วนหนึ่งของการตั้งค่า CSS (Cascading Style Sheets) ดังนั้นการปรับแต่งที่คุณใส่ไว้ในบัญชีของคุณจะแก้ไขการตั้งค่า

ในบัญชีผู้ใช้ของคุณในโฟลเดอร์ ~ / .config / gtk-3.0 / gtk.css ฉันมีสิ่งนี้ในไฟล์ชื่อ "gtk.css"

.scrollbar {
  -GtkScrollbar-has-backward-stepper: true;
  -GtkScrollbar-has-forward-stepper: true;
  -GtkRange-slider-width: 20;
  -GtkRange-stepper-size: 20;
}

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

หากคุณต้องการแก้ไขการตั้งค่าจำนวนมากสิ่งที่ถูกต้องคือคัดลอกไฟล์ gtk-widgets.css ทั้งหมดและวางไว้ในโฟลเดอร์ ~ / .config / gtk-3.0 จากนั้นไปที่เมืองที่เล่นซอกับการตั้งค่า

ในโฟลเดอร์เดียวกันฉันมีไฟล์ชื่อ "settings.ini"

[Settings]
gtk-primary-button-warps-slider = false

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

สิ่งอื่น ๆ ที่ควรรู้คือการเปลี่ยนไฟล์ธีมนั้น (ไม่ว่าจะเป็นที่แนะนำโดย @Dorian ก่อนหน้านี้หรือโดยการเปลี่ยนบัญชีผู้ใช้สำหรับธีมที่ใช้ GTK-3.0 ทั้งหมดตามที่ฉันแนะนำ) จะเปลี่ยนเฉพาะโปรแกรมที่ใช้ชุดเครื่องมือ GTK-3.0 เท่านั้น มันไม่เปลี่ยนแถบเลื่อนสำหรับแอปพลิเคชันทั้งหมด สำหรับคนที่อ่านไฟล์กำหนดค่า gtk-3.0 เท่านั้น เนื่องจากคุณกำลังแก้ไขธีม gtk-3.0 แอปที่เขียนด้วย QT หรือ gtk-2.0 จะไม่เปลี่ยนแปลง ดังนั้นการเปลี่ยนขนาดแถบเลื่อนของโปรแกรมทั้งหมดจึงค่อนข้างยาก / น่าเบื่อกว่าที่คุณคิด

ฉันได้เปลี่ยนความกว้างของแถบเลื่อนใน gtk-2.0 เช่นกัน สิ่งนี้ทำในโฟลเดอร์แยกต่างหาก ~ / .config / gtk-2.0 ไฟล์ที่จะสร้างชื่อ gtkrc

style "scroll"
{
 GtkScrollbar::slider-width = 20
}

โปรดทราบว่า gtk-2.0 เป็นการตั้งค่าที่ออกแบบแตกต่างกันดังนั้นไวยากรณ์จึงแตกต่างกันคุณไม่สามารถคัดลอก gtk-3.0 css ไปยังโฟลเดอร์ gtk-2.0

ฉันสังเกตว่าบางแอปพลิเคชั่นทำงานได้ไม่ดีเมื่อคุณทำให้แถบเลื่อนแตกต่างกันเนื่องจากขนาดของ "ตัวจับ" ภายในรางเลื่อนไม่ได้ปรับขนาดอย่างถูกต้อง ฉันสงสัยว่าการเปลี่ยนแปลงการลากแถบเลื่อนในไฟล์ของ @ Dorian จะช่วยได้ ฉันอาจกลับมาลองอีกครั้ง ผมจะแจ้งให้คุณทราบ.

สรุป: กุญแจสำคัญ "คำแนะนำผู้ดูแลระบบ Linux ในสมัยโบราณคือ" ไม่ต้องแก้ไขไฟล์กำหนดค่าแบบทั้งระบบ คุณกำลังทำให้ระบบของคุณตกอยู่ในความเสี่ยงการเปลี่ยนแปลงของคุณจะไม่ผ่านการแก้ไขและต้องใช้การเข้าถึงรูทซึ่งไม่ดีสำหรับเครื่องสำอางเช่นนี้ ค้นหาวิธีทำการเปลี่ยนแปลงในบัญชีผู้ใช้ของคุณ

PS หากคุณต้องการเล่นไฟล์ระบบ (บางครั้งฉันต้องการยืนยันว่าผู้ใช้ทุกคนมีสีทีมฟุตบอลที่ฉันชื่นชอบเป็นวอลล์เปเปอร์และโทนสีของพวกเขา :)) สิ่งแรกที่คุณควรทำคือทำสำเนา ไฟล์ต้นฉบับและตั้งชื่อ "gtk-widgets.css.orig" ดั้งเดิม จากนั้นเมื่อคุณแก้ไขไฟล์ของคุณให้บันทึกสำเนาของการแก้ไขของคุณเป็น "gtk-widgets.css.20160919" ซึ่งฉันมีวันที่ YYYYMMDD ที่ส่วนท้ายของมัน วิธีนี้เมื่ออัปเดตแพ็คเกจ deb แล้วคุณจะมีสำเนาของไฟล์ที่แก้ไข อันที่คุณแก้ไขชื่อ gtk-widgets.css จะถูกกำจัดโดยการติดตั้งแพ็คเกจ


"ไฟล์ชุดรูปแบบที่คุณแก้ไขด้านบน" หมายถึงอะไร "ด้านบน" ไม่ได้มีความหมายอะไรเลยที่นี่
endolith

9

นี่คือขั้นตอนในการกู้คืนแถบเลื่อนที่ไม่หายไปและมีความกว้างถาวรนั่นคือขั้นตอน "คลาสสิค" ทดสอบในเซสชั่นย้อนหลังของ GNOME ใน Ubuntu 16.04 (ใช้ได้กับ Unity ด้วย)

ขั้นตอนที่ 1/etc/environmentให้การสำรองข้อมูลของ เรียกใช้sudo nano /etc/environmentและเพิ่มบรรทัดถัดไปที่นั่น:

GTK_OVERLAY_SCROLLING=0

สิ่งนี้จะป้องกันพฤติกรรมการซ่อนอัตโนมัติของแถบเลื่อน

ขั้นตอนที่ 2เพื่อหลีกเลี่ยงการดัดแปลงไฟล์ธีมหลัก/usr/share/themes/Ambiance/gtk-3.0/gtk-widgets.cssเราจะยืมรหัสจากที่นั่นแก้ไขและใส่ลงในโฟลเดอร์โปรไฟล์ผู้ใช้ สร้าง~/.config/gtk-3.0/gtk.cssและใส่บรรทัดถัดไปลงใน:

/* Adding the buttons on the edges (if you don't need them, skip the next 4 lines)
 */

.scrollbar {
  -GtkScrollbar-has-backward-stepper: 1;
  -GtkScrollbar-has-forward-stepper: 1;
}

/* Scrollbar trough squeezes when cursor hovers over it. Disabling that
 */

.scrollbar.vertical:hover:dir(ltr),
.scrollbar.vertical.dragging:dir(ltr) {
    margin-left: 0px;
}

.scrollbar.vertical:hover:dir(rtl),
.scrollbar.vertical.dragging:dir(rtl) {
    margin-right: 0px;
}

.scrollbar.horizontal:hover,
.scrollbar.horizontal.dragging,
.scrollbar.horizontal.slider:hover,
.scrollbar.horizontal.slider.dragging {
    margin-top: 0px;
}

/* Slider widens to fill the scrollbar when cursor hovers over it. Making it permanent
 */

.scrollbar.slider.vertical:dir(ltr):not(:hover):not(.dragging) {
    margin-left: 0px;
}

.scrollbar.slider.vertical:dir(rtl):not(:hover):not(.dragging) {
    margin-right: 0px;
}

.scrollbar.slider.horizontal:not(:hover):not(.dragging) {
    margin-top: 0px;
}

ขั้นตอนที่ 3สร้าง~/.config/gtk-3.0/settings.iniและเพิ่มบรรทัดถัดไปลงใน:

[Settings]
gtk-primary-button-warps-slider = false

สิ่งนี้จะคืนค่าลักษณะการเลื่อนแบบทีละหน้าเมื่อคุณคลิกแถบเลื่อนที่ด้านใดด้านหนึ่งของแถบเลื่อน หากไฟล์นี้มีอยู่แล้วเพียงเพิ่มบรรทัดสุดท้ายใน[Settings]ส่วนของมัน

ขั้นตอนที่ 4ถอนการติดตั้งoverlay-scrollbarและoverlay-scrollbar-gtk2แพ็คเกจ - คุณไม่ต้องการอีกต่อไป

PSหากคุณใช้แอปพลิเคชั่นบางตัวที่ต้องการสิทธิ์ผู้ใช้ระดับสูง (เช่น Synaptic, Gedit เป็นต้น) คุณควรวางไฟล์เหล่านี้gtk.cssและsettings.iniไฟล์ลงในโฟลเดอร์โปรไฟล์ของรูท:

sudo cp ~/.config/gtk-3.0/gtk.css /root/.config/gtk-3.0/
sudo cp ~/.config/gtk-3.0/settings.ini /root/.config/gtk-3.0/

PPSหากคุณพบว่าแถบเลื่อนเหล่านี้แคบเกินไปสำหรับคุณ เพียงเพิ่มบรรทัดถัดไปใน~/.config/gtk-3.0/gtk.css:

.scrollbar {
  -GtkRange-slider-width: 15;
}

เพิ่มความกว้างตามที่เห็นสมควร (ค่าเริ่มต้นคือ 10) อัปเดต/root/.config/gtk-3.0/gtk.cssหากจำเป็น


ฉันสามารถเพิ่มความกว้างด้วยไอเท็มเดียว: .scrollbar {-GtkRange-slider-width: 15; …โดยไม่มีตัวเลือกอื่น ๆ ทั้งหมดที่คุณพูดถึง แต่นี่เป็นเพียงในเครื่องเสมือน เมื่อฉันพยายามทำแบบเดียวกันบนเดสก์ท็อปไม่มีอะไรทำงานแม้ว่าฉันได้ลองทำตามขั้นตอนทั้งหมดแล้ว มีฉันคิดว่าข้อผิดพลาดใน Firefox 52 เพราะในเครื่องเสมือนที่คำตอบช่วยแถบเลื่อนตอบสนองอย่างถูกต้องสำหรับเหตุการณ์โฮเวอร์และกว้างขึ้นโดยอัตโนมัติ บนเดสก์ท็อปมันไม่จัดการโฮเวอร์ (ซึ่งจริงๆแล้วเป็นเหตุผลว่าทำไมฉันต้องขยาย scrollbar) และ gtk.css ก็ถูกข้ามเช่นกัน
user907860

1
@ user907860 ค่อนข้างตรงกันข้ามทุกขั้นตอนดังกล่าวมีวัตถุประสงค์เพื่อละเว้นเหตุการณ์โฮเวอร์อย่างสมบูรณ์ พวกเขาจำเป็นต้องสร้างแถบเลื่อนแบบคงที่และถาวรซึ่งไม่เคยเปลี่ยนความกว้างเหมือนในยุคพรียูนิตี้
whtyger

ใช่คุณถูกต้อง. ฉันหมายถึงแค่เพิ่มความกว้างโดยไม่ต้องแตะฟังก์ชั่นการวางเมาส์
user907860

ยังไงก็ตามคุณไม่มีไอเดียเลยทำไมมันถึงใช้งานไม่ได้ใน Firefox 52 บนเดสก์ท็อปในขณะที่มันทำบนเครื่องเสมือน? askubuntu.com/questions/892097/…
user907860

1
นี่ควรเป็นคำตอบที่ยอมรับได้ การล้อเล่นกับ dconf และชุดรูปแบบให้ผลลัพธ์ที่แปลกมาก - ไม่ซ้อนทับ แต่ไม่ธรรมดา คำตอบนี้ให้แถบเลื่อนปกติ มันจะต้องทำในระดับ GTK หมายเหตุ: Ubunutu กำลังจะย้ายไปที่ Qt ในไม่ช้า
Dominic Cerisano

8

การเปลี่ยนแปลง-GtkRange-slider-widthไม่มีผลกับธีม GTK + 3 ที่เป็นค่าเริ่มต้น คุณสามารถทำสิ่งนี้แทน:

scrollbar slider {
    /* Size of the slider */
    min-width: 20px;
    min-height: 20px;
    border-radius: 22px;

    /* Padding around the slider */
    border: 5px solid transparent;
}

(สถานที่ดังกล่าวข้างต้น~/.config/gtk-3.0/gtk.css)


1
ฉันควรจะเพิ่มที่ไหน
เคนน์

@kenn~/.config/gtk-3.0/gtk.css
Vladimir Panteleev

1
ใช้งานได้อย่างมีเสน่ห์ใน Ubuntu 18.04 ขอบคุณ!
Steve Cohen

9 เดือนต่อมา: มันใช้งานได้อย่างมีเสน่ห์ภายใต้ Ubuntu 18.04 - ยกเว้นว่ามันจะทำให้สับสนกับแอพพลิเคชั่น GNUCash ดูlists.gnucash.org/pipermail/gnucash-user/2019-F กุมภาพันธ์/ … การเปลี่ยนแปลงเหล่านี้จะทำลายฟังก์ชันการทำงานของแถบเลื่อนใน GNUCash แต่ไม่ใช่แอปอื่น ถอนหายใจ
Steve Cohen

1
@ SteveCohen ฉันดูที่ลิงค์ gnucash คุณเขียนว่า "~ / .config / GTK-3.0.gtk.css" ~/.config/gtk-3.0/gtk.cssแต่มันควรจะเป็น นอกจากนี้ GnuCash ดูเหมือนจะเป็นGTK2แอพลิเคชันไม่ GTK 3แอพลิเคชัน
DK Bose

4

ฉันใช้ Ubuntu 18.04 และนี่เป็นทางออกเดียวที่เปลี่ยนแถบเลื่อนสำหรับทุกอย่างจาก Firefox เป็น LibreOffice เป็น gnome-terminal โซลูชันดังกล่าวทำงานได้ดีสำหรับแอปพลิเคชั่นหนึ่งหรือสองตัว แต่ไม่ใช่สำหรับทุกสิ่ง

หมายเหตุ: นี่จะให้แถบเลื่อนขนาดใหญ่ที่เหมาะกับจอภาพขนาดใหญ่จริงๆเพราะคุณสามารถเห็นพวกมันออกมาจากมุมตาของคุณโดยไม่มองไปทางด้านข้างของหน้าจอทุกครั้งที่คุณต้องการคว้า หากคุณต้องการตัวที่เล็กกว่าให้เปลี่ยน 70px ทั้งหมดเป็นจำนวนที่น้อยกว่าเช่น 20px หรือ 30px และ tweak ตามลำดับ

ใส่ข้อความต่อไปนี้ลงใน~/.config/gtk-3.0/gtk.css:


.scrollbar,
scrollbar {
-GtkScrollbar-has-backward-stepper: 1;
-GtkScrollbar-has-forward-stepper: 1;
}

scrollbar slider {
background-color: @scrollbar_track_color;
}

.scrollbar.vertical slider,
scrollbar.vertical slider {
    min-height: 150px;
    min-width: 70px;
}

.scrollbar.horizontal.slider,
scrollbar.horizontal slider {
min-width: 40px;
min-height: 10px;
}

.scrollbar.vertical.slider:hover,
scrollbar.vertical:hover slider {
min-width: 70px;
}

.scrollbar.horizontal.slider:hover,
scrollbar.horizontal:hover slider {
    min-height: 10px;
}

.scrollbar.contents,
scrollbar contents {
    background-color: transparent;
    background-image: none;
    background-size: 0;
    border: none;
    border-radius: 0;
}

.scrollbar.trough,
scrollbar trough {
    background-image: none;
    border: none;
}

.scrollbar:hover:backdrop,
.scrollbar.dragging:backdrop,
scrollbar:hover:backdrop,
scrollbar.dragging:backdrop {
    background-color: alpha(@backdrop_selected_bg_color, 0.5);
}


.scrollbar.vertical:hover:dir(ltr),
.scrollbar.vertical:active:dir(ltr),
scrollbar.vertical:hover:dir(ltr),
scrollbar.vertical:active:dir(ltr) {
    margin-left: 0px;
}

.scrollbar.vertical:hover:dir(rtl),
.scrollbar.vertical:active:dir(rtl),
scrollbar.vertical:hover:dir(rtl),
scrollbar.vertical:active:dir(rtl) {
    margin-right: 0px;
}

.scrollbar.horizontal:hover,
.scrollbar.horizontal:active,
scrollbar.horizontal:hover,
scrollbar.horizontal:active {
    margin-top: 0px;
}

.scrollbar.slider,
scrollbar slider {
    background-color: alpha(@backdrop_filling_bg, 0.75);
    border-radius: 10px;
}

.scrollbar.slider:hover,
.scrollbar.slider:active,
scrollbar slider:hover,
scrollbar slider:active {
    border-radius: 20px;
    margin: 0;
}


.scrollbar.vertical:dir(ltr):not(:hover):not(.dragging),
scrollbar.vertical:dir(ltr):not(:hover):not(.dragging) {
    margin-left: 0px;
}

.scrollbar.vertical:dir(rtl):not(:hover):not(.dragging),
scrollbar.vertical:dir(rtl):not(:hover):not(.dragging) {
    margin-right: 0px;
}

.scrollbar.horizontal:not(:hover):not(.dragging),
scrollbar.horizontal:not(:hover):not(.dragging) {
    margin-top: 0px;
}


.scrollbar.slider:hover,
scrollbar slider:hover {
    background-color: alpha(@backdrop_filling_bg, 0.6);
}

.scrollbar.slider:active,
scrollbar slider:active {
    background-color: @backdrop_filling_bg;
}

.scrollbar.slider:backdrop,
scrollbar slider:backdrop {
    background-color: alpha(@backdrop_filling_bg, 0.75);
}

.scrollbar.slider:hover:backdrop,
scrollbar slider:hover:backdrop {
    background-color: alpha(@backdrop_filling_bg, 0.6;
}

.scrollbar.slider:active:backdrop,
scrollbar slider:active:backdrop {
    background-color: @backdrop_filling_bg;
}

scrollbar {
    min-width: 70px;
    min-height: 70px;
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.