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). 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.
So, first, we'll install some packages to make building our various packages easier.
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 |
I also install xorg-x11-server-Xwayland as I may want to add some X apps.
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 xvz 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 long used custom rc.xml that I then put in $HOME/.config/labwc/. (That directory will also have to be created by the reader.) Note that their 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.
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.
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.
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 |
They also want fcft which we'll have to get from rpmfind. When we install the srpm and then run the dnf builddep on the spec file, we find that we also need tllist. We can get the tllist-devel srpm at rpmfind, and first install the srpm, rpmbuild -ba tlllist (no need to dnf builddep), then install the tllist-devel rpm. Once we do that, we can run dnf builddep on the fcft.spec, run rpmbuild and install 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.
As of June, 2025, rpmfusion does have 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.
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.