unofficial mirror of help-guix@gnu.org 
 help / color / mirror / Atom feed
From: Rodrigo Morales <moralesrodrigo1100@gmail.com>
To: help-guix@gnu.org
Subject: display manager doesn't read ~/.xsession when it is a symlink
Date: Fri, 17 Mar 2023 15:18:29 -0500	[thread overview]
Message-ID: <CAGxMbPaGEb4TQ=nt9GiFTT-deLp-jr9DwfPZ+pg6vyiFoh20eg@mail.gmail.com> (raw)

Table of Contents
_________________

1. The context
2. The problem
3. The question
4. Appendix


1 The context
=============

  I'm using the [display manager]/[login manager] that is bundled with
  GUIX by default.

  Consider the following `~/.xsession' file.

  ,----
  | cat ~/.xsession
  `----

  ,----
  | # Map Caps Lock to Ctrl
  | setxkbmap -option 'ctrl:nocaps' -layout us
  | # Start Emacs using the exwm script
  | exwm
  `----

  I've noticed that when `~/.xsession' doesn't have execute permissions
  (see code block below) and when I try to log in to my account through
  the display manager, the display manager is shown again (i.e. the
  window manager is not started).

  ,----
  | ls -l ~/.xsession
  `----

  ,----
  | -rw-r--r-- 1 rdrg users 108 Mar 17 14:34 /home/rdrg/.xsession
  `----

  When the file has execute permissions (see code block below) and when
  I log in to my account through the display manager, the window manager
  is started. So, I conclude that `~/.xsession' requires execute
  permissions.

  ,----
  | chmod +x ~/.xsession
  | ls -l ~/.xsession
  `----

  ,----
  | -rwxr-xr-x 1 rdrg users 108 Mar 17 14:34 /home/rdrg/.xsession
  `----


2 The problem
=============

  I have created `~/my/guix-config/xdg/xsession' in `~/my/guix-config/',
  which is the directory that contains a git repo with all my
  configurations (see file structure below).

  ,----
  | find ~/my/guix-config ! -path '*/.git/*' | tree -a --fromfile
  `----

  ,----
  | .
  | └── home
  |     └── rdrg
  |         └── my
  |             └── guix-config
  |                 ├── fontconfig
  |                 │   └── fonts.conf
  |                 ├── .git
  |                 ├── home-configuration.scm
  |                 ├── mpv
  |                 │   ├── input.conf
  |                 │   └── mpv.conf
  |                 ├── rime
  |                 │   └── default.custom.yaml
  |                 ├── tmux
  |                 │   └── tmux.conf
  |                 ├── xdg
  |                 │   ├── defaults.list
  |                 │   ├── emacsclient-open-file.desktop
  |                 │   ├── inkscape.desktop
  |                 │   ├── mpv.desktop
  |                 │   ├── okular.desktop
  |                 │   ├── xsession
  |                 │   └── zathura.desktop
  |                 └── zathura
  |                     └── zathurarc
  |
  | 11 directories, 15 files
  `----

  The file `~/my/guix-config/xdg/xsession' has the same content as the
  file shown in the first section and it has execute permissions.

  ,----
  | cat ~/my/guix-config/xdg/xsession
  `----

  ,----
  | # Map Caps Lock to Ctrl
  | setxkbmap -option 'ctrl:nocaps' -layout us
  | # Start Emacs using the exwm script
  | exwm
  `----

  ,----
  | ls -l ~/my/guix-config/xdg/xsession
  `----

  ,----
  | -rwxr-xr-x 1 rdrg users 108 Mar 17 15:07
/home/rdrg/my/guix-config/xdg/xsession
  `----

  I've symlinked `~/my/guix-config/xdg/xsession' to `~/.xsession' by
  using the following instruction in
  `~/my/guix-config/home-configuration.scm' (see appendix for my
  complete configuration)

  ,----
  | (... some omitted lines ...)
  |    (service
  |     home-files-service-type
  |     `((".xsession"
  |        ,(local-file "xdg/xsession"))
  | (... some omitted lines ...)
  | #+END_SRC scheme
  |
  | I use the following command to create symbolic links from =$HOME= to my
git repo.
  |
  | #+BEGIN_SRC sh
  | guix home reconfigure ~/my/guix-config/home-configuration.scm
  `----

  After completion of `guix home reconfigure', the file `~/.xsession' is
  a symbolic link.

  ,----
  | ls -l ~/.xsession
  `----

  ,----
  | lrwxrwxrwx 1 rdrg users 52 Mar 17 14:47 /home/rdrg/.xsession ->
/gnu/store/hs5d7dkq6ywzd062yg4dcqfx5v0wa7dj-xsession
  `----

  The problem is that when I try to log in through the display manager,
  I'm redirected again to the display manager (the same behavior
  described above when `~/.xsession' is a regular file and doesn't have
  execute permissions).


3 The question
==============

  Is it possible for the display manager correctly execute `~/.xsession'
  even when it is a symbolic link?

  I need to do this because I use `guix home reconfigure
  ~/my/guix-config/home-configuration.scm' to configure my `$HOME', so
  `~/.xsession' is a symbolic link.


4 Appendix
==========

  ,----
  | cat ~/my/guix-config/home-configuration.scm
  `----

  ,----
  | ;; This "home-environment" file can be passed to 'guix home reconfigure'
  | ;; to reproduce the content of your profile.  This is "symbolic": it
only
  | ;; specifies package names.  To reproduce the exact same profile, you
also
  | ;; need to capture the channels being used, as returned by "guix
describe".
  | ;; See the "Replicating Guix" section in the manual.
  |
  | (use-modules (gnu home)
  |              (gnu packages)
  |              (gnu services)
  |              (guix gexp)
  |              (gnu home services)
  |              (gnu home services shells)
  |              (gnu home services ssh)
  |              ;; zathura
  |              ;; zathura-pdf-mupdf
  |              ;; xournalpp
  |              (gnu packages pdf)
  |              ;; okular
  |              (gnu packages kde)
  |              ;; inkscape
  |              (gnu packages inkscape)
  |              ;; git
  |              (gnu packages version-control)
  |              ;; libreoffice
  |              (gnu packages libreoffice)
  |              ;; mpv
  |              (gnu packages video)
  |              ;; audacity
  |              (gnu packages audio)
  |              ;; ripgrep
  |              (gnu packages rust-apps)
  |              ;; tmux
  |              (gnu packages tmux)
  |              ;; xdg-utils
  |              (gnu packages freedesktop)
  |              ;; font-misc-misc
  |              (gnu packages xorg)
  |              ;; rsync
  |              (gnu packages rsync)
  |              ;; tree
  |              (gnu packages admin)
  |              ;; emacs-rime
  |              (gnu packages emacs-xyz)
  |              ;; xcape
  |              (gnu packages xdisorg))
  |
  | (home-environment
  |  ;; Below is the list of packages that will show up in your
  |  ;; Home profile, under ~/.guix-home/profile.
  |  (packages
  |   (list
  |    git
  |    okular
  |    tree
  |    xdg-utils
  |    font-misc-misc
  |    zathura
  |    zathura-pdf-mupdf
  |    tmux
  |    inkscape
  |    xournalpp
  |    libreoffice
  |    mpv
  |    audacity
  |    ;; Transfer files between systems. Both the host and the
  |    ;; destination must have rsync installed in order transfer files
  |    ;; mutually.
  |    rsync
  |    ripgrep
  |    setxkbmap
  |    xcape
  |    emacs-rime))
  |  ;; Below is the list of Home services.  To search for available
  |  ;; services, run 'guix home search KEYWORD' in a terminal.
  |  (services
  |   (list
  |    (simple-service
  |     'some-useful-env-vars-service
  |     home-environment-variables-service-type
  |     '(("EDITOR" . "emacsclient")))
  |    (service
  |     home-openssh-service-type
  |     (home-openssh-configuration
  |      (hosts
  |       (list
  |        (openssh-host
  |         (name "desktop")
  |         (host-name "192.168.1.35")
  |         (user "beep1560")
  |         (port 22))))))
  |    (service
  |     home-bash-service-type
  |     (home-bash-configuration
  |      (aliases
  |       '(("grep" . "grep --color=auto")
  |         ("ll" . "ls -l")
  |         ("ls" . "ls -p --color=auto")
  |         ("d" . "cd ~/Downloads")))))
  |    (service
  |     home-files-service-type
  |     `((".xsession"
  |        ,(local-file "xdg/xsession"))
  |       (".local/share/applications/defaults.list"
  |        ,(local-file "xdg/defaults.list"))
  |       (".local/share/applications/emacsclient-open-file.desktop"
  |        ,(local-file "xdg/emacsclient-open-file.desktop"))
  |       (".local/share/applications/inkscape.desktop"
  |        ,(local-file "xdg/inkscape.desktop"))
  |       (".local/share/applications/okular.desktop"
  |        ,(local-file "xdg/okular.desktop"))
  |       (".local/share/applications/zathura.desktop"
  |        ,(local-file "xdg/zathura.desktop"))
  |       (".local/share/applications/mpv.desktop"
  |        ,(local-file "xdg/mpv.desktop"))))
  |    (service
  |     home-xdg-configuration-files-service-type
  |     `(("tmux/tmux.conf"
  |        ,(local-file "tmux/tmux.conf"))
  |       ("ibus/rime/default.custom.yaml"
  |        ,(local-file "rime/default.custom.yaml"))
  |       ("mpv/mpv.conf"
  |        ,(local-file "mpv/mpv.conf"))
  |       ("mpv/input.conf"
  |        ,(local-file "mpv/input.conf"))
  |       ("zathura/zathurarc"
  |        ,(local-file "zathura/zathurarc")))))))
  `----

             reply	other threads:[~2023-03-17 20:21 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-17 20:18 Rodrigo Morales [this message]
2023-03-21 10:56 ` display manager doesn't read ~/.xsession when it is a symlink 宋文武
2023-03-21 13:53   ` Gary Johnson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAGxMbPaGEb4TQ=nt9GiFTT-deLp-jr9DwfPZ+pg6vyiFoh20eg@mail.gmail.com' \
    --to=moralesrodrigo1100@gmail.com \
    --cc=help-guix@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).