What's with the trend of tiny and hidden scrollbars?

In GNOME in particular ever since I started using it a year and a half ago scroll bars have gotten even tinier, and now it seems like the disappearing scrollbar has even made it to Windows on my updated Windows 10 install.

With Linux in particular I find this absolutely unacceptable given that it doesn’t have auto-scroll (middle click scroll), which I heavily used to use on Windows. Thank God Firefox has that setting because if it didn’t idk if I would’ve switched to Linux as my main OS - it’s that important. Idk why Linux elitists try to argue against this super useful functionality that’s far more useful and superior to whatever middle click is supposed to do on Linux by default (pasting in the terminal? lol)

Anyway, why are scroll bars getting smaller? Can any GUI designer or regular person share their thoughts and opinions on this? Imo, not only should scrollbars be nice and wide, but they should also ALWAYS be visible and at the very end of the screen - meaning that if I swipe my mouse to the end of the screen (where it stops), click and drag, it should always activate the scrollbar. I shouldn’t have to be precise or have to look in order to activate a scrollbar, especially if no autoscrolling is available like I said. The purpose of GUI is to be as functional as possible.

By the way here is a script/application I have to change the size of all scrollbars, excluding Firefox:

Dependency: Mate Terminal

~/.local/bin/custom/scrollbar-width.sh

#!/bin/bash

echo "NEW SCROLLBAR WIDTH(px) OR TYPE 'r' TO RESET"
while true; do
    read uin
    uin=$(echo "$uin" | xargs) # trim
    uin=$(echo "${uin,,}") # lower case

    if [[ "$uin" =~ ^[1-9][0-9]?$ || "$uin" == "r" ]]; then

        # RESET

        # remove previous width in gtk.css (if any)
        if [ -f "$HOME/.config/gtk-3.0/gtk.css" ]; then
            if [[ $(grep -v "slider { min-width" "$HOME/.config/gtk-3.0/gtk.css") ]]; then
                grep -v "slider { min-width" "$HOME/.config/gtk-3.0/gtk.css" > tmpfile && mv tmpfile "$HOME/.config/gtk-3.0/gtk.css"
            else
                rm "$HOME/.config/gtk-3.0/gtk.css"
            fi
        fi
        if [ -f "$HOME/.config/gtk-4.0/gtk.css" ]; then
            if [[ $(grep -v "slider { min-width" "$HOME/.config/gtk-4.0/gtk.css") ]]; then
                grep -v "slider { min-width" "$HOME/.config/gtk-4.0/gtk.css" > tmpfile && mv tmpfile "$HOME/.config/gtk-4.0/gtk.css"
            else
                rm "$HOME/.config/gtk-4.0/gtk.css"
            fi
        fi

        # reset scrollbar visibility
        gsettings reset org.gnome.desktop.interface overlay-scrolling

        # reset flatpak overrides
        if [[ "$(flatpak --version 2>&1)" =~ ^Flatpak ]] && [ -f "$HOME/.local/share/flatpak/overrides/global" ]; then
            sed -i 's|xdg-config/gtk-3.0;||g' "$HOME/.local/share/flatpak/overrides/global"
            sed -i 's|xdg-config/gtk-4.0;||g' "$HOME/.local/share/flatpak/overrides/global"
            # if the those were the only filesystem overrides, remove the filesystems= line
            grep -vx "filesystems=" "$HOME/.local/share/flatpak/overrides/global" > tmpfile && mv tmpfile "$HOME/.local/share/flatpak/overrides/global"
            # if there are no other overrides, remove the flatpak global overrides file
            if [[ ! $(grep -vx "\[Context\]" "$HOME/.local/share/flatpak/overrides/global") ]]; then
                rm "$HOME/.local/share/flatpak/overrides/global"
            fi
        fi

        # APPLY NEW SETTINGS

        if [[ "$uin" =~ ^[1-9][0-9]?$ ]]; then
            # add new width in gtk.css
            echo "slider { min-width: ${uin}px; min-height: ${uin}px; }" >> "$HOME/.config/gtk-3.0/gtk.css"
            echo "slider { min-width: ${uin}px; min-height: ${uin}px; }" >> "$HOME/.config/gtk-4.0/gtk.css"

            # apply to flatpak (if installed)
            if [[ "$(flatpak --version 2>&1)" =~ ^Flatpak ]]; then
                flatpak override --user --filesystem=xdg-config/gtk-3.0 --filesystem=xdg-config/gtk-4.0
            fi

            # make scrollbar always visible
            gsettings set org.gnome.desktop.interface overlay-scrolling false
        fi
        
        echo "LOGOUT FOR EVERYTHING TO BE APPLIED"
        read hold
        exit 0
    else
        echo "Invalid input, try again."
    fi
done

~/.local/share/applications/scrollbar-width.desktop

[Desktop Entry]
Type=Application
Terminal=false
Name=Scrollbar Width
Categories=System
Icon=preferences-desktop-appearance-symbolic
Exec=mate-terminal --class "custscrollbarwidth" --disable-factory --title "CHANGE SCROLLBAR WIDTH" -- sh -c 'bash "$HOME/.local/bin/custom/scrollbar-width.sh"'
StartupWMClass=custscrollbarwidth

To change it in Firefox:

# Always visible available in normal settings - search "scroll"

# scrollbar width
widget.non-native-theme.scrollbar.size.override
20

# scrollbar shape
widget.non-native-theme.scrollbar.style
4
1 Like

What app are you trying this with? This should work by default.

On all the Windows installs I tried, it doesn’t support middle-click scroll in all apps either. AFAIK the auto scrolling is either a special feature implemented by the mouse driver, or by the application itself (such as web browsers), it was never a built-in Windows feature.

On Linux it could be made into a feature in the toolkit or the window manager but IMO this should never happen by default because middle click is always handled by the apps themselves. Even the middle click paste is just implemented by the toolkit but apps can still ignore it or do something else more useful, e.g. image editors like GIMP and Inkscape use middle-click-to-pan instead of autoscroll, because autoscroll would be pretty useless there.

In general, scroll bars are de-emphasized because even when they are shown they are still poor click targets, they are too small to be useful and they are too inaccurate to be a good representation of position, and they interact badly with laptop trackpads. In long content it is generally better to have an overview where you can quickly click a button to autoscroll to the section you want. For something structured like a print document you can have buttons to go between the pages, etc. The best improvement I have seen on the scrollbar concept is the minimap scroll in GNOME Text Editor and GNOME Builder that combines the overview with the scrollbar so the click target is very big and the scrolling can be very accurate.

The way scrolling works in terminals IMO also doesn’t make much sense with the interaction with the scrollbar, because lines are always being pushed out of the scrollback buffer so it is impossible for any content to have a consistent position within the scrolling region.

I am not sure why I need scrollbars at all, I dont use them to scroll, but maybe to visually understand how long to scroll down or up, that is usefull sometimes.

I think it works with the default size too. I’m not sure haven’t used auto-hide and standard width in months. Currently using somewhere between 15 and 20px width.

The reason for it is even the default width allows this, it would be still be pain to scroll on a windowed application.

Yeah I agree mostly. Though I’m not just making my scroll bars always visible, I change their width to a good 15px with that script, so it’s defiantly easier to click.

For autoscroll I think I was reading something about LibreOffice or something like that and the hardcore Linux users were very very strongly against autoscroll.

Then what do you use. “space”, “home” and “end”? A lot of times I know exactly where I need to scroll so a single click on the scroll bar and I’m there. Other times I may want to quickly preview everything so using the scrollbar and/or autoscroll is mandatory for me.

Small scrollbars could came from mobile devices? You do not click them here and display space is limited, so devs ‘hide’ them. Desktop has no problems with space and scrollbars are clickable/dragable, yet I do not see it is really oftenly used, so they began to ‘disappear’ too? You move mouse cursor over and they are bigger now, works for most of us and makes it look cool?

i don’t think disappearing is cool. Unless it’s highlighted, it’s hard to see. I need to be able to see it perfectly with my peripheral version. This is what my scrollbars look like in Firefox for example (that code block I posted earlier).

Idk about mobile, you’re right, but I’ve had scrollbar problems there too (couldn’t activate it with my fat finger compared to that needle shaped thing lol)

I mean that could be understandable for GNOME, which is about being simple. Sometimes too simple? Maybe use KDE?

This may be of interest:

Most important part: It is an accessibility problem.

Which is why GTK provides fine adjustment scrolling—the size of the scrolling indicator increases to present a larger target, and the scrolling is pixel-precise.

Scroll bars are not bars any more: they are scrolling indicators; they provide a reference to the current position of the visible region within the overall content area.

Applications can decide to disable overlay scroll indicators and have a more “classic” scroll bar area, but that reduces the size of the content, and changes the size of the UI; this means that applications need to be designed for this case.

For more information, see: A scrolling primer – GTK Development Blog

Is there a textual description not dependent on movies? If not, that is an accessibility problem on its own.

1 Like

This topic was automatically closed 45 days after the last reply. New replies are no longer allowed.