Bash One-Liner – Display All `gsettings` in GUI Dialog Window

bashgnomegsettingsyadzenity

Recently I've been encountering many questions in Ask Ubuntu that require changing gsettings to solve the problem. For example this question: How to prevent shutdown when one of two batteries is empty? references a gsettings that is new to me:

org.gnome.settings-daemon.plugins.power use-time-for-policy false

Rather than stumble across gsettings randomly every week (or so it seems), is there a bash one-liner to dump all the current gsettings to zenity (or yad) so I can scroll through everything?

Best Answer

Yad works but not Zenity (yet)

I tried doing this with zenity but couldn't figure it out. I managed to make it work with yad but after a couple of clock days had to turn to google groups to get help from the yad experts. They fixed my one-liner bash code in 12 hours!

If you don't have yad installed already you need to use:

sudo apt install yad

yad lets you sort the list by any column in ascending/descending order. You can grab the scroll bar to quickly move up and down the list. The Up/Down arrow, PgUp, PgDn, Home and End keys navigate as expected.

The one-liner bash code

Here's the bash one-liner code you can copy and paste into your terminal window:

gsettings list-recursively | sed 's/  */\n/;s/  */\n/;s/\&/\&/g' | yad --list --title "gsettings" --item-seperator='\n' --width=1800 --height=800 --wrap-width=600 --column=Group --column=Key --column=Setting --no-markup

This is for a 1080p display where the screen is 1920 pixels wide. If your screen is smaller, reduce the size of these arguments:

--width=1800 --height=800 --wrap-width=600

Sample output

When the yad scroll box opened I:

  • Clicked on the Group column heading to sort by group. Otherwise the order is random as gsettings list-recursively dumps out the database.
  • Scrolled down org.gnome.settings-daemon.plugins.power section.
  • Noticed a gsettings I've never seen before but might help me solve suspend problems I've encountered (as highlighted in screen shot below)

yad gsettings.png

The one-liner pays for itself right away

Here is the new gsettings I discovered:

$ gsettings get org.gnome.settings-daemon.plugins.power lid-close-suspend-with-external-monitor
false

The gsettings contradicts a systemd setting I have:

$ cat /etc/systemd/logind.conf | grep -i lidswitchdock | grep -vF "#"
HandleLidSwitchDocked=suspend

dconf-editor a complete GUI application

There is also dconf-editor a full blown GUI you can use: What is dconf, what is its function, and how do I use it?

To summarize the link, install it using:

sudo apt install dconf-tools

The whole link is highly recommended reading and it covers gsettings in depth as well.