Compare commits
2 commits
93f995a6d0
...
80cd3c1157
Author | SHA1 | Date | |
---|---|---|---|
80cd3c1157 | |||
248e6fbb56 |
9 changed files with 297 additions and 37 deletions
106
.config/alacritty/alacritty.toml
Normal file
106
.config/alacritty/alacritty.toml
Normal file
|
@ -0,0 +1,106 @@
|
|||
[colors]
|
||||
draw_bold_text_with_bright_colors = true
|
||||
|
||||
[env]
|
||||
TERM = "xterm-256color"
|
||||
|
||||
[font]
|
||||
size = 12.0
|
||||
|
||||
[font.bold]
|
||||
family = "Source Code Pro"
|
||||
style = "Bold"
|
||||
|
||||
[font.bold_italic]
|
||||
family = "Source Code Pro"
|
||||
style = "Bold Italic"
|
||||
|
||||
[font.italic]
|
||||
family = "Source Code Pro"
|
||||
style = "Italic"
|
||||
|
||||
[font.normal]
|
||||
family = "Source Code Pro"
|
||||
style = "Regular"
|
||||
|
||||
[font.offset]
|
||||
x = 0
|
||||
y = 1
|
||||
|
||||
[[keyboard.bindings]]
|
||||
action = "Paste"
|
||||
key = "V"
|
||||
mods = "Control|Shift"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
action = "Copy"
|
||||
key = "C"
|
||||
mods = "Control|Shift"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
action = "PasteSelection"
|
||||
key = "Insert"
|
||||
mods = "Shift"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
action = "ResetFontSize"
|
||||
key = "Key0"
|
||||
mods = "Control"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
action = "IncreaseFontSize"
|
||||
key = "Equals"
|
||||
mods = "Control"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
action = "IncreaseFontSize"
|
||||
key = "Plus"
|
||||
mods = "Control"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
action = "DecreaseFontSize"
|
||||
key = "Minus"
|
||||
mods = "Control"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
action = "ToggleFullscreen"
|
||||
key = "F11"
|
||||
mods = "None"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
action = "Paste"
|
||||
key = "Paste"
|
||||
mods = "None"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
action = "Copy"
|
||||
key = "Copy"
|
||||
mods = "None"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
action = "ClearLogNotice"
|
||||
key = "L"
|
||||
mods = "Control"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
chars = "\f"
|
||||
key = "L"
|
||||
mods = "Control"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
action = "ScrollPageUp"
|
||||
key = "PageUp"
|
||||
mode = "~Alt"
|
||||
mods = "None"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
action = "ScrollPageDown"
|
||||
key = "PageDown"
|
||||
mode = "~Alt"
|
||||
mods = "None"
|
||||
|
||||
[scrolling]
|
||||
history = 5000
|
||||
|
||||
[window]
|
||||
opacity = 0.75
|
|
@ -15,15 +15,13 @@ You can extract all the source/ config files from here by running Emacs and hitt
|
|||
#+begin_src emacs-lisp :tangle config.el
|
||||
(setq user-full-name "Phil Bajsicki")
|
||||
|
||||
|
||||
(setq global-auto-revert-mode t)
|
||||
(setq auth-sources '("~/.authinfo"))
|
||||
|
||||
(after! counsel
|
||||
(setq counsel-outline-display-style 'title))
|
||||
|
||||
(setq doom-font (font-spec :family "Iosevka" :size 12 :weight 'semi-light)
|
||||
doom-variable-pitch-font (font-spec :family "Iosevka" :size 13))
|
||||
(setq doom-theme 'doom-one)
|
||||
|
||||
(setq display-line-numbers-type 'relative)
|
||||
(setq next-screen-context-lines 4)
|
||||
|
@ -31,6 +29,16 @@ You can extract all the source/ config files from here by running Emacs and hitt
|
|||
(after! persp-mode
|
||||
(setq persp-emacsclient-init-frame-behaviour-override "main"))
|
||||
(setq doom-modeline-persp-name t)
|
||||
#+end_src
|
||||
** Theming
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
(set-frame-parameter nil 'alpha-background 70)
|
||||
(add-to-list 'default-frame-alist '(alpha-background . 70))
|
||||
|
||||
(setq doom-font (font-spec :family "Iosevka" :size 12 :weight 'semi-light)
|
||||
doom-variable-pitch-font (font-spec :family "Iosevka" :size 13))
|
||||
(setq doom-theme 'doom-one)
|
||||
|
||||
#+end_src
|
||||
|
||||
** org-mode
|
||||
|
@ -47,6 +55,7 @@ Make .org file automatically open in org-mode.
|
|||
|
||||
|
||||
(setq-default org-enforce-todo-dependencies t)
|
||||
(setq org-startup-with-inline-images t)
|
||||
#+end_src
|
||||
|
||||
*** Org-contacts
|
||||
|
@ -127,11 +136,12 @@ Inserts timestamps in the proper format. ~'(16)~ stands for two universal argume
|
|||
*** Capture templates
|
||||
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
(setq org-capture-templates '(("t" "inbox" entry (file+headline "~/enc/org/phil.org" "Inbox") "* TODO %i%?")
|
||||
("i" "idea" entry (file+headline "~/enc/org/phil.org" "Ideas") "* %?")
|
||||
("d" "reminder" entry (file+headline "~/enc/org/phil.org" "Reminders") "* %i%? \n %U")
|
||||
("p" "person" entry (file+headline "~/enc/org/people.org" "People")
|
||||
"* %(org-contacts-template-name)
|
||||
(setq org-capture-templates '(
|
||||
("t" "inbox" entry (file+headline "~/enc/org/phil.org" "Inbox") "* TODO %i%?")
|
||||
("i" "idea" entry (file+headline "~/enc/org/phil.org" "Ideas") "* %?")
|
||||
("d" "reminder" entry (file+headline "~/enc/org/phil.org" "Reminders") "* %i%? \n %U")
|
||||
("p" "person" entry (file+headline "~/enc/org/people.org" "People")
|
||||
"* %(org-contacts-template-name)
|
||||
:PROPERTIES:
|
||||
:EMAIL: %(org-contacts-template-email)
|
||||
:PHONE: %(org-contacts-template-phone)
|
||||
|
@ -193,8 +203,7 @@ This lets me get desktop notifications for TODO items.
|
|||
:unnarrowed t)
|
||||
("j" "journal" plain
|
||||
"%?"
|
||||
:if-new (file+head "journal/journal-%<%Y.%m.%d.%H\:%M>-${slug}.org" "#+title: ${title}\n")
|
||||
:empty-lines 1
|
||||
:if-new (file+head "journal/journal-%<%Y.%m.%d.%H\:%M>.org" "#+title: ${title}\n")
|
||||
:unnarrowed t)
|
||||
("t" "Therapy" plain
|
||||
"
|
||||
|
@ -208,9 +217,8 @@ This lets me get desktop notifications for TODO items.
|
|||
,** Emocje alternatywne-
|
||||
,** Zachowania alternatywne
|
||||
"
|
||||
:if-new (file+head "therapy/therapy-%<%Y.%m.%d.%H\:%M>-${slug}.org" "#+title: ${title}\n")
|
||||
:empty-lines 1
|
||||
:unnarrowed)))
|
||||
:if-new (file+head "therapy/therapy-%<%Y.%m.%d.%H\:%M>.org" "#+title: ${title}\n")
|
||||
:unnarrowed))))
|
||||
#+end_src
|
||||
** org-roam-ui
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
|
@ -265,7 +273,7 @@ This lets me get desktop notifications for TODO items.
|
|||
*** Settings
|
||||
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
(setq org-agenda-files '("~/enc/org/org-agenda-files.org"))
|
||||
(setq org-agenda-files '("~/enc/org/" "~/enc/org/roam/" "~/enc/org/roam/journal" "~/enc/org/roam/therapy"))
|
||||
(setq org-agenda-start-day nil
|
||||
org-agenda-span '14
|
||||
org-agenda-dim-blocked-tasks 'invisible
|
||||
|
@ -476,7 +484,6 @@ release. You can ~unpin!~ them. Note ~(unpin! t)~ unpins all the packages and ca
|
|||
*** Org
|
||||
#+begin_src emacs-lisp :tangle packages.el
|
||||
(package! org-contacts)
|
||||
(package! org-download)
|
||||
(package! org-cliplink)
|
||||
(package! org-roam)
|
||||
(package! org-ql)
|
||||
|
@ -484,6 +491,17 @@ release. You can ~unpin!~ them. Note ~(unpin! t)~ unpins all the packages and ca
|
|||
(unpin! org-roam)
|
||||
(package! org-roam-ui)
|
||||
#+end_src
|
||||
*** org-download
|
||||
#+begin_src emacs-lisp :tangle packages.el
|
||||
(package! org-download)
|
||||
(after! org-download
|
||||
(setq org-download-method 'directory)
|
||||
(setq org-download-image-dir (concat (file-name-sans-extension (buffer-file-name)) "-img"))
|
||||
(setq org-download-image-org-width 600)
|
||||
(setq org-download-link-format "[[file:%s]]\n"
|
||||
org-download-abbreviate-filename-function #'file-relative-name)
|
||||
(setq org-download-link-format-function #'org-download-link-format-function-default))
|
||||
#+end_src
|
||||
*** Org-depend
|
||||
Ensure task dependencies are met.
|
||||
#+begin_src emacs-lisp :tangle packages.el
|
||||
|
|
|
@ -1,14 +1,12 @@
|
|||
(setq user-full-name "Phil Bajsicki")
|
||||
|
||||
|
||||
(setq global-auto-revert-mode t)
|
||||
(setq auth-sources '("~/.authinfo"))
|
||||
|
||||
(after! counsel
|
||||
(setq counsel-outline-display-style 'title))
|
||||
|
||||
(setq doom-font (font-spec :family "Iosevka" :size 12 :weight 'semi-light)
|
||||
doom-variable-pitch-font (font-spec :family "Iosevka" :size 13))
|
||||
(setq doom-theme 'doom-one)
|
||||
|
||||
(setq display-line-numbers-type 'relative)
|
||||
(setq next-screen-context-lines 4)
|
||||
|
@ -17,6 +15,13 @@
|
|||
(setq persp-emacsclient-init-frame-behaviour-override "main"))
|
||||
(setq doom-modeline-persp-name t)
|
||||
|
||||
(set-frame-parameter nil 'alpha-background 70)
|
||||
(add-to-list 'default-frame-alist '(alpha-background . 70))
|
||||
|
||||
(setq doom-font (font-spec :family "Iosevka" :size 12 :weight 'semi-light)
|
||||
doom-variable-pitch-font (font-spec :family "Iosevka" :size 13))
|
||||
(setq doom-theme 'doom-one)
|
||||
|
||||
(add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode))
|
||||
(setq org-directory "~/enc/org/")
|
||||
|
||||
|
@ -25,6 +30,7 @@
|
|||
|
||||
|
||||
(setq-default org-enforce-todo-dependencies t)
|
||||
(setq org-startup-with-inline-images t)
|
||||
|
||||
(global-set-key "\C-cl" 'org-store-link)
|
||||
(global-set-key "\C-ch" 'counsel-org-link)
|
||||
|
@ -79,11 +85,12 @@
|
|||
("FIXME" . "#cc9393")
|
||||
("XXXX*" . "#cc9393")))
|
||||
|
||||
(setq org-capture-templates '(("t" "inbox" entry (file+headline "~/enc/org/phil.org" "Inbox") "* TODO %i%?")
|
||||
("i" "idea" entry (file+headline "~/enc/org/phil.org" "Ideas") "* %?")
|
||||
("d" "reminder" entry (file+headline "~/enc/org/phil.org" "Reminders") "* %i%? \n %U")
|
||||
("p" "person" entry (file+headline "~/enc/org/people.org" "People")
|
||||
"* %(org-contacts-template-name)
|
||||
(setq org-capture-templates '(
|
||||
("t" "inbox" entry (file+headline "~/enc/org/phil.org" "Inbox") "* TODO %i%?")
|
||||
("i" "idea" entry (file+headline "~/enc/org/phil.org" "Ideas") "* %?")
|
||||
("d" "reminder" entry (file+headline "~/enc/org/phil.org" "Reminders") "* %i%? \n %U")
|
||||
("p" "person" entry (file+headline "~/enc/org/people.org" "People")
|
||||
"* %(org-contacts-template-name)
|
||||
:PROPERTIES:
|
||||
:EMAIL: %(org-contacts-template-email)
|
||||
:PHONE: %(org-contacts-template-phone)
|
||||
|
@ -128,8 +135,7 @@
|
|||
:unnarrowed t)
|
||||
("j" "journal" plain
|
||||
"%?"
|
||||
:if-new (file+head "journal/journal-%<%Y.%m.%d.%H\:%M>-${slug}.org" "#+title: ${title}\n")
|
||||
:empty-lines 1
|
||||
:if-new (file+head "journal/journal-%<%Y.%m.%d.%H\:%M>.org" "#+title: ${title}\n")
|
||||
:unnarrowed t)
|
||||
("t" "Therapy" plain
|
||||
"
|
||||
|
@ -143,9 +149,8 @@
|
|||
** Emocje alternatywne-
|
||||
** Zachowania alternatywne
|
||||
"
|
||||
:if-new (file+head "therapy/therapy-%<%Y.%m.%d.%H\:%M>-${slug}.org" "#+title: ${title}\n")
|
||||
:empty-lines 1
|
||||
:unnarrowed)))
|
||||
:if-new (file+head "therapy/therapy-%<%Y.%m.%d.%H\:%M>.org" "#+title: ${title}\n")
|
||||
:unnarrowed))))
|
||||
|
||||
(use-package! websocket
|
||||
:after org-roam)
|
||||
|
@ -187,7 +192,7 @@
|
|||
(define-key org-agenda-map "n" 'org-agenda-capture)
|
||||
(define-key org-agenda-map "a" 'org-agenda)
|
||||
|
||||
(setq org-agenda-files '("~/enc/org/org-agenda-files.org"))
|
||||
(setq org-agenda-files '("~/enc/org/" "~/enc/org/roam/" "~/enc/org/roam/journal" "~/enc/org/roam/therapy"))
|
||||
(setq org-agenda-start-day nil
|
||||
org-agenda-span '14
|
||||
org-agenda-dim-blocked-tasks 'invisible
|
||||
|
|
|
@ -15,7 +15,6 @@
|
|||
(package! ivy-xref)
|
||||
|
||||
(package! org-contacts)
|
||||
(package! org-download)
|
||||
(package! org-cliplink)
|
||||
(package! org-roam)
|
||||
(package! org-ql)
|
||||
|
@ -23,6 +22,15 @@
|
|||
(unpin! org-roam)
|
||||
(package! org-roam-ui)
|
||||
|
||||
(package! org-download)
|
||||
(after! org-download
|
||||
(setq org-download-method 'directory)
|
||||
(setq org-download-image-dir (concat (file-name-sans-extension (buffer-file-name)) "-img"))
|
||||
(setq org-download-image-org-width 600)
|
||||
(setq org-download-link-format "[[file:%s]]\n"
|
||||
org-download-abbreviate-filename-function #'file-relative-name)
|
||||
(setq org-download-link-format-function #'org-download-link-format-function-default))
|
||||
|
||||
(package! org-depend
|
||||
:recipe (
|
||||
:host github
|
||||
|
|
|
@ -247,6 +247,7 @@ myManageHook = manageSpawn <> composeAll
|
|||
, className =? "splash" --> doFloat
|
||||
, className =? "toolbar" --> doFloat
|
||||
, className =? "zoom" --> doFloat
|
||||
, className =? "lxqt-openssh-askpass" --> doFloat
|
||||
, className =? "Yad" --> doCenterFloat
|
||||
, (className =? "firefox" <&&> resource =? "Dialog") --> doFloat -- Float Firefox Dialog
|
||||
, isFullscreen --> doFullFloat
|
||||
|
@ -526,9 +527,9 @@ Notes: I use a ZSA Moonlander so a lot of the 4-5 key sequences are actually jus
|
|||
#+end_src
|
||||
*** XMonad.Prompt.OrgMode
|
||||
#+begin_src haskell
|
||||
, ("M-c i", orgPrompt def "TODO" "~/enc/org/inbox.org")
|
||||
, ("M-c l", orgPromptPrimary def "LINK" "~/enc/org/inbox.org")
|
||||
, ("M-c n", orgPrompt def "NOTE" "~/enc/org/inbox.org")
|
||||
, ("M-c i", orgPrompt def "TODO" "~/enc/org/phil.org")
|
||||
, ("M-c l", orgPromptPrimary def "LINK" "~/enc/org/phil.org")
|
||||
, ("M-c n", orgPrompt def "NOTE" "~/enc/org/phil.org")
|
||||
, ("M-c p", orgPromptRefile def "TODO" "~/enc/org/phil.org")
|
||||
#+end_src
|
||||
*** Timestamp chords
|
||||
|
|
|
@ -133,6 +133,7 @@ myManageHook = manageSpawn <> composeAll
|
|||
, className =? "splash" --> doFloat
|
||||
, className =? "toolbar" --> doFloat
|
||||
, className =? "zoom" --> doFloat
|
||||
, className =? "lxqt-openssh-askpass" --> doFloat
|
||||
, className =? "Yad" --> doCenterFloat
|
||||
, (className =? "firefox" <&&> resource =? "Dialog") --> doFloat -- Float Firefox Dialog
|
||||
, isFullscreen --> doFullFloat
|
||||
|
@ -339,9 +340,9 @@ main = do
|
|||
, ("M-<Print>", spawn "dm-maim")
|
||||
, ("<Print>", spawn "flameshot gui")
|
||||
|
||||
, ("M-c i", orgPrompt def "TODO" "~/enc/org/inbox.org")
|
||||
, ("M-c l", orgPromptPrimary def "LINK" "~/enc/org/inbox.org")
|
||||
, ("M-c n", orgPrompt def "NOTE" "~/enc/org/inbox.org")
|
||||
, ("M-c i", orgPrompt def "TODO" "~/enc/org/phil.org")
|
||||
, ("M-c l", orgPromptPrimary def "LINK" "~/enc/org/phil.org")
|
||||
, ("M-c n", orgPrompt def "NOTE" "~/enc/org/phil.org")
|
||||
, ("M-c p", orgPromptRefile def "TODO" "~/enc/org/phil.org")
|
||||
|
||||
-- Time! Timestamps!
|
||||
|
|
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,2 +1 @@
|
|||
.stow-local-ignore
|
||||
|
||||
|
|
2
.stow-local-ignore
Normal file
2
.stow-local-ignore
Normal file
|
@ -0,0 +1,2 @@
|
|||
\.git
|
||||
README.org
|
120
README.org
120
README.org
|
@ -0,0 +1,120 @@
|
|||
#+author:
|
||||
#+title:
|
||||
|
||||
* Setup :noexport:
|
||||
|
||||
* Table of Contents :toc:
|
||||
- [[#introduction][Introduction]]
|
||||
- [[#contents][Contents]]
|
||||
- [[#requirements][Requirements]]
|
||||
- [[#installation][Installation]]
|
||||
- [[#configuration][Configuration]]
|
||||
- [[#usage][Usage]]
|
||||
|
||||
* Introduction
|
||||
|
||||
This git repository is a collection of the dotfiles I use. The configuration is done in org-mode, and it's literate.
|
||||
|
||||
A lot of them are re-writes (or copies) of [[https://gitlab.com/dwt1/dotfiles/][Derek "DistroTube" Taylor's]] configs.
|
||||
|
||||
* Contents
|
||||
This repo concludes the following configurations:
|
||||
1. .bashrc and .rshrc from DistroTube
|
||||
2. .xprofile
|
||||
3. alacritty
|
||||
4. doom emacs
|
||||
5. fish
|
||||
6. xmonad
|
||||
7. xmobar
|
||||
|
||||
And the scripts to run the following from a login shell:
|
||||
1. hikari
|
||||
2. hyprland
|
||||
3. qtile
|
||||
4. sway
|
||||
|
||||
* Requirements
|
||||
|
||||
I use a number of applications and utilities in my workflow. I'm too lazy to list the ways to install everything, but here's a non-exhaustive list. If you install it, and something is missing, you will most likely get output that explains what you need to do.
|
||||
|
||||
1. git
|
||||
2. stow
|
||||
3. XMonad and XMobar
|
||||
4. xdotool
|
||||
5. Trayer
|
||||
6. Emacs
|
||||
7. dmenu
|
||||
8. rofi
|
||||
9. alacritty
|
||||
10. flameshot
|
||||
11. dunst
|
||||
12. aw-server, aw-watcher-afk, aw-watcher-window and aw-watcher-spotify
|
||||
13. gocryptfs if you're using an encrypted directory, and lxqt-openssh-askpass
|
||||
* Installation
|
||||
The installation is very simple. Note ~stow~ will not overwrite your files, so you will have to install a lot of these manually the first time.
|
||||
|
||||
First, clone the repo into a hidden directory in your \~. This makes using ~stow~ easier.
|
||||
|
||||
#+begin_src
|
||||
git clone https://git.bajsicki.com/phil/dot.git .dot
|
||||
#+end_src
|
||||
|
||||
Then run:
|
||||
|
||||
#+begin_src
|
||||
cd .dot
|
||||
stow .
|
||||
#+end_src
|
||||
|
||||
Done.
|
||||
|
||||
Note that it won't overwrite your files.
|
||||
* Configuration
|
||||
|
||||
Some of the configurations are literate. That is, you don't edit the configuration file itself, but rather the org-mode file, which you then tangle.
|
||||
|
||||
/Note/ the git repo currently includes already tangled configs. This will not be the case once I get around to making all my configs literate.
|
||||
|
||||
The process for configuring literately:
|
||||
1. Open the README.org file in your software's config directory.
|
||||
2. Edit whatever you want in the appropriate source block, or add a new one.
|
||||
3. Describe the changes you made, so you can come back years later and not be lost.
|
||||
4. Hit ~C-c C-v t~ to tangle the config file.
|
||||
|
||||
Source blocks look like this:
|
||||
#+begin_example
|
||||
#+begin_src emacs-lisp :tangle config.el
|
||||
|
||||
#+end_src
|
||||
#+end_example
|
||||
|
||||
|
||||
The way ~org-babel-tangle~ works is that it will look at the source blocks, and extract them into the file befined by the ~:tangle~ parameter.
|
||||
|
||||
In some cases, we use
|
||||
#+begin_example
|
||||
#+PROPERTY: header-args :tangle xmonad.hs
|
||||
#+end_example
|
||||
in the .org file. This applies ~:tangle xmonad.hs~ to every source block.
|
||||
|
||||
* Usage
|
||||
|
||||
I use a rather unusual workflow. Here's the set-up:
|
||||
- 3 monitors
|
||||
- ZSA Moonlander Keyboard using the [[https://github.com/Apsu/APTex][APTex keyboard layout]] from Apsu.
|
||||
- You can find [[https://configure.zsa.io/moonlander/layouts/DN9BJ/latest/0][my current layout here.]]
|
||||
- Elecom Deft trackball.
|
||||
|
||||
I use all the alphanumeric keys (except 0) for workspaces, and they're chorded.
|
||||
|
||||
These are the primary keybinds I use pretty much all the time:
|
||||
|
||||
- ~M~ is my modkey - set to Super.
|
||||
- ~M-s x~ 'shows' workspace ~x~.
|
||||
- ~M-t x~ 'throws' the current window to workspace ~x~.
|
||||
- ~M-w x~ inserts the time, depending on what ~x~ is:
|
||||
- ~l~ inserts local time.
|
||||
- ~e~ inserts EST time.
|
||||
- ~m~ inserts MDT time.
|
||||
- ~M-d~ launches ~rofi~.
|
||||
- ~M-p~ launches ~dmenu~.
|
Loading…
Reference in a new issue