diff --git a/.config/qtile/config.py b/.config/qtile/config.py index ff9df57..e9e6d63 100644 --- a/.config/qtile/config.py +++ b/.config/qtile/config.py @@ -40,36 +40,34 @@ myConfig = "/home/dt/.config/qtile/config.py" # The Qtile config file locatio ##### KEYBINDINGS ##### keys = [ ### The essentials - Key( - [mod], "Return", - lazy.spawn(myTerm+" -e fish"), - desc='Launches My Terminal With Fish Shell' + Key([mod], "Return", + lazy.spawn(myTerm), + desc='Launches My Terminal' ), - Key( - [mod, "shift"], "Return", + Key([mod, "shift"], "Return", lazy.spawn("dmenu_run -p 'Run: '"), desc='Dmenu Run Launcher' ), - Key( - [mod], "Tab", + Key([mod], "Tab", lazy.next_layout(), desc='Toggle through layouts' ), - Key( - [mod, "shift"], "c", + Key([mod, "shift"], "c", lazy.window.kill(), desc='Kill active window' ), - Key( - [mod, "shift"], "r", + Key([mod, "shift"], "r", lazy.restart(), desc='Restart Qtile' ), - Key( - [mod, "shift"], "q", + Key([mod, "shift"], "q", lazy.shutdown(), desc='Shutdown Qtile' ), + Key(["control", "shift"], "e", + lazy.spawn("emacsclient -c -a emacs"), + desc='Doom Emacs' + ), ### Switch focus to specific monitor (out of three) Key([mod], "w", lazy.to_screen(0), @@ -102,169 +100,141 @@ keys = [ desc='Move down a section in treetab' ), ### Window controls - Key( - [mod], "k", + Key([mod], "k", lazy.layout.down(), desc='Move focus down in current stack pane' ), - Key( - [mod], "j", + Key([mod], "j", lazy.layout.up(), desc='Move focus up in current stack pane' ), - Key( - [mod, "shift"], "k", + Key([mod, "shift"], "k", lazy.layout.shuffle_down(), desc='Move windows down in current stack' ), - Key( - [mod, "shift"], "j", + Key([mod, "shift"], "j", lazy.layout.shuffle_up(), desc='Move windows up in current stack' ), - Key( - [mod], "h", + Key([mod], "h", lazy.layout.grow(), lazy.layout.increase_nmaster(), desc='Expand window (MonadTall), increase number in master pane (Tile)' ), - Key( - [mod], "l", + Key([mod], "l", lazy.layout.shrink(), lazy.layout.decrease_nmaster(), desc='Shrink window (MonadTall), decrease number in master pane (Tile)' ), - Key( - [mod], "n", + Key([mod], "n", lazy.layout.normalize(), desc='normalize window size ratios' ), - Key( - [mod], "m", + Key([mod], "m", lazy.layout.maximize(), desc='toggle window between minimum and maximum sizes' ), - Key( - [mod, "shift"], "f", + Key([mod, "shift"], "f", lazy.window.toggle_floating(), desc='toggle floating' ), + Key([mod, "shift"], "m", + lazy.window.toggle_fullscreen(), + desc='toggle fullscreen' + ), ### Stack controls - Key( - [mod, "shift"], "space", + Key([mod, "shift"], "space", lazy.layout.rotate(), lazy.layout.flip(), desc='Switch which side main pane occupies (XmonadTall)' ), - Key( - [mod], "space", + Key([mod], "space", lazy.layout.next(), desc='Switch window focus to other pane(s) of stack' ), - Key( - [mod, "control"], "Return", + Key([mod, "control"], "Return", lazy.layout.toggle_split(), desc='Toggle between split and unsplit sides of stack' ), ### Dmenu scripts launched with ALT + CTRL + KEY - Key( - ["mod1", "control"], "e", + Key(["mod1", "control"], "e", lazy.spawn("./.dmenu/dmenu-edit-configs.sh"), desc='Dmenu script for editing config files' ), - Key( - ["mod1", "control"], "m", + Key(["mod1", "control"], "m", lazy.spawn("./.dmenu/dmenu-sysmon.sh"), desc='Dmenu system monitor script' ), - Key( - ["mod1", "control"], "p", + Key(["mod1", "control"], "p", lazy.spawn("passmenu"), desc='Passmenu' ), - Key( - ["mod1", "control"], "r", + Key(["mod1", "control"], "r", lazy.spawn("./.dmenu/dmenu-reddio.sh"), desc='Dmenu reddio script' ), - Key( - ["mod1", "control"], "s", + Key(["mod1", "control"], "s", lazy.spawn("./.dmenu/dmenu-surfraw.sh"), desc='Dmenu surfraw script' ), - Key( - ["mod1", "control"], "t", + Key(["mod1", "control"], "t", lazy.spawn("./.dmenu/dmenu-trading.sh"), desc='Dmenu trading programs script' ), - Key( - ["mod1", "control"], "i", + Key(["mod1", "control"], "i", lazy.spawn("./.dmenu/dmenu-scrot.sh"), desc='Dmenu scrot script' ), ### My applications launched with SUPER + ALT + KEY - Key( - [mod, "mod1"], "b", + Key([mod, "mod1"], "b", lazy.spawn("tabbed -r 2 surf -pe x '.surf/html/homepage.html'"), desc='lynx browser' ), - Key( - [mod, "mod1"], "l", + Key([mod, "mod1"], "l", lazy.spawn(myTerm+" -e lynx gopher://distro.tube"), desc='lynx browser' ), - Key( - [mod, "mod1"], "n", + Key([mod, "mod1"], "n", lazy.spawn(myTerm+" -e newsboat"), desc='newsboat' ), - Key( - [mod, "mod1"], "r", + Key([mod, "mod1"], "r", lazy.spawn(myTerm+" -e rtv"), desc='reddit terminal viewer' ), - Key( - [mod, "mod1"], "e", + Key([mod, "mod1"], "e", lazy.spawn(myTerm+" -e neomutt"), desc='neomutt' ), - Key( - [mod, "mod1"], "m", + Key([mod, "mod1"], "m", lazy.spawn(myTerm+" -e sh ./scripts/toot.sh"), desc='toot mastodon cli' ), - Key( - [mod, "mod1"], "t", + Key([mod, "mod1"], "t", lazy.spawn(myTerm+" -e sh ./scripts/tig-script.sh"), desc='tig' ), - Key( - [mod, "mod1"], "f", + Key([mod, "mod1"], "f", lazy.spawn(myTerm+" -e sh ./.config/vifm/scripts/vifmrun"), desc='vifm' ), - Key( - [mod, "mod1"], "j", + Key([mod, "mod1"], "j", lazy.spawn(myTerm+" -e joplin"), desc='joplin' ), - Key( - [mod, "mod1"], "c", + Key([mod, "mod1"], "c", lazy.spawn(myTerm+" -e cmus"), desc='cmus' ), - Key( - [mod, "mod1"], "i", + Key([mod, "mod1"], "i", lazy.spawn(myTerm+" -e irssi"), desc='irssi' ), - Key( - [mod, "mod1"], "y", + Key([mod, "mod1"], "y", lazy.spawn(myTerm+" -e youtube-viewer"), desc='youtube-viewer' ), - Key( - [mod, "mod1"], "a", + Key([mod, "mod1"], "a", lazy.spawn(myTerm+" -e ncpamixer"), desc='ncpamixer' ), @@ -326,7 +296,7 @@ layouts = [ ] ##### COLORS ##### -colors = [["#282a36", "#282a36"], # panel background +colors = [["#292d3e", "#292d3e"], # panel background ["#434758", "#434758"], # background for current screen tab ["#ffffff", "#ffffff"], # font color for group names ["#ff5555", "#ff5555"], # border line color for current tab @@ -350,89 +320,90 @@ extension_defaults = widget_defaults.copy() def init_widgets_list(): widgets_list = [ - widget.Sep( - linewidth = 0, - padding = 6, - foreground = colors[2], - background = colors[0] - ), - widget.Image( - filename = "~/.config/qtile/icons/python.png", - mouse_callbacks = {'Button1': lambda qtile: qtile.cmd_spawn('dmenu_run')} - ), - widget.GroupBox(font="Ubuntu Bold", - fontsize = 9, - margin_y = 3, - margin_x = 0, - padding_y = 5, - padding_x = 3, - borderwidth = 3, - active = colors[2], - inactive = colors[2], - rounded = False, - highlight_color = colors[1], - highlight_method = "line", - this_current_screen_border = colors[3], - this_screen_border = colors [4], - other_current_screen_border = colors[0], - other_screen_border = colors[0], - foreground = colors[2], - background = colors[0] - ), - widget.Prompt( - prompt=prompt, - font="Ubuntu Mono", - padding=10, - foreground = colors[3], - background = colors[1] - ), - widget.Sep( - linewidth = 0, - padding = 40, - foreground = colors[2], - background = colors[0] - ), - widget.WindowName( - foreground = colors[6], - background = colors[0], - padding = 0 - ), - widget.TextBox( - text='', - background = colors[0], - foreground = colors[4], - padding=0, - fontsize=37 - ), + widget.Sep( + linewidth = 0, + padding = 6, + foreground = colors[2], + background = colors[0] + ), + widget.Image( + filename = "~/.config/qtile/icons/python.png", + mouse_callbacks = {'Button1': lambda qtile: qtile.cmd_spawn('dmenu_run')} + ), + widget.GroupBox( + font = "Ubuntu Bold", + fontsize = 9, + margin_y = 3, + margin_x = 0, + padding_y = 5, + padding_x = 3, + borderwidth = 3, + active = colors[2], + inactive = colors[2], + rounded = False, + highlight_color = colors[1], + highlight_method = "line", + this_current_screen_border = colors[3], + this_screen_border = colors [4], + other_current_screen_border = colors[0], + other_screen_border = colors[0], + foreground = colors[2], + background = colors[0] + ), + widget.Prompt( + prompt = prompt, + font = "Ubuntu Mono", + padding = 10, + foreground = colors[3], + background = colors[1] + ), + widget.Sep( + linewidth = 0, + padding = 40, + foreground = colors[2], + background = colors[0] + ), + widget.WindowName( + foreground = colors[6], + background = colors[0], + padding = 0 + ), widget.TextBox( - text=" ₿", + text = '', + background = colors[0], + foreground = colors[4], padding = 0, - foreground=colors[2], - background=colors[4], - fontsize=12 + fontsize = 37 + ), + widget.TextBox( + text = " ₿", + padding = 0, + foreground = colors[2], + background = colors[4], + fontsize = 12 ), widget.BitcoinTicker( - foreground=colors[2], - background=colors[4], + foreground = colors[2], + background = colors[4], padding = 5 ), widget.TextBox( - text='', + text = '', background = colors[4], foreground = colors[5], - padding=0, - fontsize=37 + padding = 0, + fontsize = 37 ), widget.TextBox( - text=" 🌡", + text = " 🌡", padding = 2, - foreground=colors[2], - background=colors[5], - fontsize=11 + foreground = colors[2], + background = colors[5], + fontsize = 11 ), widget.ThermalSensor( - foreground=colors[2], - background=colors[5], + foreground = colors[2], + background = colors[5], threshold = 90, padding = 5 ), @@ -440,122 +411,122 @@ def init_widgets_list(): text='', background = colors[5], foreground = colors[4], - padding=0, - fontsize=37 + padding = 0, + fontsize = 37 + ), + widget.TextBox( + text = " ⟳", + padding = 2, + foreground = colors[2], + background = colors[4], + fontsize = 14 + ), + widget.Pacman( + update_interval = 1800, + foreground = colors[2], + mouse_callbacks = {'Button1': lambda qtile: qtile.cmd_spawn(myTerm + ' -e sudo pacman -Syu')}, + background = colors[4] + ), + widget.TextBox( + text = "Updates", + padding = 5, + mouse_callbacks = {'Button1': lambda qtile: qtile.cmd_spawn(myTerm + ' -e sudo pacman -Syu')}, + foreground = colors[2], + background = colors[4] + ), + widget.TextBox( + text = '', + background = colors[4], + foreground = colors[5], + padding = 0, + fontsize = 37 + ), + widget.TextBox( + text = " 🖬", + foreground = colors[2], + background = colors[5], + padding = 0, + fontsize = 14 + ), + widget.Memory( + foreground = colors[2], + background = colors[5], + mouse_callbacks = {'Button1': lambda qtile: qtile.cmd_spawn(myTerm + ' -e htop')}, + padding = 5 + ), + widget.TextBox( + text='', + background = colors[5], + foreground = colors[4], + padding = 0, + fontsize = 37 + ), + widget.Net( + interface = "enp6s0", + format = '{down} ↓↑ {up}', + foreground = colors[2], + background = colors[4], + padding = 5 + ), + widget.TextBox( + text = '', + background = colors[4], + foreground = colors[5], + padding = 0, + fontsize = 37 + ), + widget.TextBox( + text = " Vol:", + foreground = colors[2], + background = colors[5], + padding = 0 + ), + widget.Volume( + foreground = colors[2], + background = colors[5], + padding = 5 + ), + widget.TextBox( + text = '', + background = colors[5], + foreground = colors[4], + padding = 0, + fontsize = 37 + ), + widget.CurrentLayoutIcon( + custom_icon_paths = [os.path.expanduser("~/.config/qtile/icons")], + foreground = colors[0], + background = colors[4], + padding = 0, + scale = 0.7 + ), + widget.CurrentLayout( + foreground = colors[2], + background = colors[4], + padding = 5 + ), + widget.TextBox( + text = '', + background = colors[4], + foreground = colors[5], + padding = 0, + fontsize = 37 + ), + widget.Clock( + foreground = colors[2], + background = colors[5], + format = "%A, %B %d [ %H:%M ]" + ), + widget.Sep( + linewidth = 0, + padding = 10, + foreground = colors[0], + background = colors[5] + ), + widget.Systray( + background = colors[0], + padding = 5 ), - widget.TextBox( - text=" ⟳", - padding = 2, - foreground=colors[2], - background=colors[4], - fontsize=14 - ), - widget.Pacman( - update_interval = 1800, - foreground = colors[2], - mouse_callbacks = {'Button1': lambda qtile: qtile.cmd_spawn(myTerm + ' -e sudo pacman -Syu')}, - background = colors[4] - ), - widget.TextBox( - text="Updates", - padding = 5, - mouse_callbacks = {'Button1': lambda qtile: qtile.cmd_spawn(myTerm + ' -e sudo pacman -Syu')}, - foreground=colors[2], - background=colors[4] - ), - widget.TextBox( - text='', - background = colors[4], - foreground = colors[5], - padding=0, - fontsize=37 - ), - widget.TextBox( - text=" 🖬", - foreground=colors[2], - background=colors[5], - padding = 0, - fontsize=14 - ), - widget.Memory( - foreground = colors[2], - background = colors[5], - mouse_callbacks = {'Button1': lambda qtile: qtile.cmd_spawn(myTerm + ' -e htop')}, - padding = 5 - ), - widget.TextBox( - text='', - background = colors[5], - foreground = colors[4], - padding=0, - fontsize=37 - ), - widget.Net( - interface = "enp6s0", - format = '{down} ↓↑ {up}', - foreground = colors[2], - background = colors[4], - padding = 5 - ), - widget.TextBox( - text='', - background = colors[4], - foreground = colors[5], - padding=0, - fontsize=37 - ), - widget.TextBox( - text=" Vol:", - foreground=colors[2], - background=colors[5], - padding = 0 - ), - widget.Volume( - foreground = colors[2], - background = colors[5], - padding = 5 - ), - widget.TextBox( - text='', - background = colors[5], - foreground = colors[4], - padding=0, - fontsize=37 - ), - widget.CurrentLayoutIcon( - custom_icon_paths=[os.path.expanduser("~/.config/qtile/icons")], - foreground = colors[0], - background = colors[4], - padding = 0, - scale=0.7 - ), - widget.CurrentLayout( - foreground = colors[2], - background = colors[4], - padding = 5 - ), - widget.TextBox( - text='', - background = colors[4], - foreground = colors[5], - padding=0, - fontsize=37 - ), - widget.Clock( - foreground = colors[2], - background = colors[5], - format="%A, %B %d [ %H:%M ]" - ), - widget.Sep( - linewidth = 0, - padding = 10, - foreground = colors[0], - background = colors[5] - ), - widget.Systray( - background=colors[0], - padding = 5 - ), ] return widgets_list @@ -570,9 +541,9 @@ def init_widgets_screen2(): return widgets_screen2 # Monitor 2 will display all widgets in widgets_list def init_screens(): - return [Screen(top=bar.Bar(widgets=init_widgets_screen1(), opacity=0.95, size=20)), - Screen(top=bar.Bar(widgets=init_widgets_screen2(), opacity=0.95, size=20)), - Screen(top=bar.Bar(widgets=init_widgets_screen1(), opacity=0.95, size=20))] + return [Screen(top=bar.Bar(widgets=init_widgets_screen1(), opacity=1.0, size=20)), + Screen(top=bar.Bar(widgets=init_widgets_screen2(), opacity=1.0, size=20)), + Screen(top=bar.Bar(widgets=init_widgets_screen1(), opacity=1.0, size=20))] if __name__ in ["config", "__main__"]: screens = init_screens() diff --git a/.dmenu/dmenu-edit-configs.sh b/.dmenu/dmenu-edit-configs.sh index 3cb551e..c9428f6 100755 --- a/.dmenu/dmenu-edit-configs.sh +++ b/.dmenu/dmenu-edit-configs.sh @@ -148,4 +148,4 @@ case "$choice" in exit 1 ;; esac -alacritty -e nvim "$choice" +emacsclient -c -a emacs "$choice" diff --git a/.doom.d/config.el b/.doom.d/config.el index 1fce4df..dd0a02f 100644 --- a/.doom.d/config.el +++ b/.doom.d/config.el @@ -1,233 +1,37 @@ -;;; $DOOMDIR/config.el -*- lexical-binding: t; -*- - -;; Place your private configuration here! Remember, you do not need to run 'doom -;; sync' after modifying this file! - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; START OF EXWM CONFIG ;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -;; Disable menu-bar, tool-bar and scroll-bar to increase the usable space. -(menu-bar-mode -1) -(tool-bar-mode -1) -(scroll-bar-mode -1) -;; Also shrink fringes to 1 pixel. -(fringe-mode 1) - -;; Turn on `display-time-mode' if you don't use an external bar. -(setq display-time-default-load-average nil) -(display-time-mode t) - -;; You are strongly encouraged to enable something like `ido-mode' to alter -;; the default behavior of 'C-x b', or you will take great pains to switch -;; to or back from a floating frame (remember 'C-x 5 o' if you refuse this -;; proposal however). -;; You may also want to call `exwm-config-ido' later (see below). -(ido-mode 1) - -;; Emacs server is not required to run EXWM but it has some interesting uses -;; (see next section). -(server-start) - -;;;; Below are configurations for EXWM. - -;; Add paths (not required if EXWM is installed from GNU ELPA). -;(add-to-list 'load-path "/path/to/xelb/") -;(add-to-list 'load-path "/path/to/exwm/") - -;; Load EXWM. -(require 'exwm) - -;; Fix problems with Ido (if you use it). -(require 'exwm-config) -(exwm-config-ido) - -;; Set the initial number of workspaces (they can also be created later). -(setq exwm-workspace-number 10) - -(require 'exwm-randr) -(setq exwm-randr-workspace-monitor-plist '(0 "DisplayPort-0" 1 "DisplayPort-1" 2 "HDMI-A-0")) - (add-hook 'exwm-randr-screen-change-hook - (lambda () - (start-process-shell-command - "xrandr" nil "xrandr --output DisplayPort-0 --mode 1920x1080 --pos 0x0 --rotate normal --output DisplayPort-1 --primary --mode 1920x1080 --pos 1920x0 --rotate normal --output HDMI-A-0 --mode 1920x1080 --pos 3840x0 --rotate normal"))) -(exwm-randr-enable) - -(require 'exwm-systemtray) -(exwm-systemtray-enable) - -;; All buffers created in EXWM mode are named "*EXWM*". You may want to -;; change it in `exwm-update-class-hook' and `exwm-update-title-hook', which -;; are run when a new X window class name or title is available. Here's -;; some advice on this topic: -;; + Always use `exwm-workspace-rename-buffer` to avoid naming conflict. -;; + For applications with multiple windows (e.g. GIMP), the class names of -; all windows are probably the same. Using window titles for them makes -;; more sense. -;; In the following example, we use class names for all windows except for -;; Java applications and GIMP. -(add-hook 'exwm-update-class-hook - (lambda () - (unless (or (string-prefix-p "sun-awt-X11-" exwm-instance-name) - (string= "gimp" exwm-instance-name)) - (exwm-workspace-rename-buffer exwm-class-name)))) -(add-hook 'exwm-update-title-hook - (lambda () - (when (or (not exwm-instance-name) - (string-prefix-p "sun-awt-X11-" exwm-instance-name) - (string= "gimp" exwm-instance-name)) - (exwm-workspace-rename-buffer exwm-title)))) - -;; Global keybindings can be defined with `exwm-input-global-keys'. -;; Here are a few examples: -(setq exwm-input-global-keys - `( - ;; Bind "s-r" to exit char-mode and fullscreen mode. - ([?\s-r] . exwm-reset) - ;; Bind "s-w" to switch workspace interactively. - ([?\s-w] . exwm-workspace-switch) - ;; Bind "s-0" to "s-9" to switch to a workspace by its index. - ,@(mapcar (lambda (i) - `(,(kbd (format "s-%d" i)) . - (lambda () - (interactive) - (exwm-workspace-switch-create ,i)))) - (number-sequence 0 9)) - ;; Bind "s-&" to launch applications ('M-&' also works if the output - ;; buffer does not bother you). - ([?\s-&] . (lambda (command) - (interactive (list (read-shell-command "$ "))) - (start-process-shell-command command nil command))) - ([s-return] . (lambda () - (interactive) - (start-process "" nil "alacritty"))) - ([?\s-p] . (lambda () - (interactive) - (start-process "" nil "dmenu_run"))) - ([?\s-f] . (lambda () - (interactive) - (start-process "" nil "firefox"))) - ([s-f2] . (lambda () - (interactive) - (start-process "" nil "/usr/bin/slock"))))) - -;; To add a key binding only available in line-mode, simply define it in -;; `exwm-mode-map'. The following example shortens 'C-c q' to 'C-q'. -(define-key exwm-mode-map [?\C-q] #'exwm-input-send-next-key) - -;; The following example demonstrates how to use simulation keys to mimic -;; the behavior of Emacs. The value of `exwm-input-simulation-keys` is a -;; list of cons cells (SRC . DEST), where SRC is the key sequence you press -;; and DEST is what EXWM actually sends to application. Note that both SRC -;; and DEST should be key sequences (vector or string). -(setq exwm-input-simulation-keys - '( - ;; movement - ([?\C-b] . [left]) - ([?\M-b] . [C-left]) - ([?\C-f] . [right]) - ([?\M-f] . [C-right]) - ([?\C-p] . [up]) - ([?\C-n] . [down]) - ([?\C-a] . [home]) - ([?\C-e] . [end]) - ([?\M-v] . [prior]) - ([?\C-v] . [next]) - ([?\C-d] . [delete]) - ([?\C-k] . [S-end delete]) - ;; cut/paste. - ([?\C-w] . [?\C-x]) - ([?\M-w] . [?\C-c]) - ([?\C-y] . [?\C-v]) - ;; search - ([?\C-s] . [?\C-f]))) - -;; You can hide the minibuffer and echo area when they're not used, by -;; uncommenting the following line. -;(setq exwm-workspace-minibuffer-position 'bottom) - -;; Do not forget to enable EXWM. It will start by itself when things are -;; ready. You can put it _anywhere_ in your configuration. -(exwm-enable) -;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; END OF EXWM CONFIG ;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -;; Doom exposes five (optional) variables for controlling fonts in Doom. Here -;; are the three important ones: -;; -;; + `doom-font' -;; + `doom-variable-pitch-font' -;; + `doom-big-font' -- used for `doom-big-font-mode'; use this for -;; presentations or streaming. -;; -;; They all accept either a font-spec, font string ("Input Mono-12"), or xlfd -;; font string. You generally only need these two: (setq doom-font (font-spec :family "Mononoki Nerd Font" :size 15) doom-variable-pitch-font (font-spec :family "Mononoki Nerd Font" :size 15)) -;; There are two ways to load a theme. Both assume the theme is installed and -;; available. You can either set `doom-theme' or manually load a theme with the -;; `load-theme' function. This is the default: (setq doom-theme 'doom-palenight) -;; If you use `org' and don't want your org files in the default location below, -;; change `org-directory'. It must be set before org loads! (setq org-directory "~/Documents/org/") -;; This determines the style of line numbers in effect. If set to `nil', line -;; numbers are disabled. For relative line numbers, set this to `relative'. (setq display-line-numbers-type t) - -;; Setting the neotree width to be adjustable. -(setq neo-window-fixed-size nil) - -;; Sets binding to toggle line wrap on/off. (global-set-key "\C-x\ t" 'toggle-truncate-lines) -;; Sets binding to launch elfeed -(global-set-key (kbd "s-a") 'emms) -(global-set-key (kbd "s-b") 'ibuffer) -(global-set-key (kbd "s-d") 'dired) -(global-set-key (kbd "s-m") 'mu4e) -(global-set-key (kbd "s-n") 'elfeed) -(global-set-key (kbd "s-s") 'eshell) +(setq neo-window-fixed-size nil) -;; Set browser to eww (setq browse-url-browser-function 'eww-browse-url) -;; Force splits to open on the right (defun prefer-horizontal-split () (set-variable 'split-height-threshold nil t) (set-variable 'split-width-threshold 40 t)) ; make this as low as needed (add-hook 'markdown-mode-hook 'prefer-horizontal-split) -;; Image previews in dired -(global-set-key (kbd "C-x i") 'peep-dired) +(map! + (:after dired + (:map dired-mode-map + "C-x i" #'peep-dired + ))) (evil-define-key 'normal peep-dired-mode-map (kbd "j") 'peep-dired-next-file (kbd "k") 'peep-dired-prev-file) (add-hook 'peep-dired-hook 'evil-normalize-keymaps) -;; Sets transparency for focuses and unfocused frames. -;; (set-frame-parameter (selected-frame) 'alpha '(95 . 80)) -;; (add-to-list 'default-frame-alist '(alpha . (95 . 80))) - -;; Setting the indent guides to show a pipe character. -;; (def-package! highlight-indent-guides -;; :commands highlight-indent-guides-mode -;; :hook (prog-mode . highlight-indent-guides-mode) -;; :config -;; (setq highlight-indent-guides-method 'character -;; highlight-indent-guides-character ?\| -;; highlight-indent-guides-delay 0.01 -;; highlight-indent-guides-responsive 'top -;; highlight-indent-guides-auto-enabled nil)) (use-package emms :ensure t :config (require 'emms-setup) (require 'emms-info) - (require 'emms-cue) ;; Required for processing flacs. + (require 'emms-cue) (require 'emms-mode-line) (require 'emms-playing-time) (setq emms-source-file-default-directory "~/Music/Non-Classical/70s-80s/") @@ -241,20 +45,10 @@ (emms-mode-line 1) (emms-playing-time 1)) - -;; Setting up mu4e which is an email client that works within emacs. -;; You must install mu4e and mbsync through your Linux distribution's -;; package manager. - -;; Adding path to mu4e (add-to-list 'load-path "/usr/local/share/emacs/site-lisp/mu4e") - (require 'mu4e) (setq mu4e-get-mail-command "mbsync -c ~/.emacs.d/mu4e/.mbsyncrc -a" mu4e-update-interval 300) - -;; Fields that are auto-filled in email such as the full name of the -;; sender, the salutation and signature. (setq user-mail-address "derek@distrotube.com" user-full-name "Derek Taylor" @@ -262,10 +56,6 @@ (concat "Derek Taylor\n" "http://www.youtube.com/DistroTube\n")) - -;; Setting up smtp for sending mail. Make sure the gnutls command -;; line utils are installed. Package 'gnutls-bin' in Debian/Ubuntu, -;; and 'gnutls' in Arch. (require 'smtpmail) (setq message-send-mail-function 'smtpmail-send-it starttls-use-gnutls t @@ -276,37 +66,29 @@ smtpmail-smtp-server "smtp.1and1.com" smtpmail-smtp-service 587) - -;; Here are some additional functions/macros that could help you configure Doom: -;; -;; - `load!' for loading external *.el files relative to this one -;; - `use-package!' for configuring packages -;; - `after!' for running code after a package has loaded -;; - `add-load-path!' for adding directories to the `load-path', relative to -;; this file. Emacs searches the `load-path' when you load packages with -;; `require' or `use-package'. -;; - `map!' for binding new keys -;; -;; To get information about any of these functions/macros, move the cursor over -;; the highlighted symbol at press 'K' (non-evil users must press 'C-c c k'). -;; This will open documentation for it, including demos of how they are used. -;; -;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how -;; they are implemented. +(setq mastodon-instance-url "https://mastodon.technology") (custom-set-variables - ;; custom-set-variables was added by Custom. - ;; If you edit it by hand, you could mess it up, so be careful. - ;; Your init file should contain only one such instance. - ;; If there is more than one, they won't work right. '(elfeed-feeds (quote - ("https://www.gamingonlinux.com/article_rss.php" "https://hackaday.com/blog/feed/" "https://opensource.com/feed" "https://linux.softpedia.com/backend.xml" "https://itsfoss.com/feed/" "https://www.zdnet.com/topic/linux/rss.xml" "https://www.phoronix.com/rss.php" "http://feeds.feedburner.com/d0od" "https://www.computerworld.com/index.rss" "https://www.networkworld.com/category/linux/index.rss" "https://www.techrepublic.com/rssfeeds/topic/open-source/" "https://betanews.com/feed" "http://lxer.com/module/newswire/headlines.rss" "https://distrowatch.com/news/dwd.xml"))) - '(package-selected-packages (quote (exwm peep-dired nav-flash evil-mu4e emms elfeed)))) + (("https://www.reddit.com/r/linux.rss" reddit linux) + ("https://www.gamingonlinux.com/article_rss.php" gaming linux) + ("https://hackaday.com/blog/feed/" hackaday linux) + ("https://opensource.com/feed" opensource linux) + ("https://linux.softpedia.com/backend.xml" softpedia linux) + ("https://itsfoss.com/feed/" itsfoss linux) + ("https://www.zdnet.com/topic/linux/rss.xml" zdnet linux) + ("https://www.phoronix.com/rss.php" phoronix linux) + ("http://feeds.feedburner.com/d0od" omgubuntu linux) + ("https://www.computerworld.com/index.rss" computerworld linux) + ("https://www.networkworld.com/category/linux/index.rss" networkworld linux) + ("https://www.techrepublic.com/rssfeeds/topic/open-source/" techrepublic linux) + ("https://betanews.com/feed" betanews linux) + ("http://lxer.com/module/newswire/headlines.rss" lxer linux) + ("https://distrowatch.com/news/dwd.xml" distrowatch linux)))) + '(package-selected-packages + (quote + (mastodon exwm peep-dired nav-flash evil-mu4e emms elfeed)))) (custom-set-faces - ;; custom-set-faces was added by Custom. - ;; If you edit it by hand, you could mess it up, so be careful. - ;; Your init file should contain only one such instance. - ;; If there is more than one, they won't work right. ) diff --git a/.doom.d/config.org b/.doom.d/config.org new file mode 100644 index 0000000..5719738 --- /dev/null +++ b/.doom.d/config.org @@ -0,0 +1,158 @@ +#+TITLE: DT's Doom Emacs Config +#+AUTHOR: Derek Taylor (DT) + +** FONTS +Doom exposes five (optional) variables for controlling fonts in Doom. Here +are the three important ones: + ++ `doom-font' ++ `doom-variable-pitch-font' ++ `doom-big-font' -- used for `doom-big-font-mode'; use this for + presentations or streaming. + +They all accept either a font-spec, font string ("Input Mono-12"), or xlfd +font string. You generally only need these two: + +#+BEGIN_SRC emacs-lisp +(setq doom-font (font-spec :family "Mononoki Nerd Font" :size 15) + doom-variable-pitch-font (font-spec :family "Mononoki Nerd Font" :size 15)) +#+END_SRC + +** DOOM THEME +#+BEGIN_SRC emacs-lisp +(setq doom-theme 'doom-palenight) +#+END_SRC + +** ORG MODE +#+BEGIN_SRC emacs-lisp +(setq org-directory "~/Documents/org/") +#+END_SRC + +** LINE SETTINGS + #+BEGIN_SRC emacs-lisp +(setq display-line-numbers-type t) +(global-set-key "\C-x\ t" 'toggle-truncate-lines) +#+END_SRC + +** NEOTREE +Setting the neotree width to be adjustable. +#+BEGIN_SRC emacs-lisp +(setq neo-window-fixed-size nil) +#+END_SRC + +** BROWSER (eww) +Set urls to open in a specific browser. +#+BEGIN_SRC emacs-lisp +(setq browse-url-browser-function 'eww-browse-url) +#+END_SRC + +** SPLITS +Force splits to open on the right +#+BEGIN_SRC emacs-lisp +(defun prefer-horizontal-split () + (set-variable 'split-height-threshold nil t) + (set-variable 'split-width-threshold 40 t)) ; make this as low as needed +(add-hook 'markdown-mode-hook 'prefer-horizontal-split) +#+END_SRC + +** FILE MANAGER (dired) +Image previews in dired +#+BEGIN_SRC emacs-lisp +(map! + (:after dired + (:map dired-mode-map + "C-x i" #'peep-dired + ))) +(evil-define-key 'normal peep-dired-mode-map (kbd "j") 'peep-dired-next-file + (kbd "k") 'peep-dired-prev-file) +(add-hook 'peep-dired-hook 'evil-normalize-keymaps) +#+END_SRC + +** AUDIO PLAYER (emms) +#+BEGIN_SRC emacs-lisp +(use-package emms + :ensure t + :config + (require 'emms-setup) + (require 'emms-info) + (require 'emms-cue) + (require 'emms-mode-line) + (require 'emms-playing-time) + (setq emms-source-file-default-directory "~/Music/Non-Classical/70s-80s/") + (setq emms-playlist-buffer-name "*Music*") + (setq emms-info-asynchronously t) + (unless (eq system-type 'windows-nt) + (setq emms-source-file-directory-tree-function + 'emms-source-file-directory-tree-find)) + (emms-all) + (emms-default-players) + (emms-mode-line 1) + (emms-playing-time 1)) +#+END_SRC + +** EMAIL CLIENT (mu4e) + Setting up mu4e which is an email client that works within emacs. + You must install mu4e and mbsync through your Linux distribution's + package manager. Setting up smtp for sending mail. Make sure the gnutls command + line utils are installed. Package 'gnutls-bin' in Debian/Ubuntu, + and 'gnutls' in Arch. + #+BEGIN_SRC emacs-lisp +(add-to-list 'load-path "/usr/local/share/emacs/site-lisp/mu4e") +(require 'mu4e) +(setq mu4e-get-mail-command "mbsync -c ~/.emacs.d/mu4e/.mbsyncrc -a" + mu4e-update-interval 300) +(setq + user-mail-address "derek@distrotube.com" + user-full-name "Derek Taylor" + mu4e-compose-signature + (concat + "Derek Taylor\n" + "http://www.youtube.com/DistroTube\n")) +(require 'smtpmail) +(setq message-send-mail-function 'smtpmail-send-it + starttls-use-gnutls t + smtpmail-starttls-credentials '(("smtp.1and1.com" 587 nil nil)) + smtpmail-auth-credentials + '(("smtp.1and1.com" 587 "derek@distrotube.com" nil)) + smtpmail-default-smtp-server "smtp.1and1.com" + smtpmail-smtp-server "smtp.1and1.com" + smtpmail-smtp-service 587) +#+END_SRC + +** MASTODON CLIENT (mastodon) +#+BEGIN_SRC emacs-lisp +(setq mastodon-instance-url "https://mastodon.technology") +#+END_SRC + +#+BEGIN_SRC emacs-lisp +(custom-set-variables + '(elfeed-feeds + (quote + (("https://www.reddit.com/r/linux.rss" reddit linux) + ("https://www.gamingonlinux.com/article_rss.php" gaming linux) + ("https://hackaday.com/blog/feed/" hackaday linux) + ("https://opensource.com/feed" opensource linux) + ("https://linux.softpedia.com/backend.xml" softpedia linux) + ("https://itsfoss.com/feed/" itsfoss linux) + ("https://www.zdnet.com/topic/linux/rss.xml" zdnet linux) + ("https://www.phoronix.com/rss.php" phoronix linux) + ("http://feeds.feedburner.com/d0od" omgubuntu linux) + ("https://www.computerworld.com/index.rss" computerworld linux) + ("https://www.networkworld.com/category/linux/index.rss" networkworld linux) + ("https://www.techrepublic.com/rssfeeds/topic/open-source/" techrepublic linux) + ("https://betanews.com/feed" betanews linux) + ("http://lxer.com/module/newswire/headlines.rss" lxer linux) + ("https://distrowatch.com/news/dwd.xml" distrowatch linux)))) + '(package-selected-packages + (quote + (mastodon exwm peep-dired nav-flash evil-mu4e emms elfeed)))) +#+END_SRC + +custom-set-faces was added by Custom. +If you edit it by hand, you could mess it up, so be careful. +Your init file should contain only one such instance. +If there is more than one, they won't work right. +#+BEGIN_SRC emacs-lisp +(custom-set-faces + ) +#+END_SRC diff --git a/.doom.d/init.el b/.doom.d/init.el index 432bda5..085e9a3 100644 --- a/.doom.d/init.el +++ b/.doom.d/init.el @@ -178,5 +178,5 @@ ;;twitter ; twitter client https://twitter.com/vnought :config - ;;literate + literate (default +bindings +smartparens)) diff --git a/.doom.d/packages.el b/.doom.d/packages.el index a03a0bd..7c0893f 100644 --- a/.doom.d/packages.el +++ b/.doom.d/packages.el @@ -49,6 +49,7 @@ ;; ...Or *all* packages (NOT RECOMMENDED; will likely break things) ;(unpin! t) (package! exwm) +(package! mastodon) (package! emms) (package! emojify) (package! elfeed) diff --git a/.emacs.d/README.md b/.emacs.d/README.md deleted file mode 100644 index a23ff2d..0000000 --- a/.emacs.d/README.md +++ /dev/null @@ -1,254 +0,0 @@ -
- -# Doom Emacs - -[Install](#install) • [Documentation] • [FAQ] • [Screenshots] • [Contribute](#contribute) - -![Made with Doom Emacs](https://img.shields.io/github/tag/hlissner/doom-emacs.svg?style=flat-square&label=release&color=58839b) -![Supports Emacs 26-27](https://img.shields.io/badge/Supports-Emacs_26.1_--_27.x-blueviolet.svg?style=flat-square&logo=GNU%20Emacs&logoColor=white) -![Latest commit](https://img.shields.io/github/last-commit/hlissner/doom-emacs/develop?style=flat-square) -![Build status: develop](https://img.shields.io/github/workflow/status/hlissner/doom-emacs/CI/develop?style=flat-square) -[![Discord Server](https://img.shields.io/discord/406534637242810369?color=blue&label=Discord%20Chat&logo=discord&logoColor=white&style=flat-square)][Discord] - -![Doom Emacs Screenshot](https://raw.githubusercontent.com/hlissner/doom-emacs/screenshots/main.png) - -
- ---- - -### Table of Contents -- [Introduction](#introduction) -- [Features](#features) -- [Prerequisites](#prerequisites) -- [Install](#install) -- [Roadmap](#roadmap) -- [Getting help](#getting-help) -- [Contribute](#contribute) - - -# Introduction - - - - -> It is a story as old as time. A stubborn, shell-dwelling, and melodramatic -> vimmer—envious of the features of modern text editors—spirals into -> despair before he succumbs to the [dark side][evil-mode]. This is his config. - -Doom is a configuration framework for [GNU Emacs] tailored for Emacs bankruptcy -veterans who want less framework in their frameworks, a modicum of stability -(and reproducibility) from their package manager, and the performance of a hand -rolled config (or better). It can be a foundation for your own config or a -resource for Emacs enthusiasts to learn more about our favorite operating -system. - -Its design is guided by these mantras: - -+ **Gotta go fast.** Startup and run-time performance are priorities. Doom goes - beyond by modifying packages to be snappier and load lazier. -+ **Close to metal.** There's less between you and vanilla Emacs by design. - That's less to grok and less to work around when you tinker. Internals ought - to be written as if reading them were part of Doom's UX, and it is! -+ **Opinionated, but not stubborn.** Doom is about reasonable defaults and - curated opinions, but use as little or as much of it as you like. -+ **Your system, your rules.** You know better. At least, Doom hopes so! It - won't *automatically* install system dependencies (and will force plugins not - to either). Rely on `doom doctor` to tell you what's missing. -+ **Nix/Guix is a great idea!** The Emacs ecosystem is temperamental. Things - break and they break often. Disaster recovery should be a priority! Doom's - package management should be declarative and your private config reproducible, - and comes with a means to roll back releases and updates (still a WIP). - -Check out [the FAQ][FAQ] for answers to common questions about the project. - - -# Features -- Minimalistic good looks inspired by modern editors. -- Curated and sane defaults for many packages, (major) OSes, and Emacs itself. -- A modular organizational structure for separating concerns in your config. -- A standard library designed to simplify your elisp bike shedding. -- A declarative [package management system][package-management] (powered by - [straight.el]) with a command line interface. Install packages from anywhere, - not just (M)ELPA, and pin them to any commit. -- Optional vim emulation powered by [evil-mode], including ports of popular vim - plugins like [vim-sneak], [vim-easymotion], [vim-unimpaired] and - [more][ported-vim-plugins]! -- Opt-in LSP integration for many languages, using [lsp-mode] or [eglot] -- Support for *many* programming languages. Includes syntax highlighting, - linters/checker integration, inline code evaluation, code completion (where - possible), REPLs, documentation lookups, snippets, and more! -- Support for *many* tools, like docker, pass, ansible, terraform, and more. -- A Spacemacs-esque [keybinding scheme][bindings], centered around leader - and localleader prefix keys (SPC and SPCm for - evil users, C-c and C-c l for vanilla users). -- A rule-based [popup manager][popup-system] to control how temporary buffers - are displayed (and disposed of). -- Per-file indentation style detection and [editorconfig] integration. Let - someone else can argue about tabs vs **_spaces_**. -- Project-management tools and framework-specific minor modes with their own - snippets libraries. -- Project search (and replace) utilities, powered by [ripgrep] and [ivy] or - [helm]. -- Isolated and persistent workspaces (also substitutes for vim tabs). -- Support for Chinese and Japanese input systems. -- Save a snapshot of your shell environment to a file for Emacs to load at - startup. No more struggling to get Emacs to inherit your `PATH`, among other - things. - - -# Prerequisites -+ Git 2.23+ -+ Emacs 26.1+ (*27 is recommended*) with GNUTLS support -+ [ripgrep] 11.0+ -+ GNU `find` -+ *OPTIONAL:* [fd] 7.3.0+ (improves file indexing performance for some commands) - -Doom is comprised of [~150 optional modules][Modules], some of which may have -additional dependencies. [Visit their documentation][Modules] or run `bin/doom -doctor` to check for any that you may have missed. - - -# Install -``` sh -git clone --depth 1 https://github.com/hlissner/doom-emacs ~/.emacs.d -~/.emacs.d/bin/doom install -``` - -Then [read our Getting Started guide][getting-started] to be walked through -installing, configuring and maintaining Doom Emacs. - -It's a good idea to add `~/.emacs.d/bin` to your `PATH`! Other `bin/doom` -commands you should know about: - -+ `doom sync` to synchronize your private config with Doom by installing missing - packages, removing orphaned packages, and regenerating caches. Run this - whenever you modify your private `init.el` or `packages.el`, or install/remove - an Emacs package through your OS package manager (e.g. mu4e or agda). -+ `doom upgrade` to update Doom to the latest release & all installed packages. -+ `doom doctor` to diagnose common issues with your system and config. -+ `doom env` to dump a snapshot of your shell environment to a file that Doom - will load at startup. This allows Emacs to inherit your `PATH`, among other - things. -+ `doom build` to recompile all installed packages (use this if you up/downgrade - Emacs). - - -# Roadmap -Doom is an active and ongoing project. To make that development more -transparent, its roadmap (and other concerns) are published across three github -project boards and a newsletter: - -+ [Development Roadmap](https://github.com/hlissner/doom-emacs/projects/3): - roughly outlines our goals between release milestones and their progress. -+ [Plugins under review](https://github.com/hlissner/doom-emacs/projects/2): - lists plugins we are watching and considering for inclusion, and what their - status for inclusion is. Please consult this list before requesting new - packages/features. -+ [Upstream bugs](https://github.com/hlissner/doom-emacs/projects/5): lists - issues that originate from elsewhere, and whether or not we have local - workarounds or temporary fixes for them. -+ ~~Doom's newsletter~~ (not finished) will contain changelogs in between - releases. - - -# Getting help -Emacs is no journey of a mere thousand miles. You _will_ run into problems and -mysterious errors. When you do, here are some places you can look for help: - -+ [Our documentation][documentation] covers many use cases. - + [The Configuration section][configuration] covers how to configure Doom and - its packages. - + [The Package Management section][package-management] covers how to install - and disable packages. - + [This section][bin/doom] explains the `bin/doom` script's most important - commands. - + [This section][common-mistakes] lists some common configuration mistakes new - users make, when migrating a config from another distro or their own. - + [This answer][change-theme] shows you how to add your own themes to your - private config. - + [This answer][change-font] shows you how to change the default font. - + Your issue may be documented in the [FAQ]. -+ With Emacs built-in help system documentation is a keystroke away: - + For functions: SPC h f or C-h f - + For variables: SPC h v or C-h v - + For a keybind: SPC h k or C-h k - + To search available keybinds: SPC h b b or C-h b b -+ Run `bin/doom doctor` to detect common issues with your development - environment and private config. -+ Check out the [FAQ], in case your question has already been answered. -+ Search [Doom's issue tracker](/issues) in case your issue was already - reported. -+ Hop on [our Discord server][discord]; it's active and friendly! Keep an eye on - the #announcements channel, where I announce breaking updates and releases. - - -# Contribute -[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) -[![Elisp styleguide](https://img.shields.io/badge/elisp-style%20guide-purple?style=flat-square)](https://github.com/bbatsov/emacs-lisp-style-guide) -[![Donate on liberapay](https://img.shields.io/badge/liberapay-donate-1.svg?style=flat-square&logo=liberapay&color=blue)][liberapay] -[![Donate on paypal](https://img.shields.io/badge/paypal-donate-1?style=flat-square&logo=paypal&color=blue)][paypal] - -Doom is a labor of love and incurable madness, but I'm only one guy. Doom -wouldn't be where it is today without your help. I welcome contributions of any -kind! - -+ I :heart: pull requests and bug reports (see the [Contributing - Guidelines][contribute])! -+ Don't hesitate to [tell me my Elisp-fu - sucks](https://github.com/hlissner/doom-emacs/issues/new), but please tell me - why. -+ Hop on [our Discord server][Discord] and say hi! Help others, hang out or talk - to me about Emacs, gamedev, programming, physics, pixel art, anime, gaming -- - anything you like. Nourish this lonely soul. -+ If you'd like to support my work financially, buy me a drink through - [liberapay] or [paypal]. My work contends with studies, adventures in indie - gamedev and freelance work. Donations help me allocate more time to my Emacs - and OSS capers. - -[![](https://sourcerer.io/fame/hlissner/hlissner/doom-emacs/images/0)](https://sourcerer.io/fame/hlissner/hlissner/doom-emacs/links/0) -[![](https://sourcerer.io/fame/hlissner/hlissner/doom-emacs/images/1)](https://sourcerer.io/fame/hlissner/hlissner/doom-emacs/links/1) -[![](https://sourcerer.io/fame/hlissner/hlissner/doom-emacs/images/2)](https://sourcerer.io/fame/hlissner/hlissner/doom-emacs/links/2) -[![](https://sourcerer.io/fame/hlissner/hlissner/doom-emacs/images/3)](https://sourcerer.io/fame/hlissner/hlissner/doom-emacs/links/3) -[![](https://sourcerer.io/fame/hlissner/hlissner/doom-emacs/images/4)](https://sourcerer.io/fame/hlissner/hlissner/doom-emacs/links/4) -[![](https://sourcerer.io/fame/hlissner/hlissner/doom-emacs/images/5)](https://sourcerer.io/fame/hlissner/hlissner/doom-emacs/links/5) -[![](https://sourcerer.io/fame/hlissner/hlissner/doom-emacs/images/6)](https://sourcerer.io/fame/hlissner/hlissner/doom-emacs/links/6) -[![](https://sourcerer.io/fame/hlissner/hlissner/doom-emacs/images/7)](https://sourcerer.io/fame/hlissner/hlissner/doom-emacs/links/7) - - -[contribute]: docs/contributing.org -[discord]: https://discord.gg/qvGgnVx -[documentation]: docs/index.org -[faq]: docs/faq.org -[getting-started]: docs/getting_started.org -[install]: docs/getting_started.org#install -[backtrace]: docs/getting_started.org#how-to-extract-a-backtrace-from-an-error -[configuration]: docs/getting_started.org#configuring-doom -[package-management]: docs/getting_started.org#package-management -[bin/doom]: docs/getting_started.org#the-bindoom-utility -[common-mistakes]: docs/getting_started.org#common-mistakes-when-configuring-doom-emacs -[change-theme]: docs/faq.org#how-do-i-change-the-theme -[change-font]: docs/faq.org#how-do-i-change-the-fonts -[modules]: docs/modules.org -[popup-system]: modules/ui/popup/README.org -[screenshots]: #screenshots - -[bindings]: modules/config/default/+evil-bindings.el -[editorconfig]: http://editorconfig.org/ -[evil-mode]: https://github.com/emacs-evil/evil -[fd]: https://github.com/sharkdp/fd -[gnu emacs]: https://www.gnu.org/software/emacs/ -[helm]: https://github.com/emacs-helm/helm -[ivy]: https://github.com/abo-abo/swiper -[lsp-mode]: https://github.com/emacs-lsp/lsp-mode -[eglot]: https://github.com/joaotavora/eglot -[nix]: https://nixos.org -[ported-vim-plugins]: modules/editor/evil/README.org#ported-vim-plugins -[ripgrep]: https://github.com/BurntSushi/ripgrep -[straight.el]: https://github.com/raxod502/straight.el -[vim-easymotion]: https://github.com/easymotion/vim-easymotion -[vim-lion]: https://github.com/tommcdo/vim-lion -[vim-sneak]: https://github.com/justinmk/vim-sneak -[vim-unimpaired]: https://github.com/tpope/vim-unimpaired - -[liberapay]: https://liberapay.com/hlissner/donate -[paypal]: https://paypal.me/henriklissner/10 diff --git a/.xmonad/xmonad.hs b/.xmonad/xmonad.hs index 23d26e3..f739767 100644 --- a/.xmonad/xmonad.hs +++ b/.xmonad/xmonad.hs @@ -704,10 +704,12 @@ myKeys = , ("C-e e", spawn "emacsclient -c -a ''") -- start emacs , ("C-e b", spawn "emacsclient -c -a '' --eval '(ibuffer)'") -- list emacs buffers , ("C-e d", spawn "emacsclient -c -a '' --eval '(dired nil)'") -- dired emacs file manager + , ("C-e i", spawn "emacsclient -c -a '' --eval '(erc)'") -- erc emacs irc client , ("C-e m", spawn "emacsclient -c -a '' --eval '(mu4e)'") -- mu4e emacs email client , ("C-e n", spawn "emacsclient -c -a '' --eval '(elfeed)'") -- elfeed emacs rss client , ("C-e s", spawn "emacsclient -c -a '' --eval '(eshell)'") -- eshell within emacs - , ("C-e t", spawn "emacsclient -c -a '' --eval '(+vterm/here nil)'") -- eshell within emacs + , ("C-e t", spawn "emacsclient -c -a '' --eval '(mastodon)'") -- mastodon within emacs + , ("C-e v", spawn "emacsclient -c -a '' --eval '(+vterm/here nil)'") -- vterm within emacs -- emms is an emacs audio player. I set it to auto start playing in a specific directory. , ("C-e a", spawn "emacsclient -c -a '' --eval '(emms)' --eval '(emms-play-directory-tree \"~/Music/Non-Classical/70s-80s/\")'")