RedHat recently (Spring 2025), released its RHEL10 release. I suspect I am not alone in wanting to use it, but not wanting a full blown desktop like Gnome or KDE. So this is for people who prefer smaller window managers.
I like to start with a minimal install. If one does this, even if you configured wireless during installation, upon reboot, there will be no wireless. The easiest way that I've found to fix this is to connect it by ethernet, and then install NetworkMananger-wifi. Actually, I've usually had to mount the install USB, and first add dhcpcd from BaseOS/pkgs, before I could even get the ethernet connection working. (Which means that I have to use the full install DVD rather than the boot only one). One can, I suppose, check off the "Standard" package group during install, after choosing minimal install, which would probably include the network tools, but I've gotten so used to doing it my way, that I've never tested it with the Standard group added.
Once installed and connected to the network, the next thing I like to do is install the epel repo, with sudo dnf -y install epel-release and then the rpmfusion repos. This will give me much of what I need to build the packages I want. Follow the instructions on rpmfusion to enable the crb repo. With a clone like Rocky or Alma it's just sudo /usr/bin/crb enable, if it's RedHat it's a little bit more involved.
sudo subscription-manager repos --enable "codeready-builder-for-rhel-$(rpm -E %{rhel})-$(uname -m)-rpms" |
(If your browser broke that, it should be on one line).
So, first, we'll install some packages to make building our various packages easier. I would also suggest that someone wanting to build packages take a quick look at my rpm building page as we'll make use of getting some SRPMS to build a few additional packages.
sudo dnf -y install gcc gcc-c++ make automake cmake kernel-devel tar bzip2 rpm-build rpmdevtools dnf-plugins-core git wget |
sudo dnf -y install wlroots-devel wayland-devel libinput-devel libxkbcommon-devel libxml2-devel cairo-devel pango-devel glib2-devel libpng-devel librsvg2-devel |
In case you may want to use some xorg apps, you can also install xorg-x11-server-Xwayland.
sudo dnf -y install xorg-x11-server-Xwayland |
Now the build deps.
sudo dnf -y install meson ninja-build wayland-protocols-devel |
Now, get the 0.8.4 tarball linked above.
wget https://github.com/labwc/labwc/archive/refs/tags/0.8.4.tar.gz tar xvzf 0.8.4.tar.gz cd labwc-0.8.4 meson setup build/ meson compile -C build/ cp build/labwc $HOME/bin |
This is assuming the reader uses $HOME/bin for local applications. $HOME/bin is in the default RH $PATH, though the directory does have to be manually created with mkdir ~/bin before being used.
If you're not familiar with labwc you can then go to its getting started page or my own wayland page which has some information.
In the docs directory there is a sample rc.xml as well as rc.xml.all, which the reader can adapt to their needs. I have a custom rc.xml that I've been using for a long time, and I put it in $HOME/.config/labwc/. (That directory will also have to be created by the reader.) Note that labwc's default terminal is foot. That can be installed from SRPMs, but I always use alacritty, which we'll cover below. I also like to install wmenu. This can be installed from an F40 rpm from rpmfind.net. Grab the rpm from rpmfind and install with sudo rpm -ivh. Note that with rpmfind.net, at the main page, you put the package you're seeking. Then it goes to a page where you can specify the system and the arch. Use Fedora for the system and x86_64 (assuming you're on an x86_64 machine) for the arch. This cuts down the list of available rpms to a more manageable number.
The Fedora F40 wmenu rpm installs without having to build the srpm. The rpmfind site has two fc40 wmenu rpms, use the one I linked, the 0.1.9-1. The other one, 0.1.7-1 doesn't include the needed wmenu-run.
I like to set it to open with a keyboard shortcut in ~/.config/labwc/rc.xml but that's beyond the scope of this article.
First get the sfwbar srpm for Fedora 40 from rpmfind.net. Before running dnf builddep, also get libmpdclient srpm. Lastly get the rpms--not the srpms, for fc40 gtk-layer-shell and gtk-layer-shell-devel. ALso, install with dnf -y install gtk3-devel. Now you can just run rpm -ivh on gtk-layer-shell and gtk-layer-shell-devel from the fc40 rpm, no building of the srpm is needed.
Once you've installed the gtk-layer-shell and its devel rpm, build the libmpdclient from its srpm. When you've built it, you'll see that you have in rpmbbuild/RPMS/x86_64 a libmpdclient and libmpdclient-devel rpm. Install both of them. Now you can run dnf builddep on sfwwbar.
Once that's done, run rpmbuild -ba sfwbar.spec and an rpm will show up in RPMS/x86_64. That can be installed with rpm -ivh. Now, you can add sfwbar to your $HOME/.config/labwc/autostart and the bar will show whenever you start labwc. It has reasonable defaults, but can also be configured by copying /usr/share/sfwbar/sfwbar.config in .config/sfwbar (you'll have to create the $HOME/.config/sfwbar directory). In /usr/share/sfwbar there's also a t2config that is more similar to tint which can be used if the user prefers.
I prefer to start the bar with an entry in ~/.config/labwc/autostart. My autostart file just reads
swaybg -i ~/backgrounds/background.jpg sfwbar 2>&1 & |
(We'll be covering install swaybg later in this article.)
You can, if you prefer, start the sfwbar by running labwc -s sfwbar but it's probably more convenient to have it in the autostart file.
sudo dnf -y install cmake freetype-devel fontconfig-devel libxcb-devel libxkbcommon-devel |
Building should be simple, get the code, cd in, and run cargo.
git clone https://github.com/alacritty/alacritty.git cd alacritty cargo install alacritty |
You should find a binary at $HOME/.cargo/bin/alacritty. One can put that in their path or copy it to $HOME/bin.
|
You probably want to configure alacritty. I have a page with information on doing so. There's information on their github site as well. The defaults are actually pretty reasonable.
As mentioned, I go into building rpms on my rpmbuild page, so I'll just go over the basics here. Hopefully, you've run your rpmdev-setuptree command already. Put the SRPM in rpmbuild/SRPMS. Install it with rpm -ivh. (You get the srpm by clicking the link on the left, which opens a page giving a link to the srpm).
Once you've done that, cd ../SPECS and run sudo dnf -y builddep swaybg.spec, and assuming it's been able to download all deps, then run rpmbuild -ba swaybg.spec. When that finishes, you should have a swaybg rpm in the rpmbuild/RPMS/x86_64 directory which can be installed with sudo rpm ivh.
The main page, the first link above, lists dependencies. We've probably installed most of these already, but for the sake of completeness, let's include all of them. (And if you didn't want to use labwc many of these might not have gotten installed).
sudo dnf -y install libinput-devel wayland-devel wlroots-devel libxkbcommon-devel wayland-protocols-devel pkg-config |
Now download the tarball, decompress it, and cd into the new directory.
wget https://codeberg.org/dwl/dwl/releases/download/v0.7/dwl-v0.7.tar.gz tar xvf dwl-v0.7.tar.gz cd dwl-v0.7 |
I'm assuming that someone installing this is familiar with dwl or dwm. It has fairly sane defaults, but one can customize it bye copying the config.def.h file to config.h and making changes there. The default terminal is foot, so one should at least create a config.h and change foot to alacritty. Even if one doesn't know C the file is pretty self-explanatory, and there are only slight differfences between its config.h and dwm's.
Once done, while in the dwl directory run
make sudo make install |
We can build the bar from its github page but we will need a few more packages.
We've installed all the dependencies mentioned, save one. In case you haven't, first run
sudo dnf -y install libwayland-client libwayland-cursor pixman-devel |
We'll also need a few things from rpmfind. First, get the tllist-devel srpm. After running rpmbuild -ba on the spec file, install the tllist-devel rpm. You probably don't even need to run dnf builddep on the tlist spec file.
With that installed, get the fcft srpm, and build and install that. (The tllist-devel was needed for dnf builddep on fcft).
Also, install the fcft-devel rpm that will also have been created. Once this is done
git clone https://github.com/kolunmi/dwlb cd dwlb make make install |
Now you can start dwl with dwlb. They suggest a font size of 16, one can adjust to taste.
dwl -s 'dwlb -font "monospace:size=16"' |
As mentioned on my wayland page, I get the date to show in the bar by, once dwl is running, I open wmenu and type
(while true; do date +"%R %F";sleep 60;done &)|dwlb -status-stdin all |
Which will give me a date showing 24 hour time and a YYYY-MM-DD format.
If you do want to use foot as your terminal, I wasn't able to build it from srpms, but was able to install it from its codeberg page, using git to clone the source and then following the installation instructions. I already had all needed dependencies from the things we built above. However, as mentioned, I changed both labwc's and dwl's configs to use alacritty, rather than the window managers's defaults of foot.
This latest version has no trouble with libx265 encoded mp4 videos.
RHEL10 also doesn't include libreoffice. This can just be installed from libreoffice's site.
As of June, 2025, rpmfusion has packages for RHEL10. It's probably best to use it for multimedia rpms, but, you can build a per user ffmpeg by following the instructions at ffmpeg's trac site and then you should be able to play any media files you run into. This still won't work with x255.mp4 videos on firefox, but will work if you download the video and use mpv to play it..
On a different note, I had one system that had been running RHEL9, which I moved to RHEL10. Using leapp broke things so I reinstalled. (My fault, not leapp's as far as I can tell). This is a headless machine that just serves a small home website and also runs postfix, mostly for internal stuff. I found that both my old apache httpd.conf and postfix main.conf needed a few adjustments.
For apache, I had had a section DocumentRoot, that included
AllowOverride ALL Require all granted |
This caused an error, preventing apache from running. On RHEL10, I had to put the AllowOveride and Require all lines inside <Directory> </Directory> tags. So I had my DocumentRoot stuff and then the Directory stuff.
DocumentRoot "/var/www/html" <Directory "/var/www/html"> AllowOveride All Require all granted </Directory> </VirtualHost> |
I use VirtualHosts as the reader can figure out from that snippet, even though I've only put the end part of the stanza.
With both apache and postfix, once I figured out the solution, I didn't look into when it changed, in both cases these are just little conveniences for me, so once it worked, I was happy.
With postfix it turned out that they've changed a database that use. I'd had alias_maps as hash:/etc/aliases and alias_database as dbm. Apparently this has changed and to make it work I had to change alias_database to lmdb and alias_maps to lmdb:/etc/aliases.
The apache issue was quickly solved by a web search and the postfix one by comparing the file I was using to the default, so neither was terribly hard to solve.