ubuntuusers.de

Vollständige Desktop-Umgebung auf Basis von Xmonad bauen?

Status: Ungelöst | Ubuntu-Version: Ubuntu 20.04 (Focal Fossa)
Antworten |

burli

Avatar von burli

Anmeldungsdatum:
27. April 2007

Beiträge: 9066

Wohnort: Petersberg

Hi, ich habe auf meinem alten Netbook (Samsung N150) Arch mit Xmonad als WM installiert und finde es nahezu perfekt für diese Geräteklasse. Was allerdings fehlt sind die "Annehmlichkeiten" einer vollständigen Desktop-Umgebung wie Power Management, WLAN, Theme Verwaltung für GTK oder Qt Anwendungen, Layout Verwaltung für die Tastatur, Einstellungen für die Maus/das Touchpad, Sprachverwaltung usw.

Für das alte Ding spielt es keine Rolle. Das war ein Experiment. Ich spiele allerdings mit dem Gedanken, auf meinem Laptop (14" AMD von Tuxedo) eine ähnliche Umgebung einzurichten oder eventuell einen zweiten Laptop in der 300€ Klasse mit 11" Display anschaffen. Da würde mir der Komfort dann allerdings schon fehlen.

So weit ich weiß kann man zB kwin in KDE durch Xmonad ersetzen, ich würde aber lieber den anderen Weg gehen und rund um Xmonad einen angemessenen Desktop aufbauen, der möglichst wenige Abhängigkeiten zu den großen DEs hat.

Außerhalb der üblichen Desktopumgebungen habe ich allerdings wenig Erfahrung, welche Pakete es gibt. Ich weiß, dass dann oft gern die Tools von Xfce oder Lxde verwendet werden.

Eventuell könnte man das als Install Script auf GitHub ablegen, das basierend auf einer Minimalinstallation alle Pakete nachinstalliert und gegebenenfalls config Files einrichtet.

Wie könnte man das angehen?

Gruß, Markus

Moderiert von redknight:

Verschoben.

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Hallo!

Kommt ein wenig auf die Basis an. Bei Arch ist das anders, als bspw. bei Ubuntu, welches von Haus aus schon viel mehr mitliefert (z.B. Python).
Ich nutze zwar aktuell sway (das i3-Pendant in Wayland) anstatt Xmonad, aber das gibt sich nicht viel.

Ich habe sehr gute Erfahrungen mit DBus gemacht, falls die Anwendungen das unterstützen (da ragen die Programme der KDE-Community heraus). inotify ist eine Pflichtlektüre, wenn du auf Änderungen in Verzeichnissen / an Dateien reagieren willst und es geht meist nicht, ohne sich Helferlein zu Scripten oder zu Programmieren. Entweder ein Tool, welches dauerhaft läuft und entsprechend reagiert, oder eine Zusammenstellung aus systemd-timern und -services. Mit openRC anstatt systemd kann ich nur zu ersterem raten.

Zunächst musst du eine Liste erstellen, was für Aufgaben der Rechner meistern soll, die dann um die möglichen Programme ergänzt wird. Wenn du dir so deine persönliche Softwareliste erstellt hast, hast du schon mal einen Haufen an Abhängigkeiten, der sowieso mitkommt und den du vornehmlich zur Umsetzung verwenden solltest.

Für alles, was dann noch fehlt gibt es meist kleine Tools, die das abdecken, wie bspw. mako (Wayland) oder dunst (X11) als Benachrichtigungsdienste, gammastep als minimalistischer Farbtemperaturwechsler, etc.

Netzwerk mache ich über systemd/networkd, bzw. über WLAN/wpa supplicant, da sich da ja nur selten was ändert. Zum Wechseln habe ich mir ein Miniscript geschrieben, dass die zum aktuell gebrauchten WLAN genutzte Konfiguration per ln auf wpa_supplicant.conf umbiegt und systemctl restart wpa_supplicant aufruft.

burli

(Themenstarter)
Avatar von burli

Anmeldungsdatum:
27. April 2007

Beiträge: 9066

Wohnort: Petersberg

Das mit Arch war ein Experiment. Zum einen ob ich das zum Laufen bekomme und zum anderen weil es IMHO für die alte Kiste vielleicht noch einen Ticken schlanker ist. Wenn, dann würde ich das auf Minimal Ubuntu LTS Basis machen.

Zunächst einmal: ich habe mich für Xmonad entschieden weil es in Haskell geschrieben ist und auch in Haskell konfiguriert wird. Änderungen an der Konfiguration kann man ohne Neustart sehen und Fehler führen nicht zu einem Absturz. Außerdem verwende ich die dazu passende Xmobar und dmenu.

Zunächst wären mir die nötigsten Grundfunktionen wichtig wie Tastaturlayout, Sprache, Maus/Touchpad, Energieverwaltung (zB Bildschirm sperren bei Inaktivität, Standby wenn der Laptopdeckel geschlossen wird usw), USB Speicher automatisch mounten (das geht bei meinem Arch Experiment nämlich nicht), Netzwerk/WLAN Einstellungen und ein Paketmanager (Muon, Synaptic). Also grob das, was man zB in den Gnome Einstellungen findet. Es soll halbwegs alltagstauglich werden.

Dabei soll das ganze halbwegs schlank bleiben weil ich das vor allem auf schwächerer Hardware wie günstigen Laptops mit kleinen Displays (Chromebooks) oder sowas wie dem Pinebook sehe. Ich finde, ein Tiling WM ist ideal für Laptops, vor allem mit kleinen Displays und WXGA Auflösung.

Ich installiere gerade die mini.iso in einer VirtualBox, wäre aber für weitere Hilfe dankbar.

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

burli schrieb:

Tastaturlayout

setxkbmap de in die Startdatei, bspw. ~/.xinitrc. Oder brauchst du einen (grafischen) Umschalter für unterschiedliche Layouts?

Sprache

Inwiefern? espeak? Oder meinst du die Regionaleinstellungen wie Währungssymbole & Co (/etc/default/locale)? Oder Textübersetzungen aka Sprachpakete?

Maus/Touchpad

Sollte automatisch funktionieren, Einstellungen kommen darauf an, ob du auf libinput oder evdev setzt. Wenn es mit GUI sein soll, hängt das auch von deinem Fenstermanager ab, da müsstest du also bei Xmonad gucken, wie das gelöst werden kann. Eventuell kannst du da auf die alten lxde-Einstellungen zurückgreifen. XFCE klappt natürlich auch, ist aber weniger schlank.

Energieverwaltung (zB Bildschirm sperren bei Inaktivität, Standby wenn der Laptopdeckel geschlossen wird usw)

acpid, da kannst du auf die events reagieren.

USB Speicher automatisch mounten (das geht bei meinem Arch Experiment nämlich nicht),

UDEV einrichten und auf usb-hdd reagieren.

Netzwerk/WLAN Einstellungen

Muss der grafisch sein? Dann nimm den NetworkManager, der ist ausgereift.

Arbeitest du selbst mit Haskell oder geht es dir nur darum, Änderungen sofort übernehmen zu können? Das bietet einige Programme an. Als Terminalemulator bspw. alacritty, wofi als erweitertes dmenu (kann auch .desktop-Dateien verarbeiten), Starter wie Alfred, nahezu alles aus dem Plasma-Umfeld,…

Dabei soll das ganze halbwegs schlank bleiben weil ich das vor allem auf schwächerer Hardware wie günstigen Laptops mit kleinen Displays (Chromebooks) oder sowas wie dem Pinebook sehe. Ich finde, ein Tiling WM ist ideal für Laptops, vor allem mit kleinen Displays und WXGA Auflösung.

Je nachdem könntest du da mit Wayland besser fahren, da das den XServer „spart“. Die einzelnen Programme reagieren dadurch schneller, wenn sie aktiv sind.

Alternativ könntest du dir auch noch enlightenment angucken (kann normal und tiling), da hast du eine schlanke, schnelle Umgebung. Ich weiß gerade nicht wie der aktuell ist, da die auch gerade von X auf Wayland umstellen. Die X-Version war aber wirklich sehr flott.

burli

(Themenstarter)
Avatar von burli

Anmeldungsdatum:
27. April 2007

Beiträge: 9066

Wohnort: Petersberg

Ich weiß das ich mit Xmonad noch an xorg gebunden bin. Xmonad ist aber stabil und eben in Haskall geschrieben. Vielleicht lerne ich durch das Config File for Sprache etwas näher kennen.

burli

(Themenstarter)
Avatar von burli

Anmeldungsdatum:
27. April 2007

Beiträge: 9066

Wohnort: Petersberg

So langsam wächst eine Idee, wie ich es realisieren möchte.

Ausgehend von der Installation mit mini.iso möchte ich Scripte erstellen, die gewisse Pakete installieren. Alle Scripte liegen auf GitHub. Alles was ich nach der Installation tun muss ist, git zu installieren, dass Repo zu clonen und die Scripte auszuführen.

Ein erstes Script installiert Pakete wie (neo)vim, build-essential, xterm, wichtige Python Pakete, Network Manager usw.

Ein weiteres Script installiert xorg, lightdm, den WM, Panel usw.

In weiteren Git repos liegen config Dateien zb für vim oder den WM. Diese werden vom Script automatisch geclont und mit symlinks an der richtigen Stelle verknüpft.

Auf diese Weise kann ich eine Installation einfach reproduzieren und über Git mit anderen Rechnern synchronisieren.

Immer wenn ich bei der Arbeit über Pakete stolpere, die mir fehlen, füge ich sie dem entsprechenden Script hinzu und kann es auf anderen Rechnern synchronisieren.

Da ich mich immer weiter Richtung Tiling WM orientiere werde ich Scripte für Xmonad, herbstluftwm oder leftwm erstellen. Auf meinem aktuellen KDE Desktop habe ich inzwischen auch ein Tiling Script installiert

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Das mit git funktioniert super. So mache ich das auch. Du musst nur aufpassen bei welchen configs absolute Pfade drinstehen, wenn die Benutzernamen abweichen. Die speziellen configs für einzelne Geräte packe ich da auch mit rein, so dass ich bspw. zur Konfiguration der Bildschirme eine sway/config.x220 und eine sway/config.desktop habe, welche ich per ln dann als config linke. Diese ruft dann die gemeinsame Konfiguration auf.
Ähnlich bei den hell/dunkel-Themenwechseln. Lässt sich auch gut scripten.

Auf jeden Fall weiterhin viel Erfolg! (und ja, Tiling ist schon mega bequem).

burli

(Themenstarter)
Avatar von burli

Anmeldungsdatum:
27. April 2007

Beiträge: 9066

Wohnort: Petersberg

Ich bin jetzt gerade über git bare repositories gestolpert, mit denen man seine dotfiles besser verwalten kann.

Ich finde das aber eher umständlich und unpraktisch. Ich würde eigentlich eher ein normales Repo erstellen und per Script alle Symlinks einrichten. Muss man ja nicht per Hand machen.

Oder gibt es irgend einen Vorteil von diesen Bare Repos, den ich nicht sehe?

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

burli schrieb:

Oder gibt es irgend einen Vorteil von diesen Bare Repos, den ich nicht sehe?

Das sind unterschiedliche Ansätze. Lokal auf dem Rechner kannst du --bare gar nicht (sinnvoll) verwenden, das ist nicht zum darin arbeiten gedacht und hat auch eine ganz andere Dateistruktur. Es ist primär zum verteilen gedacht und du kannst Dateien darin nicht direkt bearbeiten. Dafür nutzt du immer eine lokale Kopie, Stichwort working tree (das was dir ein git clone anlegt).

Wenn du einen Homeserver hast und mit verschiedenen Nutzern (dir auf verschiedenen Rechnern) das Repo teilen willst, so wie das bspw. auf github ist, dann legst du auf dem Server dein Repo mit git init --bare an und clonst es am Client mit git clone. Da kann dann jeder (oder du auf jedem Rechner) seine eigene Entwicklung vorantreiben und das Gesammelte auf den Server pushen.

Da du angegeben hast, du möchtest das über github realisieren, hast du da ja quasi schon dein git init --bare fertig als Verteiler und die Clients holen von dort ihre Daten. Du brauchst dann lokal lediglich das Repo klonen oder hochladen. In beiden Fällen über einen working tree, also die „Arbeitsumgebung“ → git init ohne bare.

burli

(Themenstarter)
Avatar von burli

Anmeldungsdatum:
27. April 2007

Beiträge: 9066

Wohnort: Petersberg

Ich denke, für mich macht ein Bare Repo keinen Sinn. Die meisten Sachen, die ich so verwalten möchte, liegen in einzelnen Verzeichnissen in .config. Da kann dann einfach ein normales Gut Repo an Ort und Stelle Clone. Und sollte sich doch Mal was über mehrere Stellen verteilen arbeite ich mit Symlinks.

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Klar. Fang erst mal lokal an. Das Repo kannst du ja auch später noch anlegen.

Antworten |