Browse Source

Add symlink configuration

main
parent
commit
524df75faa
  1. 42
      modules/desktop.org

42
modules/desktop.org

@ -15,13 +15,19 @@ I use Emacs as a Desktop Environment with the *EXWM*[fn:1] package. It allows Em
:header-args: :tangle ../config/profile :comments org
:END:
Ensure that ~~/.local/bin~ is added to the =$PATH= variable.
Setup the default shell profile to run Emacs as a desktop environment.
** Append to the $PATH
Ensure that ~~/.local/bin~ added to the =$PATH= variable.
#+begin_src shell
PATH=$PATH:~/.local/bin
export PATH
#+end_src
** Launch on TTY1
When launching into a new session on ~TTY1~, if the display server is not running, run *StartX*[fn:3]. This will launch the window manager.
#+begin_src shell
@ -30,7 +36,16 @@ if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then
fi
#+end_src
* Startup
** Create symbolic link
The system will look for the default shell profile at ~~/.profile~. Create a symbolic link from this location to the configuration file defined.
#+begin_src emacs-lisp
(dotfiles/symlink "~/.emacs.d/config/profile"
"~/.profile")
#+end_src
* Window manager
:PROPERTIES:
:header-args: :tangle ../config/xinitrc :comments org
:END:
@ -41,7 +56,16 @@ My workflow includes launching the window manager with *Xinit*[fn:3], without th
exec dbus-launch --exit-with-session emacs -mm --debug-init
#+end_src
* Browser
** Create a symbolic link
*Xinit*[fn:3] reads its configuration from ~~/.xinitrc~. Override this location with a link to the custom configuration.
#+begin_src emacs-lisp
(dotfiles/symlink "~/.emacs.d/config/xinitrc"
"~/.xinitrc")
#+end_src
* Browser integration
Write out the ~$BROWSER~ variable so other applications can pick up the custom browser.
@ -49,7 +73,7 @@ Write out the ~$BROWSER~ variable so other applications can pick up the custom b
(setenv "BROWSER" dotfiles/browser)
#+end_src
* Displays
* Displays detection
When the window manager first launches the ~init-hook~ executes, allowing us to define some custom logic.
@ -74,22 +98,22 @@ Using =autorandr= with pre configured profiles, switching screens (AKA hot plugg
(dotfiles/run-in-background "autorandr --change --force"))
#+end_src
* Methods
* Shell interaction
Define a method to run an external process, allowing us to launch any application on a new process without interferring with Emacs.
#+begin_src emacs-lisp
(defun dotfiles/run (command)
(defun dotfiles/run (cmd)
"Run an external process."
(interactive (list (read-shell-command "λ ")))
(start-process-shell-command command nil command))
(start-process-shell-command cmd nil cmd))
#+end_src
Apply methods to the current call process to avoid issues with hooks.
#+begin_src emacs-lisp
(defun dotfiles/run-in-background (command)
(let ((command-parts (split-string command "[ ]+")))
(defun dotfiles/run-in-background (cmd)
(let ((command-parts (split-string cmd "[ ]+")))
(apply #'call-process `(,(car command-parts) nil 0 nil ,@(cdr command-parts)))))
#+end_src

Loading…
Cancel
Save