Well, first of all: – Bluefin is a dream come true!
While getting accustomed with all those immutability features/oddities, I stumbled upon a quite annoying issue, at least for newcomers:
Running the bare gsettings
[1] command just didn’t reflect my Gnome desktop settings! Whenever I changed a setting via gsettings set <key> <value>
, it had no effect on my desktop. And settings changed via the GUI weren’t reflected in gsettings get <key>
.
This confused me so much that I even seeked the attention of a Gnome dev – and wasted some of their time.
As I figured out today, Homebrew knows its own gsettings
binary (probably pulled as a dependency of some tool I installed, I dunno). In combination with Bluefin’s default PATH
hierarchy of
/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:/var/home/salim/.local/bin:/var/home/salim/bin:/usr/lib64/ccache:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin
this lead to
> which gsettings
/home/linuxbrew/.linuxbrew/bin/gsettings
While I understand that Homebrew’s binaries generally are supposed to take precedence over the immutable system ones in /usr/bin/
& Co., I’m wondering:
-
Why does Homebrew’s bin paths come before (i.e. mask) the user’s bin paths (
~/.local/bin
and~/bin
)? This seems just wrong to me. -
Is there an easy way to stop Homebrew from polluting my
PATH
(i.e. masking arbitrary system binaries) with transitive dependencies like thegsettings
CLI[2] without altering the generalPATH
hierarchy?Or should we actually move Homebrew’s binary dirs at the very end of
PATH
since we’re running an immutable OS anyways[3]?
tl;dr: If you wanna change your desktop’s settings via the commandline, always use /usr/bin/gsettings
!
This links to the Debian manpage, which isn’t completely accurate for our Fedora builds. But debiman renders manpages in such a perfect way that it’s hard to resist linking to them. ↩︎
Which doesn’t even exist as a formula itself. ↩︎
Which only ships a carefully selected palette of CLIs. ↩︎