Unifying my KDE Themes for User Root

One of the activities I have undertaken on my laptop ‘Klystron’, was to install numerous Themes au complet. I knew from the beginning that some of those could cause conflicts.

The conflicts never affected my session as the regular user. But eventually I found, that when I opened the occasional GUI applications that need to be run as ‘root‘, which takes place via the ‘./kdesu‘ command in directory ‘/usr/lib/kde4/libexec‘, those applications which did not use the GTK library as their GUI-provider, did in fact use Qt, saw that QtCurve was installed, and displayed application windows which though usable, also looked rather weird, borrowing from QtCurve because QtCurve was installed.

AFAIK this is caused, because when we launch a GUI application as root, that application is not passed all the environment variables which regular-user applications can read, for Qt applications to know the details of how we have themed our desktops. And one way we can see this, is when we run ‘./kdesu systemsettings‘, the settings dialog opens, and shows us previews of many of the Theme-related settings, but then later, those previews did not predict what the window styles, decorations, etc.. do look like. Those jump back to defaults, and in my case to defaults which recognize that I have the evil QtCurve installed.

In general, I do not recommend that people fiddle with this, unless they already have a problem. What may eventually happen, is that our KDE windowed applications will not launch again, leaving us in the potential situation where we also cannot reset those preferences, because the ‘systemsettings‘ window itself may no longer open, as root

For me, everything was still in a working state, but started to look so odd, that it needed some cleaning. And what I found was, that by just plugging at the systemsettings window for root, did not solve much. I did recognize that maybe I should not choose QtCurve from there, just because I might later want to uninstall it, but I discovered little else.

But there was a tool which eventually became of use.



(As root: )
apt-get install qt4-qtconfig

(As Regular User: )
./kdesu qtconfig


This tool was able to configure one of ‘my’ widget styles (belonging to root) into an orderly state, and then, from



(As Regular User: )
./kdesu systemsettings
(Application Appearance -> Widget Style)


I was able to select that same style as well, and regain an ordered appearance, of Qt-based, root, GUI windows.

The style which I chose to use was ‘Cleanlooks‘, while also keeping as many of my settings as possible unchanged and consistent with the ‘Oxygen‘ Theme.

It did remain very different in appearance, from my user Theme. But it is now also much more readable and usable, than it was before.

KDE_Themes_1

Now, if I really wanted to, I could do as another user has already done. I could use ‘qtconfig‘ in order to set up an elaborate ‘QtCurve‘ style, and then choose QtCurve from the (‘root‘) systemsettings panel.

But because my main goal is stability I did not go this route. And as it is, ‘Cleanlooks‘ is fully functional.

Dirk

(Edit 08/10/2016 : ) This is a potentially confusing subject I am not really an expert in, Why there are so many specific terms, for how we can tweak our desktop styles:

  • Themes.
  • Widget Styles.
  • Button Styles.
  • Icon Sets.
  • Window decorations…
  • Fonts.

The main point to remember is, that the ‘root‘ user is technically not supposed to have any of those, but only to administrate our computers. Yet, there do exist applications with GUIs, that are supposed to run with ‘root‘ privileges, which are the Linux equivalent to ‘Administrative Privileges’. This posting I wrote had to do with a solution I needed to find, when those GUI settings were no longer well-behaved. Each user can normally store his own GUI settings, in his home folder, and ‘root‘ also has a home folder of sorts.

But I just wanted to add a brief note. Earlier, I mentioned both ‘Themes’ and ‘Widget Styles’. It is important, if changing the GUI preferences causes instability, not to try to make ‘root‘ use an entirely new Theme.

As I understand it, when we select a KDE Theme, then we are also choosing an aspect from each of the following listed items above, to be defined by that Theme. However, because some users do not like every setting that originally belongs to a Theme, we can choose each setting individually, thereby creating a version of that Theme, which we have customized a little bit.

If I was to choose a whole new Theme that (non-user) ‘root‘ should use, I would be making the mistake of changing everything, that is usually defined by the Theme. Because on my systems the Themes default to ‘Oxygen‘, I well-enough left that master-setting alone, for non-user ‘root‘.

Also, I think that there are certain settings, such as ‘Window Decorations’ and ‘Desktop Effects’, which we can never choose for user ‘root‘, because they need to be implemented by the window manager.

When we open a window belonging to an application running in root mode, it is still being displayed as part of our non-root desktop. And then it would make no sense for window-manager settings to be different somehow for those windows, from what they are, for our personal desktop-settings.


 

A question that would strike me as reasonable, since I have the Oxygen Theme installed, and since this allows for the Oxygen widget-style to be selected as well, Why I did not do so with ‘qtconfig‘.

And my answer to this self-imposed question is, that the Oxygen widget-style is configurable, just as the Theme is. And if I had used qtconfig on it, I would also have created a customized version of the Oxygen widget-style, with simplified colors etc., that would still not have matched the Oxygen widget style exactly, of my user application windows.

 

Print Friendly, PDF & Email

Leave a Reply

Your email address will not be published. Required fields are marked *

Please Prove You Are Not A Robot *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>