diff options
author | Preston Pan <preston@nullring.xyz> | 2024-01-24 19:26:59 -0800 |
---|---|---|
committer | Preston Pan <preston@nullring.xyz> | 2024-01-24 19:26:59 -0800 |
commit | a7da57c0736bec58d1fc4ec99d211099c31bb45f (patch) | |
tree | 88fededcd97c825415b8068cbe85406ce01a1aae | |
parent | 80da24887ac760a9d18936634d8d46c0643521ee (diff) |
new content
66 files changed, 5435 insertions, 512 deletions
diff --git a/LICENSE.org b/LICENSE.org index df18b21..0c2a051 100644 --- a/LICENSE.org +++ b/LICENSE.org @@ -5,7 +5,7 @@ #+date: <2023-06-11 Sun> #+language: en -Copyright © 2023 Preston Pan +Copyright © 2024 Preston Pan Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: @@ -5,20 +5,33 @@ #+language: en #+OPTIONS: broken-links:t #+date: <2023-06-26 Mon> +#+html_head: <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"> +#+html_head: <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"> +#+html_head: <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"> +#+html_head: <link rel="manifest" href="/site.webmanifest"> +#+html_head: <link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5"> +#+html_head: <meta name="msapplication-TileColor" content="#da532c"> +#+html_head: <meta name="theme-color" content="#ffffff"> * About Me -Some might know me as ret2pop, some as Preston Pan, and -others as [[https://preston.nullring.xyz][LiCoO2]]. +** whoami? +[[https://preston.nullring.xyz][Preston Pan]]. Although, that is not really important for the enjoyment of ret2pop, and +it is certainly not the focus at all. Ret2pop is a separate entity, controlled only +by the will of Francois. Ret2pop is a relentlessly curious force willing to entertain +ideas that are unconventional and unorthodox; Preston Pan is the individual that tries +to live this out and fails in a somewhat cringy manner. +Some might know me as ret2pop, some as Preston Pan, and others as LiCoO2. ** Contact Here are all the methods you should use to contact me: *** IRC - ret2pop on libera.chat - Note: I will not always be online and I don't use a bouncer on this server. Email me to coordinate a time if you really need to reach me this way. -- LiCoO2 on [[https://andrei.rm-r.org/irc][the best irc server]]. *** Email - preston@nullring.xyz - ret2pop@gmail.com +*** Amateur Radio (In case the world ends) +My callsign is ~VE7PPN~. * Professional For now, you should consult [[https://preston.nullring.xyz/about/index.html][my other website]], but I will make diff --git a/android-chrome-192x192.png b/android-chrome-192x192.png Binary files differnew file mode 100644 index 0000000..653f43d --- /dev/null +++ b/android-chrome-192x192.png diff --git a/android-chrome-512x512.png b/android-chrome-512x512.png Binary files differnew file mode 100644 index 0000000..864b240 --- /dev/null +++ b/android-chrome-512x512.png diff --git a/apple-touch-icon.png b/apple-touch-icon.png Binary files differnew file mode 100644 index 0000000..1e3ed09 --- /dev/null +++ b/apple-touch-icon.png diff --git a/browserconfig.xml b/browserconfig.xml new file mode 100644 index 0000000..b3930d0 --- /dev/null +++ b/browserconfig.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<browserconfig> + <msapplication> + <tile> + <square150x150logo src="/mstile-150x150.png"/> + <TileColor>#da532c</TileColor> + </tile> + </msapplication> +</browserconfig> diff --git a/config/doom.org b/config/doom.org index 480c4c6..5e77b70 100644 --- a/config/doom.org +++ b/config/doom.org @@ -32,84 +32,92 @@ To display the battery percentage: #+begin_src emacs-lisp :tangle yes (display-battery-mode 1) #+end_src +** Transparency +Let's make emacs transparent. +#+begin_src emacs-lisp :tangle yes +(set-frame-parameter nil 'alpha-background 90) + +(add-to-list 'default-frame-alist '(alpha-background . 90)) +#+end_src ** EXWM First we load our packages: #+begin_src emacs-lisp :tangle yes -(use-package! exwm) -(use-package! exwm-config) -(exwm-config-example) +;; (use-package! exwm) +;; (use-package! exwm-config) +;; (exwm-config-example) #+end_src Now, we set our keybindings: #+begin_src emacs-lisp :tangle yes -(setq exwm-input-global-keys - `( - ([?\s-r] . exwm-reset) - ([?\s-w] . exwm-workspace-switch) - ,@(mapcar (lambda (i) - `(,(kbd (format "s-%d" i)) . - (lambda () - (interactive) - (exwm-workspace-switch-create ,i)))) - (number-sequence 0 9)) - ([?\s-&] . (lambda (command) - (interactive (list (read-shell-command "$ "))) - (start-process-shell-command command nil command))) - - ([?\s-d] . (lambda () - (interactive) - (dired default-directory))) - - ([?\s-f] . (lambda () - (interactive) - (exwm-layout-toggle-mode-line) - (exwm-workspace-toggle-minibuffer))) - - ([?\s-b] . exwm-workspace-switch-to-buffer) - - - ([?\s-w] . (lambda () - (interactive) - (start-process "" nil "qutebrowser"))) - ([?\s-n] . (lambda () - (interactive) - (start-process "" nil "nyxt"))) - ([?\s-k] . (lambda () - (interactive) - (start-process "" nil "krita"))) - ([?\s-g] . (lambda () - (interactive) - (start-process "" nil "gimp"))) - ([?\s-b] . (lambda () - (interactive) - (start-process "" nil "blender"))) - ([?\s-c] . (lambda () - (interactive) - (start-process "" nil "chromium"))) - ([s-f2] . (lambda () - (interactive) - (start-process "" nil "/usr/bin/slock"))))) +;; (setq exwm-input-global-keys +;; `( +;; ([?\s-r] . exwm-reset) +;; ([?\s-w] . exwm-workspace-switch) +;; ,@(mapcar (lambda (i) +;; `(,(kbd (format "s-%d" i)) . +;; (lambda () +;; (interactive) +;; (exwm-workspace-switch-create ,i)))) +;; (number-sequence 0 9)) +;; ([?\s-&] . (lambda (command) +;; (interactive (list (read-shell-command "$ "))) +;; (start-process-shell-command command nil command))) + +;; ([?\s-d] . (lambda () +;; (interactive) +;; (dired default-directory))) + +;; ([?\s-f] . (lambda () +;; (interactive) +;; (exwm-layout-toggle-mode-line) +;; (exwm-workspace-toggle-minibuffer))) + +;; ([?\s-b] . exwm-workspace-switch-to-buffer) + + +;; ([?\s-w] . (lambda () +;; (interactive) +;; (start-process "" nil "qutebrowser"))) +;; ([?\s-n] . (lambda () +;; (interactive) +;; (start-process "" nil "nyxt"))) +;; ([?\s-k] . (lambda () +;; (interactive) +;; (start-process "" nil "krita"))) +;; ([?\s-g] . (lambda () +;; (interactive) +;; (start-process "" nil "gimp"))) +;; ([?\s-b] . (lambda () +;; (interactive) +;; (start-process "" nil "blender"))) +;; ([?\s-c] . (lambda () +;; (interactive) +;; (start-process "" nil "chromium"))) +;; ([s-f2] . (lambda () +;; (interactive) +;; (start-process "" nil "/usr/bin/slock"))))) #+end_src And we also need to set up our media keys: #+begin_src emacs-lisp :tangle yes -(exwm-input-set-key (kbd "<XF86AudioNext>") 'emms-next) -(exwm-input-set-key (kbd "<XF86AudioPrev>") 'emms-previous) -(exwm-input-set-key (kbd "<XF86AudioPlay>") 'emms-pause) -(exwm-input-set-key - (kbd "<XF86AudioRaiseVolume>") - (lambda () - (interactive) (start-process-shell-command - "pactl" nil "pactl set-sink-volume 0 +5% && pactl set-sink-volume 1 +5%"))) -(exwm-input-set-key - (kbd "<XF86AudioLowerVolume>") - (lambda () - (interactive) (start-process-shell-command - "pactl" nil "pactl set-sink-volume 0 -5% && pactl set-sink-volume 1 -5%"))) -(exwm-input-set-key - (kbd "<XF86AudioMute>") - (lambda () - (interactive) (start-process-shell-command - "pactl" nil "pactl set-sink-mute 0 toggle && pactl set-sink-mute 1 toggle"))) +;; (exwm-input-set-key (kbd "<XF86AudioNext>") 'emms-next) +;; (exwm-input-set-key (kbd "<XF86AudioPrev>") 'emms-previous) +;; (exwm-input-set-key (kbd "<XF86AudioPlay>") 'emms-pause) +;; (exwm-input-set-key +;; (kbd "<XF86AudioRaiseVolume>") +;; (lambda () +;; (interactive) (start-process-shell-command +;; "pactl" nil "pactl set-sink-volume 0 +5% && pactl set-sink-volume 1 +5%"))) +;; (exwm-input-set-key +;; (kbd "<XF86AudioLowerVolume>") +;; (lambda () +;; (interactive) (start-process-shell-command +;; "pactl" nil "pactl set-sink-volume 0 -5% && pactl set-sink-volume 1 -5%"))) +;; (exwm-input-set-key +;; (kbd "<XF86AudioMute>") +;; (lambda () +;; (interactive) (start-process-shell-command +;; "pactl" nil "pactl set-sink-mute 0 tog +;; gle && pactl set-sink-mute 1 toggle"))) ;; Things to implement in exwm: ;;Key([], 'XF86MonBrightnessUp', lazy.spawn("light -A 10")), ;;Key([], 'XF86MonBrightnessDown', lazy.spawn("light -U 10")), @@ -118,24 +126,26 @@ And we also need to set up our media keys: ** Font Now we configure fonts: #+begin_src emacs-lisp :tangle yes -(setq doom-font (font-spec :family "FiraCode Nerd Font" :size 14 :weight 'semi-light) - doom-variable-pitch-font (font-spec :family "Fira Sans" :size 14) - doom-unicode-font (font-spec :family "Symbola" :size 14) - doom-serif-font (font-spec :family "Fira Sans" :size 14) - doom-big-font (font-spec :family "FiraCode Nerd Font" :size 28)) +(setq doom-font (font-spec :family "Hack" :size 16 :weight 'semi-light) + doom-variable-pitch-font (font-spec :family "Fira Sans" :size 16) + doom-unicode-font (font-spec :family "Symbola" :size 16) + doom-serif-font (font-spec :family "Fira Sans" :size 16) + doom-big-font (font-spec :family "Hack" :size 28)) #+end_src ** Color Scheme I'm experimenting with many themes right now. One of these themes is the city-lights theme, another one of them is the catppuccin theme. #+begin_src emacs-lisp :tangle yes -(setq doom-theme 'doom-ayu-light) -;; (setq doom-theme 'doom-rouge) +;; (setq doom-theme 'doom-ayu-light) +(setq doom-theme 'doom-miramare) ;; (setq catppuccin-flavor 'mocha) +;; (load-theme 'catppuccin) #+end_src ** Doom Module and Programs Configuration *** Agenda Now we add these two files to our agenda search path: #+begin_src emacs-lisp :tangle yes +(require 'org-habit) (setq org-agenda-files (list "~/org/agenda.org" "~/org/contacts.org" "~/org/notes.org")) @@ -148,23 +158,29 @@ And we also want to set up org-habit to start graphing our habits as soon as pos *** IRC Set up circe to connect to my bouncer: #+begin_src emacs-lisp :tangle yes -(after! circe - (set-irc-server! "nullring.xyz" - `(:tls t - :port 4095 - :nick "LiCoO2/AndreiNet" - :user "LiCoO2/AndreiNet" - :pass ,(+pass-get-secret "ZNC")))) +;; (after! circe +;; (set-irc-server! "nullring.xyz" +;; `(:tls t +;; :port 4095 +;; :nick "LiCoO2/AndreiNet" +;; :user "LiCoO2/AndreiNet" +;; :pass ,(+pass-get-secret "ZNC")))) #+end_src And another to connect to libera: #+begin_src emacs-lisp :tangle yes -(set-irc-server! "irc.libera.chat" +(after! circe (set-irc-server! "irc.libera.chat" `(:tls t :port 6697 :nick "ret2pop" :sasl-username "ret2pop" :sasl-password (lambda (&rest _) (+pass-get-secret "libera.chat")) - :channels ("#emacs" "#rwx"))) + :channels ("#emacs" "#rwx")))) +#+end_src +#+begin_src emacs-lisp :tangle yes +(after! circe (set-irc-server! "nullring.xyz" + `(:tls t + :port 6697 + :nick "LiCoO2"))) #+end_src *** Email In order to use this configuration, you must install and configure mu and mbsync. @@ -210,6 +226,7 @@ We want the default search engine of eww to be google because duckduckgo is bad: (setq search-engine-default "google") (setq eww-search-prefix "https://google.com/search?q=") +(setq browse-url-secondary-browser-function 'browse-url-generic browse-url-generic-program "qutebrowser") (setq browse-url-browser-function 'eww-browse-url) (add-hook 'eww-mode-hook (lambda () (local-set-key (kbd "y Y") #'eww-copy-page-url))) @@ -218,11 +235,41 @@ We want the default search engine of eww to be google because duckduckgo is bad: In order to use this configuration, you must have mpd configured to use the same directory. We automatically connect to mpd. #+begin_src emacs-lisp :tangle yes +(emms-all) +(setq emms-source-file-default-directory (expand-file-name "~/music/")) (setq emms-player-mpd-music-directory "~/music/") +(setq emms-player-mpd-server-name "localhost") +(setq emms-player-mpd-server-port "6600") (setq emms-player-list '(emms-player-mpd)) -(emms-all) +(add-to-list 'emms-info-functions 'emms-info-mpd) +(add-to-list 'emms-player-list 'emms-player-mpd) (emms-player-mpd-connect) #+end_src +** Keybindings +Now we set up our keybindings for our applications: +#+begin_src emacs-lisp :tangle yes +(map! :leader + :desc "Open irc" + "i c" #'circe) +(map! :leader + :desc "Open audio manager" + "m m" #'emms) +(map! :leader + :desc "Open RSS feed reader" + "r s" #'elfeed) +(map! :leader + :desc "Open password manager" + "p w" #'ivy-pass) +(map! :leader + :desc "Open dictionary program" + "d i" #'dictionary) +(map! :leader + :desc "Open rtorrent frontend" + "r t" #'mentor) +(map! :leader + :desc "Open eww web browser" + "e w" #'eww) +#+end_src *** Journal First we set the journal to be in the website directory: #+begin_src emacs-lisp :tangle yes @@ -241,6 +288,7 @@ And then we add the headers needed to export the journal automatically: (`yearly "#+TITLE: Yearly Journal\n#+STARTUP: folded")))) (setq org-journal-file-header 'org-journal-file-header-func) +(setq org-export-with-section-numbers nil) (setq org-journal-file-format "%Y%m%d.org") #+end_src To add everything to the agenda search path, we toggle: @@ -276,13 +324,12 @@ In order to publish my website, we need to configure emacs to publish it somewhe :auto-preamble t) ("website-static" :base-directory "~/org/website" - :base-extension "css\\|js\\|png\\|jpg\\|gif\\|pdf\\|mp3\\|ogg\\|swf" + :base-extension "css\\|js\\|png\\|jpg\\|gif\\|pdf\\|mp3\\|ogg\\|swf\\|ico" :publishing-directory "~/website_html/" :recursive t :publishing-function org-publish-attachment) - ("website" :components ("website-org" "website-static")))) - - + ("website" :auto-sitemap t :components ("website-org" "website-static")))) +(setq org-html-postamble "Copyright (c) 2024 Preston Pan") #+end_src *** Contacts Now we configure org-contacts, which allows me to store contacts in an org mode file: @@ -308,31 +355,6 @@ Sometimes I want a timer to help me keep track of the time. #+begin_src emacs-lisp :tangle yes (setq org-clock-sound "~/audio/ding.wav") #+end_src -** Keybindings -Now we set up our keybindings for our applications: -#+begin_src emacs-lisp :tangle yes -(map! :leader - :desc "Open irc" - "i c" #'circe) -(map! :leader - :desc "Open audio manager" - "m m" #'emms) -(map! :leader - :desc "Open RSS feed reader" - "r s" #'elfeed) -(map! :leader - :desc "Open password manager" - "p w" #'ivy-pass) -(map! :leader - :desc "Open dictionary program" - "d i" #'dictionary) -(map! :leader - :desc "Open rtorrent frontend" - "r t" #'mentor) -(map! :leader - :desc "Open eww web browser" - "e w" #'eww) -#+end_src ** External Packages we want to include some packages that don't come with doom emacs. *** KBD-Mode @@ -393,9 +415,26 @@ We use ednc to manage notifications. #+end_src *** Mastodon #+begin_src emacs-lisp :tangle yes -(setq mastodon-instance-url "https://types.pl" - mastodon-active-user "ret2pop") +(setq mastodon-instance-url "https://types.pl") +(setq mastodon-active-user "ret2pop") +#+end_src +*** Ement +#+begin_src emacs-lisp :tangle yes +;; (ement-connect :uri-prefix "http://localhost:8009") #+end_src +*** Stem +I wrote a [[https://github.com/ret2pop/stem-mode][major mode]] for my programming language [[https://github.com/ret2pop/stem][stem]]. +#+begin_src emacs-lisp :tangle yes +(use-package stem-mode) +(add-to-list 'auto-mode-alist '("\\.stem\\'" . stem-mode)) +#+end_src +*** Tufte +Our website uses the tufte css styling and we must therefore tell emacs to generate html that is compliant with this html: +#+begin_src emacs-lisp +(use-package! ox-tufte) +(use-package! plan9-theme) +#+end_src + * packages.el Configuration These are some external packages that I use that are not provided by doom modules. #+begin_src emacs-lisp :tangle packages.el @@ -424,6 +463,8 @@ These are some external packages that I use that are not provided by doom module (package! go-translate) (package! ts) (package! chess) +(package! ox-tufte) +(package! plan9-theme) #+end_src * init.el Configuration @@ -552,7 +593,7 @@ This installs all the doom modules that we are going to be configuring: ;;gdscript ; the language you waited for (go +lsp) ;;(graphql +lsp) ; Give queries a REST - ;;(haskell +lsp) ; a language that's lazier than I am + (haskell +lsp) ; a language that's lazier than I am ;;hy ; readability of scheme w/ speed of python ;;idris ; a language you can depend on (json +lsp) @@ -584,7 +625,7 @@ This installs all the doom modules that we are going to be configuring: (scheme +guile) (sh +fish +lsp) ;;sml - ;;solidity ; do you need a blockchain? No. + solidity ; do you need a blockchain? No. ;;swift ; who asked for emoji variables? ;;terra ; Earth and Moon in alignment for performance. (web +lsp) diff --git a/config/elfeed.org b/config/elfeed.org index ca942ea..94fdbf5 100644 --- a/config/elfeed.org +++ b/config/elfeed.org @@ -18,6 +18,8 @@ Here are some interesting blogs, many of which are from substack. ** News :news: These are the news articles that I subscribe to. Some of these are politics related but I mostly just want to inform myself about technology subjects. +*** https://www.wired.com/feed/tag/ai/latest/rss +*** https://www.wired.com/feed/category/science/latest/rss *** https://feeds.washingtonpost.com/rss/politics?itid=lk_inline_manual_2 *** https://news.ycombinator.com/rss diff --git a/config/qtile.org b/config/qtile.org index 04bcb12..537bab5 100644 --- a/config/qtile.org +++ b/config/qtile.org @@ -30,7 +30,7 @@ import subprocess mod = "mod4" -terminal = guess_terminal() +terminal = "kitty" wl_import_rules = None auto_minimize = True wmname = "LG3D" @@ -38,8 +38,9 @@ wmname = "LG3D" ** Hex Colors We then load the catppuccin colors for the bar and window borders. #+begin_src python :tangle config.py -def get_colors(): - return [ +def get_colors(theme): + if theme == "city-lights": + return [ # Normal colors '#45475a', '#f38ba8', @@ -65,8 +66,33 @@ def get_colors(): # foreground '#cdd6f4', ] + elif theme == "gruvbox": + return [ + # normal colors + '#282828', + '#cc241d', + '#98971a', + '#d79921', + '#458588', + '#b16286', + '#689d6a', + '#a89984', + #bright colors + '#928374', + '#fb4934', + '#b8bb26', + '#fabd2f', + '#83a598', + '#d3869b', + '#8ec07c', + '#ebdbb2', + # background + '#282828', + # foreground + '#ebdbb2', + ] -colors = get_colors() +colors = get_colors("gruvbox") #+end_src ** Keybindings The _keys_ variable is going to be our final list of keybindings. We start by initializing it @@ -123,6 +149,7 @@ keys.extend([ Key([mod], "g", lazy.spawn("gimp"), desc="Run GIMP"), Key([mod], "t", lazy.spawn("torbrowser-launcher"), desc="Run Tor Browser"), Key([mod], "i", lazy.spawn("emacsclient --eval \"(emacs-everywhere)\""), desc="Emacs Everywhere!"), + Key([mod], "d", lazy.spawn("dmenu_run"), desc="dmenu"), ]) #+end_src *** XF86 @@ -173,7 +200,7 @@ layouts = [ # layout.Stack(num_stacks=2), # layout.Bsp(), # layout.Matrix(), - # layout.MonadTall(), + layout.MonadTall(border_focus=colors[2], border_normal=colors[0], border_width=4, margin=7), # layout.MonadWide(), # layout.RatioTile(), # layout.Tile(), @@ -195,40 +222,120 @@ widget_defaults = dict( ) extension_defaults = widget_defaults.copy() +# screens = [ +# Screen( +# top=bar.Bar( +# [ +# # widget.CurrentLayout(), +# widget.GroupBox(active=colors[6], inactive=colors[15], this_current_ |