WhiteSur overwrites gtk-4.0 to theme libadwaita apps, and you cannot switch back
MacOS like theme for all gtk based desktops
At a glance
- What is it?
- A CSS theme that reproduces macOS on Linux desktops, built by two shell scripts, with one workaround for libadwaita that costs you the light and dark switch, and an uninstall path that leaves that config file behind.
- Who is it for?
- WhiteSur fits a GTK desktop where the macOS look matters more than the light and dark switch, and where you are willing to run two shell scripts and rerun the installer to overwrite a config file when you want a different theme. Skip it if you depend on GNOME's own appearance, on libadwaita apps following your color scheme, or on a rollback path for the file that `-l` overwrites.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 64 days ago.
- What is it written in?
- Mainly CSS, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 14, 2026, and from our analysis. They are not legal advice.
Star history
- vinceliuice/WhiteSur-gtk-theme9,440 ★ · +151
| Repository | 2026-09-22 | 2026-11-14 |
|---|---|---|
| vinceliuice/WhiteSur-gtk-theme | 9.3k | 9.4k |
151 Stars in the last 53 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
Why `./install.sh -l` overwrites gtk-4.0 instead of writing a preference
Gnome 43.0 moved more built-in applications onto libadwaita, and libadwaita does not support custom themes. Neither gnome-tweaks nor dconf-editor can change how those apps look. The route offered here is heavier: overwrite the gtk-4.0 configuration file in $HOME/.config/gtk-4.0 with the theme file itself.
./install.sh -l # Default is the normal dark theme
./install.sh -l -c light # install light theme for libadwaitaRead what you give up. Every GTK4 app is pinned to one theme, and you cannot switch it afterwards, not even between light and dark. Changing your mind means running the installer again with a different theme to overwrite the same file. The author calls the method not perfect and states it is the only way to keep themes on libadwaita apps for now.
One thing to notice about the option list further down the page: it documents `-d`, `-n`, `-o`, `-c`, `-a`, and `-t`, but says nothing about `-l` or `-N`. Treat `./install.sh -h` on your own machine as the authority on which flags exist, not the summary.
A bare `./install.sh` writes the whole opacity and color matrix
The shortest install is two commands.
git clone https://github.com/vinceliuice/WhiteSur-gtk-theme.git --depth=1./install.shA bare run does not install one theme. Two of the flags default to everything: `-o, --opacity [normal|solid]` reads Default is all variants, and `-c, --color [light|dark]` reads the same. So an unadorned run writes normal and solid opacity variants in both light and dark, into `/home/[USER_NAME]/.themes` unless you point `-d, --dest DIR` elsewhere. The directory is named by `-n, --name NAME`, default `WhiteSur`.
Accent color is a separate repeatable list, and repeatability is how you combine them:
./install.sh -t red # install red theme accent only
./install.sh -t red -t green # install red and green theme accents
./install.sh -t all # install all available theme accents`-t` takes default, blue, purple, pink, red, orange, yellow, green, grey, or all, and its default value is a BigSur-like theme rather than a named color. Window control buttons come from `-a, --alt [normal|alt|all]`, default `normal`.
The cost of those defaults is disk and confusion. Every combination lands as its own directory, and the theme you actually see is whichever you last picked in your settings. If you want one light theme, pass `-c light` and `-o normal` instead of accepting the matrix.
The dependency list is a build note, not your to-do list
Compiling from source wants sassc, a glib development package, and libxml2-utils, and the glib package name changes with the distribution: `libglib2.0-dev-bin` on ubuntu 20.04, `libglib2.0-dev` on ubuntu 18.04, debian 10.03 and linux mint 19, `glib2-devel` on Fedora and Redhat. Four more tools are optional and each is tied to one step: imagemagick for the GDM theme tweak, dialog for installing in dialog mode, optipng and inkscape for asset rendering.
The line that follows settles the question of who runs them. The installer already provides all of those dependencies. You run the script and it handles them.
What that sentence does not tell you is how. No command for installing system packages appears, no prompt is described, and no way to skip the step is offered. On the five distributions named above, the package names are pinned down for you. On anything else, arch or solus or openSUSE, you get nothing about what the package is called or whether the script attempts an install at all. Check what your distribution calls the glib development package before you run it, because the whole build stops on that one name.
Your application theme changes without it; the shell does not
WhiteSur is two things wearing one installer. It themes your applications, and it themes your GNOME Shell. Those are different operations, and the shell half does not follow from the theme files alone.
The `user-themes` extension is what separates them, because it enables the gnome-shell theme rather than only the application theme. Two more sit in the recommended list for the shell specifically: `dash-to-dock` for the dock, and `blur-my-shell` for panel effects.
The README links them on extensions.gnome.org, so making the shell half work means obtaining those three through whatever route your distribution uses and then pointing GNOME at the theme yourself.
And even with all three present, libadwaita applications still ignore the theme, because they never read the application theme in the first place. That gap is what `./install.sh -l` covers, at the price of the light and dark switch. Installing the extensions and running `-l` are two separate jobs, and finishing one does nothing for the other. A desktop that looks themed in your file manager while the text editor stays stock is the usual result of stopping halfway.
`tweaks.sh -g` needs root, and its flags contradict their own examples
The GDM login screen is handled by a different script and it requires root. `./tweaks.sh -g` installs the default GDM theme, `-b` sets the background to default, blank, or an image path, and the default wallpaper is BigSur-like.
sudo ./tweaks.sh -g -b "my picture.jpg" # use the custom background
sudo ./tweaks.sh -g -b default # use the default background
sudo ./tweaks.sh -g -b blank # make it blankTwo flags control the treatment of that image, `-nd` and `-nb`, listed in the options as not darkening and not blurring. Watch the examples though, because the comment beside `sudo ./tweaks.sh -g -nd` reads darken the default background, the opposite of the flag name. When a name and its example disagree, run it and look at the result rather than trusting either line.
Running this as root deserves care. imagemagick is optional and needed only here, for the GDM tweak.
The Firefox theme lives in `src/other/firefox` and edits in place
Firefox is handled separately and its files sit in their own tree, under `src/other/firefox`. A plain `./install.sh` run does not touch them. You need `./tweaks.sh -f` for the default WhiteSur theme, or pass one of the listed variants: `(monterey|flat)`, `alt`, or `(darker|adaptive)`.
./tweaks.sh -e # edit the installed Firefox theme
./tweaks.sh -f -r # remove installed Firefox theme
./tweaks.sh -f monterey # install Monterey Firefox theme`-e` is the interesting one, because it opens the installed Firefox theme for editing. The customization that the GTK side hands you through flags is done by hand here, in files.
Run `./tweaks.sh -h` to see what your copy supports. And anything you hand-edit under `src/other/firefox` will not survive a pull from upstream, so keep those changes outside the clone if you plan to update later.
Four uninstall commands, and none of them restores gtk-4.0
Removing the theme takes four separate commands, one per thing the two scripts touched.
./install.sh -r
sudo ./tweaks.sh -g -r
./tweaks.sh -f -r
./tweaks.sh -F -rThe first undoes the GTK themes, the second the GDM theme, the third the Firefox theme, the fourth Flatpak Gtk themes.
Nowhere in those four is the gtk-4.0 overwrite from `-l`. The README's uninstall list does not include a command that restores $HOME/.config/gtk-4.0. If you ran `-l` and then uninstall, your GTK4 applications keep whatever was written there, still pinned to a single theme. That is the one piece of this project you install with a flag and remove by hand.
The rest of the tree is small enough to read end to end: `install.sh`, `tweaks.sh`, `clean-git.sh`, `parse-sass.sh`, `make-release.sh`, then `src/`, `libs/`, `other/`, and `release/`. Releases are named by date, 2026-07-07, 2026-08-08, 2026-09-10, with the last push landing on 2026-09-11 under an MIT licence in COPYING.
Editorial conclusion
WhiteSur fits a GTK desktop where the macOS look matters more than the light and dark switch, and where you are willing to run two shell scripts and rerun the installer to overwrite a config file when you want a different theme. Skip it if you depend on GNOME's own appearance, on libadwaita apps following your color scheme, or on a rollback path for the file that `-l` overwrites. Before installing, run `./install.sh -h` on your own checkout, since the documented option list leaves out `-l` and `-N`, and confirm the `user-themes` extension is present if you want the shell themed and not only your applications.
Frequently asked questions
How do I install the WhiteSur GTK theme on Linux?
Clone the repository and run the installer: `git clone https://github.com/vinceliuice/WhiteSur-gtk-theme.git --depth=1`, then `./install.sh`. The installer already provides sassc along with the glib and libxml2 packages it needs.
How do I remove the WhiteSur GTK theme I installed?
Four commands, one per installed piece: `./install.sh -r` for the GTK themes, `sudo ./tweaks.sh -g -r` for GDM, `./tweaks.sh -f -r` for the Firefox theme, and `./tweaks.sh -F -r` for Flatpak Gtk themes.
Which dependency do I need on Ubuntu to build WhiteSur?
The glib development package differs by release: `libglib2.0-dev-bin` on ubuntu 20.04, and `libglib2.0-dev` on ubuntu 18.04, alongside libxml2-utils and sassc. The installer supplies all of them.
How do I install WhiteSur on Fedora?
Clone the repository and run `./install.sh`. Fedora and Redhat are the distributions listed with `glib2-devel` as the glib development package, rather than the Debian family names.
Does WhiteSur build on Linux Mint the same way?
Linux Mint 19 is listed alongside ubuntu 18.04 and debian 10.03 as needing `libglib2.0-dev` and libxml2-utils, plus sassc. Run `./install.sh` and it handles those dependencies itself.
How do I pick a different accent color for WhiteSur?
Accent color is a repeatable flag: `-t red`, `-t red -t green`, or `-t all`. Accepted values are default, blue, purple, pink, red, orange, yellow, green, grey, and all, and the default is a BigSur-like theme.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/vinceliuice-whitesur-gtk-theme)Star history chart for your README
[](https://hysenlabs.com/projects/vinceliuice-whitesur-gtk-theme)Was this useful?