How to create your own Desktop Environment

Hi Jay! I think it would be very interesting to have a tutorial on how create a debian/ubuntu based desktop environment. Very helpful channel. Thanks!

Welcome - I have to admit your post got me puzzled. :thinking:

What do you mean by “creating your own desktop environment”? I hope you actually mean “how do I choose the right desktop environment and tweak it to my needs”.

There are already a ton of different desktop environments available, and with the customization option each offers, I can’t think of a single usecase that can’t be handled within any of the existing desktop environments.

Creating - and also maintaining - a whole new desktop environment is no small task. But if that’s really your intention, you also should have the know-how already to do so. And all respects to Jay and LearnLinux.tv, but it’s for sure not something that can be covered in any single or even series of videos.

Cheers! :sunglasses:

Thanks @ameinild. Well, in my case, I already run “my own DE” essentially using i3, rofi, and some other packages I’ve installed. It’s not so difficult, but it takes a while to realize how to configure all the packages to work together. However, I would like to improve it and distribute it, so having a tutorial on how to ship a minimal DE by combining existing packages would be of great help :slight_smile:

Maybe put your config files into a github project with comments and documentation? Or, since you already did it, make a video yourself? Or both, even. :slight_smile:

1 Like

I agree with the mention for window managers. I’m a big fan of i3 and Openbox for this purpose. My only worry is that Openbox doesn’t seem to be regularly maintained, and seems to lack HiDPI support. That’s why I switched from Openbox to GNOME some years ago.

1 Like

Actually, this is what I love about MX Linux and some of the other distros out there. I primarily use MX Linux, Fluxbox Edition. The team has put together the WM, Fluxbox, with Tint2, rofi, and other tools to make it into a full DE experience. Other distros have done similar things like Bunsen Labs and their Openbox DE experience, and there are many others. @manucalop it sounds like you have done something similar. Some distros have tools to roll your own into isos. You can use the MX or Antix tools to do that. I’m rather certain that you could build your version with i3, rofi… on MX and then package it together into an iso. You could also find a distro that has a very similar collection, and join their community to maintain and improve it as newer packages are released. I’m not an i3 guy, but as popular as that is there must be a distro that has focused their development on an i3 experience. Fedora just came out with an i3 spin, maybe you could join that team and help improve their spin with a new release every 6 months.

This is one of the things that I love about Linux, the creativity of individuals has a playground of Free and Open Source Software to create fun and exciting projects that are neat to use as an individual or fun to share with a like minded community.

2 Likes

Yeah, some of the distros really go all out making it easy to set things up how you want.

Weirdly, some people think that’s “confusing” and “overwhelming” and count it as a negative for Linux. ¯\(°_o)/¯

1 Like

MX has a very solid setup to be sure. The last time I used MX though, their HiDPI support wasn’t all that great. They might’ve improved that nowadays for all I know, but what seems to be common is that when you have a lightweight desktop environment or a window manager, support for higher resolution displays seem to be a common sacrifice. Every time I attempt to go back to window managers (which I prefer), things like that are usually what makes me go back to a desktop environment.

Also, by the time distributions add quality of life improvements to their window manager implementation to give it some of the features normally reserved for desktop environments, they end up becoming just as bloated as some of the desktop environments they’re attempting to differentiate themselves from.

It’s a very hard balance to find for sure.

What I did to get HiDPI working nice with i3 (but since it’s all X config, it should work with other WMs too):

Look at HOWTO set DPI in Xorg - LinuxReviews for more info. We need to set both the Display DPI and the Font DPI.

Configure Display DPI

Create or edit /etc/X11/xorg.conf.d/40-dpi.conf. Inside will be:

# Set monitor DPI (see https://linuxreviews.org/HOWTO_set_DPI_in_Xorg for details)
Section "Monitor"
    Identifier   "<default monitor>"
    DisplaySize  1224 385    # In millimeters
EndSection

Configure Font DPI

Edit ~/.Xresources. Change the Xft.dpi: to say

Xft.dpi: 110

This works nicely for me. :slight_smile:

Like Buffy recommended, for easier setups using window managers, you can do a github repo and upload your dotfiles there. I just joined the forum, so I very likely don’t have permissions to post links, but you can search for Luke Smith’s dotfiles for dwm, or oO.o’s (probably found as o0-o) dot-dot-dot github repo. You can probably do something similar with i3. I will probably do so with my Sway config at some point.

Also, hi @Buffy, glad to see you here! I saw this forum in the video of Jay and Tom reviewing Linus’ Linux Challenge, so I immediately wanted to join it. I’m glad to see someone I know is also part of this forum. And I see you’re a mod here, nice!

Maybe I’m misremembering seeing you on some other channels comment sections on youtube that I was subbed to way before LLTV (without divulging my other interests, maybe Sh[…]dk sounds familiar, if not, I’m just misremembering), but I’m certain I’ve seen you long time ago on the Level1Techs forum.

So, anyway, I welcome myself to this forum!
:rofl:

2 Likes

Manjaro has had an i3 “spin” for quite awhile; I run it on PC and my RPi 4B. They have a Wayland/Sway one, too, now.

1 Like

I think I might’ve done something like that too, when it comes to configuring DPI in Xorg. It’s been a while but I recall that fixing a good majority of the issue, but other elements ended up being sized incorrectly and things were very inconsistent.

I really wish there was a movement that could be started to dust off some of the window managers and update them with native HiDPI support. I took a look at the Git repository for Openbox just now, and the most recent commit was 3 years ago, with most over a decade ago. It makes it really hard for me to use a window manager when there could be security concerns on account of the fact it’s not actively maintained. Openbox is just one example (it’s my favorite) but as far as I know, only i3 has been updated to support more modern frameworks (in the form of Sway). With as many people that adore window managers (myself included) I find it kind of surprising that they don’t see much in the way of development, outside of Sway.

2 Likes

Sway is just for Wayland and, IMHO, for my use case, Wayland is such a pain to mess with that I don’t use it.

1 Like

I’m using sway. It’s a complete rewrite of i3 for wayland, using wlroots and it aims to be compatible with i3 config files and status bars.

Last commit for Fluxbox was 4 months ago. JWM (my favorite xorg WM) had its last commit 28 days ago. Last commit on dwm was 2 months and a few days ago. dwl had its last commit 2 months ago. RiverWM had its last commit 6 days ago. AwesomeWM had its last commit 7 days ago.

Just to give a different perspective, most of those software try to keep everything minimalist, with dwm and its wayland (also wlroots, like sway) counterpart dwl going to extremes with that, allowing their users to hack and customize the code (the suckless philosophy). I’m impressed JWM still sees active development, because the project is supposed to be a very small WM with the minimal installation requiring only xlib (with additional libs beings available for more advanced stuff). river (also wlroots) started as a dwm for wayland, but took a different turn to features as opposed to hackability, that dwl follows, but still tries to maintain a minimal footprint.

Not sure how’s HiDPI support in Xorg WMs. I used JWM on a 4K screen, but it was a 49" TV, and everything was small, but I just set the screen to 1080p and it was fine. Of course, that’s not equivalent to running 4K with 2x scaling. sway supports this and I think all wlroots-based WMs do. But of course, wayland suffers from some quirks like not being able to screen share the whole screen (you can screen share individual windows though). And for sway, it’s as easy as setting your resolution and trying to play with the scaling. It also supports non-linear scaling (i.e. 1.25x, 1.11x etc., whatever you set it to).

I used Wayland on GNOME Shell and KDE. Not very much on GNOME Shell, but it was a bit of a pain, but not much. On KDE, I had no issues… that is, if I reboot often, otherwise, KWin_Wayland would freeze and lock my GPU, as in, ssh was working, but switching ttys did not. I had to remote into my PC from my phone and kill kwin and restart sddm to get my screen back. At other times, KWin_wayland (or maybe it was just manjaro, idk) would kill SSH too, ttys and the keyboard (couldn’t caps lock), but a windows VM (used qemu+KVM though libvirt) inside it would still be running, which was weird.

Sway on the other hand, top notch. I used it on my work laptop, sometimes connecting a display or projector, on my personal PC (a weak J3455M) and on my current PC, the RPi 4. Outside of having the quirk of not being able to share the whole screen, it has worked perfectly for me and removed all screen tearing for me. On weak hardware, screen tearing is an issue on Xorg, that on Wayland is non-existent.

Given, I’m not a power user or a gamer, so I haven’t tested sway to its fullest, but for everything I tried, sway worked fine for me. Obviously it can’t work for everyone, otherwise we wouldn’t have so many choices of DEs and WMs.

Enlightenment DE is kind of the oddball here. It’s one of the oldest DE around and it keeps being updated. Which is awesome! Last git commit was 6 days ago. And it also has a Wayland mode. I wish I could have figured out how to compile it with Wayland support, because I’m too noob, I just got used to the sway workflow (which works well for me).

I think the WM world has a lot of good software and it’s doing fine.