diff options
26 files changed, 77 insertions, 1338 deletions
diff --git a/berkeley.tar.gz.gpg b/berkeley.tar.gz.gpg Binary files differdeleted file mode 100644 index 5428ed1..0000000 --- a/berkeley.tar.gz.gpg +++ /dev/null diff --git a/doom/.config/doom/config.el b/doom/.config/doom/config.el index 0e6c0c7..e9c9fc7 100644 --- a/doom/.config/doom/config.el +++ b/doom/.config/doom/config.el @@ -111,6 +111,11 @@ (dolist (mode '(html-mode mhtml-mode web-mode css-mode)) (setf (alist-get mode apheleia-mode-alist) 'oxfmt))) +(use-package! pinentry + :config + (pinentry-start)) +(setq epg-pinentry-mode 'loopback) + (setq auth-sources '("~/.authinfo.gpg")) (setq auth-source-cache-expiry nil) @@ -123,7 +128,7 @@ user-full-name "Magdalena Szweda") ; my name (setq mml-secure-openpgp-signers - '("3258B28C124AB0891D6C9E929B72909EEF00CBD0") + '("B9CF59FE57835F89ECB33FD417CA809770F85511") mml-secure-openpgp-sign-with-sender t) (setq message-signature-file "~/.signature") ; note no trailing slash diff --git a/doom/.config/doom/config.org b/doom/.config/doom/config.org index fc52f43..e373e3a 100644 --- a/doom/.config/doom/config.org +++ b/doom/.config/doom/config.org @@ -238,6 +238,13 @@ Here we hook the new oxfmt formatter into: ** Auth To send mail, we need to log into everything. Instead of typing out passwords every time, we use the ~~.authinfo.gpg~ file (can also be without the gpg encryption). +First we set up pinentry. +#+begin_src emacs-lisp + (use-package! pinentry + :config + (pinentry-start)) + (setq epg-pinentry-mode 'loopback) +#+end_src To read the file: #+begin_src emacs-lisp (setq auth-sources '("~/.authinfo.gpg")) @@ -271,7 +278,7 @@ Now we configure our user of gnus. While we're at it, lets point Emacs at my LibrePGP key. #+begin_src emacs-lisp (setq mml-secure-openpgp-signers - '("3258B28C124AB0891D6C9E929B72909EEF00CBD0") + '("B9CF59FE57835F89ECB33FD417CA809770F85511") mml-secure-openpgp-sign-with-sender t) #+end_src diff --git a/doom/.config/doom/packages.el b/doom/.config/doom/packages.el index dacca67..b8e5cb9 100644 --- a/doom/.config/doom/packages.el +++ b/doom/.config/doom/packages.el @@ -16,3 +16,4 @@ (package! org-modern-indent :recipe (:host github :repo "jdtsmith/org-modern-indent")) (package! nov) +(package! pinentry) diff --git a/dots.org b/dots.org deleted file mode 100644 index 2fcd355..0000000 --- a/dots.org +++ /dev/null @@ -1,1061 +0,0 @@ -#+title: Dots -My literate system configuration -* TODO Foreword -* Emacs -** UI -~How Emacs looks!~ -*** Theme -Load the directory with additional, local themes -This currently mostly loads the emacs port of the Evergarden theme (made by me!) -at [[https://codeberg.org/roughlynamed/emacs-evergarden][roughlynamed/emacs-evergarden]], also the fortune-gold theme. -The reason i use modus-vivendi instead of my evergarden port is because i dont like evergarden (dont tell the devs though!), seeing it not have an emacs port just made me sad. -I also use tango from time-to-time, thats the comment. -#+begin_src emacs-lisp -(add-to-list 'custom-theme-load-path - "~/.config/doom/extra-themes/") -(setq doom-theme 'modus-vivendi) -;; (setq doom-theme 'tango) -#+end_src - -By default, Emacs prompts 2 times when loading a theme, this is annoying so im getting rid of it. -#+begin_src emacs-lisp - (setq custom-safe-themes t) -#+end_src -*** Font -I use the completely not pirated ~Berkeley Mono~ font. I really like it. -Sometimes i will use the Commit mono font (sometimes!) -#+begin_src emacs-lisp - (setq doom-font (font-spec :family "Berkeley Mono" :size 12.0)) -#+end_src - -Line numbers! And not relative! -I dont like rln, i just dont -#+begin_src emacs-lisp - (setq display-line-numbers-type t) -#+end_src -*** Modeline - -mood-line is a nice & simple modeline for emacs! -#+begin_src emacs-lisp - (use-package! mood-line - :config - (mood-line-mode) - :custom - (mood-line-glyph-alist mood-line-glyphs-fira-code)) -#+end_src - -*** Custom window management -I didnt like how in emacs, split windows under ~SPC w s~ just stack, so i made this function to make it dynamic in a fibonnaci-like layout. -#+begin_src emacs-lisp - (defun my/split-window-dynamically () - "Split the selected window, choosing orientation by its shape." - (interactive) - (select-window - (if (> (window-total-width) (* 2 (window-total-height))) - (split-window-right) - (split-window-below)))) -#+end_src - -Map the function to override ~SPC w s~ -#+begin_src emacs-lisp - (map! :leader "w s" #'my/split-window-dynamically) -#+end_src - -*** UX ~ UI -Scroll margin - when the cursor reaches 3 lines above/below the window bottom/top, the window goes down (this happens in helix automatically, but the margin is 5) -#+begin_src emacs-lisp - (setq scroll-margin 3) -#+end_src - -*** Breadcrumb -Breadcrumb is a package that shows you where you are in a file at the very top of the window. Editing this section of this file, the breadcrumb shows: -~stow/d/.config/doom/config.org : UI~, -this is because we are in the UI section of the file. -#+begin_src emacs-lisp - (use-package! breadcrumb - :defer t - :hook - (prog-mode . breadcrumb-mode) ;; make sure its in programming modes - :config - (breadcrumb-mode 1)) -#+end_src - -*** Zen -the ~zen~ option in Doom Emacs enables ~writeroom~ mode on toggle. -~writeroom~ centers the buffer, makes it bigger and lets you type away without distractions. -By default, entering ~writeroom~ mode (which i will continue to call ~zen~ mode) changes the typeface in the buffer. -I don't like that, especially when im editing source blocks (e.g here). Let's turn it off. -#+begin_src emacs-lisp - (setq +zen-mixed-pitch-modes '()) -#+end_src -** Languages & LSP -~M-x vscode~ -*** Haskell -A custom function that runs the current Haskell file with runghc (interpreter instead of a compiler). -#+begin_src emacs-lisp - (defun my/hs-eval () - (interactive) - (let* ((src (buffer-file-name)) - (out (file-name-sans-extension src))) - (when (zerop (call-process-shell-command - (format "runghc %s" src) nil "*runghc-output*")) - (let ((buf (make-comint "hs-run" out))) - (display-buffer buf))))) -#+end_src - -Hook the function up up to f5 -#+begin_src emacs-lisp - (add-hook 'haskell-mode-hook - (lambda () - (local-set-key (kbd "<f5>") #'my/hs-eval))) -#+end_src - -*** Eglot -Eglot is, well, LSP for Emacs! -Here i hook eglot-ensure into prog-mode. -eglot-ensure makes sure that eglot is enabled and working when opening a prog-mode buffer now. -#+begin_src emacs-lisp - (use-package! eglot - :hook - (prog-mode . eglot-ensure)) -#+end_src - -I copied this block from somewhere and have no idea what it does. -#+begin_src emacs-lisp - (after! eglot - (cl-defmethod eglot-register-capability - (server (method (eql workspace/didChangeWatchedFiles)) id &key watchers) - nil) -#+end_src - - -Here we add a custom LSP for typescript and javascript mode. -Oxlint is a rewrite of ESLint in Rust, Not sure why oxlsp isnt its own tool, but oh well. -#+begin_src emacs-lisp - (add-to-list 'eglot-server-programs - '((typescript-ts-mode javascript-mode) - . ("oxlint" "--lsp")))) -#+end_src - -~eglot-sync-connect~ makes it so that eglot has to catch up and connect before a buffer can be worked on, thats why i set it to nil. -~eglot-connect-timeout~ just stops trying to connect to eglot after a minute. -#+begin_src emacs-lisp - (setq eglot-sync-connect nil - eglot-connect-timeout 60) -#+end_src - -*** Flycheck -Flycheck is a linter engine for Emacs. - -Here i define a new checker for flycheck, htmlhint (which is the linter i most enjoy using). -Then i hook it into ~web-mode~ -#+begin_src emacs-lisp - (after! flycheck - (flycheck-define-checker htmlhint - "htmlhint for flycheck" - :command ("htmlhint" "--format" "unix" source) - :error-patterns - ((error - line-start - (file-name) ":" line ":" column ": " - (message) line-end)) - :modes (web-mode)) -#+end_src - -I then add the new checker to the flycheck checkers (say that 3 times fast) -#+begin_src emacs-lisp - (add-to-list 'flycheck-checkers 'htmlhint) -#+end_src - -Here we add additional checkers to flycheck. -We add ESLint and oxlint, and then another block for html-tidy and the new htmlhint. -The reason this cant be all in one ~flycheck-add-next-checker~ block is because ~flyckech-add-next-checker~ only takes 2 variables. -#+begin_src emacs-lisp - (flycheck-add-next-checker - 'javascript-eslint - 'javascript-oxlint) -(flycheck-add-next-checker - 'html-tidy - 'htmlhint) -#+end_src - -We then make flycheck check the file after saving. -#+begin_src emacs-lisp - (setq flycheck-check-syntax-automatically - '(save mode-enabled))) -#+end_src - -*** Apheleia - -Apheleia is an easy way to format your files in Emacs. -First we hook apheleia into prog-mode. -#+begin_src emacs-lisp -(use-package! apheleia - :hook (prog-mode . apheleia-mode) -#+end_src - -We can then add a new apheleia formatter, in this case oxfmt. -(why is oxfmt its own tool but oxlsp isnt? why cant it just be ~oxlint --lsp~ and ~oxlint --format~, this is dumb) -#+begin_src emacs-lisp - :config - (setf (alist-get 'oxfmt apheleia-formatters) - '("oxfmt" "--config=.oxfmtrc.json" "--stdin-filepath" filepath)) -#+end_src - -Here we hook the new oxfmt formatter into: -+ html-mode -+ mhtml-mode -+ web-mode -+ css-mode -#+begin_src emacs-lisp - (dolist (mode '(html-mode mhtml-mode web-mode css-mode)) - (setf (alist-get mode apheleia-mode-alist) 'oxfmt))) -#+end_src - -** Email -~Emacs - prover of Zawinki's law~ -*** Auth -To send mail, we need to log into everything. -Instead of typing out passwords every time, we use the ~~.authinfo.gpg~ file (can also be without the gpg encryption). -To read the file: -#+begin_src emacs-lisp - (setq auth-sources '("~/.authinfo.gpg")) -#+end_src -Emacs automatically decrypts the file with ~epa~ and ~epg~. -To make this not expire, we set -#+begin_src emacs-lisp - (setq auth-source-cache-expiry nil) -#+end_src - -*** Gnus -Gnus is Emacs's built in Email reader, sender, news viewer and RSS reader. -But right now we're setting up the Email part. - -This makes it so that all subscribed groups are visible, no matter if theres no new messages. -#+begin_src emacs-lisp - (setq gnus-permanently-visible-groups ".") -#+end_src - -When browsing gnus, make the mode in evil standard emacs. -#+begin_src emacs-lisp - (evil-set-initial-state 'gnus-browse-mode 'emacs) -#+end_src - -Now we configure our user of gnus. -#+begin_src emacs-lisp - (setq user-mail-address "hi@roughlynamed.net" ; my email - user-full-name "Magdalena Szweda") ; my name -#+end_src - -While we're at it, lets point Emacs at my LibrePGP key. -#+begin_src emacs-lisp - (setq mml-secure-openpgp-signers - '("3258B28C124AB0891D6C9E929B72909EEF00CBD0") - mml-secure-openpgp-sign-with-sender t) -#+end_src - -We can also set up the signature via the ~.signature~ file instead of encoding it raw into the config. -#+begin_src emacs-lisp - (setq message-signature-file "~/.signature") ; note no trailing slash -#+end_src - -Now we can set up the actual mail part. -I use migadu for my email hosting, provided to me by ~@bas.sh~ -Here we set up IMAP for receiving mail. -#+begin_src emacs-lisp - (setq gnus-select-method - '(nnimap "migadu" - (nnimap-address "imap.migadu.com") - (nnimap-server-port 993) - (nnimap-stream ssl))) -#+end_src - -Once that's done, we can configure the sending (smtp) part. -#+begin_src emacs-lisp - (setq smtpmail-smtp-server "smtp.migadu.com" - smtpmail-smtp-service 465 ; port 465 - smtpmail-stream-type 'ssl - message-send-mail-function #'smtpmail-send-it - ) -#+end_src - -After that, a little bit more config for UX -#+begin_src emacs-lisp - (setq gnus-message-archive-method '(nnimap "migadu") ; use migadu for archiving email - gnus-message-archive-group "Sent") ; where to put sent mail - -(setq gnus-large-newsgroup nil - gnus-fetch-old-headers t - nnmail-expiry-target "Trash") -#+end_src - -By default, Gnus puts entries newest last, let's reverse it. -#+begin_src emacs-lisp -(setq gnus-thread-sort-functions - '((not gnus-thread-sort-by-date))) - -(setq gnus-subthread-sort-functions - '((not gnus-thread-sort-by-date))) -(setq gnus-thread-sort-most-recent-first t) -#+end_src - -What Gnus also does by default is ask to read the .newsrc file, this file is basically an auto-save, 90% of the time you want to read it. -Let's just disable the prompt on every Gnus startup. -#+begin_src emacs-lisp - (setq gnus-always-read-dribble-file nil) -#+end_src - -I like to sign my message with pgp as a way to confirm that its really me sending the email. -We can do this with the following: -#+begin_src emacs-lisp - (add-hook 'message-send-hook #'mml-secure-message-sign-pgpmime) -#+end_src -We use pgpmime to put the signature in the MIME header instead of inline PGP blocks. - -I'm not a fan of html in my emails as i find it rendering bad and being hard to navigate, so i set it to discourage html and prefer plain text emails. -#+begin_src emacs-lisp - (with-eval-after-load "mm-decode" - (add-to-list 'mm-discouraged-alternatives "text/html") - (add-to-list 'mm-discouraged-alternatives "text/richtext")) -#+end_src -** Jabber -~Jabber? I hardly know her!~ - -Excuse the bad pun, jabber.el is a way to use XMPP in Emacs. -#+begin_src emacs-lisp - (use-package! jabber - :config -#+end_src -We point jabber at my XMPP account: -#+begin_src emacs-lisp - (setq jabber-account-list - '(("roughlynamed@yax.im"))) -#+end_src -And let jabber use the modeline -#+begin_src emacs-lisp - (jabber-modeline-mode 1) -#+end_src -Now, we can hook jabber to kill itself when emacs dies. -#+begin_src emacs-lisp - :hook - (kill-emacs . jabber-disconnect)) -#+end_src -As to not rely on ~M-x~ commands, define a binding as so -#+begin_src emacs-lisp - (map! :leader - :prefix "j" - :desc "Connect" "c" #'jabber-connect-all - :desc "Disconnect" "q" #'jabber-disconnect - :desc "Dash" "f" #'jabber-roster - :desc "Reply" "r" #'jabber-chat-reply - :desc "New chat" "n" #'jabber-chat-with - :desc "Set status" "s" #'jabber-send-presence) -#+end_src - -** EMMS -~Music to my ears~ -EMMS, the Emacs MultiMedia System (but mostly its just used for music). - -Now, emms has this issue where mpd and the emms cache fall out of sync. This is a documented issue so lets make them catch up by default. -#+BEGIN_SRC emacs-lisp - (defun emms-full-resync () - "Update MPD's db, then pull it into EMMS's cache, then rebuild the browser." - (interactive) - (emms-player-mpd-update-all) - (run-with-timer 2 nil - (lambda () - (emms-cache-set-from-mpd-all) - (when (get-buffer "Browsing by: artist") - (with-current-buffer "Browsing by: artist" (revert-buffer))))) - (emms-browser)) -#+END_SRC - -Declare the package block and set up the commands. -~:commands~ in elisp is used to eagerly load functions even when a package is lazy loaded. -The following makes the commands ~emms~ and ~emms-browser~ available even before emms itself is loaded. -#+begin_src emacs-lisp - (use-package! emms - :commands (emms emms-browser emms-player-mpd-update-all emms-cache-set-from-mpd-all) -#+end_src - -Configure the mappings for EMMS -~:init~ in elisp runs the following code =before= a package is loaded. -In this case, it makes the emms mappings available right when emacs starts up. -#+begin_src emacs-lisp - :init - (map! :leader - (:prefix ("e" . "emms") - :desc "Browser" "b" #'emms-full-resync - :desc "Playlist" "m" #'emms-playlist-mode-go - :desc "Play/pause" "SPC" #'emms-pause - :desc "Next" "n" #'emms-next - :desc "Previous" "p" #'emms-previous - :desc "Stop" "s" #'emms-stop - :desc "Clear" "c" #'emms-playlist-clear)) -#+end_src - -Here we tell EMMS to use the preset configuration loader, this makes it so that i dont have to wire up a bunch of emms submodules myself. -#+begin_src emacs-lisp - :config -(require 'emms-setup) -#+end_src - -We then use ~emms-all~ to load every emms submodule. Possible variations include: -| Name | What it does | -|---------------+----------------------------------------------------------------| -| ~emms-all~ | Loads every EMMS submodule. (browser, cover art, lyrics, etc.) | -|---------------+----------------------------------------------------------------| -| ~emms-standard~ | Smaller and more curated subset of features | -|---------------+----------------------------------------------------------------| -| ~emms-minimal~ | Very barebones EMMS | - -#+begin_src emacs-lisp - (emms-all) -#+end_src - -Here we tell EMMS to use MPD instead of MPRIS. -#+begin_src emacs-lisp - (require 'emms-player-mpd) -(setq emms-player-list '(emms-player-mpd) - emms-info-functions '(emms-info-mpd) -#+end_src - - -Here we point EMMS/MPD at the default server and port for MPD -#+begin_src emacs-lisp - emms-player-mpd-server-name "localhost" -emms-player-mpd-server-port "6600" -#+end_src - -Tell EMMS where MPD's music dir lives, and where its own music dir lives. -#+begin_src emacs-lisp - emms-player-mpd-music-directory "~/Music" -emms-source-file-default-directory (expand-file-name "~/Music/") -#+end_src -Make playlists loop instead of stopping at the last track. -#+begin_src emacs-lisp - emms-repeat-playlist t -#+end_src - -Make EMMS use Doom Emacs' cache instead of its own. -#+begin_src emacs-lisp - emms-cache-file (concat doom-cache-dir "emms-cache")) -#+end_src - -Clear the playlist both on EMMS and MPD -#+begin_src emacs-lisp - (add-hook 'emms-playlist-cleared-hook #'emms-player-mpd-clear) -#+end_src - -Connect to MPD as soon as this config loads. -#+begin_src emacs-lisp - (emms-player-mpd-connect) -#+end_src - -Turn on the little [ARTIST - ALBUM - TITLE] indicator in the modeline. -#+begin_src emacs-lisp - (emms-mode-line-mode 1) -#+end_src - -Show lyrics in the buffer whenever its free -#+begin_src emacs-lisp - (emms-lyrics-toggle-display-on-minibuffer) -#+end_src - -LISTENED/LENGTH indicator in the modeline - -#+begin_src emacs-lisp - (emms-playing-time-mode 1) -#+end_src - -This makes it so that presing RET on a song in normal mode adds the tracks to the playlist and plays it. -This currently doesnt work. -#+begin_src emacs-lisp - (map! :map emms-browser-mode-map - :n "RET" #'emms-browser-add-tracks-and-play)) -#+end_src - -** Git -~LEAVE Emacs? You gotta be kidding.~ -*** Majutsu -I use the JuJutsu version control system. -I am an old user of ~magit~. Why not use magit for JJ? - -Define mappings for the already-installed ~majutsu~ -Open the main majutsu buffer. -#+begin_src emacs-lisp - (map! - :leader - :prefix "g m" - :desc "Status" "m" #'majutsu ; default majutsu buffer - :desc "Describe" "d" #'majutsu-describe ; equivalent of 'jj describe' - :desc "New" "n" #'majutsu-new ; new jj rev - :desc "Push" "p" #'majutsu-git-push) ; push to git -#+end_src - -** Org -~Protesting for Org README support.~ -Org is Emacs's version of markdown, and is what this file is written in. - -Tell org what directory to use -#+begin_src emacs-lisp - (setq org-directory "~/org/") -#+end_src -Now it's time to get to the guts; the main org config. -But first, some good 'ol self-documenting code: -#+begin_src emacs-lisp - (after! org - (setq - org-startup-folded t ; fold headers on startup - org-pretty-entities t - org-hide-emphasis-markers t - org-auto-align-tags nil - org-tags-column 0 - org-catch-invisible-edits 'show-and-error - org-agenda-tags-column 0 - org-capture-templates-contexts nil - org-insert-heading-respect-content t - org-special-ctrl-a/e t - org-return-follows-link t -#+end_src -*** Org Babel -Org babel is Org's version of code blocks. -Every code block defined above and below is made via org-babel and the following config. -#+begin_src emacs-lisp - org-confirm-babel-evaluate nil) -(org-babel-do-load-languages -'org-babel-load-languages -'((emacs-lisp . t) - (python . t) - (C . t) - (lisp . t)))) -#+end_src -*** poly-org -~poly-org~ lets you use LSP and autocompletion in org code blocks without pressing ~C-c '~ -By default, org lets you 'enter' code blocks with ~C-c '~ and have actual autocompletion/LSP features. -But, typing that every block is annoying (especially with a literate config), that's why ~poly-org~ does the same thing* as ~C-c '~, but it happens when -the cursor hovers over a block. -#+begin_src emacs-lisp - (use-package! poly-org - :hook (org-mode . poly-org-mode)) -#+end_src - -After that, we still need to add Eglot integration. -#+begin_src emacs-lisp - (add-hook 'org-src-mode-hook #'eglot-ensure) -#+end_src -*** Org UX -This makes org capturing much better. -When capturing a new org note, all windows are deleted, and the capture window is made a dedicated window. -#+begin_src emacs-lisp - (add-hook 'org-capture-mode-hook #'delete-other-windows) - (add-hook 'org-capture-mode-hook - (lambda () (set-window-dedicated-p (selected-window) nil))) -#+end_src - -*** TODO Org roam -As much as i'd love to put it under its own higher header, that would be nonsensical. -Org roam is org's way of a Zettelkasten style knowledge place. Something like obsidian, logseq or ~zk~. Another plus is everything lives in a ~SQLite~ database. - -Point org-roam at the org directory (declared seperately). -#+begin_src emacs-lisp - (after! org-roam - (setq org-roam-directory (file-truename "~/org/")) -#+end_src - -Make roam sync it's database automatically. -#+begin_src emacs-lisp - (org-roam-db-autosync-mode) -#+end_src - -This is a custom function, i made it to mimic how the ~zk~ cli works when making a new note, which is usually a random 4 character string. for example ~zqy2.md~ could be a note. -#+begin_src emacs-lisp - (defun my/org-roam-short-id () - (let ((chars "abcdefghijklmnopqrstuvwxyz0123456789")) - (apply #'string - (cl-loop repeat 4 - collect (aref chars (random (length chars))))))) - - -#+end_src - -The template for new org notes. -#+begin_src emacs-lisp - (setq org-roam-capture-templates - '(("d" "default" plain - "* %?" - :if-new -#+end_src - -Here we use the function defined above to name the captured org file -#+begin_src emacs-lisp - (file+head - (lambda () (concat (my/org-roam-short-id) ".org")) - "#+TITLE: %^{title|Untitled}\n#+FILETAGS: :%^{tags}:\n\n") ; title&tags -:unnarrowed t))) - -(cl-defmethod org-roam-node-file-stem ((node org-roam-node)) - (file-name-base (org-roam-node-file node))) - -(setq org-roam-node-display-template - (concat "${title:*} " (propertize "${file-stem}" 'face 'org-tag))) - - -#+end_src - -Define sections in roam. -#+begin_src emacs-lisp - (setq org-roam-mode-sections - '(org-roam-backlinks-section - org-roam-reflinks-section - org-roam-unlinked-references-section)) -#+end_src - -**** Link checking -Here we have custom functions, mimicking the ~zk~ cli. -This functions check if an org file has an inserted link to itself. -#+begin_src emacs-lisp - (defun my/org-roam-check-self-link () - (when-let* ((node (org-roam-node-at-point)) - (id (org-roam-node-id node))) - (save-excursion - (goto-char (point-min)) - (while (re-search-forward org-link-any-re nil t) - (when (string-match-p (regexp-quote id) (match-string 0)) - (message "Warning: self-link detected")))))) - - -#+end_src - -Check links that dont point to an actual file -#+begin_src emacs-lisp - (defun my/org-roam-check-dead-links () - (dolist (link (org-roam-db-query - [:select [dest] :from links - :where (= source $s1)] (org-roam-id-at-point))) - (unless (org-roam-db-query [:select id :from nodes :where (= id $s1)] (car link)) - (message "Error: dead link to %s" (car link))))) -#+end_src -**** Hooks -Run the defined above functions before every org file save -#+begin_src emacs-lisp - (add-hook 'before-save-hook - (lambda () - (when (org-roam-file-p) - (my/org-roam-check-self-link) - (my/org-roam-check-dead-links))) - nil t) -#+end_src -**** Maps -Define mappings -#+begin_src emacs-lisp - (map! - :leader - :prefix ("n r" . "roam") - :desc "Find node" "f" #'org-roam-node-find ; 'zk edit -i' equivalent - :desc "Insert node" "i" #'org-roam-node-insert ; link a note - :desc "Backlinks" "b" #'org-roam-buffer-toggle - :desc "Capture" "c" #'org-roam-capture ; make a new note -#+end_src -The org graph requires Graphviz and the ~dot~ executable -#+begin_src emacs-lisp - :desc "Graph" "g" #'org-roam-graph ; graph of every note -#+end_src -#+begin_src emacs-lisp - :desc "Random node" "r" #'org-roam-node-random ; random node -:desc "Open link" "o" #'org-open-at-point ; open linked note under cursor -:desc "Jump back" "O" #'org-mark-ring-goto)) ; jump back to previous note after SPC n r o - -#+end_src -*** ox-html -~ox-html~ is a way to convert org files into html. -#+begin_src emacs-lisp - (with-eval-after-load 'ox-html - (setq org-html-xml-declaration nil - org-html-doctype "html5" - org-html-html5-fancy t -#+end_src - -Dont use ox's default html style -#+begin_src emacs-lisp - org-html-head-include-default-style nil -#+end_src - -Dont postamble in generated html -#+begin_src emacs-lisp - org-html-postamble nil)) -#+end_src - -*** org-roam-ui -~org-roam-ui~ makes a Obsidian-like graph available in the browser. -It makes a pretty graph of all your notes and puts it at http://localhost:35901. - -Required websocket -#+begin_src emacs-lisp - (use-package! websocket :after org-roam) -#+end_src - -org-roam config -#+begin_src emacs-lisp - (use-package! org-roam-ui - :after org-roam - :config - (setq org-roam-ui-sync-theme t ; use emacs theme - org-roam-ui-follow t - org-roam-ui-update-on-save t ; update when a org roam file is saved - )) -#+end_src -*** org-appear -Org appear makes it so that inline code blocks (=~~=), words marked verbatim (====) and (hyper)link syntax hide when viewing the file and appear when hovered on for easy editing. -for example =[[id:xqyz][emacs]]= will become =emacs= when viewing the file, but turn into the original when the cursor is over the text. -#+begin_src emacs-lisp - (use-package! org-appear - :hook (org-mode . org-appear-mode) - :config - (setq org-appear-autoemphasis t - org-appear-autolinks t - org-appear-autosubmarkers t - org-appear-autoentities t)) -#+end_src -*** org-modern-indent -Because doom's org ~+pretty~ flag turns on org modern, and org-modern is incompatible with ~org-startup-indented~, we use the ~org-indent-modern~ package -#+begin_src emacs-lisp -(use-package! org-modern-indent - :defer t -:hook (org-mode . org-modern-indent-mode)) -#+end_src -** Eww -#+begin_quote -Eww... What browser is that girl using? -#+end_quote - -~eww~ (Emacs Web WOWser) is, well, a web browser in Emacs. -It only renders HTML and tries its best to render CSS, so javascript is out of the question (hooray!) - -~eww~ is fine on its own, but i have a config to make the experience better. -Here we define what to search with, for me this is Ecosia. -#+begin_src emacs-lisp - (setq eww-search-prefix "https://ecosia.org/search?q=") -#+end_src - -Where eww downloads files to. -#+begin_src emacs-lisp - (setq eww-download-directory (expand-file-name "~/Downloads/")) -#+end_src -*** Functions -Open a link in mpv -#+begin_src emacs-lisp - (defun my-browse-url-mpv (url &rest _args) - "Open URL in mpv." - (start-process "mpv" nil "mpv" url)) -#+end_src - -Open a url in pdf-tools -#+begin_src emacs-lisp - (defun my-browse-url-pdf (url &rest _args) - "Fetch remote PDF and open in pdf-tools within Emacs." - (let ((tmp (make-temp-file "emacs-pdf-" nil ".pdf"))) - (url-copy-file url tmp t) - (find-file-other-window tmp) - (pdf-view-mode))) -#+end_src - -Download an image and put it into ~eww-download-directory~ -#+begin_src emacs-lisp - (defun my/eww-download-image-at-point () - (interactive) - (let ((url (or (get-text-property (point) 'image-url) - (get-text-property (point) 'shr-url)))) - (if (not url) - (message "No image at point") - (let* ((filename (file-name-nondirectory (url-filename (url-generic-parse-url url)))) - (dest (expand-file-name filename eww-download-directory))) - (url-copy-file url dest t) - (message "Saved: %s" dest))))) -#+end_src - -*** Config :: Misc -Use the functions defined above when opening specific links -#+begin_src emacs-lisp - (setq browse-url-handlers - '(("\\(youtube\\.com\\|youtu\\.be\\|vimeo\\.com\\|twitch\\.tv\\)" . my-browse-url-mpv) - ("\\.mp4$" . my-browse-url-mpv) - ("\\.pdf$" . my-browse-url-pdf) - ("^gemini://" . elpher-browse-url-elpher) - ("^gopher://" . elpher-browse-url-elpher) - ("." . eww-browse-url))) - -#+end_src - -Open a url in a secondary program, in my case ~Vivaldi~ -#+begin_src emacs-lisp - (setq browse-url-secondary-browser-function 'browse-url-generic - browse-url-generic-program "vivaldi") -#+end_src - -*** UI/UX settings -#+begin_src emacs-lisp - (setq shr-width 100) -(setq shr-max-width 120) -(setq shr-indentation 4) -(setq shr-use-fonts nil) -(setq shr-max-image-size '(800 . 600)) -(setq shr-image-animate t) -#+end_src - -Let's make ~eww~ go into readable mode on page enter. -#+begin_src emacs-lisp - (add-hook 'eww-after-render-hook #'eww-readable) -#+end_src -*** Keybindings -#+begin_src emacs-lisp -(with-eval-after-load 'eww - (define-key eww-mode-map (kbd "=") #'text-scale-increase) - (define-key eww-mode-map (kbd "-") #'text-scale-decrease) - (define-key eww-mode-map (kbd "0") #'text-scale-adjust) - (define-key eww-mode-map (kbd "b") #'eww-back-url) - (define-key eww-mode-map (kbd "a") #'eww-add-bookmark) - (define-key eww-mode-map (kbd "U") #'shr-copy-url) - (define-key eww-mode-map (kbd "D") #'my/eww-download-image-at-point) - (evil-define-key 'normal eww-mode-map - "b" #'eww-back-url - "a" #'eww-add-bookmark - "U" #'shr-copy-url - "D" #'my/eww-download-image-at-point)) - -(provide 'browser) -#+end_src - -** Elpher -#+begin_quote -Elpher? I hardly know her! -#+end_quote - -Elpher is a way to use the Gemini and Gopher protocols in Emacs. -#+begin_src emacs-lisp -(use-package! elpher) -#+end_src -There's not much config needed except 1 (one) binding -#+begin_src emacs-lisp - (map! - :leader - :prefix "o g" - :desc "Elpher" "e" #'elpher - :desc "Browse Elpher" "b" #'elpher-browse-url-elpher) -#+end_src -** Packages -#+BEGIN_QUOTE -The ones that dont belong -#+END_QUOTE -These packages are (mostly) defined in ~packages.el~ and configured here. -*** TODO mosey -Mosey lets you ~Mosey down~ (get it?) to different points in a code block. -#+begin_src emacs-lisp -(use-package! mosey - :commands (mosey-forward mosey-backward - mosey-forward-bounce mosey-backward-bounce - mosey-forward-cycle mosey-backward-cycle)) -#+end_src -TODO: make this work properly and not just go to the start/end of line -**** Keybinds -Keybinds for mosey, under K because m was taken by localleader bindings -#+begin_src emacs-lisp -(map! :leader - (:prefix ("k" . "mosey") - :desc "Mosey backward" "a" #'mosey-backward-bounce - :desc "Mosey forward" "e" #'mosey-forward-bounce)) -#+end_src - -*** Woman -~woman~ is a way to view man pages straight in Emacs, without shelling out to the actual ~man~ binary, it stands for ~without man~ -Let's map this to a mnemonic binding, in this case ~Open Woman~ - -#+begin_src emacs-lisp - (map! - :leader - :prefix "o" - :desc "Woman" "w" #'woman) -#+end_src -*** Dired -~Dired~ (Directory editor) is a way to, well, edit directories (and files!) in Emacs. -This is similar to ~oil.nvim~ -These are only bindings as dired is pre-installed on Emacs. -#+begin_src emacs-lisp - (map! - :leader - :prefix "d" - :desc "Dired" "d" #'dired - :desc "Dired here" "h" #'dired-jump) -#+end_src -~dired~ prompts for the directory to open first, while ~dired-jump~ opens dired in the current directory, pretty neat. -*** eat -~eat~ (emulate a terminal) is a terminal emulator, in elisp, for emacs! -It is not available as a doom emacs module, so we declare it manually. -#+begin_src emacs-lisp - (use-package! eat - :defer t) -#+end_src - -Then we add bindings for ~eat~ as to not have to run ~M-x~ everytime. -#+begin_src emacs-lisp - (map! - :leader - :prefix "o" - :desc "Open Eat" "e" #'eat-other-window) ; dont steal the current window -#+end_src - -** Evil -~Mapping at its finest~ -EVIl mode emulates VIM bindings in Emacs. - -Remove ~evil-snipe~ as it conflicts with other bindings -#+begin_src emacs-lisp - (remove-hook 'doom-first-input-hook #'evil-snipe-mode) -#+end_src - -*** Lispy -~lispy~[fn:1] is a way to run vim motions in a S-exp aware way. -As an example , running ~D~ on -~(message "Get rid of |everything" a b (+ 1 2))~, where ~|~ is the point would ruin the S-exp, but with ~lispy~, this turns into: -~(message "Get rid of ")~ -Pretty neat, huh? -#+begin_src emacs-lisp - (use-package lispyville - :init - (general-add-hook '(emacs-lisp-mode-hook lisp-mode-hook) #'lispyville-mode) ;; lispy lisps - :config - (lispyville-set-key-theme '(operators c-w additional))) -#+end_src -*** Colemak -The biggest block for last. -This is a custom mapping i made for EVIl mode that takes the bindings from [[https://github.com/kalbasit/vim-colemak][kalbasit/vim-colemak]] and puts them into Emacs. -I plan on packaging this to [[https://melpa.org][MELPA]] soon. - -Make ~o~ go right in org mode (previously ~inserted on newline~) -#+begin_src emacs-lisp - (after! evil-org - (evil-define-key 'normal evil-org-mode-map - "o" #'evil-forward-char)) -#+end_src - -**** Main bindings -#+begin_src emacs-lisp - (evil-define-key '(normal visual operator) 'global - "n" 'evil-backward-char - "e" 'evil-next-line - "i" 'evil-previous-line - "o" 'evil-forward-char) -#+end_src -**** Motion -#+begin_src emacs-lisp - (evil-define-key '(normal visual operator) 'global - "l" 'evil-backward-word-begin - "L" 'evil-backward-WORD-begin - "u" 'evil-forward-word-end - "U" 'evil-forward-WORD-end - "y" 'evil-forward-word-begin - "Y" 'evil-forward-word-begin) - -(with-eval-after-load 'evil-ex - (define-key evil-ex-completion-map (kbd "C-l") 'left-word) - (define-key evil-ex-completion-map (kbd "C-y") 'right-word)) - - -#+end_src -**** Inserting -#+begin_src emacs-lisp - (evil-define-key 'normal 'global - "s" 'evil-insert - "S" 'evil-insert-line - "t" 'evil-append - "T" 'evil-append-line - "h" 'evil-open-below - "H" 'evil-open-above) -#+end_src -**** Changing -#+begin_src emacs-lisp - (evil-define-key '(normal visual) 'global - "w" 'evil-change - "W" 'evil-change-line) -#+end_src -**** Editing -#+begin_src emacs-lisp - (evil-define-key 'normal 'global - "x" 'evil-delete-char - "c" 'evil-yank - "v" 'evil-paste-after - "X" 'evil-delete-line - "C" 'evil-yank-line - "V" 'evil-paste-before) - -(evil-define-key 'visual 'global - "x" 'evil-delete - "c" 'evil-yank - "v" 'evil-paste-after) -#+end_src -**** TODO Undo -Doesnt work in org files -#+begin_src emacs-lisp -(evil-define-key 'normal 'global - "z" 'evil-undo - "Z" 'evil-redo) - - -#+end_src -**** Visual -#+begin_src emacs-lisp -(evil-define-key 'normal 'global - "a" 'evil-visual-char - "A" 'evil-visual-line - "ga" 'evil-visual-restore) - - -#+end_src -**** Find/Search -#+begin_src emacs-lisp -(evil-define-key '(normal visual operator) 'global - "p" 'evil-find-char-to - "P" 'evil-find-char-to-backward - "b" 'evil-repeat-find-char - "B" 'evil-repeat-find-char-reverse - "k" 'evil-search-next - "K" 'evil-search-previous) - - -#+end_src -**** Inner change -#+begin_src emacs-lisp -(with-eval-after-load 'evil - (evil-define-key '(operator visual) 'global "r" evil-inner-text-objects-map)) - -#+end_src -**** Scroll -#+begin_src emacs-lisp -(define-prefix-command 'my-colemak-fold-map) -(evil-define-key '(normal visual) 'global "j" 'my-colemak-fold-map) -(define-key my-colemak-fold-map "j" 'evil-scroll-line-to-center) -(define-key my-colemak-fold-map "n" 'evil-scroll-line-to-top) -(define-key my-colemak-fold-map "e" 'evil-scroll-line-to-bottom) - - -#+end_src -**** Lookup -#+begin_src emacs-lisp -(evil-define-key 'normal 'global - "gK" 'evil-lookup) - - -#+end_src -**** Window management -#+begin_src emacs-lisp -(map! :n "SPC w n" #'evil-window-left - :n "SPC w e" #'evil-window-down - :n "SPC w i" #'evil-window-up - :n "SPC w o" #'evil-window-right) - -#+end_src - -** Footnotes - -[fn:1] -The actual vim motion part is provided by ~lispyville~, which adds evil support into diff --git a/fish/.config/fish/conf.d/fish_frozen_key_bindings.fish b/fish/.config/fish/conf.d/fish_frozen_key_bindings.fish new file mode 100644 index 0000000..495aee9 --- /dev/null +++ b/fish/.config/fish/conf.d/fish_frozen_key_bindings.fish @@ -0,0 +1,14 @@ +# This file was created by fish when upgrading to version 4.3, to migrate +# the 'fish_key_bindings' variable from its old default scope (universal) +# to its new default scope (global). We recommend you delete this file +# and configure key bindings in ~/.config/fish/config.fish if needed. + +# set --global fish_key_bindings fish_default_key_bindings + +# Prior to version 4.3, fish shipped an event handler that runs +# `set --universal fish_key_bindings fish_default_key_bindings` +# whenever the fish_key_bindings variable is erased. +# This means that as long as any fish < 4.3 is still running on this system, +# we cannot complete the migration. +# As a workaround, erase the universal variable at every shell startup. +set --erase --universal fish_key_bindings diff --git a/fish/.config/fish/conf.d/fish_frozen_theme.fish b/fish/.config/fish/conf.d/fish_frozen_theme.fish new file mode 100644 index 0000000..5c7cef9 --- /dev/null +++ b/fish/.config/fish/conf.d/fish_frozen_theme.fish @@ -0,0 +1,37 @@ +# This file was created by fish when upgrading to version 4.3, to migrate +# theme variables from universal to global scope. +# Don't edit this file, as it will be written by the web-config tool (`fish_config`). +# To customize your theme, delete this file and see +# help interactive#syntax-highlighting +# or +# man fish-interactive | less +/^SYNTAX.HIGHLIGHTING +# for appropriate commands to add to ~/.config/fish/config.fish instead. +# See also the release notes for fish 4.3.0 (run `help relnotes`). + +set --global fish_color_autosuggestion brblack +set --global fish_color_cancel -r +set --global fish_color_command normal +set --global fish_color_comment red +set --global fish_color_cwd green +set --global fish_color_cwd_root red +set --global fish_color_end green +set --global fish_color_error brred +set --global fish_color_escape brcyan +set --global fish_color_history_current --bold +set --global fish_color_host normal +set --global fish_color_host_remote yellow +set --global fish_color_normal normal +set --global fish_color_operator brcyan +set --global fish_color_param cyan +set --global fish_color_quote yellow +set --global fish_color_redirection cyan --bold +set --global fish_color_search_match white --background=brblack +set --global fish_color_selection white --bold --background=brblack +set --global fish_color_status red +set --global fish_color_user brgreen +set --global fish_color_valid_path --underline +set --global fish_pager_color_completion normal +set --global fish_pager_color_description yellow -i +set --global fish_pager_color_prefix normal --bold --underline +set --global fish_pager_color_progress brwhite --background=cyan +set --global fish_pager_color_selected_background -r diff --git a/fish/.config/fish/config.fish b/fish/.config/fish/config.fish index aeaf391..52f94a0 100644 --- a/fish/.config/fish/config.fish +++ b/fish/.config/fish/config.fish @@ -2,13 +2,9 @@ # (The exact generated contents depend on the stinkpot module.) set -g fish_greeting "" -if status is-interactive - fortune -s | cowsay - echo -end -# Aliases + alias ll "ls -la" -alias apt nala + alias vial Vial alias sudo doas # set diff --git a/fish/.config/fish/fish_variables b/fish/.config/fish/fish_variables index b66c4a8..abef2e6 100644 --- a/fish/.config/fish/fish_variables +++ b/fish/.config/fish/fish_variables @@ -2,38 +2,10 @@ # VERSION: 3.0 SETUVAR --export DOOMDIR:/home/hi/\x2econfig/doom/ SETUVAR --export ZK_NOTEBOOK_DIR:/home/sophie/notes/ -SETUVAR __fish_initialized:3800 +SETUVAR __fish_initialized:4300 SETUVAR _fisher_jorgebucaran_2F_fisher_files:\x7e/\x2econfig/fish/functions/fisher\x2efish\x1e\x7e/\x2econfig/fish/completions/fisher\x2efish SETUVAR _fisher_jorgebucaran_2F_nvm_2E_fish_files:\x7e/\x2econfig/fish/functions/_nvm_index_update\x2efish\x1e\x7e/\x2econfig/fish/functions/_nvm_list\x2efish\x1e\x7e/\x2econfig/fish/functions/_nvm_version_activate\x2efish\x1e\x7e/\x2econfig/fish/functions/_nvm_version_deactivate\x2efish\x1e\x7e/\x2econfig/fish/functions/nvm\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/nvm\x2efish\x1e\x7e/\x2econfig/fish/completions/nvm\x2efish SETUVAR _fisher_plugins:jorgebucaran/fisher\x1ejorgebucaran/nvm\x2efish SETUVAR _fisher_upgraded_to_4_4:\x1d -SETUVAR fish_color_autosuggestion:brblack -SETUVAR fish_color_cancel:\x2dr -SETUVAR fish_color_command:normal -SETUVAR fish_color_comment:red -SETUVAR fish_color_cwd:green -SETUVAR fish_color_cwd_root:red -SETUVAR fish_color_end:green -SETUVAR fish_color_error:brred -SETUVAR fish_color_escape:brcyan -SETUVAR fish_color_history_current:\x2d\x2dbold -SETUVAR fish_color_host:normal -SETUVAR fish_color_host_remote:yellow -SETUVAR fish_color_normal:normal -SETUVAR fish_color_operator:brcyan -SETUVAR fish_color_param:cyan -SETUVAR fish_color_quote:yellow -SETUVAR fish_color_redirection:cyan\x1e\x2d\x2dbold -SETUVAR fish_color_search_match:white\x1e\x2d\x2dbackground\x3dbrblack -SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack -SETUVAR fish_color_status:red -SETUVAR fish_color_user:brgreen -SETUVAR fish_color_valid_path:\x2d\x2dunderline -SETUVAR fish_key_bindings:fish_default_key_bindings -SETUVAR fish_pager_color_completion:normal -SETUVAR fish_pager_color_description:yellow\x1e\x2di -SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline -SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan -SETUVAR fish_pager_color_selected_background:\x2dr SETUVAR --export fish_user_paths:/home/hi/\x2elocal/share\x1e/home/hi/\x2econfig/emacs/bin\x1e/home/hi/\x2elocal/bin\x1e/usr/sbin\x1e/sbin\x1e/home/hi/go/bin/\x1e/home/hi/\x2eyarn/bin SETUVAR --export nvm_default_version:26\x2e9\x2e0 diff --git a/git/.gitconfig b/git/.gitconfig index 47b482b..4a21c7c 100644 --- a/git/.gitconfig +++ b/git/.gitconfig @@ -7,7 +7,7 @@ [user] name = Zofia Szweda email = sophies@disroot.org - signingkey = 3258B28C124AB0891D6C9E929B72909EEF00CBD0 + signingkey = B9CF59FE57835F89ECB33FD417CA809770F85511 [includeIf "gitdir:~/stow/"] path = ~/.gitconfig-tangled diff --git a/gpg.asc b/gpg.asc deleted file mode 100644 index 9ddd868..0000000 --- a/gpg.asc +++ /dev/null @@ -1,29 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -mDMEao6haBYJKwYBBAHaRw8BAQdAHduoS7AzzvVrVUxH2HtlCJBkxB/K70xPJD+X -vOr7S4+0K01hZ2RhbGVuYSBTendlZGEgPHJvdWdobHluYW1lZEBkaXNyb290Lm9y -Zz6IeAQwFgoAIBYhBDJYsowSSrCJHWyekptykJ7vAMvQBQJqsAqFAh0gAAoJEJty -kJ7vAMvQXEQBAKyVhq3iVrVwQ0XnfX2E/6gUcZ0FAt4hZ5Wth3e18X+yAQCw+W2E -R0bMb+NBRKqDyDEP4APSKo2nSvmGR7U/6wCDBIiHBDAWCgAvFiEEMliyjBJKsIkd -bJ6Sm3KQnu8Ay9AFAmqwCkwRHSBzd2l0Y2hlZCBlbWFpbHMACgkQm3KQnu8Ay9AO -ZwEAyMyNu7sdsHVURDCxgBCOVewxlQvJd+QQo3rgrfckbzYA+QGeFo8DlceuLXn2 -jXvwx5cN/SUCgOWADRAYSJOMpNUAiJAEExYKADgCGwEFCwkIBwIGFQoJCAsCBBYC -AwECHgECF4AWIQQyWLKMEkqwiR1snpKbcpCe7wDL0AUCarAKXwAKCRCbcpCe7wDL -0AzwAP44TOdKIsBDw7zX7ij2AtAHf7WMzii7Z2V1NkbnhI7MIwEA4tuha65v8n7v -nDBgkbEcs0L3N4fLLJUKH2jjph7+oA60Jk1hZ2RhbGVuYSBTendlZGEgPGhpQHJv -dWdobHluYW1lZC5uZXQ+iJMEExYKADsCGwEFCwkIBwIGFQoJCAsCBBYCAwECHgEC -F4AWIQQyWLKMEkqwiR1snpKbcpCe7wDL0AUCarAKYAIZAQAKCRCbcpCe7wDL0KGH -AQClGWFgab6RwFO6+isXiMOOiLiMj6xRBboz0GLUn2Y+ggD+JwohvmmmrZ9PjbsU -GYxDrIcylknhyHIT71jb70aZ5Aq4OARqjqGKEgorBgEEAZdVAQUBAQdA0LdRGWm4 -y5XYJWPyPr8fkUiZrYdoVndS6RX4O/PgsQYDAQgHiHgEGBYKACAWIQQyWLKMEkqw -iR1snpKbcpCe7wDL0AUCao6higIbDAAKCRCbcpCe7wDL0NFeAQDhnOP/H5v+fDVY -AkAILwPPhZzhbfrFazTNv3wG9ULXjwEAsRN2IvO2HzTqyddjFrstP2Qe3k1zOZey -Iyhp0l7SqAK4MwRqjqSyFgkrBgEEAdpHDwEBB0APT+D0K0qCDJMw/N/sJtlFlSiV -zUunmnyMvj411lEjt4jvBBgWCgAgFiEEMliyjBJKsIkdbJ6Sm3KQnu8Ay9AFAmqO -pLICGwIAgQkQm3KQnu8Ay9B2IAQZFgoAHRYhBBpcLa6gyoBufPTMLEOxMamh+02r -BQJqjqSyAAoJEEOxMamh+02rVTMBAPeO/yjBNrh7kEVeHqT25/jIH0yrVQ86JeNU -UB79hlB/AP4zaA/VlJ24l+5yBtsxVoiFQcZL5o+XjEws58jdPdUACk8PAQDD/e1U -Dnblqy0ToGuqFOkz8NcazyFs5DN00q/qWIu3FwD9G7ivv3LNYfrqHECs6IyL7he4 -6GQ/4fj+5+fu1fd/tAI= -=odIE ------END PGP PUBLIC KEY BLOCK----- diff --git a/gram/.config/gram/keymap.jsonc b/gram/.config/gram/keymap.jsonc deleted file mode 100644 index 409c993..0000000 --- a/gram/.config/gram/keymap.jsonc +++ /dev/null @@ -1,110 +0,0 @@ -[ - { - "context": "vim_mode == normal || vim_mode == visual || vim_mode == operator", - "bindings": { - "n": "vim::Left", - "e": "vim::Down", - "i": "vim::Up", - "o": "vim::Right", - - "l": "vim::PreviousWordStart", - "shift-l": ["vim::PreviousWordStart", { "ignore_punctuation": true }], - "u": "vim::NextWordEnd", - "shift-u": ["vim::NextWordEnd", { "ignore_punctuation": true }], - "y": "vim::NextWordStart", - "shift-y": ["vim::NextWordStart", { "ignore_punctuation": true }], - - "p": ["vim::PushFindForward", { "before": true, "multiline": false }], - "shift-p": ["vim::PushFindBackward", { "after": true, "multiline": false }], - "b": "vim::RepeatFind", - "shift-b": "vim::RepeatFindReversed", - "k": "vim::MoveToNextMatch", - "shift-k": "vim::MoveToPreviousMatch", - - "g shift-k": "editor::Hover", - "g shift-l": "vim::WindowBottom", - - "j": null, - "j enter": ["workspace::SendKeystrokes", "z t ^"], - "j -": ["workspace::SendKeystrokes", "z b ^"], - "j t": "editor::ScrollCursorTop", - "j z": "editor::ScrollCursorCenter", - "j .": ["workspace::SendKeystrokes", "z z ^"], - "j b": "editor::ScrollCursorBottom", - "j a": "editor::ToggleFold", - "j shift-a": "editor::ToggleFoldRecursive", - "j c": "editor::Fold", - "j shift-c": "editor::FoldRecursive", - "j o": "editor::UnfoldLines", - "j shift-o": "editor::UnfoldRecursive", - "j f": "editor::FoldSelectedRanges", - "j shift-m": "editor::FoldAll", - "j shift-r": "editor::UnfoldAll", - "j l": "vim::ColumnRight", - "j h": "vim::ColumnLeft", - "j shift-l": "vim::HalfPageRight", - "j shift-h": "vim::HalfPageLeft", - }, - }, - - { - "context": "VimControl && !menu", - "bindings": { - "r": ["vim::PushObject", { "around": false }], - }, - }, - - { - "context": "vim_mode == normal", - "bindings": { - "s": "vim::InsertBefore", - "shift-s": "vim::InsertFirstNonWhitespace", - "t": "vim::InsertAfter", - "shift-t": "vim::InsertEndOfLine", - "h": "vim::InsertLineBelow", - "shift-h": "vim::InsertLineAbove", - - "w": "vim::PushChange", - "shift-w": "vim::ChangeToEndOfLine", - - "c": "vim::PushYank", - "shift-c": "vim::YankLine", - "v": "vim::Paste", - "shift-v": ["vim::Paste", { "before": true }], - "shift-x": ["workspace::SendKeystrokes", "d d"], - - "z": "vim::Undo", - "g z": "vim::UndoLastLine", - "shift-z shift-r": null, - "shift-z": "vim::Redo", - - "a": "vim::ToggleVisual", - "shift-a": "vim::ToggleVisualLine", - - "g shift-x": "vim::DeleteLeft", - }, - }, - - { - "context": "vim_mode == visual", - "bindings": { - "w": "vim::Substitute", - "shift-w": "vim::Substitute", - "x": "vim::VisualDelete", - "shift-x": "vim::VisualDelete", - "c": "vim::VisualYank", - "v": "vim::Paste", - "shift-v": ["vim::Paste", { "before": true }], - }, - }, - - { - "context": "VimControl && !menu || !Editor && !Terminal", - "bindings": { - "ctrl-w n": "workspace::ActivatePaneLeft", - "ctrl-w e": "workspace::ActivatePaneDown", - "ctrl-w i": "workspace::ActivatePaneUp", - "ctrl-w o": "workspace::ActivatePaneRight", - }, - }, -] diff --git a/gram/.config/gram/settings.jsonc b/gram/.config/gram/settings.jsonc deleted file mode 100644 index f5f2aa4..0000000 --- a/gram/.config/gram/settings.jsonc +++ /dev/null @@ -1,24 +0,0 @@ -{ - "lsp": { - "json-language-server": { - "binary": { - "enable_auto_updates": true, - "ignore_system_version": true, - "allow_binary_download": true, - }, - "enable_lsp_tasks": true, - }, - }, - "node": { - "allow_npm_install": true, - "allow_prettier_download": true, - "allow_binary_download": true, - }, - "ui_font_family": "Berkeley Mono", - "buffer_font_family": "Berkeley Mono", - "base_keymap": "Minimal", - "vim_mode": true, - "ui_font_size": 14, - "buffer_font_size": 14, - "theme": "Alabaster Dark", -} diff --git a/jj/.config/jj/config.toml b/jj/.config/jj/config.toml index 74886ea..dab20dc 100644 --- a/jj/.config/jj/config.toml +++ b/jj/.config/jj/config.toml @@ -5,7 +5,7 @@ email = "hi@roughlynamed.net" [signing] behavior = "own" backend = "gpg" -key = "3258B28C124AB0891D6C9E929B72909EEF00CBD0" +key = "B9CF59FE57835F89ECB33FD417CA809770F85511" [aliases] ba = ["b", "a"] push = ["git", "push"] diff --git a/jj/.config/jj/repos/9e33453f54e7089b84ce/metadata.binpb b/jj/.config/jj/repos/9e33453f54e7089b84ce/metadata.binpb new file mode 100644 index 0000000..d888fcd --- /dev/null +++ b/jj/.config/jj/repos/9e33453f54e7089b84ce/metadata.binpb @@ -0,0 +1,2 @@ + +/home/hi/stow/.jj/repo
\ No newline at end of file diff --git a/ncmpcpp/.config/ncmpcpp/config b/ncmpcpp/.config/ncmpcpp/config deleted file mode 100644 index e994f6b..0000000 --- a/ncmpcpp/.config/ncmpcpp/config +++ /dev/null @@ -1,14 +0,0 @@ -mpd_music_dir = ~/Music -mouse_support = yes -progressbar_look = => -autocenter_mode = yes -centered_cursor = yes -song_list_format = "{%a - }{%l - }{%n. }{%t}$R{%y}" -song_status_format = "{%a - }{%l - }{%b kbps} {%y}" -song_window_title_format = "{%t}|{%f} - {%a}" -visualizer_data_source = /tmp/mpd.fifo -visualizer_output_name = fifo -visualizer_in_stereo = yes -visualizer_type = spectrum -visualizer_look = |# -visualizer_spectrum_smooth_look = yes diff --git a/ncmpcpp/.config/ncmpcpp/error.log b/ncmpcpp/.config/ncmpcpp/error.log deleted file mode 100644 index e69de29..0000000 --- a/ncmpcpp/.config/ncmpcpp/error.log +++ /dev/null diff --git a/ncmpcpp/.config/ncmpcpp/keys b/ncmpcpp/.config/ncmpcpp/keys deleted file mode 100644 index d39a088..0000000 --- a/ncmpcpp/.config/ncmpcpp/keys +++ /dev/null @@ -1,26 +0,0 @@ -def_key "d" - delete_playlist_items - -def_key "e" - scroll_down - -def_key "i" - scroll_up - -def_key "n" - previous_screen - -def_key "o" - next_screen - -def_key "ctrl-n" - next_found_item - -def_key "ctrl-e" - add_item_to_playlist - -def_key "ctrl-o" - toggle_random - -def_key "`" - jump_to_playing_song diff --git a/signature/.signature b/signature/.signature deleted file mode 100644 index ca0609d..0000000 --- a/signature/.signature +++ /dev/null @@ -1,4 +0,0 @@ -Magdalena Szweda -https://roughlynamed.net -PGP: 3258 B28C 124A B089 1D6C 9E92 9B72 909E EF00 CBD0 -(Sent by Gnus running under GNU/Linux) diff --git a/ssh/.ssh/id_ed25519.pub b/ssh/.ssh/id_ed25519.pub index 57c39cf..ac95822 100644 --- a/ssh/.ssh/id_ed25519.pub +++ b/ssh/.ssh/id_ed25519.pub @@ -1 +1 @@ -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIqCp6zw+wtlrL1ghZheS+MNOmrI1BqVKj43bS/DIlMC hi@roughlynamed.net +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ2+UOUOLGR7duMANsIyC2P40ZMETyZA3LKzBBz2ZXkE hi@roughlynamed.net diff --git a/ssh/.ssh/id_ed25519_codeberg.pub b/ssh/.ssh/id_ed25519_codeberg.pub deleted file mode 100644 index e9a90a2..0000000 --- a/ssh/.ssh/id_ed25519_codeberg.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM8hiACR5ngtgMR4TlGsNClzhZPy7AjFYWNkgI3lcUmi hi@roughlynamed.net diff --git a/ssh/.ssh/id_ed25519_github.pub b/ssh/.ssh/id_ed25519_github.pub deleted file mode 100644 index 4102094..0000000 --- a/ssh/.ssh/id_ed25519_github.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN63u8Svciq0KB6cy0ZM6estoXXHkTA4/Jbeugg7Oh6H github diff --git a/ssh/.ssh/id_ed25519_tangled.pub b/ssh/.ssh/id_ed25519_tangled.pub index 65a3fb4..6828b36 100644 --- a/ssh/.ssh/id_ed25519_tangled.pub +++ b/ssh/.ssh/id_ed25519_tangled.pub @@ -1 +1 @@ -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIA59xzi5vO/o2hvBIC0hMGXvhzxmrfjvIIbaoVjsXCUd tangled +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEFwvd9VuIIUdsXIaFZQWlErLiGt6EUVxQvm4W2m/iHJ hi@roughlynamed.net diff --git a/sysd/.config/systemd/user/mpd-discord-rpc.service b/sysd/.config/systemd/user/mpd-discord-rpc.service deleted file mode 100644 index 6b67837..0000000 --- a/sysd/.config/systemd/user/mpd-discord-rpc.service +++ /dev/null @@ -1,13 +0,0 @@ -[Unit] -Description=MPD Discord RPC -After=mpd.service -Requires=mpd.service - -[Service] -Type=simple -Restart=on-failure -RestartSec=5 -ExecStart=%h/.cargo/bin/mpd-discord-rpc - -[Install] -WantedBy=default.target diff --git a/sysd/.config/systemd/user/mpdscribble.service b/sysd/.config/systemd/user/mpdscribble.service deleted file mode 100644 index 9bca493..0000000 --- a/sysd/.config/systemd/user/mpdscribble.service +++ /dev/null @@ -1,10 +0,0 @@ -[Unit] -Description=AudioScrobbler for MPD -After=mpd.service - -[Service] -ExecStart=/usr/bin/mpdscribble --no-daemon -Restart=on-failure - -[Install] -WantedBy=mpd.service diff --git a/xmonad/.config/xmonad/xmonad.hs b/xmonad/.config/xmonad/xmonad.hs index a306193..8d71c6f 100644 --- a/xmonad/.config/xmonad/xmonad.hs +++ b/xmonad/.config/xmonad/xmonad.hs @@ -84,7 +84,6 @@ main = startup :: X () startup = do - spawnOnce "~/.config/xmonad/autostart.sh" spawnOnce "mpd" spawn "xset m 0" @@ -103,10 +102,9 @@ myConfig = `additionalKeysP` [ ("M-<Return>", spawn myTerminal), ("M-p", spawn "j4-dmenu-desktop"), ("M-c", spawn "emacs"), - ("M-t", spawn "thunderbird"), ("M-w", spawn "vivaldi"), - ("M-e", spawn "thunar"), - ("M-s", spawn "vesktop"), + ("M-e", spawn "xfe"), + ("M-s", spawn "discord"), ("M-x", spawn "loginctl lock-session"), ("<Print>", spawn "screenshot"), ("S-<Print>", spawn "screenrecord"), |
