Compare commits

...

10 commits

Author SHA1 Message Date
0e74713103
clangd 2025-08-09 16:14:55 -07:00
874ddd2dca
ocaml 2025-08-09 16:14:51 -07:00
4a4afc925d
lots of tweaks 2025-08-09 16:14:43 -07:00
d40840e22e
update README 2025-07-31 21:09:52 -07:00
560c13f7ed
switch to niri 2025-07-31 21:09:38 -07:00
86d56237ef
switch scripts over to bemenu 2025-07-31 21:09:23 -07:00
48a0efeff9
increase font size with fuzzel 2025-07-31 21:09:13 -07:00
498c0e0ca1
missed this from fish migration 2025-07-31 21:09:01 -07:00
eb5ff1f8d2
minor updates to emacs config 2025-07-31 21:08:37 -07:00
63cdd79c7d
back to fish 2025-07-31 21:08:08 -07:00
23 changed files with 568 additions and 104 deletions

View file

@ -50,29 +50,41 @@ I use a custom [[https://wayland.freedesktop.org][Wayland]] desktop built around
*** River
The first tiling window manager I used (after a brief stint with [[https://i3wm.org][i3]]) was [[https://dwm.suckless.org][dwm]], and river strikes the best balance between maturity, usability, and similarity to dwm. The tag system is strictly superior to usual workspaces in my opinion.
*** Niri
I've started messing around with [[https://github.com/YaLTeR/niri][niri]], and it is honestly incredible. I love river, but I honestly don't see myself going back any time soon. Niri is so nice on a laptop. It suits my workflow perfectly.
*** Mako
I use [[https://github.com/emersion/mako][mako]] as my notification daemon of choice. I started off on X11 using [[https://github.com/dunst-project/dunst][dunst]], but switched to mako before dunst got Wayland support, since mako's almost the same thing.
*** Swaylock/Swayidle
I use [[https://github.com/swaywm/swaylock][swaylock]] and [[https://github.com/swaywm/swayidle][swayidle]] to handle my screen locking needs. I also have a couple scripts (=timeout.sh= and =toggle_caffeine.sh= in my river config), to basically enable toggling swayidle. I usually want my computer to lock automatically if I've been idle long enough, but sometimes want to be able to turn that off.
I use [[https://github.com/swaywm/swaylock][swaylock]] and [[https://github.com/swaywm/swayidle][swayidle]] to handle my screen locking needs. I also have a couple scripts (=timeout.sh= and =toggle_caffeine.sh= in my river/niri configs), to basically enable toggling swayidle. I usually want my computer to lock automatically if I've been idle long enough, but sometimes want to be able to turn that off.
*** Fuzzel
I use [[https://codeberg.org/dnkl/fuzzel][fuzzel]] as my launcher. It's basically [[https://github.com/davatorium/rofi][rofi]] for wayland but with less baggage and better [[https://tools.suckless.org/dmenu/][dmenu]]-like functionality. I use it in several scripts in addition to it being my launcher.
*** Bemenu
I've lately been trying out [[https://github.com/Cloudef/bemenu][bemenu]], which is a fairly straightforward [[https://tools.suckless.org/dmenu/][dmenu]] implementation that works on Wayland. bemenu : dmenu :: fuzzel : rofi.
*** Wob
I use [[https://github.com/francma/wob][wob]] to show my volume and brightness when I change them. It's just a wayland version of the excellent [[https://github.com/florentc/xob][xob]].
*** Wbg
I use [[https://codeberg.org/dnkl/wbg][wbg]] as my wallpaper setter. There are a million of these, and it doesn't really matter which you pick.
*** Swaybg
I use [[https://github.com/swaywm/swaybg][swaybg]] as my wallpaper setter. There are a million of these, and it doesn't really matter which you pick.
*** Waybar
I don't really like really elaborate and fancy status bars. Whatever status bar I'm using, I like to have workspaces on the left, time and date in the middle, and volume, wifi, and battery on the right. I don't know where I picked up this habit (I think an ancient [[https://github.com/LemonBoy/bar][lemonbar]] script of mine, but I don't really remember), but it's what I'm used to now, and is very easy to emulate in [[https://github.com/Alexays/Waybar][waybar]]. I've tried [[https://codeberg.org/dnkl/yambar][yambar]], but found it very confusing to configure.
*** Keyd
As a heavy emacs/vim user, remapping caps lock to esc/control is absolutely necessary, and [[https://github.com/rvaiya/keyd][keyd]] is great for this. Note that =stow keyd= won't work properly. Instead you should copy =keyd/default.conf= to =/etc/keyd/= and enable the =keyd= service. [[https://gitlab.com/interception/linux/plugins/caps2esc][caps2esc]] is also great for this purpose, but I find keyd a little easier to use.
As a heavy emacs/vim user, remapping caps lock to esc/control is absolutely necessary, and [[https://github.com/rvaiya/keyd][keyd]] is great for this. Note that =stow keyd= won't work properly. Instead you should copy =keyd/default.conf= to =/etc/keyd/= and enable the =keyd= service. [[https://gitlab.com/interception/linux/plugins/caps2esc][caps2esc]] is also great for this purpose, but I find keyd a little easier to use. It's capable of way more than just what I use it for, and [[https://github.com/kmonad/kmonad][kmonad]] is even fancier, but keyd works great.
*** Zathura
My pdf viewer of choice is [[https://pwmt.org/projects/zathura/][zathura]], which is simply excellent. Configurable, uses vim keybindings, does exactly what I need it to out of the box and nothing more. I've tried to get into [[https://sioyek.info/][sioyek]] in the past, but never quite figured it out.
*** Pianobar
[[https://github.com/PromyLOPh/pianobar][Pianobar]] is one of the most underrated pieces of software ever. It's an absolutely phenomenal cli [[https://pandora.com][pandora]] client (that skips ads btw). As just a cli, it's phenomenal, but it's also very easy to build on top of. I'm not much of a hacker, but I was easily able to throw together some scripts to let me pause, skip songs, etc. from keybinds from river, change the station with a dmenu style menu in fuzzel, and send notifications upon song changes with the album art and everything. All with a couple tiny bash scripts. If you don't want to set this up manually, there are also several pieces of software built on top of pianobar, my favorite being [[https://pithos.github.io/][pithos]] (though [[https://github.com/agrif/pianobar.el][pianobar.el]] is also a ton of fun, it just doesn't work very well for me).
[[https://github.com/PromyLOPh/pianobar][Pianobar]] is one of the most underrated pieces of software ever. It's an absolutely phenomenal cli [[https://pandora.com][pandora]] client (that skips ads btw). As just a cli, it's phenomenal, but it's also very easy to build on top of. I'm not much of a hacker, but I was easily able to throw together some scripts to let me pause, skip songs, etc. from keybinds from river, change the station with a dmenu style menu, and send notifications upon song changes with the album art and everything. All with a couple tiny bash scripts. If you don't want to set this up manually, there are also several pieces of software built on top of pianobar, my favorite being [[https://pithos.github.io/][pithos]] (though [[https://github.com/agrif/pianobar.el][pianobar.el]] is also a ton of fun, it just doesn't work very well for me).
** Colors
I currently use [[https://github.com/catppuccin][catppuccin]] for everything. I'm getting a little tired of catppuccin, but it has the most complete list of ports of any colorscheme I've ever seen, maybe just shy of Dracula, even compared to much older staples like Nord, Gruvbox, or Solarized. Since I've already painstakingly themed everything I use with catppuccin colors, it's too late to switch now.
I do like [[https://protesilaos.com/emacs/modus-themes][modus-themes]] on emacs, and used gruvbox pretty heavily when starting out. There's no shortage of good themes.

View file

@ -104,7 +104,7 @@
:default-height 180
:bold-weight extrabold)
(t
:default-family "AdwaitaMono Nerd Font"
:default-family "Iosevka Nerd Font"
:default-weight normal
:variable-pitch-family "Adwaita Sans")))
(fontaine-set-preset 'regular))
@ -173,7 +173,7 @@
(use-package avy
:bind (("C-o" . avy-goto-char))
:custom
(avy-keys . '(?a ?r ?s ?t ?d ?h ?n ?e ?i ?o)))
(avy-keys . (?a ?r ?s ?t ?d ?h ?n ?e ?i ?o)))
#+end_src
* Completion
** Vertico
@ -318,13 +318,36 @@
#+begin_src emacs-lisp
(use-package haskell-mode)
#+end_src
** OCaml
#+begin_src emacs-lisp
(use-package tuareg
:mode (("\\.ocamlinit\\'" . tuareg-mode)))
#+end_src
** Rust
#+begin_src emacs-lisp
(use-package rust-mode
:init
(setq rust-mode-treesitter-derive t)
:hook
(rust-mode-hook . eglot-ensure))
(use-package eglot
:straight (:type built-in)
:bind (:map eglot-mode-map
("C-c C-l r" . eglot-rename)
("C-c C-l f" . eglot-format-buffer)
("C-c C-l a" . eglot-code-actions)
("C-c C-l q" . eglot-code-action-quickfix)
("C-c C-l d" . xref-find-definitions)
("C-c C-l i" . eglot-find-implementation)
("C-c C-l t" . eglot-find-type-definition)
("C-c C-l s" . xref-find-references)
("C-c C-l h" . eldoc)
("C-c C-l R" . eglot-restart-process)
("C-c C-l e" . eglot-errors-at-point))
(:map flymake-mode-map
("M-n" . flymake-goto-next-error)
("M-p" . flymake-goto-prev-error)))
#+end_src
** KDL
(For niri)
@ -427,7 +450,31 @@
I'm using the fork as described [[https://abode.karthinks.com/org-latex-preview/][here]] in order to have much better LaTeX previews. This is eventually supposed to be merged into emacs proper, which would be nice.
#+begin_src emacs-lisp
(use-package org
:straight (:type built-in)
:defer
:straight `(org
:fork (:host nil
:repo "https://git.tecosaur.net/tec/org-mode.git"
:branch "dev"
:remote "tecosaur")
:files (:defaults "etc")
:build t
:pre-build
(with-temp-file "org-version.el"
(require 'lisp-mnt)
(let ((version
(with-temp-buffer
(insert-file-contents "lisp/org.el")
(lm-header "version")))
(git-version
(string-trim
(with-temp-buffer
(call-process "git" nil t nil "rev-parse" "--short" "HEAD")
(buffer-string)))))
(insert
(format "(defun org-release () \"The release version of Org.\" %S)\n" version)
(format "(defun org-git-version () \"The truncate git commit hash of Org mode.\" %S)\n" git-version)
"(provide 'org-version)\n")))
:pin nil)
:init
(setq org-list-allow-alphabetical t)
:custom
@ -436,43 +483,35 @@ I'm using the fork as described [[https://abode.karthinks.com/org-latex-preview/
(org-startup-with-inline-images t)
(org-image-actual-width '(300))
(org-export-with-smart-quotes t)
(org-latex-preview-live t)
(org-directory "~/Nextcloud/org")
(org-cite-global-bibliography '("~/Nextcloud/library.bib"))
(org-agenda-files `(,org-directory))
(org-default-notes-file (mapcar (lambda (x) (concat org-directory x))
'("/todo.org" "/done.org")))
:after ox-latex
:config
(setq org-format-latex-options (plist-put org-format-latex-options :scale 0.6))
(require 'ox-latex)
(add-to-list 'org-latex-classes '("myreport" "\\documentclass[11pt]{report}"
("\\chapter{%s}" . "\\chapter*{%s}")
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" . "\\subsubsection*{%s}")))
(require 'org-tempo)
(add-to-list 'org-src-lang-modes '("latex-macros" . latex))
(defvar org-babel-default-header-args:latex-macros
'((:results . "raw")
(:exports . "results")))
(defun prefix-all-lines (pre body)
(with-temp-buffer
(insert body)
(string-insert-rectangle (point-min) (point-max) pre)
(buffer-string)))
(defun org-babel-execute:latex-macros (body _params)
(concat
(prefix-all-lines "#+LATEX_HEADER: " body)
"\n#+HTML_HEAD_EXTRA: <div style=\"display: none\"> \\(\n"
(prefix-all-lines "#+HTML_HEAD_EXTRA: " body)
"\n#+HTML_HEAD_EXTRA: \\)</div>\n"))
:bind (("C-c c" . org-capture)
("C-c l" . org-store-link)
("C-c a" . org-agenda))
:hook (org-mode . visual-line-mode)
(org-mode . flyspell-mode))
(org-mode . flyspell-mode)
(org-mode . org-latex-preview-auto-mode))
#+end_src
** toki pona support
#+begin_src emacs-lisp
(with-eval-after-load 'ox
(add-to-list 'org-export-dictionary
'("Footnotes" ("tok" :default "toki anpa")))
(add-to-list 'org-export-dictionary
'("Author" ("tok" :default "jan toki")))
(add-to-list 'org-export-dictionary
'("Table of Contents" ("tok" :default "ni li lon lipu ni:")))
(add-to-list 'org-export-dictionary
'("Created" ("tok" :default "mi pali e ni lon tenpo"))))
#+end_src
** Prettify
#+begin_src emacs-lisp
@ -480,18 +519,10 @@ I'm using the fork as described [[https://abode.karthinks.com/org-latex-preview/
:hook ((org-mode . org-modern-mode)
(org-agenda-finalize . org-modern-agenda)))
#+end_src
** Citeproc
#+begin_src emacs-lisp
(use-package org-ref)
(require 'oc-csl)
(require 'oc-natbib)
(require 'oc-biblatex)
#+end_src
** Org Bloggy stuff
#+begin_src emacs-lisp
(defconst my-blog-org-dir "~/Documents/test/blog/org/")
(defconst my-blog-public-dir "~/Documents/test/blog/html")
(defconst my-blog-org-dir "~/repos/blog/org/")
(defconst my-blog-public-dir "~/repos/blog/html")
(setq org-publish-project-alist
`(("my-logic-blog"
@ -506,7 +537,8 @@ I'm using the fork as described [[https://abode.karthinks.com/org-latex-preview/
:sitemap-style list
:html-head "<link rel=\"stylesheet\" href=\"/style.css\" type=\"text/css\"/>"
:html-preamble t
:html-preamble-format (("en" "<div class=\"blog-header\"><a href=\"index.html\">&larr; Back to Blog Index</a></div>"))
:html-preamble-format (("en" "<div class=\"blog-header\"><a href=\"index.html\">&larr; Back to Blog Index</a></div>")
("tok" "<div class=\"blog-header\"><a href=\"index.html\">&larr; o tawa monsi</a></div>"))
)
("my-logic-blog-static"

View file

@ -42,18 +42,20 @@ set -x MANPAGER "less -R --use-color -Dd+r -Du+b"
set -x EDITOR nvim
set -x VISUAL nvim
set -x TERM xterm-256color
set -x BROWSER firefox
set -x BROWSER librewolf
set -x MOZ_ENABLE_WAYLAND 1
set -x ELECTRON_OZONE_PLATFORM_HINT auto
set -x GDK_BACKEND wayland
set -x BEMENU_OPTS '--ignorecase --fb "#1e1e2e" --ff "#cdd6f4" --nb "#1e1e2e" --nf "#cdd6f4" --tb "#1e1e2e" --hb "#1e1e2e" --tf "#f5c2e7" --hf "#f9e2af" --af "#cdd6f4" --ab "#1e1e2e" --fn "Iosevka Nerd Font 16" --no-overlap --wrap'
set -x LESSHISTFILE -
set -x INPUTRC $HOME/.config/readline/inputrc
set -x HISTFILE $XDG_CACHE_HOME/bash/history
set -x XDG_DATA_HOME $HOME/.local/share
set -x CARGO_HOME $XDG_DATA_HOME/cargo
set -x GNUPGHOME $XDG_DATA_HOME/gnupg
# set -x GNUPGHOME $XDG_DATA_HOME/gnupg
set -x GPG_TTY (tty)
set -x STACK_XDG 1
set -x GHCUP_USE_XDG_DIRS true
@ -66,3 +68,12 @@ set -x AGDA_DIR $HOME/.config/agda
set -x PACK_DIR $HOME/.local/share/pack
set -x MIZFILES $HOME/.local/share/mizar
set -x RLWRAP_HOME $XDG_DATA_HOME/rlwrap
# BEGIN opam configuration
# This is useful if you're using opam as it adds:
# - the correct directories to the PATH
# - auto-completion for the opam binary
# This section can be safely removed at any time if needed.
test -r '/home/wball/.opam/opam-init/init.fish' && source '/home/wball/.opam/opam-init/init.fish' > /dev/null 2> /dev/null; or true
# END opam configuration

View file

@ -1,3 +1,4 @@
jorgebucaran/fisher
jethrokuan/z
patrickf1/fzf.fish
catppuccin/fish

View file

@ -10,48 +10,49 @@ SETUVAR Z_DATA:/home/wball/\x2elocal/share/z/data
SETUVAR Z_DATA_DIR:/home/wball/\x2elocal/share/z
SETUVAR Z_EXCLUDE:\x5e/home/wball\x24
SETUVAR __fish_initialized:3800
SETUVAR _fisher_catppuccin_2F_fish_files:\x7e/\x2econfig/fish/themes/Catppuccin\x20Frappe\x2etheme\x1e\x7e/\x2econfig/fish/themes/Catppuccin\x20Latte\x2etheme\x1e\x7e/\x2econfig/fish/themes/Catppuccin\x20Macchiato\x2etheme\x1e\x7e/\x2econfig/fish/themes/Catppuccin\x20Mocha\x2etheme
SETUVAR _fisher_jethrokuan_2F_z_files:\x7e/\x2econfig/fish/functions/__z\x2efish\x1e\x7e/\x2econfig/fish/functions/__z_add\x2efish\x1e\x7e/\x2econfig/fish/functions/__z_clean\x2efish\x1e\x7e/\x2econfig/fish/functions/__z_complete\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/z\x2efish
SETUVAR _fisher_jorgebucaran_2F_fisher_files:\x7e/\x2econfig/fish/functions/fisher\x2efish\x1e\x7e/\x2econfig/fish/completions/fisher\x2efish
SETUVAR _fisher_patrickf1_2F_fzf_2E_fish_files:\x7e/\x2econfig/fish/functions/_fzf_configure_bindings_help\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_extract_var_info\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_preview_changed_file\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_preview_file\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_report_diff_type\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_report_file_type\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_directory\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_git_log\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_git_status\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_history\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_processes\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_variables\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_wrapper\x2efish\x1e\x7e/\x2econfig/fish/functions/fzf_configure_bindings\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/fzf\x2efish\x1e\x7e/\x2econfig/fish/completions/fzf_configure_bindings\x2efish
SETUVAR _fisher_plugins:jorgebucaran/fisher\x1ejethrokuan/z\x1epatrickf1/fzf\x2efish
SETUVAR _fisher_plugins:jorgebucaran/fisher\x1ejethrokuan/z\x1epatrickf1/fzf\x2efish\x1ecatppuccin/fish
SETUVAR _fisher_upgraded_to_4_4:\x1d
SETUVAR fish_color_autosuggestion:8e908c
SETUVAR fish_color_cancel:\x2d\x2dreverse
SETUVAR fish_color_command:8959a8
SETUVAR fish_color_comment:eab700
SETUVAR fish_color_cwd:green
SETUVAR fish_color_autosuggestion:6c7086
SETUVAR fish_color_cancel:f38ba8
SETUVAR fish_color_command:89b4fa
SETUVAR fish_color_comment:7f849c
SETUVAR fish_color_cwd:f9e2af
SETUVAR fish_color_cwd_root:red
SETUVAR fish_color_end:8959a8
SETUVAR fish_color_error:c82829
SETUVAR fish_color_escape:00a6b2
SETUVAR fish_color_end:fab387
SETUVAR fish_color_error:f38ba8
SETUVAR fish_color_escape:eba0ac
SETUVAR fish_color_gray:6c7086
SETUVAR fish_color_history_current:\x2d\x2dbold
SETUVAR fish_color_host:normal
SETUVAR fish_color_host_remote:\x1d
SETUVAR fish_color_keyword:\x1d
SETUVAR fish_color_host:89b4fa
SETUVAR fish_color_host_remote:a6e3a1
SETUVAR fish_color_keyword:f38ba8
SETUVAR fish_color_match:\x2d\x2dbackground\x3dbrblue
SETUVAR fish_color_normal:normal
SETUVAR fish_color_operator:00a6b2
SETUVAR fish_color_option:\x1d
SETUVAR fish_color_param:4271ae
SETUVAR fish_color_quote:718c00
SETUVAR fish_color_redirection:3e999f
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_normal:cdd6f4
SETUVAR fish_color_operator:f5c2e7
SETUVAR fish_color_option:a6e3a1
SETUVAR fish_color_param:f2cdcd
SETUVAR fish_color_quote:a6e3a1
SETUVAR fish_color_redirection:f5c2e7
SETUVAR fish_color_search_match:\x2d\x2dbackground\x3d313244
SETUVAR fish_color_selection:\x2d\x2dbackground\x3d313244
SETUVAR fish_color_status:f38ba8
SETUVAR fish_color_user:brgreen
SETUVAR fish_color_user:94e2d5
SETUVAR fish_color_valid_path:\x2d\x2dunderline
SETUVAR fish_key_bindings:fish_hybrid_key_bindings
SETUVAR fish_pager_color_background:\x1d
SETUVAR fish_pager_color_completion:normal
SETUVAR fish_pager_color_description:B3A06D
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_completion:cdd6f4
SETUVAR fish_pager_color_description:6c7086
SETUVAR fish_pager_color_prefix:f5c2e7
SETUVAR fish_pager_color_progress:6c7086
SETUVAR fish_pager_color_secondary_background:\x1d
SETUVAR fish_pager_color_secondary_completion:\x1d
SETUVAR fish_pager_color_secondary_description:\x1d
SETUVAR fish_pager_color_secondary_prefix:\x1d
SETUVAR fish_pager_color_selected_background:\x2d\x2dbackground\x3dbrblack
SETUVAR fish_pager_color_selected_background:\x1d
SETUVAR fish_pager_color_selected_completion:\x1d
SETUVAR fish_pager_color_selected_description:\x1d
SETUVAR fish_pager_color_selected_prefix:\x1d

View file

@ -0,0 +1,30 @@
# name: 'Catppuccin Frappé'
# url: 'https://github.com/catppuccin/fish'
# preferred_background: 303446
fish_color_normal c6d0f5
fish_color_command 8caaee
fish_color_param eebebe
fish_color_keyword e78284
fish_color_quote a6d189
fish_color_redirection f4b8e4
fish_color_end ef9f76
fish_color_comment 838ba7
fish_color_error e78284
fish_color_gray 737994
fish_color_selection --background=414559
fish_color_search_match --background=414559
fish_color_option a6d189
fish_color_operator f4b8e4
fish_color_escape ea999c
fish_color_autosuggestion 737994
fish_color_cancel e78284
fish_color_cwd e5c890
fish_color_user 81c8be
fish_color_host 8caaee
fish_color_host_remote a6d189
fish_color_status e78284
fish_pager_color_progress 737994
fish_pager_color_prefix f4b8e4
fish_pager_color_completion c6d0f5
fish_pager_color_description 737994

View file

@ -0,0 +1,30 @@
# name: 'Catppuccin Latte'
# url: 'https://github.com/catppuccin/fish'
# preferred_background: eff1f5
fish_color_normal 4c4f69
fish_color_command 1e66f5
fish_color_param dd7878
fish_color_keyword d20f39
fish_color_quote 40a02b
fish_color_redirection ea76cb
fish_color_end fe640b
fish_color_comment 8c8fa1
fish_color_error d20f39
fish_color_gray 9ca0b0
fish_color_selection --background=ccd0da
fish_color_search_match --background=ccd0da
fish_color_option 40a02b
fish_color_operator ea76cb
fish_color_escape e64553
fish_color_autosuggestion 9ca0b0
fish_color_cancel d20f39
fish_color_cwd df8e1d
fish_color_user 179299
fish_color_host 1e66f5
fish_color_host_remote 40a02b
fish_color_status d20f39
fish_pager_color_progress 9ca0b0
fish_pager_color_prefix ea76cb
fish_pager_color_completion 4c4f69
fish_pager_color_description 9ca0b0

View file

@ -0,0 +1,30 @@
# name: 'Catppuccin Macchiato'
# url: 'https://github.com/catppuccin/fish'
# preferred_background: 24273a
fish_color_normal cad3f5
fish_color_command 8aadf4
fish_color_param f0c6c6
fish_color_keyword ed8796
fish_color_quote a6da95
fish_color_redirection f5bde6
fish_color_end f5a97f
fish_color_comment 8087a2
fish_color_error ed8796
fish_color_gray 6e738d
fish_color_selection --background=363a4f
fish_color_search_match --background=363a4f
fish_color_option a6da95
fish_color_operator f5bde6
fish_color_escape ee99a0
fish_color_autosuggestion 6e738d
fish_color_cancel ed8796
fish_color_cwd eed49f
fish_color_user 8bd5ca
fish_color_host 8aadf4
fish_color_host_remote a6da95
fish_color_status ed8796
fish_pager_color_progress 6e738d
fish_pager_color_prefix f5bde6
fish_pager_color_completion cad3f5
fish_pager_color_description 6e738d

View file

@ -0,0 +1,30 @@
# name: 'Catppuccin Mocha'
# url: 'https://github.com/catppuccin/fish'
# preferred_background: 1e1e2e
fish_color_normal cdd6f4
fish_color_command 89b4fa
fish_color_param f2cdcd
fish_color_keyword f38ba8
fish_color_quote a6e3a1
fish_color_redirection f5c2e7
fish_color_end fab387
fish_color_comment 7f849c
fish_color_error f38ba8
fish_color_gray 6c7086
fish_color_selection --background=313244
fish_color_search_match --background=313244
fish_color_option a6e3a1
fish_color_operator f5c2e7
fish_color_escape eba0ac
fish_color_autosuggestion 6c7086
fish_color_cancel f38ba8
fish_color_cwd f9e2af
fish_color_user 94e2d5
fish_color_host 89b4fa
fish_color_host_remote a6e3a1
fish_color_status f38ba8
fish_pager_color_progress 6c7086
fish_pager_color_prefix f5c2e7
fish_pager_color_completion cdd6f4
fish_pager_color_description 6c7086

View file

@ -1,4 +1,4 @@
font=Iosevka Nerd Font:size=8
font=Iosevka Nerd Font:size=10
dpi-aware=yes
width=30

View file

@ -0,0 +1,233 @@
input {
keyboard {
xkb {
layout "us,us"
variant "colemak_dh,"
}
repeat-delay 300
repeat-rate 50
numlock
}
touchpad {
tap
natural-scroll
}
focus-follows-mouse max-scroll-amount="50%"
}
hotkey-overlay {
skip-at-startup
}
cursor {
hide-when-typing
hide-after-inactive-ms 3000
}
overview {
backdrop-color "#1e1e2e"
}
output "eDP-1" {
mode "2240x1400@60.001"
scale 1.5
}
layout {
gaps 12
center-focused-column "never"
preset-column-widths {
proportion 0.33333
proportion 0.5
proportion 0.66667
}
default-column-width { proportion 0.5; }
focus-ring {
width 2
active-gradient from="#f9e2af" to="#fab387" angle=45
}
}
environment {
DISPLAY ":0"
}
spawn-at-startup "waybar"
spawn-at-startup "sh" "-c" "~/.config/niri/swayidle.sh"
spawn-at-startup "xwayland-satellite"
spawn-at-startup "sh" "-c" "swaybg -i $HOME/.config/niri/wallpaper.jpg"
spawn-at-startup "foot" "--server"
spawn-at-startup "emacs" "--daemon"
spawn-at-startup "sh" "-c" "~/.config/niri/setup_wob.sh"
prefer-no-csd
screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"
window-rule {
match app-id=r#"^org\.wezfurlong\.wezterm$"#
default-column-width {}
}
window-rule {
match app-id=r#"firefox$"# title="^Picture-in-Picture$"
open-floating true
}
window-rule {
geometry-corner-radius 8
clip-to-geometry true
}
binds {
Mod+Shift+Slash { show-hotkey-overlay; }
Mod+Return hotkey-overlay-title="Open a Terminal: foot" { spawn "footclient"; }
Mod+Shift+Return { spawn "foot"; }
// Mod+Semicolon hotkey-overlay-title="Run an Application: fuzzel" { spawn "fuzzel"; }
Mod+Semicolon hotkey-overlay-title="Run an Application: bemenu" { spawn "bemenu-run"; }
Mod+Ctrl+O hotkey-overlay-title="Lock the Screen: swaylock" { spawn "swaylock"; }
Mod+E { spawn "emacsclient" "--create-frame" "-a" "emacs"; }
XF86AudioRaiseVolume allow-when-locked=true { spawn "sh" "-c" "~/.config/niri/volume.sh up"; }
XF86AudioLowerVolume allow-when-locked=true { spawn "sh" "-c" "~/.config/niri/volume.sh down"; }
XF86AudioMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; }
XF86AudioMicMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; }
XF86MonBrightnessUp { spawn "sh" "-c" "brightnessctl set +5% | sed -En 's/.*\\(([0-9]+)%\\).*/\\1/p' > ~/.cache/wob.sock"; }
XF86MonBrightnessDown { spawn "sh" "-c" "brightnessctl set 5%- | sed -En 's/.*\\(([0-9]+)%\\).*/\\1/p' > ~/.cache/wob.sock"; }
Mod+D { spawn "makoctl" "dismiss"; }
Mod+Shift+D { spawn "makoctl" "dismiss" "--all"; }
Mod+Z { spawn "books.sh"; }
Mod+Y { spawn "papers.sh"; }
Mod+P { spawn "sh" "-c" "echo 'p' > ~/.config/pianobar/ctl"; }
Mod+N { spawn "sh" "-c" "echo 'n' > ~/.config/pianobar/ctl"; }
Mod+C { spawn "sh" "-c" "~/.config/pianobar/display_info.sh"; }
Mod+S { spawn "sh" "-c" "~/.config/pianobar/change_station.sh"; }
Mod+O repeat=false { toggle-overview; }
Mod+Shift+C { close-window; }
Mod+Ctrl+C { spawn "sh" "-c" "~/.config/niri/toggle_caffeine.sh"; }
Mod+H { focus-column-left; }
Mod+J { focus-window-or-workspace-down; }
Mod+K { focus-window-or-workspace-up; }
Mod+L { focus-column-right; }
Mod+Ctrl+H { move-column-left; }
Mod+Ctrl+J { move-window-down-or-to-workspace-down; }
Mod+Ctrl+K { move-window-up-or-to-workspace-up; }
Mod+Ctrl+L { move-column-right; }
Mod+Shift+Comma { focus-column-first; }
Mod+Shift+Period { focus-column-last; }
Mod+Shift+Ctrl+Comma { move-column-to-first; }
Mod+Shift+Ctrl+Period { move-column-to-last; }
Mod+Shift+H { focus-monitor-left; }
Mod+Shift+J { focus-monitor-down; }
Mod+Shift+K { focus-monitor-up; }
Mod+Shift+L { focus-monitor-right; }
Mod+Shift+Ctrl+H { move-column-to-monitor-left; }
Mod+Shift+Ctrl+J { move-column-to-monitor-down; }
Mod+Shift+Ctrl+K { move-column-to-monitor-up; }
Mod+Shift+Ctrl+L { move-column-to-monitor-right; }
Mod+U { focus-workspace-down; }
Mod+I { focus-workspace-up; }
Mod+Ctrl+U { move-column-to-workspace-down; }
Mod+Ctrl+I { move-column-to-workspace-up; }
Mod+Shift+U { move-workspace-down; }
Mod+Shift+I { move-workspace-up; }
Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; }
Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; }
Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; }
Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; }
Mod+WheelScrollRight { focus-column-right; }
Mod+WheelScrollLeft { focus-column-left; }
Mod+Ctrl+WheelScrollRight { move-column-right; }
Mod+Ctrl+WheelScrollLeft { move-column-left; }
Mod+Shift+WheelScrollDown { focus-column-right; }
Mod+Shift+WheelScrollUp { focus-column-left; }
Mod+Ctrl+Shift+WheelScrollDown { move-column-right; }
Mod+Ctrl+Shift+WheelScrollUp { move-column-left; }
Mod+TouchpadScrollDown { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02+"; }
Mod+TouchpadScrollUp { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02-"; }
Mod+1 { focus-workspace 1; }
Mod+2 { focus-workspace 2; }
Mod+3 { focus-workspace 3; }
Mod+4 { focus-workspace 4; }
Mod+5 { focus-workspace 5; }
Mod+6 { focus-workspace 6; }
Mod+7 { focus-workspace 7; }
Mod+8 { focus-workspace 8; }
Mod+9 { focus-workspace 9; }
Mod+Ctrl+1 { move-column-to-workspace 1; }
Mod+Ctrl+2 { move-column-to-workspace 2; }
Mod+Ctrl+3 { move-column-to-workspace 3; }
Mod+Ctrl+4 { move-column-to-workspace 4; }
Mod+Ctrl+5 { move-column-to-workspace 5; }
Mod+Ctrl+6 { move-column-to-workspace 6; }
Mod+Ctrl+7 { move-column-to-workspace 7; }
Mod+Ctrl+8 { move-column-to-workspace 8; }
Mod+Ctrl+9 { move-column-to-workspace 9; }
Mod+Tab { focus-workspace-previous; }
Mod+BracketLeft { consume-or-expel-window-left; }
Mod+BracketRight { consume-or-expel-window-right; }
Mod+Comma { consume-window-into-column; }
Mod+Period { expel-window-from-column; }
Mod+R { switch-preset-column-width; }
Mod+Shift+R { switch-preset-window-height; }
Mod+Ctrl+R { reset-window-height; }
Mod+F { maximize-column; }
Mod+Shift+F { fullscreen-window; }
Mod+Ctrl+F { expand-column-to-available-width; }
Mod+Minus { set-column-width "-10%"; }
Mod+Equal { set-column-width "+10%"; }
Mod+Shift+Minus { set-window-height "-10%"; }
Mod+Shift+Equal { set-window-height "+10%"; }
Mod+V { toggle-window-floating; }
Mod+Shift+V { switch-focus-between-floating-and-tiling; }
Mod+W { toggle-column-tabbed-display; }
Mod+Space { switch-layout "next"; }
Mod+Shift+Space { switch-layout "prev"; }
Print { screenshot; }
Ctrl+Print { screenshot-screen; }
Alt+Print { screenshot-window; }
Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; }
Mod+Shift+Q { quit; }
Ctrl+Alt+Delete { quit; }
Mod+Shift+P { power-off-monitors; }
}

3
niri/.config/niri/setup_wob.sh Executable file
View file

@ -0,0 +1,3 @@
#!/bin/sh
rm -f ~/.cache/wob.sock && mkfifo ~/.cache/wob.sock && tail -f ~/.cache/wob.sock | wob &

7
niri/.config/niri/swayidle.sh Executable file
View file

@ -0,0 +1,7 @@
#!/bin/sh
killall swayidle
swayidle -w \
timeout 300 '~/.config/niri/timeout.sh' \
before-sleep 'swaylock -f -c 000000'

15
niri/.config/niri/timeout.sh Executable file
View file

@ -0,0 +1,15 @@
#!/bin/sh
caffeine_file=$HOME/.cache/idle
if [[ ! -f $caffeine_file ]] then
echo 0 > $caffeine_file
fi
caffeine=$(<$HOME/.cache/idle)
if [[ $caffeine -eq 0 ]] then
swaylock -f -c 000000
else
notify-send 'Caffeine' 'Not sleeping'
fi

View file

@ -0,0 +1,17 @@
#!/bin/sh
caffeine_file=$HOME/.cache/idle
if [[ ! -f $caffeine_file ]] then
echo 0 > $caffeine_file
fi
caffeine=$(<$HOME/.cache/idle)
if [[ $caffeine -eq 0 ]] then
echo 1 > $caffeine_file
notify-send 'Caffeine' 'Caffeine Enabled'
else
echo 0 > $caffeine_file
notify-send 'Caffeine' 'Caffeine Disabled'
fi

9
niri/.config/niri/volume.sh Executable file
View file

@ -0,0 +1,9 @@
#!/bin/sh
if [ $1 = "up" ]; then
wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02+
else
wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02-
fi
wpctl get-volume @DEFAULT_AUDIO_SINK@ | sed 's/Volume: 0.//' > ~/.cache/wob.sock

Binary file not shown.

After

Width:  |  Height:  |  Size: 695 KiB

View file

@ -26,6 +26,10 @@ return {
end
})
lspconfig.clangd.setup({
capabilities = capabilities
})
vim.api.nvim_create_autocmd('LspAttach', {
group = vim.api.nvim_create_augroup('UserLspConfig', {}),
callback = function(ev)

View file

@ -1,6 +1,7 @@
#!/bin/bash
dmenu="bemenu -p station --center --list 20 down --width-factor 0.5 --border 2 --bdr #f6c2e7"
# dmenu="fuzzel -p station -d -w 60"
choice=$(cat "$HOME/.config/pianobar/info" | grep "station[0-9]" | cut -d "=" -f 2 | $dmenu)
[ -z "$choice" ] || echo "s$(cat "$HOME/.config/pianobar/info" | grep "$choice" | cut -d "=" -f 1 | sed "s/station//")" > "$HOME/.config/pianobar/ctl"

View file

@ -1,10 +1,11 @@
#!/bin/sh
prefix=$HOME/Nextcloud/Books/
dmenu="pipemenu --title Books"
# dmenu="bemenu -p books --center --list 20 down --width-factor 0.5 --border 2 --bdr #f6c2e7"
# pdf=zathura
pdf="flatpak run org.gnome.Papers"
# dmenu="pipemenu --title Books"
# dmenu="fuzzel -d -p books -w 80"
dmenu="bemenu -p books --center --list 20 down --width-factor 0.5 --border 2 --bdr #f6c2e7"
pdf=zathura
# pdf="flatpak run org.gnome.Papers"
choice=$(find $prefix -type f | sed "s|$prefix||;s/_/ /g" | $dmenu)

View file

@ -1,10 +1,11 @@
#!/bin/sh
prefix=$HOME/Nextcloud/Papers/
dmenu="pipemenu --title Papers"
# dmenu="bemenu -p papers --center --list 20 down --width-factor 0.5 --border 2 --bdr #f6c2e7"
# pdf=zathura
pdf="flatpak run org.gnome.Papers"
# dmenu="pipemenu --title Books"
# dmenu="fuzzel -d -p books -w 80"
dmenu="bemenu -p papers --center --list 20 down --width-factor 0.5 --border 2 --bdr #f6c2e7"
pdf=zathura
# pdf="flatpak run org.gnome.Papers"
choice=$(find $prefix -type f | sed "s|$prefix||;s/_/ /g" | $dmenu)

View file

@ -6,7 +6,7 @@
"height" : 36,
"modules-left": [
"river/tags",
"niri/workspaces",
],
"modules-center": [
"clock",
@ -87,5 +87,13 @@
"tray": {
"icon-size": 20
},
"niri/workspaces": {
"format": "{icon}",
"format-icons": {
"active": "",
"default": ""
}
}
}

View file

@ -11,6 +11,14 @@ window#waybar {
color: @text;
}
#workspaces button {
color: @text;
}
#workspaces button.focused {
color: @pink;
}
#clock,
#pulseaudio,
#battery,
@ -22,26 +30,6 @@ window#waybar {
color: @yellow;
}
#tags button {
padding: 0 8px;
color: @text;
}
#tags button.focused {
color: @base;
background: @pink;
}
#tags button.occupied {
color: @text;
background: @surface1;
}
#tags button.occupied.focused {
color: @base;
background: @pink;
}
#pulseaudio {
color: @red;
}