Alex Kost <alez...@gmail.com> writes: > Hello, > > People often ask how they can use startx/xinit on GuixSD. It is > possible, although it is not as easy as on other distros. Hopefully, > this tutorial will answer some questions on the subject. > > At first, a couple of points: > > - We will run X server with user privileges, so if something goes wrong, > look at the X log, which is placed at "~/.local/share/xorg/Xorg.N.log" > by default. > > - We will run "xinit", not "startx": the latter is just a wrapper that > does some preparations and runs "xinit". (startx is a usual shell > script with a usual script's behavior: it does not like that Guix > violates Filesystem Hierarchy Standard, so it successfully fails to > start). > > Now the steps you need to do to use "xinit": > > 1. Install xinit, X server and required modules to some guix profile, > for example: > > guix package -i xinit xorg-server xf86-input-libinput xf86-video-fbdev > xf86-video-nouveau > > 2. Make "~/.xinitrc" file. If you don't know what its content should > be, just put "exec xterm" there, or even better read: > > https://wiki.archlinux.org/index.php/Xinit > > 3. Running "xinit" requires specifying multiple arguments, so you will > probably make an auxiliary script to run it. This script will look > like this: > > --8<---------------cut here---------------start------------->8--- > #!/bin/sh > > DIR=$HOME/.guix-profile > > $DIR/bin/xinit -- $DIR/bin/Xorg :0 vt1 -keeptty \ > -configdir $DIR/share/X11/xorg.conf.d \ > -modulepath $DIR/lib/xorg/modules > --8<---------------cut here---------------end--------------->8--- > > Note that using the current terminal ("vt1" in this case) and > "-keeptty" is required, otherwise X server refuses to start without > root privileges. > > For testing purposes, you may change the above arguments to ":1 vt2", > switch to vt2 (Ctrl-Alt-F2) and run this script. > > 4. Finally (if the above script works), you can remove login manager > from your os services (if you use %desktop-services): > > --8<---------------cut here---------------start------------->8--- > (use-modules > ;; ... > (srfi srfi-1) ; for 'remove' > (gnu services desktop) > (gnu services xorg)) > > (operating-system > ;; ... > (services > (remove (lambda (service) > (eq? (service-kind service) slim-service-type)) > %desktop-services))) > --8<---------------cut here---------------end--------------->8---
To help others, a few other notes. To auto start x upon login one can do something like --8<---------------cut here---------------start------------->8--- (mingetty-service (mingetty-configuration (tty "tty1") (auto-login "ds"))) --8<---------------cut here---------------end--------------->8--- And this in you bashrc/zshrc. --8<---------------cut here---------------start------------->8--- if [[ ! $DISPLAY && $XDG_VTNR -eq 1 ]]; then exec $HOME/bin/startx.sh fi --8<---------------cut here---------------end--------------->8--- Also I needed to set these in order for my icons to be detected again. Failing to do so, the icons aren't found and some apps crash like libreoffice. --8<---------------cut here---------------start------------->8--- export XDG_DATA_DIRS="/run/current-system/profile/share:$HOME/.guix-profile/share:/run/current-system/profile/share" export XDG_CONFIG_DIRS="$HOME/.guix-profile/etc/xdg:/run/current-system/profile/etc/xdg" export XDG_CONFIG_HOME="$HOME/.config" export XDG_CACHE_HOME="$HOME/.cache" export XDG_DATA_HOME="$HOME/.local/share" --8<---------------cut here---------------end--------------->8--- I'm still strangely getting this error when my terminals (termite) launch since switching to this method: tput: unknown terminal "xterm-termite" Not sure why that is yet.