Is there a desktop environment in which I can modify all settings completely through config file(s)? And then load them on a new system? I'm currently using Manjaro with KDE, and I really like my setup. I use a dark theme and I've defined a number of custom keybindings.

I use several different computers, and I'm also constantly installing new OS's on various machines. Getting my desktop setup to my liking via the point-and-click settings/preferences repeatedly is borderline unbearable to me, but I like consistency. What I would like to do is version control the desktop environment config file(s) with git and then simply push/pull changes. I do this with my .rc files and I like it. If I break something I can simply revert back to a previous version.

I realize that this might not be possible since there are multiple moving parts involved (e.g. a window manager, display manager, others? etc.), and it might not be possible with every desktop environment. If possible, I'd like this to work with KDE, but beggars can't be choosers.

  • 1
    I'm not a KDE user, but I'm pretty sure that all point-and-click preferences are just frontends that actually store the settings on configuration files, you just need to do a little research, trial and error and find out where are such files.
    – Dalvenjia
    Dec 1, 2016 at 23:14
  • @Dalvenjia You are right. Perhaps a better question to ask would have been, "Is there a DE that is modifiable through one single config file?" Upon searching, I found that KDE has many different config files, most of which are stored in ~/.config, but my approach is not really reasonable given everything else that's stored in there.
    – haff
    Dec 14, 2016 at 22:20

1 Answer 1


What I would like to do is version control the desktop environment config file(s) with git and then simply push/pull changes.

All Linux desktop environments (DEs) that I know of store their configurations in files, so choice of DE is not critical for this.

On balance though, this ain't such a great idea, because a lot of default settings are going to end up in there. Thus the files will get polluted and difficult to edit/merge by hand, largely defeating the purpose of using version control. You might as well just tar up the configuration directory.

KDE, for instance, stores settings in ~/.config, and configuration is managed through many different files like plasmarc, plasmashellrc, kglobalshortcutsrc (just to name a few). As you install programs, some configurations, such as those of chromium and syncthing, will be stored in ~/.config as well, and these settings will update automatically though you will likely not want to save these. You could use a .gitignore but this will become onerously tedious as you will constantly have to add new files/directories to this, and it will be difficult to tell what has been modified by you vs. automatically.

The usual approach to this kind of thing is to find out what command-line tool is used to set settings in the DE (most of them should support this). Then you write a script that invokes this command to set all the settings, and version control that script. This is what I do (with the xfce4 desktop environment, though a lot of others support command-line configuration as well; I don't know about KDE specifically, but GNOME does for sure).

  • Great. I think your method will work for me. Would you be willing to share your xfce script?
    – haff
    Dec 2, 2016 at 2:00

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .