SEARCH

Enter your search query in the box above ^, or use the forum search tool.

You are not logged in.

#1 2014-03-26 11:24:32

Alad
Software Satan
Registered: 2014-02-20
Posts: 1,512

XSettings - Unified desktop settings

After proposing this in the Janice thread, I've decided to write a short tutorial. The "unified" guarantee is only in the title, I'm afraid, but it's helpful when you just can't find that one setting to configure. smile

==================

Unlike fully-flegded desktop environments, Openbox does not have a settings manager by default. Settings like the keyboard rate or mouse speed are set in shell scripts, various configuration files are changed manually or with the help of tools like lxappearance.

Overall this works well enough, but different toolkits (each with their own settings) can make it hard to keep the picture. For example, the double-click delay is set in at least four (!) different areas: qt, gtk2, gtk3, openbox - even java in older versions.

XSETTINGS attempts to make things easier.

XSETTINGS provides a common API to configure common desktop settings. Similar database configuration systems such as gnome-config, GConf, liproplist and the kde configuration system already exist, however XSETTINGS unifies these systems. XSETTINGS daemons, such as gnome-settings-daemon from gnome, xfce-mcs-manager from xfce4, and other from openbox, etc, push desktop-environment-specific data to the XSETTINGS database. Technically, XSETTINGS is a simple storage medium intended to store only strings, integers and colors. When an XSETTINGS manager quits, the clients restore all settings to their default values.

Full standard here: http://standards.freedesktop.org/xsetti … atest.html

Two light-weight implementations are xfsettingsd (from xfce4-settings) and xsettingsd. Former offers good GUI tools, latter clear syntax (as in no XML).

edit: there's also lxsession (which replaces "openbox-session"). GUI/syntax is somewhere between the two others - I'll add it later.

==================
A. xfsettingsd (xfce4)
==================

Fairly straightforward:

sudo aptitude install xfce4-settings

This will install one other package, xfconf. Run the daemon with

xfsettingsd

Now it looks like your theme/font settings are missing. Don't panic, they're still there - the new xsettings simply take precedence, but haven't been configured yet. Go to

xfce4-settings-manager

or

xfconf

After changing the Appearance, Keyboard and Mouse tabs, my xsettings.xml (under ~/.config/xfce4/xfconf/xfce-perchannel-xml) looked like this:

<?xml version="1.0" encoding="UTF-8"?>

<channel name="xsettings" version="1.0">
  <property name="Net" type="empty">
    <property name="ThemeName" type="string" value="waldorf"/>
    <property name="IconThemeName" type="string" value="CrunchBang-Dark"/>
    <property name="DoubleClickTime" type="int" value="400"/>
    <property name="DoubleClickDistance" type="int" value="5"/>
    <property name="DndDragThreshold" type="int" value="8"/>
    <property name="CursorBlink" type="bool" value="true"/>
    <property name="CursorBlinkTime" type="int" value="1200"/>
    <property name="SoundThemeName" type="string" value="default"/>
    <property name="EnableEventSounds" type="bool" value="false"/>
    <property name="EnableInputFeedbackSounds" type="bool" value="false"/>
  </property>
  <property name="Xft" type="empty">
    <property name="DPI" type="empty"/>
    <property name="Antialias" type="int" value="1"/>
    <property name="Hinting" type="int" value="-1"/>
    <property name="HintStyle" type="string" value="hintslight"/>
    <property name="RGBA" type="string" value="rgb"/>
  </property>
  <property name="Gtk" type="empty">
    <property name="CanChangeAccels" type="bool" value="false"/>
    <property name="ColorPalette" type="string" value="black:white:gray50:red:purple:blue:light blue:green:yellow:orange:lavender:brown:goldenrod4:dodger blue:pink:light green:gray10:gray30:gray75:gray90"/>
    <property name="FontName" type="string" value="Liberation Sans 10"/>
    <property name="IconSizes" type="string" value=""/>
    <property name="KeyThemeName" type="string" value=""/>
    <property name="ToolbarStyle" type="string" value="icons"/>
    <property name="ToolbarIconSize" type="int" value="3"/>
    <property name="IMPreeditStyle" type="string" value=""/>
    <property name="IMStatusStyle" type="string" value=""/>
    <property name="MenuImages" type="bool" value="true"/>
    <property name="ButtonImages" type="bool" value="true"/>
    <property name="MenuBarAccel" type="string" value="F10"/>
    <property name="CursorThemeName" type="string" value=""/>
    <property name="CursorThemeSize" type="int" value="0"/>
    <property name="IMModule" type="string" value=""/>
  </property>
</channel>

Unlike lxappearance, these also apply to root (gksudo) apps.

What these mean: http://www.freedesktop.org/wiki/Specifi … sRegistry/

As you can see there are several GTK keys. More cross-toolkit ("Net") keys were proposed over 7 years ago, but QT can refer to GTK with the "GTK+" style set:

cat ~/.config/Trolltech.conf
...
style=GTK+

If you've everything set, you can add xfsettingsd to your autostart

## XSettings daemon
xfsettingsd &

Note: if you want to use all xfce keyboard/mouse settings instead of xset r and xset m, you also have to add xfce4-settings-helper & there (unless you use 4.10, then xfsettingsd is enough).

===========
2. xsettingsd
===========

This package is not in the wheezy repositories, but it can be backported from jessie.

sudo aptitude install debian-keyring libpthread-stubs0 libpthread-stubs0-dev libx11-dev libxau-dev libxcb1-dev libxdmcp-dev pkg-config scons x11proto-core-dev x11proto-input-dev x11proto-kb-dev xorg-sgml-doctools xtrans-dev
dget http://ftp.de.debian.org/debian/pool/main/x/xsettingsd/xsettingsd_0.0.20121210+72+g474f18a-1.dsc
cd xsettingsd-0.0.20121210+72+g474f18a
dpkg-buildpackage -us -uc

sudo gdebi ../xsettingsd_0.0.20121210+72+g474f18a-1_*.deb

The above file now looks like this (in ~/.xsettingsd):

Net/DoubleClickTime 400
Net/DoubleClickDistance 5
Net/DndDragThreshold 8
Net/CursorBlink 1
Net/CursorBlinkTime 1200
Net/ThemeName "waldorf"
Net/IconThemeName "CrunchBang-Dark"
Net/SoundThemeName "default"
Net/EnableEventSounds 0
Net/EnableInputFeedbackSounds 0
Xft/Antialias 1
Xft/Hinting -1
Xft/HintStyle "hintslight"
Xft/RGBA "rgb"
Xft/DPI 98304
Gtk/CanChangeAccels 0
Gtk/ColorPalette "black:white:gray50:red:purple:blue:light blue:green:yellow:orange:lavender:brown:goldenrod4:dodger blue:pink:light green:gray10:gray30:gray75:gray90"
Gtk/FontName "Liberation Sans 10"
Gtk/IconSizes ""
Gtk/KeyThemeName ""
Gtk/ToolbarStyle "icons"
Gtk/ToolbarIconSize 3
Gtk/IMPreeditStyle ""
Gtk/IMStatusStyle ""
Gtk/MenuImages 1
Gtk/ButtonImages 1
Gtk/MenuBarAccel "F10"
Gtk/CursorThemeName ""
Gtk/CursorThemeSize 0
Gtk/IMModule ""

A little menu.xml entry

<menu id="xsettingsconfig" label="Xsettingsd">
	<item label="Edit config file">
		<action name="Execute">
			<command>geany ~/.xsettingsd</command>
		</action>
	</item>
	<item label="Restart xsettingsd">
		<action name="Execute">
			<command>xsettings-restart</command>
		</action>
	</item>
	<separator label="Help?"/>
	<item label="man page">
		<action name="Execute">
			<command>x-terminal-emulator -e &quot;man xsettingsd&quot;</command>
		</action>
	</item>
	<item label="XSettingsRegistry">
		<action name="Execute">
			<command>x-www-browser http://www.freedesktop.org/wiki/Specifications/XSettingsRegistry/</command>
		</action>
	</item>
</menu>

More info here: https://code.google.com/p/xsettingsd/wiki/Installation

Autostart entry similar to the above.

Last edited by Alad (2014-04-04 21:38:11)

Offline

Be excellent to each other!

#2 2014-03-26 12:21:33

Snap
#! Die Hard
Registered: 2013-10-22
Posts: 567

Re: XSettings - Unified desktop settings

Thanks so much! Great guide.

Offline

Board footer

Powered by FluxBB

Copyright © 2012 CrunchBang Linux.
Proudly powered by Debian. Hosted by Linode.
Debian is a registered trademark of Software in the Public Interest, Inc.
Server: acrobat

Debian Logo