I want to set up a custom Linux OS primarily for hobby and learning use. It doesn't need a desktop environment, but I do want to at least customize the visual appearance of the window manager and maybe a taskbar. Applications (with GUI) can be run using the terminal, which would be the default application after booting. Basically, I want it to have the look-and-feel of an old computer, but relying on my own graphics for the GUI. It also needs to be able to be controlled entirely using the keyboard.

I have knowledge of Linux and understand what a window manager, desktop environment, etc. are, but I don't have direct knowledge of developing for Linux. I have searched around the web for tools and techniques to make such a GUI, but there is so much info that I'm getting a bit confused about what I could use and do. I can get a bare Linux distro without a GUI, and I know I have to install at least a window manager for a GUI to appear, but that's the point, I want to have a custom GUI with taskbar, but I'm looking at this more from a graphic designer's point of view than a programmer's, so I don't really know where to continue from there. I was thinking of using Qt or SDL for the GUI and the applications. So my question is really about how to create a custom GUI without developing a window manager from scratch. Python/Lua or even C# are preferred, but C++ is not a problem.

FYI, it is not meant to work as a standard OS like Ubuntu. It's for specific use and only intended to run my own simple applications (I run the OS as a virtual machine). The system is for a very specific and unique purpose, but I'm unsure how people will react if they knew what is was for. This is not something for professional use, nor really serious, but just some exploration into understanding Linux, and operating systems in general.

  • So are you looking to write your own window manager, or write your own X server? Are you sure you understand the architecture? You do not need a window manager to have a GUI (only to have a comfortable GUI). Commented Jul 23, 2015 at 22:44
  • No, I don't really want to write my own X server or even a window manager. I'm not that experienced. I really just want to customize the actual appearance of the GUI. Basically, the system needs to represent an embedded or kiosk system, just with more than one application + terminal Commented Jul 24, 2015 at 7:03
  • I wonder, since I just want a few simple applications, can I just use Qt, for example, to create an application that simulates the main GUI I want (launched through the Linux terminal), such as the taskbar, then launching other Qt-based applications through that? It doesn't need to be complex or anything. This already makes it much like a kiosk system. It appears that as long as the Qt libraries are installed, I can run a (full-screen) Qt-based application without any window manager or desktop environment. Commented Jul 24, 2015 at 10:56
  • You need an X server to have a GUI. Beyond that, you don't need a window manager if you're running a single application. With multiple applications, technically, you don't need a window manager, but in practice, you do want one, otherwise switching between windows is painful. Additional features such as a task bar are beyond the scope of window managers and into desktop environments though some WM do offer a task bar. Commented Jul 24, 2015 at 11:04

1 Answer 1


The role of an X11 window manager is quite complex. First, learn more about X core protocol and X architecture. Then read EWMH if you need to understand the conventional roles of WMs (also known and respected by X11 toolkits like GTK, Qt, etc...).

Even single-application but multiple-windows (e.g. popups) programs practically need some WM

Then you could choose, or configure, or perhaps patch, some window manager to suite your particular needs. Perhaps awesome, since it is scriptable in Lua, might please you (and you could find other scriptable window managers, or patch some existing one...). Some window managers are using only or mostly the keyboard (e.g. ratpoison, xmonad, etc...)

(writing your own EWMH-compliant window manager would take you too much time)

You must log in to answer this question.

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