Skip to content

Commit 15fbaf0

Browse files
authored
Create 04-succesful-qtile-installation.md
Devlog entry for the succesful qtile and lightdm installation.
1 parent 745281e commit 15fbaf0

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# Devlog Entry 04 — Qtile Installation
2+
3+
**Date**: 2025-June-08
4+
**Author**: Emile Avoscan
5+
**Entry ID**: #04
6+
**Target Version**: 0.2.0
7+
8+
### Objective
9+
10+
Install and configure the Qtile window manager on a fresh AlmaLinux 9 minimal install, integrating LightDM as the display manager and ensuring a reproducible, automated script.
11+
12+
### 🛠 Steps Taken
13+
14+
1. **Repository preparation**
15+
* Enabled `baseos`, `appstream`, `crb`, `extras`.
16+
* Installed EPEL (`epel-release`).
17+
* Imported and enabled RPM Fusion (free + non-free) with GPG keys.
18+
2. **X11 & LightDM setup**
19+
* Installed `base-x` group, `lightdm`, and `lightdm-gtk-greeter`.
20+
* Applied cosmetic fix: created `/etc/rc.d/rc.local` and made it executable to silence systemd generator warnings.
21+
* Enabled `lightdm` service and set default target to `graphical.target`.
22+
3. **Python environment**
23+
* Installed Python 3.11 and development tools (`python3.11-devel`, `pip`, `setuptools`, `gcc`, `pkg-config`, `libffi-devel`).
24+
* Managed multiple Python versions side-by-side, preserving system Python 3.9.
25+
4. **C library dependencies**
26+
* Installed XCB, X11, Cairo/Pango, GLib/GObject introspection, and DBus devel headers (`xcb-util-devel`, `cairo-gobject-devel`, `gobject-introspection-devel`, etc.).
27+
5. **Python bindings & Qtile**
28+
* Upgraded `pip` under Python 3.11.
29+
* Installed `xcffib`, `cairocffi`, `pangocairocffi`, `dbus-python`.
30+
* Pinned `PyGObject==3.50.1` for GLib 2.68 compatibility.
31+
* Installed Qtile (`qtile`) system-wide for Python 3.11.
32+
6. **Session file & automation**
33+
* Created `/usr/share/xsessions/qtile.desktop` with `Exec=dbus-run-session qtile start`.
34+
* Developed a comprehensive `installation.sh` script: she-bang, `set -e`, root-check, non-interactive flags, grouping of commands, reboot prompt.
35+
7. **Testing & validation**
36+
* Verified `which qtile`, version output, and PATH resolution.
37+
* Conducted manual TTY test (`dbus-run-session qtile start`).
38+
* Confirmed LightDM login loop resolved by using `Exec=qtile start`.
39+
* Tested `installation.sh` on a fresh AlmaLinux 9.6 minimal installation.
40+
8. **Documentation**
41+
* Modified all the documentation of the project to reflect the changes.
42+
43+
### 🐞 Challenges & Errors
44+
45+
* **Package naming differences**: RHEL-style `xcb-util-devel`, `dbus-devel` instead of upstream names.
46+
* **Python version mismatch**: Qtile 0.31+ requires Python 3.10+ (PEP 604 syntax) → installed Python 3.11.
47+
* **GIR version mismatch**: PyGObject 3.52+ requires GIRepository 2.0 → pinned PyGObject 3.50.1.
48+
* **Missing headers**: `cairo-gobject.h` fixed by installing `cairo-gobject-devel`.
49+
* **User-site vs. system-site pip confusion**: module import errors resolved by system-wide `pip install` under Python 3.11 and PATH adjustments.
50+
* **LightDM session misconfiguration**: initial `Exec=python3.11 -m qtile start` failed under LightDM’s sanitized environment → simplified to `dbus-run-session qtile start`.
51+
52+
### 💡 Reflections
53+
54+
* **Dependency management** on RHEL-based distros requires deep understanding of DNF group names, repository scopes, and package aliasing.
55+
* **Python ecosystem** on enterprise distributions often lags; side-by-side installations are essential for modern Python apps.
56+
* **Automation** must handle edge cases (SELinux, rc-local warnings, display‐manager quirks) to be truly reproducible.
57+
* **Persistence** and iterative debugging paid off—complex failures became solvable steps rather than blockers.

0 commit comments

Comments
 (0)