Browse Source

Add desktop example

main
parent
commit
f48499b38f
  1. 31
      README.org
  2. BIN
      docs/images/desktop.png
  3. BIN
      docs/posts/immutable-emacs.org.gpg
  4. 2
      modules/desktop.el

31
README.org

@ -21,9 +21,14 @@ Immutable GNU Emacs dotfiles. Built for Life, Liberty, and the Open Road.
+ 100% Immutable + 100% Immutable
+ 100% Reproducible + 100% Reproducible
#+ATTR_ORG: :width 420px
#+ATTR_HTML: :width 420px
#+ATTR_LATEX: :width 420px
[[./docs/images/desktop.png]]
* Init * Init
:PROPERTIES: :PROPERTIES:
:header-args: :tangle ~/.local/source/dotfiles/init.el
:header-args: :tangle init.el
:END: :END:
Although later versions of Emacs introduce =early-init.el=, it's not used in this configuration for two reasons: Although later versions of Emacs introduce =early-init.el=, it's not used in this configuration for two reasons:
@ -149,7 +154,7 @@ Each host system that runs Emacs has a file defined in the =hosts/= sub director
** Example (Ubuntu) ** Example (Ubuntu)
:PROPERTIES: :PROPERTIES:
:header-args: :tangle ~/.local/source/dotfiles/hosts/ubuntu.el
:header-args: :tangle hosts/ubuntu.el
:END: :END:
The first configuration, which was built using the Ubuntu 20.04 LTS server edition. I decided to incorporate =flatpaks= into this build, which required overriding the ~$BROWSER~ environment variable. The first configuration, which was built using the Ubuntu 20.04 LTS server edition. I decided to incorporate =flatpaks= into this build, which required overriding the ~$BROWSER~ environment variable.
@ -169,7 +174,7 @@ Breaking down the project into logical units or chapters to keep the code more m
** Core ** Core
:PROPERTIES: :PROPERTIES:
:header-args: :tangle ~/.local/source/dotfiles/modules/core.el :results silent
:header-args: :tangle modules/core.el :results silent
:END: :END:
Minimal configuration to make Emacs usable for my own personal workflow. This does very little in the ways of improving the visuals, only removing what is included by default and not required. Minimal configuration to make Emacs usable for my own personal workflow. This does very little in the ways of improving the visuals, only removing what is included by default and not required.
@ -521,20 +526,26 @@ Open a dired buffer with =SPC d=.
** Desktop ** Desktop
:PROPERTIES: :PROPERTIES:
:header-args: :tangle ~/.local/source/dotfiles/modules/desktop.el :results silent
:header-args: :tangle modules/desktop.el :results silent
:END: :END:
I use Emacs as a Desktop Environment with the [[https://github.com/ch11ng/exwm][exwm]] package. It allows Emacs to function as a complete tiling window manager for =X11=. My workflow includes launching the window manager with =xinitrc=, without the use of a display manager, controlling *everything* within Emacs. I use Emacs as a Desktop Environment with the [[https://github.com/ch11ng/exwm][exwm]] package. It allows Emacs to function as a complete tiling window manager for =X11=. My workflow includes launching the window manager with =xinitrc=, without the use of a display manager, controlling *everything* within Emacs.
Make sure the browser is available by writing to the ~$BROWSER~ environment variable with our own.
#+begin_src emacs-lisp
(setenv "BROWSER" dotfiles/browser)
#+end_src
*** Startup *** Startup
#+begin_src conf :tangle ~/.local/source/dotfiles/config/xinitrc
#+begin_src conf :tangle config/xinitrc
exec dbus-launch --exit-with-session emacs -mm --debug-init exec dbus-launch --exit-with-session emacs -mm --debug-init
#+end_src #+end_src
When launching into a session, if the display server is not running then =startx= should be invoked, to run the window manager. When launching into a session, if the display server is not running then =startx= should be invoked, to run the window manager.
#+begin_src sh :tangle ~/.local/source/dotfiles/config/profile
#+begin_src sh :tangle config/profile
if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then
exec startx exec startx
fi fi
@ -636,7 +647,7 @@ Connect our custom hooks and configure the input keys, a custom layer for defini
** Writing ** Writing
:PROPERTIES: :PROPERTIES:
:header-args: :tangle ~/.local/source/dotfiles/modules/writing.el :results silent
:header-args: :tangle modules/writing.el :results silent
:END: :END:
I am using [[https://orgmode.org][Org-mode]] extensively for writing projects for different purposes. Most of the improvements are done in the *Core* module for the Literate programming configuration. [[https://github.com/integral-dw/org-superstar-mode][Org-superstar-mode]] for making headline stars more *super*. I am using [[https://orgmode.org][Org-mode]] extensively for writing projects for different purposes. Most of the improvements are done in the *Core* module for the Literate programming configuration. [[https://github.com/integral-dw/org-superstar-mode][Org-superstar-mode]] for making headline stars more *super*.
@ -775,7 +786,7 @@ By default I want my daily notes to live in ~daily/~ relative to my dotfiles.
Plain text email delivered via mu, mu4e and mbsync. I run my own email server, so your configuration may differ from mine. This is the ~mbsyncrc~ file I use to synchronize my local mail with my server. This is required for mu4e in Emacs. Plain text email delivered via mu, mu4e and mbsync. I run my own email server, so your configuration may differ from mine. This is the ~mbsyncrc~ file I use to synchronize my local mail with my server. This is required for mu4e in Emacs.
#+begin_src conf :tangle ~/.local/source/dotfiles/config/mbsyncrc
#+begin_src conf :tangle config/mbsyncrc
IMAPStore xyz-remote IMAPStore xyz-remote
Host mail.chrishayward.xyz Host mail.chrishayward.xyz
User chris@chrishayward.xyz User chris@chrishayward.xyz
@ -911,7 +922,7 @@ Screencast controls behind =SPC s=.
** Projects ** Projects
:PROPERTIES: :PROPERTIES:
:header-args: :tangle ~/.local/source/dotfiles/modules/projects.el :results silent
:header-args: :tangle modules/projects.el :results silent
:END: :END:
An IDE like experience (or better) can be achieved in Emacs using two *Microsoft* open source initiatives. An IDE like experience (or better) can be achieved in Emacs using two *Microsoft* open source initiatives.
@ -1106,7 +1117,7 @@ Add a golang source code block structure template with ~<go~:
** Interface ** Interface
:PROPERTIES: :PROPERTIES:
:header-args: :tangle ~/.local/source/dotfiles/modules/interface.el :results silent
:header-args: :tangle modules/interface.el :results silent
:END: :END:
*Bring Emacs out of the eighties* *Bring Emacs out of the eighties*

BIN
docs/images/desktop.png

After

Width: 1920  |  Height: 1200  |  Size: 151 KiB

BIN
docs/posts/immutable-emacs.org.gpg

2
modules/desktop.el

@ -1,3 +1,5 @@
(setenv "BROWSER" dotfiles/browser)
(defun dotfiles/run (command) (defun dotfiles/run (command)
"Run an external process." "Run an external process."
(interactive (list (read-shell-command "λ "))) (interactive (list (read-shell-command "λ ")))

Loading…
Cancel
Save