Move to gnu stow
This commit is contained in:
parent
cd08a447a8
commit
9ea93f8144
120 changed files with 994 additions and 53 deletions
74
misc/dot-config/X11/xinitrc
Normal file
74
misc/dot-config/X11/xinitrc
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
#!/bin/sh
|
||||
|
||||
userresources=$HOME/.Xresources
|
||||
usermodmap=$HOME/.Xmodmap
|
||||
sysresources=/etc/X11/xinit/.Xresources
|
||||
sysmodmap=/etc/X11/xinit/.Xmodmap
|
||||
|
||||
# merge in defaults and keymaps
|
||||
|
||||
if [ -f $sysresources ]; then
|
||||
xrdb -merge $sysresources
|
||||
fi
|
||||
|
||||
if [ -f $sysmodmap ]; then
|
||||
xmodmap $sysmodmap
|
||||
fi
|
||||
|
||||
if [ -f "$userresources" ]; then
|
||||
xrdb -merge "$userresources"
|
||||
fi
|
||||
|
||||
if [ -f "$usermodmap" ]; then
|
||||
xmodmap "$usermodmap"
|
||||
fi
|
||||
|
||||
# start some nice programs
|
||||
|
||||
if [ -d /etc/X11/xinit/xinitrc.d ] ; then
|
||||
for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
|
||||
[ -x "$f" ] && . "$f"
|
||||
done
|
||||
unset f
|
||||
fi
|
||||
|
||||
#NixOS does not setup the user's D-Bus Daemon, so doing it explicitly here
|
||||
if [ -z "$DBUS_SESSION_BUS_ADDRESS" ]; then
|
||||
eval $(dbus-launch --exit-with-session --sh-syntax)
|
||||
fi
|
||||
syustemctl --user import-environment DISPLAY XAUTHORITY
|
||||
if command -v dbus-update-activation-environment >/dev/null 2>&1; then
|
||||
dbus-update-activation-environment DISPLAY XAUTHORITY
|
||||
fi
|
||||
|
||||
# Setting any of these parameters causes issues when trying to use xrandr
|
||||
# while on offload mode. Specifically, the prover named NVIDIA-G0 sets up
|
||||
# the system to expect reverse-sync mode. Using --auto also does the same
|
||||
# for some reason. Basically any of these commands are not needed.
|
||||
# xrandr --setprovideroutputsource modesetting NVIDIA-0
|
||||
# xrandr --setprovideroutputsource 0 1
|
||||
# xrandr --auto
|
||||
# autorandr --change
|
||||
|
||||
# Speed when holding down key
|
||||
xset r rate 300 50
|
||||
xserverauthfile=$XAUTHORITY # Stop the accumulation of ~/.serverauth.### files
|
||||
|
||||
# Need to source environment before starting fcitx5 so that it can
|
||||
# read the *_IM_MODULE and XMODIFIER variables.
|
||||
source ~/.config/zsh/.zshenv
|
||||
autorandr -c -d "default"
|
||||
export TERMINAL=/usr/local/bin/st
|
||||
|
||||
# Start important daemons
|
||||
kill $(pidof fcitx5) 2>/dev/null
|
||||
fcitx5 -d
|
||||
picom -b
|
||||
sxhkd &
|
||||
killall emacs 2>/dev/null
|
||||
emacs -daemon
|
||||
|
||||
~/.config/autorandr/postswitch
|
||||
dwmblocks &
|
||||
exec dwm
|
||||
|
||||
8
misc/dot-config/autorandr/postswitch
Executable file
8
misc/dot-config/autorandr/postswitch
Executable file
|
|
@ -0,0 +1,8 @@
|
|||
#!/usr/bin/env sh
|
||||
|
||||
feh --bg-scale --no-fehbg "$HOME/.config/wallpaper"
|
||||
# echo "dwm.accent: $(color-picker $WALLPAPER)" > /tmp/dwm_accent
|
||||
# xrdb -override -merge /tmp/dwm_accent
|
||||
# rm /tmp/dwm_accent
|
||||
# kill -HUP $(pidof dwm)
|
||||
|
||||
1
misc/dot-config/colors/accent
Normal file
1
misc/dot-config/colors/accent
Normal file
|
|
@ -0,0 +1 @@
|
|||
blue
|
||||
6
misc/dot-config/conda/condarc
Normal file
6
misc/dot-config/conda/condarc
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
envs_dirs:
|
||||
- ${XDG_DATA_HOME}/conda/envs
|
||||
pkgs_dirs:
|
||||
- ${XDG_CACHE_HOME}/conda/pkgs
|
||||
auto_activate_base: false
|
||||
|
||||
4
misc/dot-config/discord/settings.json
Normal file
4
misc/dot-config/discord/settings.json
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
SKIP_HOST_UPDATE: true
|
||||
}
|
||||
|
||||
24
misc/dot-config/dmenu/config.h
Normal file
24
misc/dot-config/dmenu/config.h
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
/* See LICENSE file for copyright and license details. */
|
||||
/* Default settings; can be overriden by command line. */
|
||||
|
||||
static int topbar = 1; /* -b option; if 0, dmenu appears at bottom */
|
||||
/* -fn option overrides fonts[0]; default X11 font or font set */
|
||||
static const char *fonts[] = {
|
||||
"monospace:size=20",
|
||||
"NotoColorEmoji:size=15",
|
||||
};
|
||||
static const char *prompt = NULL; /* -p option; prompt to the left of input field */
|
||||
static const char *colors[SchemeLast][2] = {
|
||||
/* fg bg */
|
||||
[SchemeNorm] = { "#bbbbbb", "#222222" },
|
||||
[SchemeSel] = { "#eeeeee", "#005577" },
|
||||
[SchemeOut] = { "#000000", "#00ffff" },
|
||||
};
|
||||
/* -l option; if nonzero, dmenu uses vertical list with given number of lines */
|
||||
static unsigned int lines = 0;
|
||||
|
||||
/*
|
||||
* Characters not considered part of a word while deleting words
|
||||
* for example: " /?\"&[]"
|
||||
*/
|
||||
static const char worddelimiters[] = " ";
|
||||
649
misc/dot-config/doom/config.org
Normal file
649
misc/dot-config/doom/config.org
Normal file
|
|
@ -0,0 +1,649 @@
|
|||
#+TITLE: Agryphus' Emacs Config
|
||||
#+AUTHOR: agryphus
|
||||
|
||||
# Unfold all org headings
|
||||
#+STARTUP: showeverything
|
||||
|
||||
# Roughly in order of least to most likely to break / necessary to fix a broken config.
|
||||
* TABLE OF CONTENTS :toc_3:
|
||||
- [[#general-keybinds][General Keybinds]]
|
||||
- [[#quick-find-files][Quick Find Files]]
|
||||
- [[#elisp-evaluation][Elisp Evaluation]]
|
||||
- [[#unsetting-bindings-that-step-on-mine][Unsetting Bindings That Step on Mine]]
|
||||
- [[#better-defaults][Better Defaults]]
|
||||
- [[#disable-really-quit-emacs-prompt][Disable "Really Quit Emacs" Prompt]]
|
||||
- [[#relative-line-numbers][Relative Line Numbers]]
|
||||
- [[#scrolloff][Scrolloff]]
|
||||
- [[#scratch-buffer-mode][Scratch Buffer Mode]]
|
||||
- [[#evil][Evil]]
|
||||
- [[#changing-keybinds][Changing Keybinds]]
|
||||
- [[#changing-backspace-behavior][Changing backspace behavior]]
|
||||
- [[#leave-insertvisual-modes-with-c-c][Leave insert/visual modes with C-C]]
|
||||
- [[#remove-jk-escape-sequence][Remove "jk" escape sequence]]
|
||||
- [[#clearing-highlight-with-c-l][Clearing highlight with C-L]]
|
||||
- [[#swap-gkj-and-kj][Swap g[k/j] and k/j]]
|
||||
- [[#resize-font-in-insert-mode][Resize Font in Insert Mode]]
|
||||
- [[#visual-tweaks][Visual Tweaks]]
|
||||
- [[#scale-line-number-size-with-buffer-text][Scale Line Number Size with Buffer Text]]
|
||||
- [[#block-cursor-not-showing-in-terminal-mode][Block Cursor Not Showing in Terminal Mode]]
|
||||
- [[#doom-dashboard-spacing][Doom Dashboard Spacing]]
|
||||
- [[#posframe][Posframe]]
|
||||
- [[#vertico-posframe][Vertico Posframe]]
|
||||
- [[#company-posframe][Company Posframe]]
|
||||
- [[#fonts][Fonts]]
|
||||
- [[#default][Default]]
|
||||
- [[#mixed-pitch-mode][Mixed Pitch Mode]]
|
||||
- [[#coloring][Coloring]]
|
||||
- [[#themes][Themes]]
|
||||
- [[#transparency][Transparency]]
|
||||
- [[#languages][Languages]]
|
||||
- [[#lspcompletion-config][LSP/Completion Config]]
|
||||
- [[#company-mode][Company-mode]]
|
||||
- [[#make-lsp-ui-sideline-suggestions-the-same-size-as-buffer-text][Make lsp-ui sideline suggestions the same size as buffer text]]
|
||||
- [[#lsp-mode-in-org-src-blocks][LSP mode in org src blocks]]
|
||||
- [[#org][Org]]
|
||||
- [[#variable-height-headers][Variable Height Headers]]
|
||||
- [[#org-modern][Org Modern]]
|
||||
- [[#special-symbolscharacters][Special symbols/characters]]
|
||||
- [[#agenda][Agenda]]
|
||||
- [[#svg-tags][SVG Tags]]
|
||||
- [[#markdown][Markdown]]
|
||||
- [[#conceal-markup][Conceal Markup]]
|
||||
- [[#variable-sized-headers][Variable Sized Headers]]
|
||||
- [[#list-bullets][List Bullets]]
|
||||
- [[#mixed-pitch][Mixed Pitch]]
|
||||
- [[#typst][Typst]]
|
||||
- [[#shell][Shell]]
|
||||
- [[#nix][Nix]]
|
||||
- [[#miscellaneous][Miscellaneous]]
|
||||
- [[#anki][Anki]]
|
||||
- [[#face-explorer][Face Explorer]]
|
||||
|
||||
* General Keybinds
|
||||
** Quick Find Files
|
||||
#+begin_src emacs-lisp
|
||||
(map! :leader
|
||||
(:prefix ("=" . "open file")
|
||||
:desc "Edit doom config.org" "c" #'(lambda () (interactive) (find-file "~/.config/doom/config.org"))
|
||||
:desc "Edit doom init.el" "i" #'(lambda () (interactive) (find-file "~/.config/doom/init.el"))))
|
||||
(map! "C-/" #'comment-line)
|
||||
#+end_src
|
||||
|
||||
** Elisp Evaluation
|
||||
#+begin_src emacs-lisp
|
||||
(map! :leader
|
||||
(:prefix ("e". "evaluate")
|
||||
:desc "Evaluate elisp in buffer" "b" #'eval-buffer
|
||||
:desc "Evaluate defun" "d" #'eval-defun
|
||||
:desc "Evaluate elisp expression" "e" #'eval-expression
|
||||
:desc "Evaluate last sexpression" "l" #'eval-last-sexp
|
||||
:desc "Evaluate elisp in region" "r" #'eval-region))
|
||||
#+end_src
|
||||
|
||||
** Unsetting Bindings That Step on Mine
|
||||
#+begin_src emacs-lisp
|
||||
(after! ccls! (unbind-key "M-a" c-mode-base-map))
|
||||
|
||||
;; The C package adds a keybind to (ccls-navigate "D"), which not
|
||||
;; only steps on my binding, but is not even a provided function.
|
||||
(map! :after ccls
|
||||
:map (c-mode-map c++-mode-map)
|
||||
:n "C-h" nil
|
||||
:n "C-j" nil
|
||||
:n "C-k" nil
|
||||
:n "C-l" nil)
|
||||
#+end_src
|
||||
|
||||
* Better Defaults
|
||||
** Disable "Really Quit Emacs" Prompt
|
||||
#+begin_src emacs-lisp
|
||||
(setq confirm-kill-emacs nil)
|
||||
#+end_src
|
||||
|
||||
** Relative Line Numbers
|
||||
#+begin_src emacs-lisp
|
||||
(setq display-line-numbers-type 'relative)
|
||||
#+end_src
|
||||
|
||||
** Scrolloff
|
||||
#+begin_src emacs-lisp
|
||||
(setq ag/scroll-margin 8) ;; Custom var
|
||||
(setq scroll-margin ag/scroll-margin)
|
||||
|
||||
;; Exceptions for modes that need 0 scroll margin
|
||||
(add-hook 'eat-mode-hook (lambda () (setq-local scroll-margin 0)))
|
||||
(add-hook 'eat-exit-hook (lambda () (setq-local scroll-margin ag/scroll-margin)))
|
||||
(add-hook '+doom-dashboard-mode-hook (lambda () (setq-local scroll-margin 0)))
|
||||
#+end_src
|
||||
|
||||
** Scratch Buffer Mode
|
||||
Scratch buffer is, by default, in interactive lisp mode. Default to just plaintext.
|
||||
#+begin_src emacs-lisp
|
||||
(setq initial-major-mode 'text-mode)
|
||||
#+end_src
|
||||
|
||||
* Evil
|
||||
** Changing Keybinds
|
||||
*** Changing backspace behavior
|
||||
#+begin_src emacs-lisp
|
||||
(define-key evil-insert-state-map (kbd "<backspace>") 'backward-delete-char-untabify)
|
||||
#+end_src
|
||||
*** Leave insert/visual modes with C-C
|
||||
#+begin_src emacs-lisp
|
||||
(define-key evil-insert-state-map (kbd "C-c") 'evil-normal-state)
|
||||
(define-key evil-visual-state-map (kbd "C-c") 'evil-normal-state)
|
||||
#+end_src
|
||||
|
||||
*** Remove "jk" escape sequence
|
||||
By default, evil exits insert mode when "jk" is pressed in sequence. I find this to be confusing behavior.
|
||||
#+begin_src emacs-lisp
|
||||
(setq evil-escape-key-sequence nil)
|
||||
#+end_src
|
||||
|
||||
*** Clearing highlight with C-L
|
||||
Mimics the "redraw" signal sent to terminals for vim.
|
||||
#+begin_src emacs-lisp
|
||||
(define-key evil-normal-state-map (kbd "C-l") 'evil-ex-nohighlight)
|
||||
#+end_src
|
||||
|
||||
*** Swap g[k/j] and k/j
|
||||
#+begin_src emacs-lisp
|
||||
(define-key evil-motion-state-map (kbd "gj") 'evil-next-line)
|
||||
(define-key evil-motion-state-map (kbd "gk") 'evil-previous-line)
|
||||
(define-key evil-motion-state-map (kbd "j") 'evil-next-visual-line)
|
||||
(define-key evil-motion-state-map (kbd "k") 'evil-previous-visual-line)
|
||||
#+end_src
|
||||
|
||||
** Resize Font in Insert Mode
|
||||
These are the same keybinds that are able to work outside of insert mode.
|
||||
#+begin_src emacs-lisp
|
||||
(define-key evil-insert-state-map (kbd "C-M-=") 'doom/increase-font-size)
|
||||
(define-key evil-insert-state-map (kbd "C-M--") 'doom/decrease-font-size)
|
||||
(define-key evil-insert-state-map (kbd "C-=") 'text-scale-increase)
|
||||
(define-key evil-insert-state-map (kbd "C--") 'text-scale-decrease)
|
||||
#+end_src
|
||||
|
||||
* Visual Tweaks
|
||||
** Scale Line Number Size with Buffer Text
|
||||
#+begin_src emacs-lisp
|
||||
(add-hook 'text-scale-mode-hook (lambda() (face-remap--remap-face 'line-number)))
|
||||
(add-hook 'text-scale-mode-hook (lambda() (face-remap--remap-face 'line-number-current-line)))
|
||||
#+end_src
|
||||
** Block Cursor Not Showing in Terminal Mode
|
||||
#+begin_src emacs-lisp :tangle packages.el
|
||||
(package! evil-terminal-cursor-changer)
|
||||
#+end_src
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(use-package! evil-terminal-cursor-changer
|
||||
:hook (tty-setup . evil-terminal-cursor-changer-activate))
|
||||
#+end_src
|
||||
|
||||
** Doom Dashboard Spacing
|
||||
I felt that the spacing between the line items in the graphical doom dashboard was too large. There did not seem to be any variable to set this, so I overrode the entire function and manually decreased the spacing
|
||||
#+begin_src emacs-lisp
|
||||
(defun doom-dashboard-widget-shortmenu ()
|
||||
(insert "\n")
|
||||
(dolist (section +doom-dashboard-menu-sections)
|
||||
(cl-destructuring-bind (label &key icon action when face key) section
|
||||
(when (and (fboundp action)
|
||||
(or (null when)
|
||||
(eval when t)))
|
||||
(insert
|
||||
(+doom-dashboard--center
|
||||
(- +doom-dashboard--width 1)
|
||||
(let ((icon (if (stringp icon) icon (eval icon t))))
|
||||
(format (format "%s%%s%%-10s" (if icon "%3s\t" "%3s"))
|
||||
(or icon "")
|
||||
(with-temp-buffer
|
||||
(insert-text-button
|
||||
label
|
||||
'action
|
||||
`(lambda (_)
|
||||
(call-interactively (or (command-remapping #',action)
|
||||
#',action)))
|
||||
'face (or face 'doom-dashboard-menu-title)
|
||||
'follow-link t
|
||||
'help-echo
|
||||
(format "%s (%s)" label
|
||||
(propertize (symbol-name action) 'face 'doom-dashboard-menu-desc)))
|
||||
(format "%-37s" (buffer-string)))
|
||||
;; Lookup command keys dynamically
|
||||
(propertize
|
||||
(or key
|
||||
(when-let*
|
||||
((keymaps
|
||||
(delq
|
||||
nil (list (when (bound-and-true-p evil-local-mode)
|
||||
(evil-get-auxiliary-keymap +doom-dashboard-mode-map 'normal))
|
||||
+doom-dashboard-mode-map)))
|
||||
(key
|
||||
(or (when keymaps
|
||||
(where-is-internal action keymaps t))
|
||||
(where-is-internal action nil t))))
|
||||
(with-temp-buffer
|
||||
(save-excursion (insert (key-description key)))
|
||||
(while (re-search-forward "<\\([^>]+\\)>" nil t)
|
||||
(let ((str (match-string 1)))
|
||||
(replace-match
|
||||
(upcase (if (< (length str) 3)
|
||||
str
|
||||
(substring str 0 3))))))
|
||||
(buffer-string)))
|
||||
"")
|
||||
'face 'doom-dashboard-menu-desc))))
|
||||
;; (if (display-graphic-p)
|
||||
;; "\n\n"
|
||||
;; "\n"))))))
|
||||
"\n"))))) ;; Overwrote above lines so remove the extra newline in graphical mode from the doom dashboard
|
||||
|
||||
(remove-hook '+doom-dashboard-functions #'doom-dashboard-widget-footer) ;; No github at bottom
|
||||
#+end_src
|
||||
|
||||
** Posframe
|
||||
*** Vertico Posframe
|
||||
#+begin_src emacs-lisp :tangle packages.el
|
||||
(package! vertico-posframe)
|
||||
#+end_src
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(vertico-posframe-mode 1)
|
||||
(setq vertico-multiform-commands
|
||||
'((consult-line
|
||||
posframe
|
||||
(vertico-posframe-poshandler . posframe-poshandler-frame-top-center)
|
||||
(vertico-posframe-border-width . 10)
|
||||
;; NOTE: This is useful when emacs is used in both in X and
|
||||
;; terminal, for posframe do not work well in terminal, so
|
||||
;; vertico-buffer-mode will be used as fallback at the
|
||||
;; moment.
|
||||
(vertico-posframe-fallback-mode . vertico-buffer-mode))
|
||||
(t posframe)))
|
||||
(vertico-multiform-mode 1)
|
||||
#+end_src
|
||||
|
||||
*** Company Posframe
|
||||
Company mode, by default, has its suggestions snap to the grid. When using anything other than monospaced font, this creately very glitchy looking behavior. Popping it out in a posframe makes the suggestions exist in their own graphical window.
|
||||
#+begin_src emacs-lisp :tangle packages.el
|
||||
(package! company-posframe)
|
||||
#+end_src
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(company-posframe-mode 1)
|
||||
#+end_src
|
||||
|
||||
* Fonts
|
||||
** Default
|
||||
#+begin_src emacs-lisp
|
||||
(add-to-list 'default-frame-alist '(font . "Symbols Nerd Font Mono 15"))
|
||||
(add-to-list 'default-frame-alist '(font . "FiraCode 15"))
|
||||
(set-face-font 'variable-pitch "Inter Display 15")
|
||||
(set-fontset-font "fontset-default" 'han "Source Han Sans")
|
||||
#+end_src
|
||||
|
||||
** Mixed Pitch Mode
|
||||
#+begin_src emacs-lisp :tangle packages.el
|
||||
(package! mixed-pitch)
|
||||
#+end_src
|
||||
|
||||
* Coloring
|
||||
There are four ways to start emacs with the combinations of GUI/TUI and standalone/daemon.
|
||||
Unfortunately, each of these four methods requires a slightly different way to set window transparency.
|
||||
** Themes
|
||||
#+begin_src emacs-lisp :tangle packages.el
|
||||
(package! gruber-darker-theme)
|
||||
(package! no-clown-fiesta-theme)
|
||||
#+end_src
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(add-to-list 'custom-theme-load-path "~/.config/doom/themes/")
|
||||
(load-theme 'some-clown-fiesta t)
|
||||
#+end_src
|
||||
|
||||
** Transparency
|
||||
#+begin_src emacs-lisp
|
||||
;; GUI transparency
|
||||
(set-frame-parameter nil 'alpha-background 80)
|
||||
(add-to-list 'default-frame-alist '(alpha-background . 80))
|
||||
|
||||
;; Variable sized org headers
|
||||
(custom-set-faces!
|
||||
'(default :background "black"))
|
||||
|
||||
(defun ag/terminal-faces (frame)
|
||||
(set-face-attribute 'hl-line frame :background "unspecified-bg")
|
||||
(set-face-attribute 'org-block frame :background "unspecified-bg")
|
||||
(set-face-attribute 'default frame :background "unspecified-bg"))
|
||||
|
||||
(defun window-transparency ()
|
||||
(if (display-graphic-p (selected-frame))
|
||||
(progn ;; $ emacs
|
||||
;; Transparency for graphical session
|
||||
)
|
||||
(progn ;; $ emacs -nw
|
||||
;; Transparency for terminal session
|
||||
(ag/terminal-faces (selected-frame)))))
|
||||
(unless (daemonp)
|
||||
(add-hook 'window-setup-hook 'window-transparency))
|
||||
|
||||
(defun ag/make-client-frame (frame)
|
||||
;; Called at the creation of each emacsclient frame
|
||||
(if (display-graphic-p frame)
|
||||
(progn ;; $ emacsclient -c
|
||||
;; Transparency for specific graphical frame
|
||||
)
|
||||
(progn ;; $ emacsclient -nw
|
||||
;; Transparency for specific terminal frame
|
||||
(ag/terminal-faces frame))))
|
||||
(add-hook 'after-make-frame-functions 'ag/make-client-frame)
|
||||
#+end_src
|
||||
|
||||
Keybinds in order to increase/decrease the transparency of emacs windows in GUI mode. I try to keep these
|
||||
bindings in sync with the terminal that I use, as to make the experiences of GUI and TUI emacs relatively similar.
|
||||
#+begin_src emacs-lisp
|
||||
(defun ag/adjust-alpha-background (delta)
|
||||
"Increase or decrease the alpha-background by DELTA, not exceeding 1 or going below 0."
|
||||
(interactive "p")
|
||||
;; let* macro instead of let, since new-alpha relies on alpha
|
||||
(let* ((current-alpha (or (frame-parameter (selected-frame) 'alpha-background) 0))
|
||||
(new-alpha (+ current-alpha delta)))
|
||||
(when (and (<= new-alpha 100) (>= new-alpha 0))
|
||||
(set-frame-parameter (selected-frame) 'alpha-background new-alpha))))
|
||||
(global-set-key (kbd "M-a") (lambda () (interactive) (ag/adjust-alpha-background 5)))
|
||||
(global-set-key (kbd "M-s") (lambda () (interactive) (ag/adjust-alpha-background -5)))
|
||||
#+end_src
|
||||
|
||||
* Languages
|
||||
** LSP/Completion Config
|
||||
*** Company-mode
|
||||
#+begin_src emacs-lisp
|
||||
(setq ag/company-idle-delay 0.0) ;; Give completion suggestions immediately
|
||||
(setq company-minimum-prefix-length 1)
|
||||
(setq company-idle-delay ag/company-idle-delay)
|
||||
|
||||
(set-company-backend!
|
||||
'(text-mode
|
||||
markdown-mode
|
||||
gfm-mode)
|
||||
'(:seperate
|
||||
company-files
|
||||
company-yasnippet
|
||||
company-ispell))
|
||||
|
||||
;; "lsp-mode overrides my config and prepends company-capf to company-backends, which results in shadowing
|
||||
;; the other backends. To avoid this issue we can remove the lsp added entry using lsp-after-open-hook"
|
||||
;; - https://github.com/doomemacs/doomemacs/issues/4477#issuecomment-762882261
|
||||
(add-hook! lsp-after-open
|
||||
(setq-local company-backends '(:seperate
|
||||
company-files
|
||||
company-capf
|
||||
company-yasnippet
|
||||
company-ispell)))
|
||||
(setq +lsp-company-backends '())
|
||||
#+end_src
|
||||
|
||||
*** Make lsp-ui sideline suggestions the same size as buffer text
|
||||
#+begin_src emacs-lisp
|
||||
(use-package lsp-ui :commands lsp-ui-mode
|
||||
:config (progn
|
||||
;;
|
||||
;; 2022-03-28 - fix sideline height computation
|
||||
;;
|
||||
(defun lsp-ui-sideline--compute-height nil
|
||||
"Return a fixed size for text in sideline."
|
||||
(let ((fontHeight (face-attribute 'lsp-ui-sideline-global :height)))
|
||||
(if (null text-scale-mode-remapping)
|
||||
'(height
|
||||
(if (floatp fontHeight) fontHeight
|
||||
(/ (face-attribute 'lsp-ui-sideline-global :height) 100.0)
|
||||
)
|
||||
;; Readjust height when text-scale-mode is used
|
||||
(list 'height
|
||||
(/ 1 (or (plist-get (cdr text-scale-mode-remapping) :height)
|
||||
1)))))))
|
||||
|
||||
;;
|
||||
;; 2022-03-28 - fix sideline alignment
|
||||
;;
|
||||
(defun lsp-ui-sideline--align (&rest lengths)
|
||||
"Align sideline string by LENGTHS from the right of the window."
|
||||
(list (* (window-font-width nil 'lsp-ui-sideline-global)
|
||||
(+ (apply '+ lengths) (if (display-graphic-p) 1 2)))))
|
||||
))
|
||||
#+end_src
|
||||
|
||||
*** LSP mode in org src blocks
|
||||
From: https://tecosaur.github.io/emacs-config/config.html
|
||||
#+begin_src emacs-lisp
|
||||
(cl-defmacro lsp-org-babel-enable (lang)
|
||||
"Support LANG in org source code block."
|
||||
(setq centaur-lsp 'lsp-mode)
|
||||
(cl-check-type lang stringp)
|
||||
(let* ((edit-pre (intern (format "org-babel-edit-prep:%s" lang)))
|
||||
(intern-pre (intern (format "lsp--%s" (symbol-name edit-pre)))))
|
||||
`(progn
|
||||
(defun ,intern-pre (info)
|
||||
(let ((file-name (->> info caddr (alist-get :file))))
|
||||
(unless file-name
|
||||
(setq file-name (make-temp-file "babel-lsp-")))
|
||||
(setq buffer-file-name file-name)
|
||||
(lsp-deferred)))
|
||||
(put ',intern-pre 'function-documentation
|
||||
(format "Enable lsp-mode in the buffer of org source block (%s)."
|
||||
(upcase ,lang)))
|
||||
(if (fboundp ',edit-pre)
|
||||
(advice-add ',edit-pre :after ',intern-pre)
|
||||
(progn
|
||||
(defun ,edit-pre (info)
|
||||
(,intern-pre info))
|
||||
(put ',edit-pre 'function-documentation
|
||||
(format "Prepare local buffer environment for org source block (%s)."
|
||||
(upcase ,lang))))))))
|
||||
(defvar org-babel-lang-list
|
||||
'("go" "python" "ipython" "bash" "sh"))
|
||||
(dolist (lang org-babel-lang-list)
|
||||
(eval `(lsp-org-babel-enable ,lang)))
|
||||
#+end_src
|
||||
|
||||
** Org
|
||||
#+begin_src emacs-lisp
|
||||
(add-hook 'org-mode-hook 'mixed-pitch-mode)
|
||||
#+end_src
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(setq org-src-fontify-natively t)
|
||||
#+end_src
|
||||
|
||||
*** Variable Height Headers
|
||||
#+begin_src emacs-lisp
|
||||
(custom-set-faces!
|
||||
'(org-document-title :height 1.5)
|
||||
'(org-document-info :height 1.3)
|
||||
'(org-level-1 :height 1.5)
|
||||
'(org-level-2 :height 1.4)
|
||||
'(org-level-3 :height 1.3)
|
||||
'(org-level-4 :height 1.2)
|
||||
'(org-level-5 :height 1.1)
|
||||
'(org-level-6 :height 1.0)
|
||||
'(org-level-7 :height 1.0)
|
||||
'(org-level-8 :height 1.0))
|
||||
#+end_src
|
||||
*** Org Modern
|
||||
#+begin_src emacs-lisp :tangle packages.el
|
||||
(package! org-modern)
|
||||
#+end_src
|
||||
|
||||
*** Special symbols/characters
|
||||
#+begin_src emacs-lisp
|
||||
(after! org
|
||||
(setq
|
||||
org-superstar-headline-bullets-list '("⁖" "◉" "•" "◦" "•" "◦" "•" "◦" "•" "◦")
|
||||
org-superstar-itembullet-alist '((?+ . ?➤) (?- . ?✦)))) ; changes +/- symbols in item lists
|
||||
|
||||
(defun ag/prettify-me ()
|
||||
(setq prettify-symbols-alist
|
||||
'(("TODO" . "")
|
||||
("WAIT" . "")
|
||||
("NOPE" . "")
|
||||
("DONE" . "")
|
||||
("[ ]" . "")
|
||||
("[X]" . "")
|
||||
("[-]" . "")
|
||||
("#+begin_src" . "")
|
||||
("#+BEGIN_SRC" . "")
|
||||
("#+end_src" . "")
|
||||
("#+END_SRC" . "")
|
||||
(":properties:" . "")
|
||||
(":PROPERTIES:" . "")
|
||||
("#+property:" . "")
|
||||
("#+PROPERTY:" . "")
|
||||
(":end:" . "―")
|
||||
(":END:" . "―")
|
||||
("#+options:" . "")
|
||||
("#+OPTIONS:" . "")
|
||||
("#+startup:" . "")
|
||||
("#+STARTUP:" . "")
|
||||
("#+title: " . "")
|
||||
("#+TITLE: " . "")
|
||||
("#+TOC:" . "")
|
||||
("#+toc:" . "")
|
||||
("#+results:" . "")
|
||||
("#+RESULTS:" . "")
|
||||
("#+name:" . "")
|
||||
("#+NAME:" . "")
|
||||
("#+roam_tags:" . "")
|
||||
("#+ROAM_TAGS:" . "")
|
||||
("#+filetags:" . "")
|
||||
("#+FILETAGS:" . "")
|
||||
("#+html_head:" . "")
|
||||
("#+HTML_HEAD:" . "")
|
||||
("#+subtitle:" . "")
|
||||
("#+SUBTITLE:" . "")
|
||||
("#+author:" . "")
|
||||
("#+AUTHOR:" . "")
|
||||
(":effort:" . "")
|
||||
(":EFFORT:" . "")
|
||||
("scheduled:" . "")
|
||||
("SCHEDULED:" . "")
|
||||
("deadline:" . "")
|
||||
("DEADLINE:" . ""))))
|
||||
(add-hook 'org-mode-hook 'ag/prettify-me)
|
||||
;; Can probably remove duplicates with
|
||||
;; (mapcan (lambda (x) (list x (cons (upcase (car x)) (cdr x))))
|
||||
#+end_src
|
||||
|
||||
*** Agenda
|
||||
#+begin_src emacs-lisp
|
||||
(setq org-agenda-files
|
||||
'("~/.local/share/org-agenda"))
|
||||
|
||||
(map! :leader :desc "Open org calendar" "o c" #'cfw:open-org-calendar)
|
||||
(add-hook 'calendar-after-frame-setup-hook 'cfw:refresh-calendar-buffer)
|
||||
#+end_src
|
||||
|
||||
*** SVG Tags
|
||||
#+begin_src emacs-lisp :tangle packages.el
|
||||
(package! svg-tag-mode)
|
||||
#+end_src
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(use-package! svg-tag-mode)
|
||||
(setq svg-tag-tags
|
||||
'((":TODO:" . ((lambda (tag) (svg-tag-make "TODO"))))
|
||||
("[X]" . ((lambda (tag) (svg-tag-make "X"))))))
|
||||
#+end_src
|
||||
|
||||
** Markdown
|
||||
*** Conceal Markup
|
||||
#+begin_src emacs-lisp
|
||||
(add-hook 'markdown-mode-hook '(lambda () (markdown-toggle-markup-hiding)))
|
||||
#+end_src
|
||||
|
||||
*** Variable Sized Headers
|
||||
#+begin_src emacs-lisp
|
||||
(custom-set-faces!
|
||||
'(markdown-header-face-1 :height 1.5)
|
||||
'(markdown-header-face-2 :height 1.4)
|
||||
'(markdown-header-face-3 :height 1.3)
|
||||
'(markdown-header-face-4 :height 1.2)
|
||||
'(markdown-header-face-5 :height 1.1)
|
||||
'(markdown-header-face-6 :height 1.0)
|
||||
'(markdown-header-face-7 :height 1.0)
|
||||
'(markdown-header-face-8 :height 1.0))
|
||||
#+end_src
|
||||
|
||||
*** List Bullets
|
||||
#+begin_src emacs-lisp
|
||||
(setq markdown-list-item-bullets '("•" "◦"))
|
||||
#+end_src
|
||||
|
||||
*** Mixed Pitch
|
||||
#+begin_src emacs-lisp
|
||||
(add-hook 'markdown-mode-hook '(lambda () (mixed-pitch-mode)))
|
||||
#+end_src
|
||||
|
||||
** Typst
|
||||
Download the `typst-ts-mode` package, which isn't yet in Melpa.
|
||||
#+begin_src emacs-lisp :tangle packages.el
|
||||
(package! typst-mode)
|
||||
;; (package! typst-ts-mode :recipe (:type git
|
||||
;; :host sourcehut
|
||||
;; :repo "meow_king/typst-ts-mode"))
|
||||
#+end_src
|
||||
|
||||
Configure typst-ts-mode.
|
||||
#+begin_src emacs-lisp
|
||||
(use-package! typst-mode)
|
||||
;; (use-package! typst-ts-mode)
|
||||
;; :custom
|
||||
;; (typst-ts-mode-watch-options "--open")
|
||||
;; (typst-ts-mode-enable-raw-blocks-highlight t)
|
||||
;; (typst-ts-mode-highlight-raw-blocks-at-startup t))
|
||||
|
||||
;; (setq treesit-load-name-override-list
|
||||
;; '((typst "libtree-sitter-typst" "tree_sitter_typst")))
|
||||
|
||||
;; (setq treesit-language-source-alist
|
||||
;; '((typst "https://github.com/uben0/tree-sitter-typst")))
|
||||
#+end_src
|
||||
|
||||
** Shell
|
||||
#+begin_src emacs-lisp
|
||||
(set-company-backend!
|
||||
'(sh-mode)
|
||||
'(:seperate
|
||||
company-files
|
||||
company-shell
|
||||
company-yasnippet
|
||||
company-ispell))
|
||||
#+end_src
|
||||
|
||||
** Nix
|
||||
#+begin_src emacs-lisp
|
||||
(add-hook! lsp-nix-nil-after-open
|
||||
(progn
|
||||
;; There's a silly goofy little function called doom--setq-company-idle-delay-for-nix-mode-h that, for some reason,
|
||||
;; has a hook that sets company-idle-delay to nil, which effectively removes auto completion in nix-mode. This was
|
||||
;; very confusing to me and took me a bit to figure out why company-mode was buggy in nix-mode.
|
||||
(setq-local company-idle-delay ag/company-idle-delay)
|
||||
|
||||
(setq-local company-backends nil)
|
||||
(setq-local company-backends '(:separate
|
||||
company-files
|
||||
company-nixos-options
|
||||
company-capf
|
||||
company-yasnippet
|
||||
company-ispell))))
|
||||
#+end_src
|
||||
|
||||
* Miscellaneous
|
||||
** Anki
|
||||
#+begin_src emacs-lisp :tangle packages.el
|
||||
(package! anki-connect)
|
||||
(package! anki-editor)
|
||||
#+end_src
|
||||
|
||||
** Face Explorer
|
||||
#+begin_src emacs-lisp :tangle packages.el
|
||||
(package! face-explorer)
|
||||
#+end_src
|
||||
195
misc/dot-config/doom/init.el
Normal file
195
misc/dot-config/doom/init.el
Normal file
|
|
@ -0,0 +1,195 @@
|
|||
;;; init.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; This file controls what Doom modules are enabled and what order they load
|
||||
;; in. Remember to run 'doom sync' after modifying it!
|
||||
|
||||
;; NOTE Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's
|
||||
;; documentation. There you'll find a link to Doom's Module Index where all
|
||||
;; of our modules are listed, including what flags they support.
|
||||
|
||||
;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or
|
||||
;; 'C-c c k' for non-vim users) to view its documentation. This works on
|
||||
;; flags as well (those symbols that start with a plus).
|
||||
;;
|
||||
;; Alternatively, press 'gd' (or 'C-c c d') on a module to browse its
|
||||
;; directory (for easy access to its source code).
|
||||
|
||||
(doom! :input
|
||||
;;bidi ; (tfel ot) thgir etirw uoy gnipleh
|
||||
;;chinese
|
||||
;;japanese
|
||||
;;layout ; auie,ctsrnm is the superior home row
|
||||
|
||||
:completion
|
||||
company ; the ultimate code completion backend
|
||||
;;helm ; the *other* search engine for love and life
|
||||
;;ido ; the other *other* search engine...
|
||||
;;ivy ; a search engine for love and life
|
||||
vertico ; the search engine of the future
|
||||
|
||||
:ui
|
||||
;;deft ; notational velocity for Emacs
|
||||
doom ; what makes DOOM look the way it does
|
||||
doom-dashboard ; a nifty splash screen for Emacs
|
||||
;;doom-quit ; DOOM quit-message prompts when you quit Emacs
|
||||
;;(emoji +unicode) ; 🙂
|
||||
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
|
||||
;;hydra
|
||||
;;indent-guides ; highlighted indent columns
|
||||
ligatures ; ligatures and symbols to make your code pretty again
|
||||
minimap ; show a map of the code on the side
|
||||
modeline ; snazzy, Atom-inspired modeline, plus API
|
||||
;;nav-flash ; blink cursor line after big motions
|
||||
neotree ; a project drawer, like NERDTree for vim
|
||||
ophints ; highlight the region an operation acts on
|
||||
(popup +defaults) ; tame sudden yet inevitable temporary windows
|
||||
;;tabs ; a tab bar for Emacs
|
||||
;;treemacs ; a project drawer, like neotree but cooler
|
||||
;;unicode ; extended unicode support for various languages
|
||||
(vc-gutter +pretty) ; vcs diff in the fringe
|
||||
vi-tilde-fringe ; fringe tildes to mark beyond EOB
|
||||
;;window-select ; visually switch windows
|
||||
workspaces ; tab emulation, persistence & separate workspaces
|
||||
;;zen ; distraction-free coding or writing
|
||||
|
||||
:editor
|
||||
(evil +everywhere) ; come to the dark side, we have cookies
|
||||
file-templates ; auto-snippets for empty files
|
||||
fold ; (nigh) universal code folding
|
||||
;;(format +onsave) ; automated prettiness
|
||||
;;god ; run Emacs commands without modifier keys
|
||||
;;lispy ; vim for lisp, for people who don't like vim
|
||||
;;multiple-cursors ; editing in many places at once
|
||||
;;objed ; text object editing for the innocent
|
||||
;;parinfer ; turn lisp into python, sort of
|
||||
;;rotate-text ; cycle region at point between text candidates
|
||||
snippets ; my elves. They type so I don't have to
|
||||
;;word-wrap ; soft wrapping with language-aware indent
|
||||
|
||||
:emacs
|
||||
dired ; making dired pretty [functional]
|
||||
electric ; smarter, keyword-based electric-indent
|
||||
;;ibuffer ; interactive buffer management
|
||||
undo ; persistent, smarter undo for your inevitable mistakes
|
||||
vc ; version-control and Emacs, sitting in a tree
|
||||
|
||||
:term
|
||||
;;eshell ; the elisp shell that works everywhere
|
||||
;;shell ; simple shell REPL for Emacs
|
||||
;;term ; basic terminal emulator for Emacs
|
||||
vterm ; the best terminal emulation in Emacs
|
||||
|
||||
:checkers
|
||||
syntax ; tasing you for every semicolon you forget
|
||||
(spell +flyspell) ; tasing you for misspelling mispelling
|
||||
;;grammar ; tasing grammar mistake every you make
|
||||
|
||||
:tools
|
||||
;;ansible
|
||||
;;biblio ; Writes a PhD for you (citation needed)
|
||||
;;collab ; buffers with friends
|
||||
;;debugger ; FIXME stepping through code, to help you add bugs
|
||||
;;direnv
|
||||
;;docker
|
||||
;;editorconfig ; let someone else argue about tabs vs spaces
|
||||
;;ein ; tame Jupyter notebooks with emacs
|
||||
(eval +overlay) ; run code, run (also, repls)
|
||||
;;gist ; interacting with github gists
|
||||
lookup ; navigate your code and its documentation
|
||||
lsp ; M-x vscode
|
||||
magit ; a git porcelain for Emacs
|
||||
;;make ; run make tasks from Emacs
|
||||
;;pass ; password manager for nerds
|
||||
;;pdf ; pdf enhancements
|
||||
;;prodigy ; FIXME managing external services & code builders
|
||||
rgb ; creating color strings
|
||||
;;taskrunner ; taskrunner for all your projects
|
||||
;;terraform ; infrastructure as code
|
||||
;;tmux ; an API for interacting with tmux
|
||||
tree-sitter ; syntax and parsing, sitting in a tree...
|
||||
;;upload ; map local to remote projects via ssh/ftp
|
||||
|
||||
:os
|
||||
(:if IS-MAC macos) ; improve compatibility with macOS
|
||||
;;tty ; improve the terminal Emacs experience
|
||||
|
||||
:lang
|
||||
;;agda ; types of types of types of types...
|
||||
;;beancount ; mind the GAAP
|
||||
(cc +lsp) ; C > C++ == 1
|
||||
;;clojure ; java with a lisp
|
||||
;;common-lisp ; if you've seen one lisp, you've seen them all
|
||||
;;coq ; proofs-as-programs
|
||||
;;crystal ; ruby at the speed of c
|
||||
;;csharp ; unity, .NET, and mono shenanigans
|
||||
;;data ; config/data formats
|
||||
;;(dart +flutter) ; paint ui and not much else
|
||||
;;dhall
|
||||
;;elixir ; erlang done right
|
||||
;;elm ; care for a cup of TEA?
|
||||
(emacs-lisp +lsp) ; drown in parentheses
|
||||
;;erlang ; an elegant language for a more civilized age
|
||||
;;ess ; emacs speaks statistics
|
||||
;;factor
|
||||
;;faust ; dsp, but you get to keep your soul
|
||||
;;fortran ; in FORTRAN, GOD is REAL (unless declared INTEGER)
|
||||
;;fsharp ; ML stands for Microsoft's Language
|
||||
;;fstar ; (dependent) types and (monadic) effects and Z3
|
||||
;;gdscript ; the language you waited for
|
||||
;;(go +lsp) ; the hipster dialect
|
||||
;;(graphql +lsp) ; Give queries a REST
|
||||
;;(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 ; At least it ain't XML
|
||||
;;(java +lsp) ; the poster child for carpal tunnel syndrome
|
||||
;;javascript ; all(hope(abandon(ye(who(enter(here))))))
|
||||
;;julia ; a better, faster MATLAB
|
||||
;;kotlin ; a better, slicker Java(Script)
|
||||
;;latex ; writing papers in Emacs has never been so fun
|
||||
;;lean ; for folks with too much to prove
|
||||
;;ledger ; be audit you can be
|
||||
;;lua ; one-based indices? one-based indices
|
||||
markdown ; writing docs for people to ignore
|
||||
;;nim ; python + lisp at the speed of c
|
||||
(nix +lsp) ; I hereby declare "nix geht mehr!"
|
||||
;;ocaml ; an objective camel
|
||||
(org +pretty) ; organize your plain life in plain text (+pretty enables org-superstar)
|
||||
;;php ; perl's insecure younger brother
|
||||
;;plantuml ; diagrams for confusing people more
|
||||
;;purescript ; javascript, but functional
|
||||
python ; beautiful is better than ugly
|
||||
;;qt ; the 'cutest' gui framework ever
|
||||
;;racket ; a DSL for DSLs
|
||||
;;raku ; the artist formerly known as perl6
|
||||
;;rest ; Emacs as a REST client
|
||||
;;rst ; ReST in peace
|
||||
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
|
||||
;;(rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
|
||||
;;scala ; java, but good
|
||||
;;(scheme +guile) ; a fully conniving family of lisps
|
||||
sh ; she sells {ba,z,fi}sh shells on the C xor
|
||||
;;sml
|
||||
;;solidity ; do you need a blockchain? No.
|
||||
;;swift ; who asked for emoji variables?
|
||||
;;terra ; Earth and Moon in alignment for performance.
|
||||
;;web ; the tubes
|
||||
;;yaml ; JSON, but readable
|
||||
;;zig ; C, but simpler
|
||||
|
||||
:email
|
||||
;;(mu4e +org +gmail)
|
||||
;;notmuch
|
||||
;;(wanderlust +gmail)
|
||||
|
||||
:app
|
||||
calendar
|
||||
;;emms
|
||||
;;everywhere ; *leave* Emacs!? You must be joking
|
||||
;;irc ; how neckbeards socialize
|
||||
;;(rss +org) ; emacs as an RSS reader
|
||||
;;twitter ; twitter client https://twitter.com/vnought
|
||||
|
||||
:config
|
||||
literate
|
||||
(default +bindings +smartparens))
|
||||
490
misc/dot-config/doom/themes/some-clown-fiesta-theme.el
Normal file
490
misc/dot-config/doom/themes/some-clown-fiesta-theme.el
Normal file
|
|
@ -0,0 +1,490 @@
|
|||
;;; some-clown-fiesta-theme.el --- Not-so-colorful-theme -*- lexical-binding: t -*-
|
||||
|
||||
;; URL: https://github.com/agryphus/some-clown-fiesta-theme.el
|
||||
;; Author: agryphus
|
||||
;;
|
||||
;; Forked from:
|
||||
;; URL: https://github.com/ranmaru22/no-clown-fiesta-theme.el
|
||||
;; Author: ranmaru22
|
||||
;;
|
||||
;; This program is free software: you can redistribute it and/or modify it under
|
||||
;; the terms of the GNU General Public License as published by the Free Software
|
||||
;; Foundation, either version 3 of the License, or any later version.
|
||||
;;
|
||||
;; This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
;; FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
;; details.
|
||||
;;
|
||||
;; You should have received a copy of the GNU General Public License along with
|
||||
;; this program. If not, see http://www.gnu.org/licenses/.
|
||||
|
||||
;;; Commentary:
|
||||
;; Color theme for Doom Emacs 29+ that does not look like a unicorn farted on your
|
||||
;; screen. Based on no-clown-fiesta.nvim by aktersnurra, converted and extended
|
||||
;; for Emacs by ranmaru22 and agryphus.
|
||||
;;
|
||||
;; Original nvim theme: https://github.com/aktersnurra/no-clown-fiesta.nvim
|
||||
|
||||
;;; Code:
|
||||
(require 'autothemer)
|
||||
|
||||
;;;###autoload
|
||||
(and (or load-file-name buffer-file-name)
|
||||
(boundp 'custom-theme-load-path)
|
||||
(add-to-list 'custom-theme-load-path
|
||||
(file-name-as-directory
|
||||
(file-name-directory
|
||||
(or load-file-name buffer-file-name)))))
|
||||
|
||||
(autothemer-deftheme
|
||||
some-clown-fiesta
|
||||
"Color theme for Emacs 26+ that does not look like a clown puked up the source code."
|
||||
|
||||
((((class color) (min-colors #xFFFFFF))) ;; GUI only for now
|
||||
|
||||
;; Color palette
|
||||
(fg "#E1E1E1")
|
||||
(bg "#151515")
|
||||
(_bg-darker "#101010")
|
||||
(alt-bg "#202020")
|
||||
(accent "#242424")
|
||||
(white "#E1E1E1")
|
||||
(true-white "#FFFFFF")
|
||||
(dark-gray "#2A2A2A")
|
||||
(gray "#424242")
|
||||
(medium-gray "#727272")
|
||||
(light-gray "#AFAFAF")
|
||||
(blue "#A5D6FF")
|
||||
(gray-blue "#7E97AB")
|
||||
(medium-gray-blue "#A2B5C1")
|
||||
(dark-gray-blue "#424952")
|
||||
(cyan "#88afa2")
|
||||
(red "#CC6666")
|
||||
(green "#90A959")
|
||||
(light-green "#77dd77")
|
||||
(yellow "#F4BF75")
|
||||
(orange "#FFA557")
|
||||
(purple "#AA749F")
|
||||
(pale-purple "#b790d4")
|
||||
(_dark-purple "#2a2a66")
|
||||
(magenta "#EFADF9")
|
||||
(cursor-bg "#D0D0D0")
|
||||
(cursor-fg "#151515")
|
||||
(sign-add "#90A959")
|
||||
(sign-change "#82a8c8")
|
||||
(sign-delete "#AC4142")
|
||||
(error-red "#AC4142")
|
||||
(warning-orange "#F4BF75")
|
||||
(_info-yellow "#F4BF75")
|
||||
(success-green "#77dd77")
|
||||
(hint-blue "#A5D6FF")
|
||||
(_hint-green "#90A959")
|
||||
(magit-light-green "#4f5c32")
|
||||
(_magit-blue "#33424f")
|
||||
(magit-green "#3f4928")
|
||||
(magit-light-red "#4f2929")
|
||||
(magit-red "#3f2121"))
|
||||
|
||||
;; Basic
|
||||
((border (:background alt-bg :foreground medium-gray))
|
||||
(cursor (:background cursor-bg :foreground cursor-fg))
|
||||
(hl-line (:background 'unspecified))
|
||||
(line-number (:foreground medium-gray))
|
||||
(line-number-current-line (:foreground medium-gray))
|
||||
(default (:foreground fg :background bg))
|
||||
(fringe (:background 'unspecified :foreground light-gray))
|
||||
(vertical-border (:background 'unspecified :foreground dark-gray))
|
||||
(link (:foreground hint-blue :underline t))
|
||||
(link-visited (:foreground pale-purple :underline t))
|
||||
(match (:background accent))
|
||||
(highlight (:background dark-gray-blue))
|
||||
(shadow (:foreground gray))
|
||||
(minibuffer-prompt (:foreground pale-purple))
|
||||
(region (:background gray :foreground 'unspecified))
|
||||
(secondary-selection (:background medium-gray :foreground 'unspecified))
|
||||
(trailing-whitespace (:foreground 'unspecified :background error-red))
|
||||
(tooltip (:background alt-bg :foreground fg))
|
||||
(child-frame-border (:background dark-gray))
|
||||
|
||||
(error (:foreground error-red :weight 'bold))
|
||||
(warning (:foreground warning-orange :weight 'bold))
|
||||
(success (:foreground success-green :weight 'bold))
|
||||
|
||||
;; Term colors
|
||||
(term-color-black (:foreground gray :background medium-gray))
|
||||
(term-color-red (:foreground red :background error-red))
|
||||
(term-color-green (:foreground green :background light-green))
|
||||
(term-color-blue (:foreground gray-blue :background blue))
|
||||
(term-color-yellow (:foreground orange :background yellow))
|
||||
(term-color-magenta (:foreground purple :background magenta))
|
||||
(term-color-cyan (:foreground cyan :background sign-change))
|
||||
(term-color-white (:foreground white :background true-white))
|
||||
|
||||
;; ANSI colors
|
||||
(ansi-color-black (:foreground gray :background gray))
|
||||
(ansi-color-red (:foreground red :background red))
|
||||
(ansi-color-green (:foreground green :background green))
|
||||
(ansi-color-blue (:foreground gray-blue :background gray-blue))
|
||||
(ansi-color-yellow (:foreground orange :background orange))
|
||||
(ansi-color-magenta (:foreground purple :background purple))
|
||||
(ansi-color-cyan (:foreground cyan :background cyan))
|
||||
(ansi-color-gray (:foreground white :background white))
|
||||
(ansi-color-bright-black (:foreground medium-gray :background medium-gray))
|
||||
(ansi-color-bright-red (:foreground error-red :background error-red))
|
||||
(ansi-color-bright-green (:foreground light-green :background light-green))
|
||||
(ansi-color-bright-blue (:foreground blue :background blue))
|
||||
(ansi-color-bright-yellow (:foreground yellow :background yellow))
|
||||
(ansi-color-bright-magenta (:foreground magenta :background magenta))
|
||||
(ansi-color-bright-cyan (:foreground sign-change :background sign-change))
|
||||
(ansi-color-bright-gray (:foreground true-white :background true-white))
|
||||
|
||||
;; Pulse
|
||||
(pulse-highlight-start-face (:background medium-gray :extend t))
|
||||
|
||||
;; Show paren
|
||||
(show-paren-match (:foreground blue :weight 'bold :underline t))
|
||||
(show-paren-match-expression (:foreground blue :weight 'bold :underline t))
|
||||
(show-paren-mismatch (:background red :weight 'bold :underline t))
|
||||
|
||||
;; Rainbow delimiter
|
||||
(rainbow-delimiters-base-error-face (:foreground error-red :weight 'bold))
|
||||
(rainbow-delimiters-base-face (:foreground fg))
|
||||
(rainbow-delimiters-depth-1-face (:foreground medium-gray-blue))
|
||||
(rainbow-delimiters-depth-2-face (:foreground gray-blue))
|
||||
(rainbow-delimiters-depth-3-face (:foreground cyan))
|
||||
(rainbow-delimiters-depth-4-face (:foreground green))
|
||||
(rainbow-delimiters-depth-5-face (:foreground medium-gray-blue))
|
||||
(rainbow-delimiters-depth-6-face (:foreground gray-blue))
|
||||
(rainbow-delimiters-depth-7-face (:foreground cyan))
|
||||
(rainbow-delimiters-depth-8-face (:foreground green))
|
||||
(rainbow-delimiters-depth-9-face (:foreground medium-gray-blue))
|
||||
(rainbow-delimiters-mismatched-face (:foreground error-red :weight 'bold))
|
||||
(rainbow-delimiters-unmatched-face (:foreground error-red :weight 'bold))
|
||||
|
||||
;; Mode-line
|
||||
(mode-line (:foreground fg
|
||||
:background dark-gray
|
||||
:box (:line-width 4 :color dark-gray)))
|
||||
(mode-line-inactive (:foreground medium-gray
|
||||
:background alt-bg
|
||||
:box (:line-width 4 :color alt-bg)))
|
||||
|
||||
;; Tab-bar
|
||||
(tab-bar (:foreground medium-gray
|
||||
:background dark-gray
|
||||
:box (:line-width 4 :color dark-gray)))
|
||||
(tab-bar-tab (:foreground fg))
|
||||
(tab-bar-tab-group-current (:foreground fg :weight 'bold :underline t))
|
||||
(tab-bar-tab-inactive (:foreground medium-gray))
|
||||
(tab-bar-tab-ungrouped (:foreground medium-gray))
|
||||
(tab-bar-tab-group-inactive (:foreground medium-gray :underline t))
|
||||
|
||||
;; Font lock
|
||||
(font-lock-builtin-face (:foreground gray-blue))
|
||||
(font-lock-comment-face (:foreground medium-gray))
|
||||
(font-lock-comment-delimiter-face (:foreground medium-gray))
|
||||
(font-lock-constant-face (:foreground medium-gray-blue))
|
||||
(font-lock-doc-face (:foreground light-gray))
|
||||
(font-lock-doc-markup-face (:foreground blue))
|
||||
(font-lock-doc-string-face (:foreground medium-gray-blue))
|
||||
(font-lock-function-name-face (:foreground cyan))
|
||||
(font-lock-keyword-face (:foreground gray-blue :weight 'bold))
|
||||
(font-lock-preprocessor-face (:foreground medium-gray-blue))
|
||||
(font-lock-reference-face (:foreground blue))
|
||||
(font-lock-string-face (:foreground green))
|
||||
(font-lock-type-face (:foreground white :weight 'bold))
|
||||
(font-lock-number-face (:foreground red))
|
||||
(font-lock-variable-name-face (:foreground white))
|
||||
(font-lock-warning-face (:foreground warning-orange))
|
||||
|
||||
;; Highlight number
|
||||
(highlight-numbers-number (:foreground red))
|
||||
|
||||
;; HL Todo
|
||||
(hl-todo (:foreground yellow :weight 'bold))
|
||||
|
||||
;; Treesitter
|
||||
(tree-sitter-hl-face:attribute (:foreground white))
|
||||
(tree-sitter-hl-face:comment (:foreground medium-gray))
|
||||
(tree-sitter-hl-face:constant (:foreground white))
|
||||
(tree-sitter-hl-face:constant.builtin (:foreground red))
|
||||
(tree-sitter-hl-face:constructor (:foreground white))
|
||||
(tree-sitter-hl-face:doc (:foreground light-gray))
|
||||
(tree-sitter-hl-face:escape (:foreground medium-gray-blue))
|
||||
(tree-sitter-hl-face:function (:foreground cyan))
|
||||
(tree-sitter-hl-face:function.builtin (:foreground cyan))
|
||||
(tree-sitter-hl-face:function.call (:foreground cyan))
|
||||
(tree-sitter-hl-face:function.macro (:foreground cyan))
|
||||
(tree-sitter-hl-face:function.special (:foreground cyan))
|
||||
(tree-sitter-hl-face:keyword (:foreground gray-blue :weight 'bold))
|
||||
(tree-sitter-hl-face:label (:foreground white))
|
||||
(tree-sitter-hl-face:method (:foreground cyan))
|
||||
(tree-sitter-hl-face:method.call (:foreground cyan))
|
||||
(tree-sitter-hl-face:number (:foreground red))
|
||||
(tree-sitter-hl-face:operator (:foreground white))
|
||||
(tree-sitter-hl-face:property (:foreground white))
|
||||
(tree-sitter-hl-face:property.definition (:foreground white))
|
||||
(tree-sitter-hl-face:punctuation (:foreground white))
|
||||
(tree-sitter-hl-face:punctuation.bracket (:foreground white))
|
||||
(tree-sitter-hl-face:punctuation.delimiter (:foreground white))
|
||||
(tree-sitter-hl-face:punctuation.special (:foreground medium-gray))
|
||||
(tree-sitter-hl-face:string (:foreground green))
|
||||
(tree-sitter-hl-face:string.special (:foreground medium-gray-blue))
|
||||
(tree-sitter-hl-face:tag (:foreground pale-purple))
|
||||
(tree-sitter-hl-face:type (:foreground white))
|
||||
(tree-sitter-hl-face:type.argument (:foreground white))
|
||||
(tree-sitter-hl-face:type.builtin (:foreground white))
|
||||
(tree-sitter-hl-face:type.parameter (:foreground white))
|
||||
(tree-sitter-hl-face:type.super (:foreground white))
|
||||
(tree-sitter-hl-face:variable (:foreground white))
|
||||
(tree-sitter-hl-face:variable.builtin (:foreground white))
|
||||
(tree-sitter-hl-face:variable.parameter (:foreground white))
|
||||
(tree-sitter-hl-face:variable.special (:foreground white))
|
||||
|
||||
;; Git
|
||||
(git-commit-summary (:foreground white))
|
||||
(git-commit-overlong-summary (:foreground error-red))
|
||||
|
||||
;; Magit
|
||||
(magit-branch (:foreground cyan))
|
||||
(magit-diff-hunk-header (:background alt-bg))
|
||||
(magit-diff-file-header (:background alt-bg))
|
||||
(magit-log-sha1 (:foreground red))
|
||||
(magit-log-author (:foreground green))
|
||||
(magit-diffstat-added (:foreground sign-add))
|
||||
(magit-diffstat-removed (:foreground sign-delete))
|
||||
(magit-diff-added (:background magit-green))
|
||||
(magit-diff-removed (:background magit-red))
|
||||
(magit-diff-added-highlight (:background magit-light-green))
|
||||
(magit-diff-removed-highlight (:background magit-light-red))
|
||||
(magit-bisect-bad (:inherit 'error))
|
||||
(magit-bisect-good (:inherit 'success))
|
||||
(magit-bisect-skip (:inherit 'warning))
|
||||
(magit-blame-date (:foreground blue))
|
||||
(magit-blame-dimmed (:inherit 'shadow))
|
||||
(magit-blame-hash (:foreground orange))
|
||||
(magit-blame-heading (:background alt-bg :extend t))
|
||||
(magit-blame-highlight (:foreground yellow))
|
||||
(magit-blame-margin (:foreground medium-gray-blue))
|
||||
(magit-blame-name (:foreground magenta))
|
||||
(magit-blame-summary (:foreground cyan))
|
||||
(magit-branch--local (:foreground blue))
|
||||
(magit-branch-remote (:foreground magenta))
|
||||
(magit-branch-remote-head (:foreground magenta :box t))
|
||||
(magit-branch-upstream (:inherit 'bold))
|
||||
(magit-branch-warning (:inherit 'warning))
|
||||
(magit-cherry-equivalent (:background alt-bg :foreground magenta))
|
||||
(magit-cherry-unmatched (:background alt-bg :foreground cyan))
|
||||
|
||||
;; git-gutter
|
||||
(git-gutter:added (:foreground sign-add))
|
||||
(git-gutter:deleted (:foreground sign-delete))
|
||||
(git-gutter:modified (:foreground sign-change))
|
||||
|
||||
;; isearch (and lazy-highlight)
|
||||
(lazy-highlight (:background 'unspecified :foreground orange))
|
||||
(isearch (:background 'unspecified :foreground orange :weight 'bold))
|
||||
(isearch-group-1 (:foreground fg :background magenta))
|
||||
(isearch-group-2 (:foreground fg :background purple))
|
||||
(isearch-fail (:background error-red :foreground fg))
|
||||
|
||||
;; Anzu
|
||||
(anzu-match-1 (:foreground orange))
|
||||
(anzu-match-2 (:foreground magenta))
|
||||
(anzu-match-3 (:foreground purple))
|
||||
(anzu-mode-line (:foreground orange))
|
||||
(anzu-mode-line-no-match (:foreground red))
|
||||
(anzu-replace-highlight (:foreground orange :weight 'bold))
|
||||
(anzu-replace-to (:foreground yellow))
|
||||
|
||||
;; Vertico
|
||||
(vertico-current (:inherit 'highlight))
|
||||
(vertico-group-title (:foreground medium-gray :weight 'bold))
|
||||
|
||||
;; Consult
|
||||
(consult-line-number-prefix (:inherit 'line-number))
|
||||
(consult-line-number-wrapped (:foreground gray-blue))
|
||||
|
||||
;; Marginalia
|
||||
(marginalia-documentation (:foreground medium-gray))
|
||||
(marginalia-file-name (:foreground medium-gray))
|
||||
|
||||
;; Orderless
|
||||
(orderless-match-face-0 (:foreground orange :weight 'bold))
|
||||
(orderless-match-face-1 (:foreground blue :weight 'bold))
|
||||
(orderless-match-face-2 (:foreground magenta :weight 'bold))
|
||||
(orderless-match-face-3 (:foreground light-green :weight 'bold))
|
||||
|
||||
;; Corfu
|
||||
(corfu-current (:inherit 'highlight))
|
||||
(corfu-bar (:background medium-gray))
|
||||
(corfu-border (:background medium-gray))
|
||||
(corfu-default (:background alt-bg))
|
||||
(corfu-annotations (:foreground medium-gray))
|
||||
(corfu-deprecated (:foreground medium-gray :strike-through t))
|
||||
(corfu-echo (:foreground medium-gray))
|
||||
|
||||
;; Company (just for compatibility ... use Corfu instead)
|
||||
(company-tooltip (:background alt-bg))
|
||||
(company-tooltip-annotation (:background alt-bg))
|
||||
(company-tooltip-annotation-selection (:background dark-gray))
|
||||
(company-tooltip-selection (:background dark-gray))
|
||||
|
||||
;; Autocomplete partially typed field
|
||||
(company-tooltip-common-selection (:background 'unspecified
|
||||
:foreground orange))
|
||||
(company-tooltip-common (:background 'unspecified
|
||||
:foreground orange))
|
||||
|
||||
(company-scrollbar-fg (:background alt-bg))
|
||||
(company-scrollbar-bg (:background medium-gray))
|
||||
(company-preview (:background 'unspecified
|
||||
:foreground green))
|
||||
(company-preview-common (:background 'unspecified
|
||||
:foreground green))
|
||||
|
||||
;; org-mode
|
||||
(org-default (:foreground fg))
|
||||
(org-block (:background "#111111"))
|
||||
;; (org-block (:inherit 'fixed-pitch))
|
||||
(org-level-1 (:foreground medium-gray-blue :weight 'bold))
|
||||
(org-level-2 (:foreground gray-blue :weight 'bold))
|
||||
(org-level-3 (:foreground cyan :weight 'bold))
|
||||
(org-level-4 (:foreground green :weight 'bold))
|
||||
(org-level-5 (:foreground medium-gray-blue :weight 'bold))
|
||||
(org-level-6 (:foreground gray-blue :weight 'bold))
|
||||
(org-level-7 (:foreground cyan :weight 'bold))
|
||||
(org-level-8 (:foreground green :weight 'bold))
|
||||
(org-quote (:foreground gray-blue))
|
||||
(org-code (:foreground green))
|
||||
(org-verbatim (:foreground blue))
|
||||
(org-inline-src-block (:foreground green))
|
||||
(org-todo (:foreground red))
|
||||
(org-done (:foreground success-green))
|
||||
(org-column (:background 'unspecified))
|
||||
(org-column-title (:background 'unspecified :weight 'bold :underline t))
|
||||
(org-document-info-keyword (:foreground medium-gray-blue))
|
||||
(org-document-title (:foreground white :weight 'bold))
|
||||
(org-document-info (:foreground white :weight 'bold))
|
||||
|
||||
;; Markdown
|
||||
(markdown-header-face-1 (:weight 'bold
|
||||
:underline (:style 'line)
|
||||
:foreground medium-gray-blue :weight 'bold))
|
||||
(markdown-header-face-2 (:weight 'bold
|
||||
:underline (:style 'line)
|
||||
:foreground gray-blue :weight 'bold))
|
||||
(markdown-header-face-3 (:weight 'bold
|
||||
:underline (:style 'line)
|
||||
:foreground cyan :weight 'bold))
|
||||
(markdown-header-face-4 (:weight 'bold
|
||||
:underline (:style 'line)
|
||||
:foreground green :weight 'bold))
|
||||
(markdown-header-face-5 (:weight 'bold
|
||||
:underline (:style 'line)
|
||||
:foreground medium-gray-blue :weight 'bold))
|
||||
(markdown-header-face-6 (:weight 'bold
|
||||
:underline (:style 'line)
|
||||
:foreground gray-blue :weight 'bold))
|
||||
(markdown-header-face-7 (:weight 'bold
|
||||
:underline (:style 'line)
|
||||
:foreground cyan :weight 'bold))
|
||||
(markdown-header-face-8 (:weight 'bold
|
||||
:underline (:style 'line)
|
||||
:foreground green :weight 'bold))
|
||||
(markdown-list-face (:foreground medium-gray-blue))
|
||||
(markdown-hr-face (:foreground medium-gray :weight 'bold))
|
||||
(markdown-code-face (:background "#111111" :extend t))
|
||||
|
||||
;; Dired
|
||||
(dired-directory (:foreground blue :weight 'bold))
|
||||
(dired-ignored (:foreground gray-blue))
|
||||
(dired-header (:foreground light-gray :weight 'bold :underline t))
|
||||
|
||||
;; Flymake
|
||||
(flymake-error (:underline (:style 'wave :color error-red)))
|
||||
(flymake-warning (:underline (:style 'wave :color warning-orange)))
|
||||
(flymake-note (:underline (:style 'wave :color hint-blue)))
|
||||
|
||||
;; Flycheck
|
||||
(flycheck-error (:underline (:style 'wave :color error-red)))
|
||||
(flycheck-warning (:underline (:style 'wave :color warning-orange)))
|
||||
(flycheck-info (:underline (:style 'wave :color hint-blue)))
|
||||
(flycheck-fringe-error (:inherit 'error))
|
||||
(flycheck-fringe-warning (:inherit 'warning))
|
||||
(flycheck-fringe-info (:foreground hint-blue :weight 'bold))
|
||||
(flycheck-error-list-error (:inherit 'error))
|
||||
(flycheck-error-list-warning (:inherit 'warning))
|
||||
(flycheck-error-list-info (:foreground hint-blue :weight 'bold))
|
||||
|
||||
;; Compilation
|
||||
(compilation-info (:foreground hint-blue))
|
||||
|
||||
;; yasnippet
|
||||
(yas-field-highlight-face (:background nil))
|
||||
|
||||
;; diredfl
|
||||
(diredfl-compressed-file-name (:foreground gray-blue))
|
||||
(diredfl-compressed-file-suffix (:foreground gray-blue))
|
||||
(diredfl-date-time (:foreground medium-gray-blue))
|
||||
(diredfl-deletion (:strike-through t))
|
||||
(diredfl-deletion-file-name (:foreground red :strike-through t))
|
||||
(diredfl-dir-heading (:foreground yellow
|
||||
:weight 'bold
|
||||
:underline t))
|
||||
(diredfl-dir-name (:foreground cyan))
|
||||
(diredfl-dir-priv (:foreground cyan))
|
||||
(diredfl-exec-priv (:foreground green))
|
||||
(diredfl-executable-tag (:foreground green))
|
||||
(diredfl-file-name (:foreground white))
|
||||
(diredfl-file-suffix (:foreground white))
|
||||
(diredfl-flag-mark (:background gray-blue))
|
||||
(diredfl-flag-mark-line (:background gray-blue))
|
||||
(diredfl-ignored-file-name (:foreground gray))
|
||||
(diredfl-link-priv (:foreground magenta))
|
||||
(diredfl-no-priv (:foreground gray))
|
||||
(diredfl-number (:foreground red))
|
||||
(diredfl-other-priv (:foreground white))
|
||||
(diredfl-rare-priv (:foreground purple))
|
||||
(diredfl-read-priv (:foreground yellow))
|
||||
(diredfl-symlink (:foreground magenta))
|
||||
(diredfl-tagged-autofile-name (:foreground white))
|
||||
(diredfl-write-priv (:foreground red))
|
||||
|
||||
;; Treemacs
|
||||
(treemacs-directory-face (:foreground white))
|
||||
(treemacs-root-face (:foreground yellow
|
||||
:weight 'bold
|
||||
:underline t))
|
||||
(treemacs-git-added-face (:foreground green))
|
||||
(treemacs-git-commit-diff-face (:foreground blue))
|
||||
(treemacs-git-conflict-face (:foreground red))
|
||||
(treemacs-git-ignored-face (:foreground gray))
|
||||
(treemacs-git-modified-face (:foreground blue))
|
||||
(treemacs-marked-file-face (:inherit 'highlight))
|
||||
|
||||
;; nix
|
||||
(nix-builtin-face (:foreground red))
|
||||
|
||||
;; ERC
|
||||
(erc-notice-face (:foreground purple))
|
||||
(erc-timestamp-face (:foreground medium-gray-blue))
|
||||
(erc-input-face (:foreground yellow))
|
||||
(erc-my-nick-face (:foreground yellow)))
|
||||
|
||||
(custom-theme-set-variables
|
||||
'some-clown-fiesta
|
||||
`(pos-tip-foreground-color ,fg)
|
||||
`(pos-tip-background-color ,alt-bg)
|
||||
`(ansi-color-names-vector [,gray ,red ,green ,gray-blue
|
||||
,orange ,purple ,cyan ,white])))
|
||||
|
||||
(provide-theme 'some-clown-fiesta)
|
||||
|
||||
;; Local Variables:
|
||||
;; no-byte-compile: t
|
||||
;; eval: (when (fboundp 'rainbow-mode) (rainbow-mode +1))
|
||||
;; End:
|
||||
|
||||
;;; some-clown-fiesta-theme.el ends here.
|
||||
459
misc/dot-config/dunst/dunstrc
Normal file
459
misc/dot-config/dunst/dunstrc
Normal file
|
|
@ -0,0 +1,459 @@
|
|||
# See dunst(5) for all configuration options
|
||||
|
||||
[global]
|
||||
### Display ###
|
||||
|
||||
# Which monitor should the notifications be displayed on.
|
||||
monitor = 0
|
||||
|
||||
# Display notification on focused monitor. Possible modes are:
|
||||
# mouse: follow mouse pointer
|
||||
# keyboard: follow window with keyboard focus
|
||||
# none: don't follow anything
|
||||
#
|
||||
# "keyboard" needs a window manager that exports the
|
||||
# _NET_ACTIVE_WINDOW property.
|
||||
# This should be the case for almost all modern window managers.
|
||||
#
|
||||
# If this option is set to mouse or keyboard, the monitor option
|
||||
# will be ignored.
|
||||
follow = mouse
|
||||
|
||||
### Geometry ###
|
||||
|
||||
# dynamic width from 0 to 300
|
||||
# width = (0, 300)
|
||||
# constant width of 300
|
||||
width = 300
|
||||
|
||||
# The maximum height of a single notification, excluding the frame.
|
||||
height = 300
|
||||
|
||||
# Position the notification in the top right corner
|
||||
origin = top-right
|
||||
|
||||
# Offset from the origin
|
||||
offset = 10x10
|
||||
|
||||
# Scale factor. It is auto-detected if value is 0.
|
||||
scale = 0
|
||||
|
||||
# Maximum number of notification (0 means no limit)
|
||||
notification_limit = 20
|
||||
|
||||
### Progress bar ###
|
||||
|
||||
# Turn on the progess bar. It appears when a progress hint is passed with
|
||||
# for example dunstify -h int:value:12
|
||||
progress_bar = true
|
||||
|
||||
# Set the progress bar height. This includes the frame, so make sure
|
||||
# it's at least twice as big as the frame width.
|
||||
progress_bar_height = 10
|
||||
|
||||
# Set the frame width of the progress bar
|
||||
progress_bar_frame_width = 1
|
||||
|
||||
# Set the minimum width for the progress bar
|
||||
progress_bar_min_width = 150
|
||||
|
||||
# Set the maximum width for the progress bar
|
||||
progress_bar_max_width = 300
|
||||
|
||||
# Corner radius for the progress bar. 0 disables rounded corners.
|
||||
progress_bar_corner_radius = 0
|
||||
|
||||
# Corner radius for the icon image.
|
||||
icon_corner_radius = 0
|
||||
|
||||
# Show how many messages are currently hidden (because of
|
||||
# notification_limit).
|
||||
indicate_hidden = yes
|
||||
|
||||
# The transparency of the window. Range: [0; 100].
|
||||
# This option will only work if a compositing window manager is
|
||||
# present (e.g. xcompmgr, compiz, etc.). (X11 only)
|
||||
transparency = 0.7
|
||||
|
||||
# Draw a line of "separator_height" pixel height between two
|
||||
# notifications.
|
||||
# Set to 0 to disable.
|
||||
# If gap_size is greater than 0, this setting will be ignored.
|
||||
separator_height = 2
|
||||
|
||||
# Padding between text and separator.
|
||||
padding = 8
|
||||
|
||||
# Horizontal padding.
|
||||
horizontal_padding = 8
|
||||
|
||||
# Padding between text and icon.
|
||||
text_icon_padding = 0
|
||||
|
||||
# Defines width in pixels of frame around the notification window.
|
||||
# Set to 0 to disable.
|
||||
frame_width = 3
|
||||
|
||||
# Defines color of the frame around the notification window.
|
||||
frame_color = "#a89984"
|
||||
|
||||
# Size of gap to display between notifications - requires a compositor.
|
||||
# If value is greater than 0, separator_height will be ignored and a border
|
||||
# of size frame_width will be drawn around each notification instead.
|
||||
# Click events on gaps do not currently propagate to applications below.
|
||||
gap_size = 0
|
||||
|
||||
# Define a color for the separator.
|
||||
# possible values are:
|
||||
# * auto: dunst tries to find a color fitting to the background;
|
||||
# * foreground: use the same color as the foreground;
|
||||
# * frame: use the same color as the frame;
|
||||
# * anything else will be interpreted as a X color.
|
||||
separator_color = frame
|
||||
|
||||
# Sort messages by urgency.
|
||||
sort = yes
|
||||
|
||||
# Don't remove messages, if the user is idle (no mouse or keyboard input)
|
||||
# for longer than idle_threshold seconds.
|
||||
# Set to 0 to disable.
|
||||
# A client can set the 'transient' hint to bypass this. See the rules
|
||||
# section for how to disable this if necessary
|
||||
# idle_threshold = 120
|
||||
|
||||
### Text ###
|
||||
|
||||
font = FiraCode, Symbols Nerd Font
|
||||
|
||||
# The spacing between lines. If the height is smaller than the
|
||||
# font height, it will get raised to the font height.
|
||||
line_height = 0
|
||||
|
||||
# Possible values are:
|
||||
# full: Allow a small subset of html markup in notifications:
|
||||
# <b>bold</b>
|
||||
# <i>italic</i>
|
||||
# <s>strikethrough</s>
|
||||
# <u>underline</u>
|
||||
#
|
||||
# For a complete reference see
|
||||
# <https://docs.gtk.org/Pango/pango_markup.html>.
|
||||
#
|
||||
# strip: This setting is provided for compatibility with some broken
|
||||
# clients that send markup even though it's not enabled on the
|
||||
# server. Dunst will try to strip the markup but the parsing is
|
||||
# simplistic so using this option outside of matching rules for
|
||||
# specific applications *IS GREATLY DISCOURAGED*.
|
||||
#
|
||||
# no: Disable markup parsing, incoming notifications will be treated as
|
||||
# plain text. Dunst will not advertise that it has the body-markup
|
||||
# capability if this is set as a global setting.
|
||||
#
|
||||
# It's important to note that markup inside the format option will be parsed
|
||||
# regardless of what this is set to.
|
||||
markup = full
|
||||
|
||||
# The format of the message. Possible variables are:
|
||||
# %a appname
|
||||
# %s summary
|
||||
# %b body
|
||||
# %i iconname (including its path)
|
||||
# %I iconname (without its path)
|
||||
# %p progress value if set ([ 0%] to [100%]) or nothing
|
||||
# %n progress value if set without any extra characters
|
||||
# %% Literal %
|
||||
# Markup is allowed
|
||||
format = "<b>%s</b>\n%b"
|
||||
|
||||
# Alignment of message text.
|
||||
# Possible values are "left", "center" and "right".
|
||||
alignment = left
|
||||
|
||||
# Vertical alignment of message text and icon.
|
||||
# Possible values are "top", "center" and "bottom".
|
||||
vertical_alignment = center
|
||||
|
||||
# Show age of message if message is older than show_age_threshold
|
||||
# seconds.
|
||||
# Set to -1 to disable.
|
||||
show_age_threshold = 60
|
||||
|
||||
# Specify where to make an ellipsis in long lines.
|
||||
# Possible values are "start", "middle" and "end".
|
||||
ellipsize = middle
|
||||
|
||||
# Ignore newlines '\n' in notifications.
|
||||
ignore_newline = no
|
||||
|
||||
# Stack together notifications with the same content
|
||||
stack_duplicates = true
|
||||
|
||||
# Hide the count of stacked notifications with the same content
|
||||
hide_duplicate_count = false
|
||||
|
||||
# Display indicators for URLs (U) and actions (A).
|
||||
show_indicators = yes
|
||||
|
||||
### Icons ###
|
||||
|
||||
# Recursive icon lookup. You can set a single theme, instead of having to
|
||||
# define all lookup paths.
|
||||
enable_recursive_icon_lookup = true
|
||||
|
||||
# Set icon theme (only used for recursive icon lookup)
|
||||
icon_theme = Adwaita
|
||||
# You can also set multiple icon themes, with the leftmost one being used first.
|
||||
# icon_theme = "Adwaita, breeze"
|
||||
|
||||
# Align icons left/right/top/off
|
||||
icon_position = left
|
||||
|
||||
# Scale small icons up to this size, set to 0 to disable. Helpful
|
||||
# for e.g. small files or high-dpi screens. In case of conflict,
|
||||
# max_icon_size takes precedence over this.
|
||||
min_icon_size = 32
|
||||
|
||||
# Scale larger icons down to this size, set to 0 to disable
|
||||
max_icon_size = 64
|
||||
|
||||
# Paths to default icons (only neccesary when not using recursive icon lookup)
|
||||
icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/
|
||||
|
||||
### History ###
|
||||
|
||||
# Should a notification popped up from history be sticky or timeout
|
||||
# as if it would normally do.
|
||||
sticky_history = yes
|
||||
|
||||
# Maximum amount of notifications kept in history
|
||||
history_length = 20
|
||||
|
||||
### Misc/Advanced ###
|
||||
|
||||
# dmenu path.
|
||||
dmenu = /usr/bin/dmenu -p dunst:
|
||||
|
||||
# Browser for opening urls in context menu.
|
||||
browser = /usr/bin/xdg-open
|
||||
|
||||
# Always run rule-defined scripts, even if the notification is suppressed
|
||||
always_run_script = true
|
||||
|
||||
# Define the title of the windows spawned by dunst
|
||||
title = Dunst
|
||||
|
||||
# Define the class of the windows spawned by dunst
|
||||
class = Dunst
|
||||
|
||||
# Define the corner radius of the notification window
|
||||
# in pixel size. If the radius is 0, you have no rounded
|
||||
# corners.
|
||||
# The radius will be automatically lowered if it exceeds half of the
|
||||
# notification height to avoid clipping text and/or icons.
|
||||
corner_radius = 0
|
||||
|
||||
# Ignore the dbus closeNotification message.
|
||||
# Useful to enforce the timeout set by dunst configuration. Without this
|
||||
# parameter, an application may close the notification sent before the
|
||||
# user defined timeout.
|
||||
ignore_dbusclose = false
|
||||
|
||||
### Wayland ###
|
||||
# These settings are Wayland-specific. They have no effect when using X11
|
||||
|
||||
# Uncomment this if you want to let notications appear under fullscreen
|
||||
# applications (default: overlay)
|
||||
# layer = top
|
||||
|
||||
# Set this to true to use X11 output on Wayland.
|
||||
force_xwayland = false
|
||||
|
||||
### Legacy
|
||||
|
||||
# Use the Xinerama extension instead of RandR for multi-monitor support.
|
||||
# This setting is provided for compatibility with older nVidia drivers that
|
||||
# do not support RandR and using it on systems that support RandR is highly
|
||||
# discouraged.
|
||||
#
|
||||
# By enabling this setting dunst will not be able to detect when a monitor
|
||||
# is connected or disconnected which might break follow mode if the screen
|
||||
# layout changes.
|
||||
force_xinerama = false
|
||||
|
||||
### mouse
|
||||
|
||||
# Defines list of actions for each mouse event
|
||||
# Possible values are:
|
||||
# * none: Don't do anything.
|
||||
# * do_action: Invoke the action determined by the action_name rule. If there is no
|
||||
# such action, open the context menu.
|
||||
# * open_url: If the notification has exactly one url, open it. If there are multiple
|
||||
# ones, open the context menu.
|
||||
# * close_current: Close current notification.
|
||||
# * close_all: Close all notifications.
|
||||
# * context: Open context menu for the notification.
|
||||
# * context_all: Open context menu for all notifications.
|
||||
# These values can be strung together for each mouse event, and
|
||||
# will be executed in sequence.
|
||||
mouse_left_click = close_current
|
||||
mouse_middle_click = do_action, close_current
|
||||
mouse_right_click = close_all
|
||||
|
||||
# Experimental features that may or may not work correctly. Do not expect them
|
||||
# to have a consistent behaviour across releases.
|
||||
[experimental]
|
||||
# Calculate the dpi to use on a per-monitor basis.
|
||||
# If this setting is enabled the Xft.dpi value will be ignored and instead
|
||||
# dunst will attempt to calculate an appropriate dpi value for each monitor
|
||||
# using the resolution and physical size. This might be useful in setups
|
||||
# where there are multiple screens with very different dpi values.
|
||||
per_monitor_dpi = false
|
||||
|
||||
|
||||
[urgency_low]
|
||||
# IMPORTANT: colors have to be defined in quotation marks.
|
||||
# Otherwise the "#" and following would be interpreted as a comment.
|
||||
background = "#222222"
|
||||
foreground = "#888888"
|
||||
timeout = 10
|
||||
# Icon for notifications with low urgency, uncomment to enable
|
||||
#default_icon = /path/to/icon
|
||||
|
||||
[urgency_normal]
|
||||
background = "#665c5499"
|
||||
foreground = "#fbf1c7"
|
||||
timeout = 10
|
||||
# Icon for notifications with normal urgency, uncomment to enable
|
||||
#default_icon = /path/to/icon
|
||||
|
||||
[urgency_critical]
|
||||
background = "#900000"
|
||||
foreground = "#ffffff"
|
||||
frame_color = "#ff0000"
|
||||
timeout = 0
|
||||
# Icon for notifications with critical urgency, uncomment to enable
|
||||
#default_icon = /path/to/icon
|
||||
|
||||
# Every section that isn't one of the above is interpreted as a rules to
|
||||
# override settings for certain messages.
|
||||
#
|
||||
# Messages can be matched by
|
||||
# appname (discouraged, see desktop_entry)
|
||||
# body
|
||||
# category
|
||||
# desktop_entry
|
||||
# icon
|
||||
# match_transient
|
||||
# msg_urgency
|
||||
# stack_tag
|
||||
# summary
|
||||
#
|
||||
# and you can override the
|
||||
# background
|
||||
# foreground
|
||||
# format
|
||||
# frame_color
|
||||
# fullscreen
|
||||
# new_icon
|
||||
# set_stack_tag
|
||||
# set_transient
|
||||
# set_category
|
||||
# timeout
|
||||
# urgency
|
||||
# icon_position
|
||||
# skip_display
|
||||
# history_ignore
|
||||
# action_name
|
||||
# word_wrap
|
||||
# ellipsize
|
||||
# alignment
|
||||
# hide_text
|
||||
#
|
||||
# Shell-like globbing will get expanded.
|
||||
#
|
||||
# Instead of the appname filter, it's recommended to use the desktop_entry filter.
|
||||
# GLib based applications export their desktop-entry name. In comparison to the appname,
|
||||
# the desktop-entry won't get localized.
|
||||
#
|
||||
# SCRIPTING
|
||||
# You can specify a script that gets run when the rule matches by
|
||||
# setting the "script" option.
|
||||
# The script will be called as follows:
|
||||
# script appname summary body icon urgency
|
||||
# where urgency can be "LOW", "NORMAL" or "CRITICAL".
|
||||
#
|
||||
# NOTE: It might be helpful to run dunst -print in a terminal in order
|
||||
# to find fitting options for rules.
|
||||
|
||||
# Disable the transient hint so that idle_threshold cannot be bypassed from the
|
||||
# client
|
||||
#[transient_disable]
|
||||
# match_transient = yes
|
||||
# set_transient = no
|
||||
#
|
||||
# Make the handling of transient notifications more strict by making them not
|
||||
# be placed in history.
|
||||
#[transient_history_ignore]
|
||||
# match_transient = yes
|
||||
# history_ignore = yes
|
||||
|
||||
# fullscreen values
|
||||
# show: show the notifications, regardless if there is a fullscreen window opened
|
||||
# delay: displays the new notification, if there is no fullscreen window active
|
||||
# If the notification is already drawn, it won't get undrawn.
|
||||
# pushback: same as delay, but when switching into fullscreen, the notification will get
|
||||
# withdrawn from screen again and will get delayed like a new notification
|
||||
#[fullscreen_delay_everything]
|
||||
# fullscreen = delay
|
||||
#[fullscreen_show_critical]
|
||||
# msg_urgency = critical
|
||||
# fullscreen = show
|
||||
|
||||
#[espeak]
|
||||
# summary = "*"
|
||||
# script = dunst_espeak.sh
|
||||
|
||||
#[script-test]
|
||||
# summary = "*script*"
|
||||
# script = dunst_test.sh
|
||||
|
||||
#[ignore]
|
||||
# # This notification will not be displayed
|
||||
# summary = "foobar"
|
||||
# skip_display = true
|
||||
|
||||
#[history-ignore]
|
||||
# # This notification will not be saved in history
|
||||
# summary = "foobar"
|
||||
# history_ignore = yes
|
||||
|
||||
#[skip-display]
|
||||
# # This notification will not be displayed, but will be included in the history
|
||||
# summary = "foobar"
|
||||
# skip_display = yes
|
||||
|
||||
#[signed_on]
|
||||
# appname = Pidgin
|
||||
# summary = "*signed on*"
|
||||
# urgency = low
|
||||
#
|
||||
#[signed_off]
|
||||
# appname = Pidgin
|
||||
# summary = *signed off*
|
||||
# urgency = low
|
||||
#
|
||||
#[says]
|
||||
# appname = Pidgin
|
||||
# summary = *says*
|
||||
# urgency = critical
|
||||
#
|
||||
#[twitter]
|
||||
# appname = Pidgin
|
||||
# summary = *twitter.com*
|
||||
# urgency = normal
|
||||
#
|
||||
#[stack-volumes]
|
||||
# appname = "some_volume_notifiers"
|
||||
# set_stack_tag = "volume"
|
||||
#
|
||||
# vim: ft=cfg
|
||||
27
misc/dot-config/fcitx5/conf/classicui.conf
Normal file
27
misc/dot-config/fcitx5/conf/classicui.conf
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
# Vertical Candidate List
|
||||
Vertical Candidate List=False
|
||||
# Use Per Screen DPI
|
||||
PerScreenDPI=True
|
||||
# Use mouse wheel to go to prev or next page
|
||||
WheelForPaging=True
|
||||
# Font
|
||||
Font="Sans 15"
|
||||
# Menu Font
|
||||
MenuFont="Sans 15"
|
||||
# Tray Font
|
||||
TrayFont="Sans Bold 15"
|
||||
# Tray Label Outline Color
|
||||
TrayOutlineColor=#000000
|
||||
# Tray Label Text Color
|
||||
TrayTextColor=#ffffff
|
||||
# Prefer Text Icon
|
||||
PreferTextIcon=False
|
||||
# Show Layout Name In Icon
|
||||
ShowLayoutNameInIcon=True
|
||||
# Use input method language to display text
|
||||
UseInputMethodLangaugeToDisplayText=True
|
||||
# Theme
|
||||
Theme=vince
|
||||
# Force font DPI on Wayland
|
||||
ForceWaylandDPI=0
|
||||
|
||||
38
misc/dot-config/foot/foot.ini
Normal file
38
misc/dot-config/foot/foot.ini
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
font=FiraCode:size=15,Symbols Nerd Font Mono:size=15
|
||||
bold-text-in-bright=palette-based
|
||||
|
||||
[colors]
|
||||
alpha=0.8
|
||||
background=000000
|
||||
foreground=ebdbb2
|
||||
|
||||
# Normal/regular colors (color palette 0-7)
|
||||
regular0=282828 # black
|
||||
regular1=cc241d # red
|
||||
regular2=98971a # green
|
||||
regular3=d79921 # yellow
|
||||
regular4=458588 # blue
|
||||
regular5=b16286 # magenta
|
||||
regular6=689d6a # cyan
|
||||
regular7=a89984 # white
|
||||
|
||||
# Same as above
|
||||
dim0=282828 # black
|
||||
dim1=cc241d # red
|
||||
dim2=98971a # green
|
||||
dim3=d79921 # yellow
|
||||
dim4=458588 # blue
|
||||
dim5=b16286 # magenta
|
||||
dim6=689d6a # cyan
|
||||
dim7=a89984 # white
|
||||
|
||||
# Bright colors (color palette 8-15)
|
||||
bright0=928374 # bright black
|
||||
bright1=fb4934 # bright red
|
||||
bright2=b8bb26 # bright green
|
||||
bright3=fabd2f # bright yellow
|
||||
bright4=83a598 # bright blue
|
||||
bright5=d3869b # bright magenta
|
||||
bright6=8ec07c # bright cyan
|
||||
bright7=ebdbb2 # bright white
|
||||
|
||||
0
misc/dot-config/git/.gitignore
vendored
Normal file
0
misc/dot-config/git/.gitignore
vendored
Normal file
17
misc/dot-config/gtk-2.0/gtkrc-2.0
Normal file
17
misc/dot-config/gtk-2.0/gtkrc-2.0
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
# DO NOT EDIT! This file will be overwritten by LXAppearance.
|
||||
# Any customization should be done in ~/.gtkrc-2.0.mine instead.
|
||||
|
||||
include "/home/vince/.gtkrc-2.0.mine"
|
||||
gtk-theme-name="gruvbox-dark"
|
||||
gtk-icon-theme-name="hicolor"
|
||||
gtk-font-name="Sans 10"
|
||||
gtk-cursor-theme-size=0
|
||||
gtk-toolbar-style=GTK_TOOLBAR_BOTH
|
||||
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
|
||||
gtk-button-images=1
|
||||
gtk-menu-images=1
|
||||
gtk-enable-event-sounds=1
|
||||
gtk-enable-input-feedback-sounds=1
|
||||
gtk-xft-antialias=1
|
||||
gtk-xft-hinting=1
|
||||
gtk-xft-hintstyle="hintfull"
|
||||
14
misc/dot-config/gtk-3.0/settings.ini
Normal file
14
misc/dot-config/gtk-3.0/settings.ini
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
[Settings]
|
||||
gtk-application-prefer-dark-theme=1
|
||||
gtk-icon-theme-name=hicolor
|
||||
gtk-font-name=Sans 10
|
||||
gtk-cursor-theme-size=0
|
||||
gtk-toolbar-style=GTK_TOOLBAR_BOTH
|
||||
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
|
||||
gtk-button-images=1
|
||||
gtk-menu-images=1
|
||||
gtk-enable-event-sounds=1
|
||||
gtk-enable-input-feedback-sounds=1
|
||||
gtk-xft-antialias=1
|
||||
gtk-xft-hinting=1
|
||||
gtk-xft-hintstyle=hintfull
|
||||
63
misc/dot-config/htop/htoprc
Normal file
63
misc/dot-config/htop/htoprc
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
# Beware! This file is rewritten by htop when settings are changed in the interface.
|
||||
# The parser is also very primitive, and not human-friendly.
|
||||
htop_version=3.3.0-dev
|
||||
config_reader_min_version=3
|
||||
fields=0 48 17 18 38 39 40 2 46 47 49 1
|
||||
hide_kernel_threads=1
|
||||
hide_userland_threads=1
|
||||
hide_running_in_container=0
|
||||
shadow_other_users=0
|
||||
show_thread_names=1
|
||||
show_program_path=0
|
||||
highlight_base_name=1
|
||||
highlight_deleted_exe=1
|
||||
shadow_distribution_path_prefix=0
|
||||
highlight_megabytes=1
|
||||
highlight_threads=1
|
||||
highlight_changes=1
|
||||
highlight_changes_delay_secs=5
|
||||
find_comm_in_cmdline=1
|
||||
strip_exe_from_cmdline=1
|
||||
show_merged_command=0
|
||||
header_margin=1
|
||||
screen_tabs=1
|
||||
detailed_cpu_time=0
|
||||
cpu_count_from_one=0
|
||||
show_cpu_usage=1
|
||||
show_cpu_frequency=0
|
||||
show_cpu_temperature=0
|
||||
degree_fahrenheit=0
|
||||
update_process_names=0
|
||||
account_guest_in_cpu_meter=0
|
||||
color_scheme=0
|
||||
enable_mouse=1
|
||||
delay=5
|
||||
hide_function_bar=0
|
||||
header_layout=two_50_50
|
||||
column_meters_0=LeftCPUs2 Memory Swap
|
||||
column_meter_modes_0=1 1 1
|
||||
column_meters_1=RightCPUs2 Tasks LoadAverage Uptime
|
||||
column_meter_modes_1=1 2 2 2
|
||||
tree_view=1
|
||||
sort_key=46
|
||||
tree_sort_key=0
|
||||
sort_direction=-1
|
||||
tree_sort_direction=-1
|
||||
tree_view_always_by_pid=0
|
||||
all_branches_collapsed=0
|
||||
screen:Main=PID USER PRIORITY NICE M_VIRT M_RESIDENT M_SHARE STATE PERCENT_CPU PERCENT_MEM TIME Command
|
||||
.sort_key=PERCENT_CPU
|
||||
.tree_sort_key=PID
|
||||
.tree_view=1
|
||||
.tree_view_always_by_pid=0
|
||||
.sort_direction=-1
|
||||
.tree_sort_direction=-1
|
||||
.all_branches_collapsed=0
|
||||
screen:I/O=PID USER IO_PRIORITY IO_RATE IO_READ_RATE IO_WRITE_RATE PERCENT_SWAP_DELAY PERCENT_IO_DELAY Command
|
||||
.sort_key=IO_RATE
|
||||
.tree_sort_key=PID
|
||||
.tree_view=0
|
||||
.tree_view_always_by_pid=0
|
||||
.sort_direction=-1
|
||||
.tree_sort_direction=-1
|
||||
.all_branches_collapsed=0
|
||||
239
misc/dot-config/hypr/hyprland.conf
Normal file
239
misc/dot-config/hypr/hyprland.conf
Normal file
|
|
@ -0,0 +1,239 @@
|
|||
# See https://wiki.hyprland.org/Configuring/Monitors/
|
||||
monitor=,highrr,auto,auto
|
||||
|
||||
# Wayland related environment variables.
|
||||
env = XCURSOR_SIZE,24
|
||||
env = WLR_NO_HARDWARE_CURSORS,1
|
||||
env = TERMINAL,foot
|
||||
|
||||
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
|
||||
input {
|
||||
kb_layout = us
|
||||
kb_variant =
|
||||
kb_model =
|
||||
kb_options =
|
||||
kb_rules =
|
||||
|
||||
# Mouse settings
|
||||
follow_mouse = 1
|
||||
accel_profile = adaptive # Or else cannot move camera in games
|
||||
sensitivity = 1
|
||||
|
||||
touchpad {
|
||||
natural_scroll = yes
|
||||
}
|
||||
|
||||
repeat_delay = 300
|
||||
repeat_rate = 50
|
||||
|
||||
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
||||
}
|
||||
|
||||
general {
|
||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||
|
||||
gaps_in = 6
|
||||
gaps_out = 12
|
||||
border_size = 2
|
||||
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
|
||||
col.inactive_border = rgba(595959aa)
|
||||
|
||||
layout = master
|
||||
|
||||
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
|
||||
allow_tearing = false
|
||||
}
|
||||
|
||||
decoration {
|
||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||
|
||||
rounding = 10
|
||||
|
||||
blur {
|
||||
enabled = true
|
||||
size = 3
|
||||
passes = 1
|
||||
}
|
||||
|
||||
drop_shadow = yes
|
||||
shadow_range = 4
|
||||
shadow_render_power = 3
|
||||
col.shadow = rgba(1a1a1aee)
|
||||
}
|
||||
|
||||
animations {
|
||||
enabled = yes
|
||||
|
||||
# Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
||||
|
||||
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
|
||||
bezier = linear, 0.0, 0.0, 1.0, 1.0
|
||||
|
||||
animation = windows, 1, 7, myBezier
|
||||
animation = windowsOut, 1, 7, default, popin 80%
|
||||
animation = border, 1, 10, default
|
||||
animation = borderangle, 1, 100, linear, loop
|
||||
animation = fade, 1, 7, default
|
||||
animation = workspaces, 1, 6, default
|
||||
}
|
||||
|
||||
dwindle {
|
||||
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
||||
pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||
preserve_split = yes # you probably want this
|
||||
}
|
||||
|
||||
master {
|
||||
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
||||
new_on_top = true
|
||||
new_is_master = true
|
||||
no_gaps_when_only = true
|
||||
}
|
||||
|
||||
gestures {
|
||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||
workspace_swipe = off
|
||||
}
|
||||
|
||||
misc {
|
||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||
force_default_wallpaper = 0 # Set to 0 to disable the anime mascot wallpapers
|
||||
enable_swallow = true
|
||||
swallow_regex = ^(st|foot|footclient)$
|
||||
mouse_move_enables_dpms = true
|
||||
}
|
||||
|
||||
# Window rules
|
||||
windowrule = tile,title:^(VRChat)$
|
||||
windowrule = tile,title:^(nsxiv)$
|
||||
windowrule = rounding 0,title:^(rofi.*)$
|
||||
# windowrule = opacity 0.99,title:^(Obsidian.*)$
|
||||
|
||||
$mainMod = SUPER
|
||||
|
||||
# Program spawning hotkeys
|
||||
bind = CONTROL ALT, BACKSPACE, exec, foot -e zsh -c 'btop'
|
||||
bind = $mainMod, RETURN, exec, foot
|
||||
bind = $mainMod, W, exec, firefox
|
||||
bind = $mainMod, E, exec, foot -e zsh -c 'tmp="$(mktemp)" && command lf -last-dir-path="$tmp" "$@" && test -f "$tmp" && dir="$(command cat "$tmp")" && rm -f "$tmp" && test -d "$dir" && cd "$dir" && exec $SHELL'
|
||||
bind = $mainMod SHIFT, E, exec, emacsclient -c -a 'emacs'
|
||||
# bind = $mainMod, C, exec, emacsclient -c -a "emacs" -n --eval '(progn (set-frame-font "FiraCode Nerd Font") (cfw:open-org-calendar))'
|
||||
bind = $mainMod, C, exec, foot -e zsh -c 'khal interactive'
|
||||
bind = $mainMod, M, exec, foot -e zsh -c 'neomutt'
|
||||
|
||||
# Menu hoykeys
|
||||
bind = $mainMod, R, exec, menu-run
|
||||
|
||||
# System control keybinds
|
||||
binde = $mainMod, MINUS, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%-; notify-send -r 44 "$(wpctl get-volume @DEFAULT_AUDIO_SINK@)"
|
||||
binde = $mainMod SHIFT, MINUS, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-; notify-send -r 44 "$(wpctl get-volume @DEFAULT_AUDIO_SINK@)"
|
||||
binde = $mainMod, EQUAL, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%+; notify-send -r 44 "$(wpctl get-volume @DEFAULT_AUDIO_SINK@)"
|
||||
binde = $mainMod SHIFT, EQUAL, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+; notify-send -r 44 "$(wpctl get-volume @DEFAULT_AUDIO_SINK@)"
|
||||
binde = ,F7, exec, change-brightness up
|
||||
binde = ,XF86MonBrightnessUp, exec, change-brightness up
|
||||
binde = ,F6, exec, change-brightness down
|
||||
binde = ,XF86MonBrightnessDown, exec, change-brightness down
|
||||
bind = $mainMod, L, exec, hyprctl dispatch dpms off; swaylock -e -c 000000
|
||||
|
||||
|
||||
# Print area, screen, and all, respectively
|
||||
bind = $mainMod, P, exec, grimblast --freeze copysave area /tmp/screenshot; mv /tmp/screenshot ~/$(rofi -dmenu -l 0 -p "Screenshot filename:" < /dev/null).png
|
||||
bind = $mainMod SHIFT, P, exec, grimblast --freeze copysave output /tmp/screenshot; mv /tmp/screenshot ~/$(rofi -dmenu -l 0 -p "Screenshot filename:" < /dev/null).png
|
||||
bind = $mainMod CONTROL SHIFT, P, exec, grimblast --freeze copysave screen /tmp/screenshot; mv /tmp/screenshot ~/$(rofi -dmenu -l 0 -p "Screenshot filename:" < /dev/null).png
|
||||
|
||||
# Launch menu scripts with Super-D keychord
|
||||
bind = $mainMod, D, exec, hyprctl dispatch submap menu-submap; sleep 2; hyprctl dispatch submap reset
|
||||
submap = menu-submap
|
||||
bind = ,M, exec, menu-man
|
||||
bind = ,M, submap, reset
|
||||
bind = ,O, exec, menu-wpio sink
|
||||
bind = ,O, submap, reset
|
||||
bind = ,I, exec, menu-wpio source
|
||||
bind = ,I, submap, reset
|
||||
bind = ,L, exec, hyprmonitors menu
|
||||
bind = ,L, submap, reset
|
||||
bind = ,P, exec, rofi-pass
|
||||
bind = ,P, submap, reset
|
||||
submap = reset
|
||||
|
||||
# Hide waybar
|
||||
bind = $mainMod, B, exec, pkill -SIGUSR1 waybar
|
||||
|
||||
# Kill commands
|
||||
bind = $mainMod CONTROL SHIFT, Q, exit,
|
||||
bind = $mainMod, Q, killactive,
|
||||
|
||||
# Change gaps
|
||||
binde = $mainMod, Z, exec, hyprgaps -i 3
|
||||
binde = $mainMod, X, exec, hyprgaps -d 3
|
||||
bind = $mainMod, A, exec, hyprgaps -t
|
||||
bind = $mainMod SHIFT, A, exec, hyprgaps -r
|
||||
|
||||
# Master stack movement commands
|
||||
bind = $mainMod, J, layoutmsg, cyclenext
|
||||
bind = $mainMod SHIFT, J, layoutmsg, swapnext
|
||||
bind = $mainMod, K, layoutmsg, cycleprev
|
||||
bind = $mainMod SHIFT, K, layoutmsg, swapprev
|
||||
bind = $mainMod SHIFT, L, splitratio, +0.05
|
||||
bind = $mainMod SHIFT, H, splitratio, -0.05
|
||||
|
||||
# Changing number of masters
|
||||
bind = $mainMod, O, layoutmsg, addmaster
|
||||
bind = $mainMod SHIFT, O, layoutmsg, removemaster
|
||||
|
||||
# Change tiling direction
|
||||
bind = $mainMod, T, layoutmsg, orientationleft
|
||||
bind = $mainMod SHIFT, T, layoutmsg, orientationtop
|
||||
|
||||
# Special windows
|
||||
bind = $mainMod, F, togglefloating,
|
||||
bind = $mainMod SHIFT, F, fakefullscreen
|
||||
bind = $mainMod, S, togglespecialworkspace, magic
|
||||
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
|
||||
|
||||
# Switch workspaces with mainMod + [0-9]
|
||||
bind = $mainMod, 1, exec, hyprdwm goto 1
|
||||
bind = $mainMod, 2, exec, hyprdwm goto 2
|
||||
bind = $mainMod, 3, exec, hyprdwm goto 3
|
||||
bind = $mainMod, 4, exec, hyprdwm goto 4
|
||||
bind = $mainMod, 5, exec, hyprdwm goto 5
|
||||
bind = $mainMod, 6, exec, hyprdwm goto 6
|
||||
bind = $mainMod, 7, exec, hyprdwm goto 7
|
||||
bind = $mainMod, 8, exec, hyprdwm goto 8
|
||||
bind = $mainMod, 9, exec, hyprdwm goto 9
|
||||
bind = $mainMod, 0, exec, hyprdwm goto 10
|
||||
|
||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
bind = $mainMod SHIFT, 1, exec, hyprdwm moveto 1
|
||||
bind = $mainMod SHIFT, 2, exec, hyprdwm moveto 2
|
||||
bind = $mainMod SHIFT, 3, exec, hyprdwm moveto 3
|
||||
bind = $mainMod SHIFT, 4, exec, hyprdwm moveto 4
|
||||
bind = $mainMod SHIFT, 5, exec, hyprdwm moveto 5
|
||||
bind = $mainMod SHIFT, 6, exec, hyprdwm moveto 6
|
||||
bind = $mainMod SHIFT, 7, exec, hyprdwm moveto 7
|
||||
bind = $mainMod SHIFT, 8, exec, hyprdwm moveto 8
|
||||
bind = $mainMod SHIFT, 9, exec, hyprdwm moveto 9
|
||||
bind = $mainMod SHIFT, 9, exec, hyprdwm moveto 10
|
||||
|
||||
# Moving windows between monitors
|
||||
bind = $mainMod SHIFT, COMMA, movewindow, mon:l
|
||||
bind = $mainMod SHIFT, LEFT, movewindow, mon:l
|
||||
bind = $mainMod SHIFT, PERIOD, movewindow, mon:r
|
||||
bind = $mainMod SHIFT, RIGHT, movewindow, mon:r
|
||||
|
||||
# Moving focus between monitors
|
||||
bind = $mainMod, COMMA, exec, hyprctl dispatch focusmonitor l
|
||||
bind = $mainMod, LEFT, exec, hyprctl dispatch focusmonitor l
|
||||
bind = $mainMod, PERIOD, exec, hyprctl dispatch focusmonitor r
|
||||
bind = $mainMod, RIGHT, exec, hyprctl dispatch focusmonitor r
|
||||
|
||||
# Scroll through existing workspaces with mainMod + scroll
|
||||
bind = $mainMod, mouse_down, workspace, e+1
|
||||
bind = $mainMod, mouse_up, workspace, e-1
|
||||
|
||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
bindm = $mainMod, mouse:272, movewindow
|
||||
bindm = $mainMod, mouse:273, resizewindow
|
||||
|
||||
exec-once = startw
|
||||
|
||||
109
misc/dot-config/hyprland-autoname-workspaces/config.toml
Normal file
109
misc/dot-config/hyprland-autoname-workspaces/config.toml
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
version = "1.1.11"
|
||||
|
||||
[format]
|
||||
# Deduplicate icons if enable.
|
||||
# A superscripted counter will be added.
|
||||
# dedup = false
|
||||
# dedup_inactive_fullscreen = false # dedup more
|
||||
# window delimiter
|
||||
delim = ""
|
||||
|
||||
# available formatter:
|
||||
# {counter_sup} - superscripted count of clients on the workspace, and simple {counter}, {delim}
|
||||
# {icon}, {client}
|
||||
# workspace formatter
|
||||
workspace = "{id}:{delim}{clients}" # {id}, {delim} and {clients} are supported
|
||||
# workspace_empty = "{id}" # {id}, {delim} and {clients} are supported
|
||||
# client formatter
|
||||
# client = "{icon}"
|
||||
# client_active = "*{icon}*"
|
||||
|
||||
# deduplicate client formatter
|
||||
# client_fullscreen = "[{icon}]"
|
||||
# client_dup = "{client}{counter_sup}"
|
||||
# client_dup_fullscreen = "[{icon}]{delim}{icon}{counter_unfocused}"
|
||||
# client_dup_active = "*{icon}*{delim}{icon}{counter_unfocused}"
|
||||
|
||||
[class]
|
||||
# Add your icons mapping
|
||||
# use double quote the key and the value
|
||||
# take class name from 'hyprctl clients'
|
||||
"DEFAULT" = "{class}"
|
||||
"(?i)Kitty" = " "
|
||||
"(?i)foot" = " "
|
||||
"(?i)st" = " "
|
||||
"(?i)mpv" = " "
|
||||
"[Ff]irefox" = " "
|
||||
"(?i)slack" = " "
|
||||
"(?i)discord" = " "
|
||||
"(?i)spotify" = " "
|
||||
"(?i)chromium" = " "
|
||||
"(?i)emacs" = " "
|
||||
"(?i)steam" = " "
|
||||
"(?i)zathura" = " "
|
||||
"(?i)Anki" = " "
|
||||
"(?i)libreoffice-writer" = " "
|
||||
"(?i)blueman-manager-wrapped" = " "
|
||||
|
||||
# [class_active]
|
||||
# DEFAULT = "*{icon}*"
|
||||
# "(?i)ExampleOneTerm" = "<span foreground='red'>{icon}</span>"
|
||||
|
||||
# [initial_class]
|
||||
# "DEFAULT" = "test"
|
||||
# "(?i)Kitty" = "term"
|
||||
|
||||
# [initial_class_active]
|
||||
# "(?i)Kitty" = "*TERM*"
|
||||
|
||||
[title_in_class."(?i)kitty"]
|
||||
"(?i)neomutt" = "neomutt"
|
||||
|
||||
[title_in_class."(?i)foot"]
|
||||
"(?i)nvim" = "nvim"
|
||||
"(?i)neovim" = "neovim"
|
||||
|
||||
# regex captures support is supported
|
||||
# "emerge: (.+?/.+?)-.*" = "{match1}"
|
||||
|
||||
[title_in_class_active."(?i)firefox"]
|
||||
"(?i)twitch" = "<span color='purple'>{icon}</span>"
|
||||
|
||||
# [title_in_initial_class."(?i)kitty"]
|
||||
# "(?i)neomutt" = "neomutt"
|
||||
|
||||
# [initial_title_in_class."(?i)kitty"]
|
||||
# "(?i)neomutt" = "neomutt"
|
||||
|
||||
# [initial_title_in_initial_class."(?i)kitty"]
|
||||
# "(?i)neomutt" = "neomutt"
|
||||
|
||||
# [initial_title."(?i)kitty"]
|
||||
# "zsh" = "Zsh"
|
||||
|
||||
# [initial_title_active."(?i)kitty"]
|
||||
# "zsh" = "*Zsh*"
|
||||
|
||||
# Add your applications that need to be exclude
|
||||
# The key is the class, the value is the title.
|
||||
# You can put an empty title to exclude based on
|
||||
# class name only, "" make the job.
|
||||
[exclude]
|
||||
"" = "^$" # prevent displaying icon for empty class
|
||||
"(?i)fcitx" = ".*" # will match all title for fcitx
|
||||
"(?i)TestApp" = "" # will match all title for TestApp
|
||||
aProgram = "^$" # will match null title for aProgram
|
||||
"[Ss]team" = "^(Friends List.*)?$" # will match Steam friends list plus all popups (empty titles)
|
||||
|
||||
[workspaces_name]
|
||||
0 = "zero"
|
||||
1 = "one"
|
||||
2 = "two"
|
||||
3 = "three"
|
||||
4 = "four"
|
||||
5 = "five"
|
||||
6 = "six"
|
||||
7 = "seven"
|
||||
8 = "eight"
|
||||
9 = "nine"
|
||||
10 = "ten"
|
||||
0
misc/dot-config/ipython/.gitignore
vendored
Normal file
0
misc/dot-config/ipython/.gitignore
vendored
Normal file
9
misc/dot-config/kanshi/config
Normal file
9
misc/dot-config/kanshi/config
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
profile default {
|
||||
output eDP-1 enable position 0,0
|
||||
}
|
||||
|
||||
profile dual-monitor-main {
|
||||
output eDP-1 enable position 0,600
|
||||
output DP-3 enable mode 1920x1080@143.856003Hz position 1920,0
|
||||
}
|
||||
|
||||
4
misc/dot-config/lf/cleaner
Executable file
4
misc/dot-config/lf/cleaner
Executable file
|
|
@ -0,0 +1,4 @@
|
|||
#!/usr/bin/env sh
|
||||
|
||||
ueberzug cmd -s $UB_SOCKET -a remove -i PREVIEW
|
||||
|
||||
370
misc/dot-config/lf/icons
Normal file
370
misc/dot-config/lf/icons
Normal file
|
|
@ -0,0 +1,370 @@
|
|||
# vim:ft=conf
|
||||
|
||||
# These examples require Nerd Fonts or a compatible font to be used.
|
||||
# See https://www.nerdfonts.com for more information.
|
||||
|
||||
# default values from lf (with matching order)
|
||||
# ln l # LINK
|
||||
# or l # ORPHAN
|
||||
# tw t # STICKY_OTHER_WRITABLE
|
||||
# ow d # OTHER_WRITABLE
|
||||
# st t # STICKY
|
||||
# di d # DIR
|
||||
# pi p # FIFO
|
||||
# so s # SOCK
|
||||
# bd b # BLK
|
||||
# cd c # CHR
|
||||
# su u # SETUID
|
||||
# sg g # SETGID
|
||||
# ex x # EXEC
|
||||
# fi - # FILE
|
||||
|
||||
# file types (with matching order)
|
||||
ln # LINK
|
||||
or # ORPHAN
|
||||
tw t # STICKY_OTHER_WRITABLE
|
||||
st t # STICKY
|
||||
# ow # OTHER_WRITABLE
|
||||
# di # DIR
|
||||
# ow # OTHER_WRITABLE
|
||||
# di # DIR
|
||||
ow # OTHER_WRITABLE
|
||||
di # DIR
|
||||
pi p # FIFO
|
||||
so # SOCK
|
||||
bd b # BLK
|
||||
cd c # CHR
|
||||
su u # SETUID
|
||||
sg g # SETGID
|
||||
ex # EXEC
|
||||
fi # FILE
|
||||
|
||||
# file extensions (vim-devicons)
|
||||
*.styl
|
||||
*.sass
|
||||
*.scss
|
||||
*.htm
|
||||
*.html
|
||||
*.slim
|
||||
*.haml
|
||||
*.ejs
|
||||
*.css
|
||||
*.less
|
||||
*.md
|
||||
*.mdx
|
||||
*.markdown
|
||||
*.rmd
|
||||
*.json
|
||||
*.webmanifest
|
||||
*.js
|
||||
*.mjs
|
||||
*.jsx
|
||||
*.rb
|
||||
*.gemspec
|
||||
*.rake
|
||||
*.php
|
||||
*.py
|
||||
*.pyc
|
||||
*.pyo
|
||||
*.pyd
|
||||
*.coffee
|
||||
*.mustache
|
||||
*.hbs
|
||||
*.conf
|
||||
*.ini
|
||||
*.yml
|
||||
*.yaml
|
||||
*.toml
|
||||
*.bat
|
||||
*.mk
|
||||
*.twig
|
||||
*.cpp
|
||||
*.c++
|
||||
*.cxx
|
||||
*.cc
|
||||
*.cp
|
||||
*.c
|
||||
*.cs
|
||||
*.h
|
||||
*.hh
|
||||
*.hpp
|
||||
*.hxx
|
||||
*.hs
|
||||
*.lhs
|
||||
*.nix
|
||||
*.lua
|
||||
*.java
|
||||
*.sh
|
||||
*.fish
|
||||
*.bash
|
||||
*.zsh
|
||||
*.ksh
|
||||
*.csh
|
||||
*.awk
|
||||
*.ps1
|
||||
*.ml λ
|
||||
*.mli λ
|
||||
*.diff
|
||||
*.db
|
||||
*.sql
|
||||
*.dump
|
||||
*.clj
|
||||
*.cljc
|
||||
*.cljs
|
||||
*.edn
|
||||
*.scala
|
||||
*.go
|
||||
*.dart
|
||||
*.xul
|
||||
*.sln
|
||||
*.suo
|
||||
*.pl
|
||||
*.pm
|
||||
*.t
|
||||
*.rss
|
||||
'*.f#'
|
||||
*.fsscript
|
||||
*.fsx
|
||||
*.fs
|
||||
*.fsi
|
||||
*.rs
|
||||
*.rlib
|
||||
*.d
|
||||
*.erl
|
||||
*.hrl
|
||||
*.ex
|
||||
*.exs
|
||||
*.eex
|
||||
*.leex
|
||||
*.heex
|
||||
*.vim
|
||||
*.ai
|
||||
*.psd
|
||||
*.psb
|
||||
*.ts
|
||||
*.tsx
|
||||
*.jl
|
||||
*.pp
|
||||
*.vue
|
||||
*.elm
|
||||
*.swift
|
||||
*.xcplayground
|
||||
*.tex
|
||||
*.r
|
||||
*.rproj
|
||||
*.sol
|
||||
|
||||
# file names (vim-devicons) (case-insensitive not supported in lf)
|
||||
*gruntfile.coffee
|
||||
*gruntfile.js
|
||||
*gruntfile.ls
|
||||
*gulpfile.coffee
|
||||
*gulpfile.js
|
||||
*gulpfile.ls
|
||||
*mix.lock
|
||||
*dropbox
|
||||
*.ds_store
|
||||
*.gitconfig
|
||||
*.gitignore
|
||||
*.gitattributes
|
||||
*.gitlab-ci.yml
|
||||
*.bashrc
|
||||
*.zshrc
|
||||
*.zshenv
|
||||
*.zprofile
|
||||
*.vimrc
|
||||
*.gvimrc
|
||||
*_vimrc
|
||||
*_gvimrc
|
||||
*.bashprofile
|
||||
*favicon.ico
|
||||
*license
|
||||
*node_modules
|
||||
*react.jsx
|
||||
*procfile
|
||||
*dockerfile
|
||||
*docker-compose.yml
|
||||
*rakefile
|
||||
*config.ru
|
||||
*gemfile
|
||||
*makefile
|
||||
*cmakelists.txt
|
||||
*robots.txt
|
||||
|
||||
# file names (case-sensitive adaptations)
|
||||
*Gruntfile.coffee
|
||||
*Gruntfile.js
|
||||
*Gruntfile.ls
|
||||
*Gulpfile.coffee
|
||||
*Gulpfile.js
|
||||
*Gulpfile.ls
|
||||
*Dropbox
|
||||
*.DS_Store
|
||||
*LICENSE
|
||||
*React.jsx
|
||||
*Procfile
|
||||
*Dockerfile
|
||||
*Docker-compose.yml
|
||||
*Rakefile
|
||||
*Gemfile
|
||||
*Makefile
|
||||
*CMakeLists.txt
|
||||
|
||||
# file patterns (vim-devicons) (patterns not supported in lf)
|
||||
# .*jquery.*\.js$
|
||||
# .*angular.*\.js$
|
||||
# .*backbone.*\.js$
|
||||
# .*require.*\.js$
|
||||
# .*materialize.*\.js$
|
||||
# .*materialize.*\.css$
|
||||
# .*mootools.*\.js$
|
||||
# .*vimrc.*
|
||||
# Vagrantfile$
|
||||
|
||||
# file patterns (file name adaptations)
|
||||
*jquery.min.js
|
||||
*angular.min.js
|
||||
*backbone.min.js
|
||||
*require.min.js
|
||||
*materialize.min.js
|
||||
*materialize.min.css
|
||||
*mootools.min.js
|
||||
*vimrc
|
||||
Vagrantfile
|
||||
|
||||
# archives or compressed (extensions from dircolors defaults)
|
||||
*.tar
|
||||
*.tgz
|
||||
*.arc
|
||||
*.arj
|
||||
*.taz
|
||||
*.lha
|
||||
*.lz4
|
||||
*.lzh
|
||||
*.lzma
|
||||
*.tlz
|
||||
*.txz
|
||||
*.tzo
|
||||
*.t7z
|
||||
*.zip
|
||||
*.z
|
||||
*.dz
|
||||
*.gz
|
||||
*.lrz
|
||||
*.lz
|
||||
*.lzo
|
||||
*.xz
|
||||
*.zst
|
||||
*.tzst
|
||||
*.bz2
|
||||
*.bz
|
||||
*.tbz
|
||||
*.tbz2
|
||||
*.tz
|
||||
*.deb
|
||||
*.rpm
|
||||
*.jar
|
||||
*.war
|
||||
*.ear
|
||||
*.sar
|
||||
*.rar
|
||||
*.alz
|
||||
*.ace
|
||||
*.zoo
|
||||
*.cpio
|
||||
*.7z
|
||||
*.rz
|
||||
*.cab
|
||||
*.wim
|
||||
*.swm
|
||||
*.dwm
|
||||
*.esd
|
||||
|
||||
# image formats (extensions from dircolors defaults)
|
||||
*.gif # Lossless
|
||||
*.bmp
|
||||
*.png
|
||||
*.tiff
|
||||
*.webp
|
||||
*.jpg # Lossy
|
||||
*.jpeg
|
||||
*.mjpg
|
||||
*.mjpeg
|
||||
*.pbm
|
||||
*.pgm
|
||||
*.ppm
|
||||
*.tga
|
||||
*.xbm
|
||||
*.xpm
|
||||
*.tif
|
||||
*.svg
|
||||
*.svgz
|
||||
*.mng
|
||||
*.pcx
|
||||
|
||||
# Video formats
|
||||
*.mov
|
||||
*.mpg
|
||||
*.mpeg
|
||||
*.m2v
|
||||
*.mkv
|
||||
*.webm
|
||||
*.ogm
|
||||
*.mp4
|
||||
*.m4v
|
||||
*.mp4v
|
||||
*.vob
|
||||
*.qt
|
||||
*.nuv
|
||||
*.wmv
|
||||
*.asf
|
||||
*.rm
|
||||
*.rmvb
|
||||
*.flc
|
||||
*.avi
|
||||
*.fli
|
||||
*.flv
|
||||
*.gl
|
||||
*.dl
|
||||
*.xcf
|
||||
*.xwd
|
||||
*.yuv
|
||||
*.cgm
|
||||
*.emf
|
||||
*.ogv
|
||||
*.ogx
|
||||
|
||||
# audio formats (extensions from dircolors defaults)
|
||||
*.aac
|
||||
*.au
|
||||
*.flac
|
||||
*.m4a
|
||||
*.mid
|
||||
*.midi
|
||||
*.mka
|
||||
*.mp3
|
||||
*.mpc
|
||||
*.ogg
|
||||
*.ra
|
||||
*.wav
|
||||
*.oga
|
||||
*.opus
|
||||
*.spx
|
||||
*.xspf
|
||||
|
||||
# other formats
|
||||
*.pdf
|
||||
*.tpy
|
||||
*.iso
|
||||
*.org
|
||||
*.ovpn
|
||||
*.txt
|
||||
*.pptx
|
||||
*.docx
|
||||
*.doc
|
||||
*.odt
|
||||
*.odg
|
||||
*.csv
|
||||
*.ics
|
||||
*.typ
|
||||
|
||||
206
misc/dot-config/lf/lfrc
Normal file
206
misc/dot-config/lf/lfrc
Normal file
|
|
@ -0,0 +1,206 @@
|
|||
#!/usr/bin/env zsh
|
||||
|
||||
# https://github.com/gokcehan/lf/blob/master/doc.md
|
||||
# ^ List of all options
|
||||
|
||||
## LF VARS
|
||||
|
||||
set shellopts '-eu' # Treat undefined env vars as errors. Exit upon error.
|
||||
set ifs "\n"
|
||||
set scrolloff 10
|
||||
set icons # Use icons
|
||||
set info "size"
|
||||
set period 1 # Poll directory status every X seconds
|
||||
set sixel true
|
||||
set hiddenfiles ".*:*.aux:*.log:*.bbl:*.bcf:*.blg:*.run.xml"
|
||||
set cleaner '~/.config/lf/cleaner' # Clear preview
|
||||
set previewer '~/.config/lf/previewer' # Make preview
|
||||
set autoquit true
|
||||
set cursorpreviewfmt "" # No cursor in the directory preview pane
|
||||
# set cursoractivefmt "\033[1m"
|
||||
set drawbox true
|
||||
|
||||
## MAPPINGS
|
||||
|
||||
# LF control mappings
|
||||
map <c-r> reload
|
||||
map <c-s> set hidden!
|
||||
map <enter> shell
|
||||
|
||||
# Spawn new terminal/lf windows
|
||||
map <a-enter> $setsid -f $TERMINAL -e $SHELL >/dev/null 2>&1 &
|
||||
map <a-e> $setsid -f $TERMINAL -e $SHELL -c -i "lfcd && exec $SHELL" >/dev/null 2>&1 &
|
||||
|
||||
# Opening commands
|
||||
map l open
|
||||
map L open new_window
|
||||
map o $mimeopen --ask "$f"
|
||||
|
||||
# CRUD commands
|
||||
# map D delete
|
||||
map D push :delete?<space>[y/N]:<space>
|
||||
map N push :mkdir<space>
|
||||
map n push :touch<space>
|
||||
map x push :chmod<space>
|
||||
map U push :extract?<space>[y/N]:<space>
|
||||
map Y $printf "%s" "$fx" | xclip -selection clipboard
|
||||
|
||||
# Renaming commands
|
||||
map A :rename; cmd-end # at the very end
|
||||
map a :rename; cmd-right # after extension
|
||||
map r push A<c-u> # new rename
|
||||
map i :rename # before extension
|
||||
map I :rename; cmd-home # at the very beginning
|
||||
|
||||
map R drag-and-drop
|
||||
|
||||
# Fuzzy finding
|
||||
map <c-f> $lf -remote "send $id select \"$(fzf)\""
|
||||
map F broot_jump
|
||||
|
||||
map b set_bg one
|
||||
map B set_bg all
|
||||
|
||||
|
||||
## COMMAND DEFINITIONS
|
||||
|
||||
cmd touch %touch $1 && lf -remote "send $id load" && lf -remote "send $id select $1"
|
||||
|
||||
cmd mkdir %mkdir $1 && lf -remote "send $id load" && lf -remote "send $id select $1"
|
||||
|
||||
cmd chmod %chmod $1 "$fx" && lf -remote "send $id reload"
|
||||
|
||||
cmd delete? ${{
|
||||
[ -v 2 ] || exit 0 # Makes sure argument was passed in
|
||||
[ ! "$2" = "y" ] && exit 0 # Exit if delete not confirmed
|
||||
rm -rf -- $fx
|
||||
}}
|
||||
|
||||
cmd set_bg ${{
|
||||
if [ -z "$(pidof Hyprland)" ]; then
|
||||
rm -f ~/.config/wallpaper
|
||||
cp "$fx" ~/.config/wallpaper
|
||||
feh --bg-fill --no-fehbg "$HOME/.config/wallpaper"
|
||||
exit
|
||||
fi
|
||||
if [ "$1" = "all" ]; then
|
||||
swww img "$fx"
|
||||
else
|
||||
output="$(slurp -o -f "%o")"
|
||||
swww img "$fx" --outputs "$output"
|
||||
fi
|
||||
}}
|
||||
|
||||
cmd drag-and-drop ${{
|
||||
GKD_BACKEND=11 setsid -f dragon "$fx" >/dev/null 2>&1
|
||||
}}
|
||||
|
||||
cmd extract? ${{
|
||||
[ -v 2 ] || exit 0 # Makes sure argument was passed in
|
||||
[ ! "$2" = "y" ] && exit 0 # Exit if delete not confirmed
|
||||
|
||||
case $(file --mime-type "$(readlink -f $f)" -b) in
|
||||
application/x-rar)
|
||||
unrar x $fx
|
||||
;;
|
||||
*)
|
||||
aunpack $fx
|
||||
;;
|
||||
esac
|
||||
}}
|
||||
|
||||
cmd broot_jump ${{
|
||||
f=$(mktemp)
|
||||
res="$(broot --outcmd $f && cat $f | sed 's/cd //')"
|
||||
rm -f "$f"
|
||||
if [ -f "$res" ]; then
|
||||
cmd="select"
|
||||
elif [ -d "$res" ]; then
|
||||
cmd="cd"
|
||||
fi
|
||||
lf -remote "send $id $cmd \"$res\""
|
||||
}}
|
||||
|
||||
cmd open ${{
|
||||
# Set $new_window based on arguments
|
||||
[ ! -z $@ ] && [ "$@" = "new_window" ] && new_window=1
|
||||
|
||||
function launch {
|
||||
[ -v WAYLAND_DISPLAY ] && swallower="swallow" || swallower="devour"
|
||||
|
||||
if [ ! -v new_window ]; then
|
||||
$swallower "$@" >/dev/null 2>&1
|
||||
else
|
||||
setsid -f "$@" >/dev/null 2>&1
|
||||
fi
|
||||
}
|
||||
|
||||
case $(file --mime-type "$(readlink -f $f)" -b) in
|
||||
application/json|\
|
||||
application/x-subrip|\
|
||||
application/pgp-encrypted|\
|
||||
inode/x-empty|\
|
||||
text/*)
|
||||
case "${f##*.}" in
|
||||
org|typ)
|
||||
# Any "document" like file ought to be in emacs
|
||||
launch emacsclient -c "$fx"
|
||||
exit
|
||||
;;
|
||||
esac
|
||||
[ -v new_window ] \
|
||||
&& ($TERMINAL -e $SHELL -c "$EDITOR \"$fx\"" >/dev/null 2>&1 &) \
|
||||
|| ($EDITOR "$fx")
|
||||
;;
|
||||
audio/*|video/x-ms-asf)
|
||||
launch mpv --audio-display=no "$f"
|
||||
;;
|
||||
video/*)
|
||||
launch mpv -quiet "$f"
|
||||
;;
|
||||
application/epub*|\
|
||||
application/octet-stream|\
|
||||
application/pdf|\
|
||||
application/postscript|\
|
||||
application/vnd.djvu|\
|
||||
image/vnd.djvu)
|
||||
launch zathura "$fx"
|
||||
;;
|
||||
image/*)
|
||||
find . -maxdepth 1 -type f -exec file -i {} \; |
|
||||
grep -E 'image/.*' |
|
||||
awk -F: '{ print substr($0, 1, length($0) - length($NF) - 1) }' |
|
||||
rotdir $f |
|
||||
launch nsxiv -aio |
|
||||
while read -r file; do
|
||||
[ -z "$file" ] && continue
|
||||
lf -remote "send select \"$file\""
|
||||
lf -remote "send toggle"
|
||||
done &
|
||||
;;
|
||||
application/msword|\
|
||||
application/octet-stream|\
|
||||
application/vnd.ms-powerpoint|\
|
||||
application/vnd.oasis.opendocument.database|\
|
||||
application/vnd.oasis.opendocument.formula|\
|
||||
application/vnd.oasis.opendocument.graphics|\
|
||||
application/vnd.oasis.opendocument.graphics-template|\
|
||||
application/vnd.oasis.opendocument.presentation|\
|
||||
application/vnd.oasis.opendocument.presentation-template|\
|
||||
application/vnd.oasis.opendocument.spreadsheet|\
|
||||
application/vnd.oasis.opendocument.spreadsheet-template|\
|
||||
application/vnd.oasis.opendocument.text|\
|
||||
application/vnd.openxmlformats-officedocument.presentationml.presentation|\
|
||||
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet|\
|
||||
application/vnd.openxmlformats-officedocument.wordprocessingml.document)
|
||||
launch libreoffice "$fx"
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
}}
|
||||
|
||||
cmd open_new_window ${{
|
||||
new_window=1 && cmd open
|
||||
}}
|
||||
|
||||
57
misc/dot-config/lf/previewer
Executable file
57
misc/dot-config/lf/previewer
Executable file
|
|
@ -0,0 +1,57 @@
|
|||
#!/usr/bin/env sh
|
||||
|
||||
function sixel_compat() {
|
||||
case "$TERM" in
|
||||
"st-256color")
|
||||
echo "y"
|
||||
;;
|
||||
*)
|
||||
echo ""
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
image() {
|
||||
chafa $([ -z "$(sixel_compat)" ] || echo "-f sixel") -s "$2x$3" --animate false "$1"
|
||||
exit 1
|
||||
}
|
||||
|
||||
CACHE="$HOME/.cache/lf/thumbnail.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | awk '{print $1}'))"
|
||||
|
||||
case "$(file --dereference --brief --mime-type -- "$1")" in
|
||||
image/*)
|
||||
image "$1" "$2" "$3" "$4" "$5" "$1"
|
||||
;;
|
||||
application/json|\
|
||||
text/*|\
|
||||
*/xml)
|
||||
bat -p --terminal-width "$(($4-2))" -f "$1"
|
||||
;;
|
||||
audio/*|\
|
||||
application/octet-stream)
|
||||
mediainfo "$1" || exit 1
|
||||
;;
|
||||
video/* )
|
||||
CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)"
|
||||
[ ! -f "$CACHE" ] && ffmpegthumbnailer -i "$1" -o "$CACHE" -s 0
|
||||
image "$CACHE" "$2" "$3" "$4" "$5" "$1"
|
||||
;;
|
||||
*/pdf)
|
||||
CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)"
|
||||
[ ! -f "$CACHE.jpg" ] && pdftoppm -jpeg -f 1 -singlefile "$1" "$CACHE" && convert "$CACHE.jpg" -negate "$CACHE.jpg"
|
||||
image "$CACHE.jpg" "$2" "$3" "$4" "$5" "$1"
|
||||
;;
|
||||
application/*zip)
|
||||
atool --list -- "$1"
|
||||
;;
|
||||
*opendocument*)
|
||||
odt2txt "$1"
|
||||
;;
|
||||
application/pgp-encrypted) gpg -d -- "$1" ;;
|
||||
*)
|
||||
file -ibL "$1" | grep -q text && cat "$1" || file -Lb "$1"
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
|
||||
32
misc/dot-config/nixos/configuration.def.nix
Normal file
32
misc/dot-config/nixos/configuration.def.nix
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
# Do not remove
|
||||
./core.nix
|
||||
|
||||
# Want this for bare metal
|
||||
# ./hardware-configuration.nix
|
||||
|
||||
# Specific profiles for this machine
|
||||
# ./profiles/lf.nix
|
||||
# ./profiles/nvim.nix
|
||||
# ./profiles/desktop_x.nix
|
||||
];
|
||||
|
||||
networking.hostName = "nix";
|
||||
time.timeZone = "America/New_York";
|
||||
|
||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||
users.users.nixos = {
|
||||
isNormalUser = true;
|
||||
extraGroups = [ # User implicitly in "users" group
|
||||
"wheel" # Sudo priviledges
|
||||
];
|
||||
shell = pkgs.zsh;
|
||||
|
||||
# Set so when mutableUsers is set to "false", the user still has a way to login.
|
||||
password = "";
|
||||
};
|
||||
}
|
||||
|
||||
222
misc/dot-config/nixos/core.nix
Normal file
222
misc/dot-config/nixos/core.nix
Normal file
|
|
@ -0,0 +1,222 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
# Nix settings
|
||||
nix = {
|
||||
package = pkgs.nixFlakes;
|
||||
settings.auto-optimise-store = true;
|
||||
gc = {
|
||||
automatic = true;
|
||||
dates = "weekly";
|
||||
options = "--delete-older-than 7d";
|
||||
};
|
||||
extraOptions = ''
|
||||
experimental-features = nix-command flakes
|
||||
'';
|
||||
};
|
||||
|
||||
# Files to add to /etc
|
||||
environment.etc = {
|
||||
"zshenv.local".text = ''
|
||||
export ZDOTDIR="$HOME/.config/zsh"
|
||||
'';
|
||||
};
|
||||
|
||||
environment.pathsToLink = [
|
||||
"/share"
|
||||
];
|
||||
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
|
||||
fonts.packages = with pkgs; [
|
||||
# The nerdfonts package does not allow the installation of only the
|
||||
# Symbols Nerd Font. Also, the "mono" (actually double wide)
|
||||
# version of this font centers the symbols which is nice.
|
||||
nur.repos.bandithedoge.symbols-nerd-font
|
||||
|
||||
hack-font
|
||||
fira-code
|
||||
];
|
||||
|
||||
networking.networkmanager.enable = true;
|
||||
|
||||
# Bluetooth daemon
|
||||
services.blueman.enable = true;
|
||||
hardware.bluetooth.enable = true;
|
||||
hardware.bluetooth.powerOnBoot = true;
|
||||
|
||||
# Audio daemon
|
||||
security.rtkit.enable = true;
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
alsa.enable = true;
|
||||
alsa.support32Bit = true;
|
||||
pulse.enable = true;
|
||||
jack.enable = true;
|
||||
};
|
||||
|
||||
# Udev service
|
||||
services.udev = {
|
||||
# Allows member of the "video" group to change system backlight
|
||||
extraRules = ''
|
||||
ACTION=="add", SUBSYSTEM=="backlight", RUN+="${pkgs.coreutils}/bin/chgrp video %S%p/brightness", RUN+="${pkgs.coreutils}/bin/chmod g+w %S%p/brightness"
|
||||
'';
|
||||
path = [ pkgs.coreutils ]; # For chgrp
|
||||
};
|
||||
|
||||
# Misc services
|
||||
services.udisks2.enable = true; # USB Mounting
|
||||
# services.printing.enable = true; # CUPS
|
||||
|
||||
# Some programs need SUID wrappers, can be configured further or are
|
||||
# started in user sessions.
|
||||
programs = {
|
||||
gnupg.agent = {
|
||||
enable = true;
|
||||
enableSSHSupport = true;
|
||||
};
|
||||
nix-ld.enable = true; # Run unpatched binaries
|
||||
zsh.enable = true;
|
||||
};
|
||||
|
||||
virtualisation.docker.enable = true;
|
||||
|
||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||
users = {
|
||||
mutableUsers = true;
|
||||
users.root = {
|
||||
# Disables root login, since nothing can hash to "!". Requires setting mutableUsers to "false",
|
||||
# rebuilding, and then setting mutableUsers back to "true".
|
||||
hashedPassword = "!";
|
||||
};
|
||||
};
|
||||
|
||||
documentation = {
|
||||
# Pull in extra documentation/manpages
|
||||
dev.enable = true;
|
||||
|
||||
# Allow whatis, apropos, and man -k to work, but breaks mandb
|
||||
man.generateCaches = true;
|
||||
};
|
||||
|
||||
# List packages installed in system profile. To search, run:
|
||||
# $ nix search wget
|
||||
environment.systemPackages = with pkgs; [
|
||||
# General programs that I like and use
|
||||
bluetuith # TUI bluetooth manager
|
||||
bear # Generate Clang compilation database
|
||||
devour # Opens new program on top of terminal
|
||||
distrobox # Easily spin up VMs of other distos
|
||||
docker # Containerization
|
||||
entr # Hooks for file changes
|
||||
expect # Provides `unbuffer`
|
||||
ffmpeg
|
||||
git # Imagine not having this
|
||||
grc # Generic command output colorizer
|
||||
htop-vim # Process monitor, with vim bindings
|
||||
imagemagick # Image conversion/processing tool
|
||||
jq # Commandline JSON processor
|
||||
killall # Easy way to kill a process
|
||||
man-pages # Documentation
|
||||
man-pages-posix # Documentation
|
||||
neofetch # Aesthetic sysinfo
|
||||
pass-nodmenu # CLI password store (without dmenu dependency)
|
||||
pinentry-curses # Terminal-based pinentry program
|
||||
python311 # Python
|
||||
socat # Interact with sockets
|
||||
tldr # Brief info about a command
|
||||
tmux # Terminal multiplexor
|
||||
udisks # Good way of dealing with USBs and similar media
|
||||
|
||||
# Shell
|
||||
starship # Universal shell prompt
|
||||
zsh
|
||||
zsh-autocomplete
|
||||
zsh-autosuggestions
|
||||
zsh-nix-shell # Use zsh for nix build shell
|
||||
zsh-syntax-highlighting # Shell syntax highlighting
|
||||
|
||||
# Silly programs
|
||||
asciiquarium
|
||||
bsdgames # Fun collection of command-line games
|
||||
neo-cowsay # The cow says moo
|
||||
sl # Choo choo
|
||||
|
||||
# Some nix specific stuff
|
||||
nil # Nix LSP
|
||||
nix-index # See which packages source a file
|
||||
nix-output-monitor # Track dependency graph during builds
|
||||
nix-prefetch-git # Like nix-prefetch-url, but for git
|
||||
nvd # See diffs between builds
|
||||
|
||||
# Pop into an environment abiding by the Filesystem Hierarchy Standard to run
|
||||
# applications which do not play nicely with NixOS.
|
||||
(
|
||||
let
|
||||
fhs-run = pkgs.buildFHSUserEnv {
|
||||
name = "fhs-run";
|
||||
targetPkgs = pkgs: [];
|
||||
multiPkgs = pkgs: [ pkgs.dpkg ];
|
||||
runScript = pkgs.writeScript "init.sh" ''
|
||||
echo "fhs-run" >> $out/etc/hostname # Give shell a hostname
|
||||
eval "$@" # Execute whatever arguments
|
||||
'';
|
||||
};
|
||||
in
|
||||
fhs-run
|
||||
)
|
||||
|
||||
# Defining an environment to run "make" with the proper libraries installed
|
||||
# "make", in the main environment, references the script, which envokes the
|
||||
# environment, and passes the args to gnumake.
|
||||
(
|
||||
let
|
||||
make-shell = pkgs.buildEnv {
|
||||
name = "make-shell";
|
||||
paths = with pkgs; [
|
||||
# Tools
|
||||
gnumake
|
||||
pkg-config
|
||||
|
||||
# Libraries
|
||||
harfbuzz
|
||||
xorg.libX11.dev
|
||||
xorg.libXft
|
||||
xorg.libXinerama
|
||||
];
|
||||
};
|
||||
in
|
||||
(pkgs.writeScriptBin "make" ''
|
||||
#!/usr/bin/env sh
|
||||
nix-shell -p ${make-shell} --run "make $*"
|
||||
'')
|
||||
)
|
||||
];
|
||||
|
||||
nixpkgs.overlays = [
|
||||
(self: super: {
|
||||
asciiquarium = super.asciiquarium.overrideAttrs (oa: {
|
||||
src = pkgs.fetchgit {
|
||||
url = "https://github.com/nothub/asciiquarium";
|
||||
rev = "204090ff4c97b2e00cd67f26b1a37ca7accd4f95";
|
||||
hash = "sha256-0Y0bcsa6GfP/A+gZe6o94WNWfQNHVEtMZfMuvWVBu0c=";
|
||||
};
|
||||
});
|
||||
})
|
||||
];
|
||||
|
||||
nixpkgs.config.packageOverrides = pkgs: {
|
||||
nur = import (builtins.fetchTarball "https://github.com/nix-community/NUR/archive/master.tar.gz") {
|
||||
inherit pkgs;
|
||||
};
|
||||
};
|
||||
|
||||
# This value determines the NixOS release from which the default
|
||||
# settings for stateful data, like file locations and database versions
|
||||
# on your system were taken. It's perfectly fine and recommended to leave
|
||||
# this value at the release version of the first install of this system.
|
||||
# Before changing this value read the documentation for this option
|
||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||
system.stateVersion = "23.05"; # Did you read the comment?
|
||||
}
|
||||
|
||||
19
misc/dot-config/nixos/profiles/emacs.nix
Normal file
19
misc/dot-config/nixos/profiles/emacs.nix
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
emacs29-pgtk # Transparency on Wayland requires Pure GTK
|
||||
|
||||
# Misc
|
||||
ispell # Spellchecker
|
||||
fd # Find entries in filesystem. Helps doom emacs run faster.
|
||||
|
||||
# For vterm
|
||||
cmake
|
||||
libtool
|
||||
|
||||
## LSPs
|
||||
nodePackages.pyright
|
||||
];
|
||||
}
|
||||
|
||||
22
misc/dot-config/nixos/profiles/fcitx.nix
Normal file
22
misc/dot-config/nixos/profiles/fcitx.nix
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
i18n = {
|
||||
inputMethod = {
|
||||
# Have to install fcitx5 through here so that the binary is patched to be able to see the addons.
|
||||
# If also installed through system packages, the binary without addonds will take precedence.
|
||||
enabled = "fcitx5";
|
||||
fcitx5.addons = with pkgs; [
|
||||
fcitx5-configtool
|
||||
fcitx5-rime
|
||||
fcitx5-chinese-addons
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
fonts.packages = with pkgs; [
|
||||
source-han-sans
|
||||
source-han-serif
|
||||
];
|
||||
}
|
||||
|
||||
27
misc/dot-config/nixos/profiles/lf.nix
Normal file
27
misc/dot-config/nixos/profiles/lf.nix
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
lf
|
||||
|
||||
atool # Provides aunpack, to open archives. Also can list archive contents.
|
||||
bat # A prettified 'cat'
|
||||
broot # A slicker fzf
|
||||
chafa # Display images in the terminal (supports sixel)
|
||||
ffmpegthumbnailer # Get thumbnails of videos
|
||||
file # Get information about a specific file
|
||||
fzf # Fuzzy finder. Might fully replace with broot
|
||||
imagemagick # Image conversion/processing tool
|
||||
mediainfo # Get info about media
|
||||
mpv # Audio and video player
|
||||
nsxiv # Image viewer
|
||||
odt2txt # Convert open documents to text
|
||||
perl536Packages.FileMimeInfo # Provides mimeopen, to ask what program to open files in
|
||||
poppler_utils # Provides pdftoppm, to turn pdfs into images
|
||||
unrar-wrapper # Extract .rar files
|
||||
xclip # Copy file name to clip
|
||||
xdragon # Drag and drop utility
|
||||
zathura # PDF viewer
|
||||
];
|
||||
}
|
||||
|
||||
7
misc/dot-config/nixos/profiles/minimal.nix
Normal file
7
misc/dot-config/nixos/profiles/minimal.nix
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
];
|
||||
}
|
||||
|
||||
17
misc/dot-config/nixos/profiles/nvim.nix
Normal file
17
misc/dot-config/nixos/profiles/nvim.nix
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
neovim
|
||||
|
||||
# LSPs
|
||||
clang-tools
|
||||
lua-language-server
|
||||
|
||||
# Misc
|
||||
ripgrep # Used by telescope
|
||||
gcc
|
||||
unzip
|
||||
];
|
||||
}
|
||||
|
||||
11
misc/dot-config/nixos/profiles/virtualbox.nix
Normal file
11
misc/dot-config/nixos/profiles/virtualbox.nix
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
virtualisation.docker.enable = true;
|
||||
virtualisation.docker.storageDriver = "btrfs";
|
||||
|
||||
# Implicitly downloads virtualbox
|
||||
virtualisation.virtualbox.host.enable = true;
|
||||
users.extraGroups.vboxusers.members = [ "user-with-access-to-virtualbox" ];
|
||||
}
|
||||
|
||||
69
misc/dot-config/nixos/profiles/wm/dwm.nix
Normal file
69
misc/dot-config/nixos/profiles/wm/dwm.nix
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
security.sudo.extraConfig = ''
|
||||
%wheel ALL=(ALL:ALL) NOPASSWD: ${pkgs.systemd}/bin/systemctl restart autorandr
|
||||
'';
|
||||
|
||||
# X Server
|
||||
services.xserver = {
|
||||
enable = true;
|
||||
autorun = false;
|
||||
|
||||
autoRepeatDelay = 300;
|
||||
autoRepeatInterval = 50;
|
||||
|
||||
# Configure keymap in X11
|
||||
layout = "us";
|
||||
xkbOptions = "eurosign:e,caps:escape";
|
||||
|
||||
# Touchpad stuff
|
||||
libinput = {
|
||||
enable = true;
|
||||
touchpad.naturalScrolling = true;
|
||||
};
|
||||
|
||||
displayManager = {
|
||||
lightdm.enable = false;
|
||||
startx.enable = true;
|
||||
};
|
||||
|
||||
windowManager.dwm.enable = true;
|
||||
};
|
||||
|
||||
# Monitor switching service. Allow users to restart the service without password
|
||||
services.autorandr.enable = true;
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
arandr # Visually move relative positions of monitors
|
||||
autorandr # Save and load xrandr profiles
|
||||
blueman # Bluetooth manager
|
||||
dunst # Notification daemon
|
||||
dwmblocks # Suckless statusbar for DWM
|
||||
dwm # Suckless tiling window manager
|
||||
feh # Image viewer I use for background setting
|
||||
firefox # My browser of choice
|
||||
libnotify # Send messages to notification daemon
|
||||
libreoffice # MSOffice btfo
|
||||
maim # Screenshot utility
|
||||
picom # X Compositor
|
||||
pinentry-rofi # Rofi frontend for pinentry program
|
||||
rofi # Menu prompt program
|
||||
rofi-pass # Rofi frontend for password store
|
||||
st # Suckless terminal
|
||||
sxhkd # Hotkey daemon
|
||||
texlive.combined.scheme-full # LaTeX to create documents
|
||||
typst # Cool, minimal LaTeX alternative
|
||||
ungoogled-chromium # If I need a special chrome feature
|
||||
xsecurelock # Session locker
|
||||
|
||||
# GTK Themes
|
||||
lxappearance-gtk2 # Theme switcher
|
||||
gruvbox-dark-gtk
|
||||
|
||||
# X tools
|
||||
xorg.xauth
|
||||
xclip
|
||||
];
|
||||
}
|
||||
|
||||
84
misc/dot-config/nixos/profiles/wm/hyprland.nix
Normal file
84
misc/dot-config/nixos/profiles/wm/hyprland.nix
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
# Or else swaylock will not accept correct password
|
||||
security.pam.services.swaylock = {};
|
||||
|
||||
programs = {
|
||||
hyprland = { # Dynamic tiling window manager
|
||||
enable = true;
|
||||
enableNvidiaPatches = true;
|
||||
xwayland.enable = true;
|
||||
};
|
||||
waybar.enable = true; # Status bar
|
||||
};
|
||||
|
||||
systemd.user.services = {
|
||||
hyprland-autoname-workspaces = {
|
||||
description = "Hyprland-autoname-workspaces as systemd service";
|
||||
wantedBy = [ "graphical-session.target" ];
|
||||
partOf = [ "graphical-session.target" ];
|
||||
script = "${pkgs.hyprland-autoname-workspaces}/bin/hyprland-autoname-workspaces";
|
||||
};
|
||||
network-manager-applet = {
|
||||
description = "Start the network manager applet";
|
||||
wantedBy = [ "default.target" ];
|
||||
serviceConfig.Type = "forking";
|
||||
serviceConfig.Restart = "always";
|
||||
serviceConfig.RestartSec = 2;
|
||||
serviceConfig.ExecStart = "${pkgs.networkmanagerapplet}/bin/nm-applet";
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
blueman # Bluetooth manager
|
||||
dunst # Notification daemon
|
||||
eww-wayland
|
||||
firefox # My browser of choice
|
||||
foot # Wayland native terminal
|
||||
gobble # Wayland alternative to devour
|
||||
grim # Screenshot tool
|
||||
grimblast # Allows freezing screen
|
||||
hicolor-icon-theme # Icons
|
||||
hyprland-autoname-workspaces
|
||||
hyprpaper
|
||||
kanshi # Autorandr substitute
|
||||
libnotify # Send messages to notification daemon
|
||||
libreoffice # MSOffice btfo
|
||||
networkmanagerapplet # Wifi dropdown menu
|
||||
pinentry-rofi # Rofi frontend for pinentry program
|
||||
pyprland # Plugin manager for Hyprland
|
||||
rofi # Menu prompt program
|
||||
rofi-pass # Rofi frontend for password store
|
||||
slurp # Screen selection utility
|
||||
swaylock # Wayland session locker
|
||||
swww # Sets background images
|
||||
texlive.combined.scheme-full # LaTeX to create documents
|
||||
typst # Cool, minimal LaTeX alternative
|
||||
ungoogled-chromium # If I need a special chrome feature
|
||||
wayland-utils
|
||||
wdisplays # Arnadr substitute
|
||||
wl-clipboard # Copy/paste utility
|
||||
wlr-randr # Xrandr substitute
|
||||
|
||||
# GTK Themes
|
||||
lxappearance-gtk2 # Theme switcher
|
||||
gruvbox-dark-gtk
|
||||
|
||||
# Specific versions of packages
|
||||
(import (builtins.fetchTarball {
|
||||
url = "https://github.com/NixOS/nixpkgs/archive/9957cd48326fe8dbd52fdc50dd2502307f188b0d.tar.gz";
|
||||
}) {}).hyprpicker # v0.1.1. Current verison causes segfault.
|
||||
];
|
||||
|
||||
nixpkgs.overlays = [
|
||||
(self: super: {
|
||||
grimblast = super.grimblast.override (oa: {
|
||||
hyprpicker = (import (builtins.fetchTarball {
|
||||
url = "https://github.com/NixOS/nixpkgs/archive/9957cd48326fe8dbd52fdc50dd2502307f188b0d.tar.gz";
|
||||
}) {}).hyprpicker; # v0.1.1. Current verison causes segfault.
|
||||
});
|
||||
})
|
||||
];
|
||||
}
|
||||
|
||||
4
misc/dot-config/nixpkgs/config.nix
Normal file
4
misc/dot-config/nixpkgs/config.nix
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
allowUnfree = true;
|
||||
}
|
||||
|
||||
4
misc/dot-config/npm/npmrc
Normal file
4
misc/dot-config/npm/npmrc
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
prefix=${XDG_DATA_HOME}/npm
|
||||
cache=${XDG_CACHE_HOME}/npm
|
||||
init-module=${XDG_CONFIG_HOME}/npm/config/npm-init.js
|
||||
|
||||
425
misc/dot-config/picom/picom.conf
Normal file
425
misc/dot-config/picom/picom.conf
Normal file
|
|
@ -0,0 +1,425 @@
|
|||
#################################
|
||||
# Shadows #
|
||||
#################################
|
||||
|
||||
|
||||
# Enabled client-side shadows on windows. Note desktop windows
|
||||
# (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow,
|
||||
# unless explicitly requested using the wintypes option.
|
||||
#
|
||||
# shadow = false
|
||||
shadow = false;
|
||||
|
||||
# The blur radius for shadows, in pixels. (defaults to 12)
|
||||
# shadow-radius = 12
|
||||
shadow-radius = 12;
|
||||
|
||||
# The opacity of shadows. (0.0 - 1.0, defaults to 0.75)
|
||||
# shadow-opacity = .75
|
||||
|
||||
# The left offset for shadows, in pixels. (defaults to -15)
|
||||
# shadow-offset-x = -15
|
||||
shadow-offset-x = -7;
|
||||
|
||||
# The top offset for shadows, in pixels. (defaults to -15)
|
||||
# shadow-offset-y = -15
|
||||
shadow-offset-y = -7;
|
||||
|
||||
# Red color value of shadow (0.0 - 1.0, defaults to 0).
|
||||
# shadow-red = 0
|
||||
|
||||
# Green color value of shadow (0.0 - 1.0, defaults to 0).
|
||||
# shadow-green = 0
|
||||
|
||||
# Blue color value of shadow (0.0 - 1.0, defaults to 0).
|
||||
# shadow-blue = 0
|
||||
|
||||
# Hex string color value of shadow (#000000 - #FFFFFF, defaults to #000000). This option will override options set shadow-(red/green/blue)
|
||||
# shadow-color = "#000000"
|
||||
|
||||
# Specify a list of conditions of windows that should have no shadow.
|
||||
#
|
||||
# examples:
|
||||
# shadow-exclude = "n:e:Notification";
|
||||
#
|
||||
# shadow-exclude = []
|
||||
shadow-exclude = [
|
||||
"name = 'Notification'",
|
||||
"class_g = 'Conky'",
|
||||
"class_g ?= 'Notify-osd'",
|
||||
"class_g = 'Cairo-clock'",
|
||||
"_GTK_FRAME_EXTENTS@:c"
|
||||
];
|
||||
|
||||
# Specify a list of conditions of windows that should have no shadow painted over, such as a dock window.
|
||||
# clip-shadow-above = []
|
||||
|
||||
# Specify a X geometry that describes the region in which shadow should not
|
||||
# be painted in, such as a dock window region. Use
|
||||
# shadow-exclude-reg = "x10+0+0"
|
||||
# for example, if the 10 pixels on the bottom of the screen should not have shadows painted on.
|
||||
#
|
||||
# shadow-exclude-reg = ""
|
||||
|
||||
# Crop shadow of a window fully on a particular Xinerama screen to the screen.
|
||||
# xinerama-shadow-crop = false
|
||||
|
||||
|
||||
#################################
|
||||
# Fading #
|
||||
#################################
|
||||
|
||||
|
||||
# Fade windows in/out when opening/closing and when opacity changes,
|
||||
# unless no-fading-openclose is used.
|
||||
# fading = false
|
||||
fading = false;
|
||||
|
||||
# Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028)
|
||||
# fade-in-step = 0.028
|
||||
fade-in-step = 0.03;
|
||||
|
||||
# Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03)
|
||||
# fade-out-step = 0.03
|
||||
fade-out-step = 0.03;
|
||||
|
||||
# The time between steps in fade step, in milliseconds. (> 0, defaults to 10)
|
||||
# fade-delta = 10
|
||||
|
||||
# Specify a list of conditions of windows that should not be faded.
|
||||
# fade-exclude = []
|
||||
|
||||
# Do not fade on window open/close.
|
||||
# no-fading-openclose = false
|
||||
|
||||
# Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc.
|
||||
# no-fading-destroyed-argb = false
|
||||
|
||||
|
||||
#################################
|
||||
# Transparency / Opacity #
|
||||
#################################
|
||||
|
||||
|
||||
# Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0)
|
||||
# inactive-opacity = 1
|
||||
|
||||
# Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default)
|
||||
# frame-opacity = 1.0
|
||||
|
||||
# Let inactive opacity set by -i override the '_NET_WM_WINDOW_OPACITY' values of windows.
|
||||
# inactive-opacity-override = true
|
||||
inactive-opacity-override = false;
|
||||
|
||||
# Default opacity for active windows. (0.0 - 1.0, defaults to 1.0)
|
||||
# active-opacity = 1.0
|
||||
|
||||
# Dim inactive windows. (0.0 - 1.0, defaults to 0.0)
|
||||
# inactive-dim = 0.0
|
||||
|
||||
# Specify a list of conditions of windows that should never be considered focused.
|
||||
# focus-exclude = []
|
||||
focus-exclude = [ "class_g = 'Cairo-clock'" ];
|
||||
|
||||
# Use fixed inactive dim value, instead of adjusting according to window opacity.
|
||||
# inactive-dim-fixed = 1.0
|
||||
|
||||
# Specify a list of opacity rules, in the format `PERCENT:PATTERN`,
|
||||
# like `50:name *= "Firefox"`. picom-trans is recommended over this.
|
||||
# Note we don't make any guarantee about possible conflicts with other
|
||||
# programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows.
|
||||
# example:
|
||||
# opacity-rule = [ "80:class_g = 'URxvt'" ];
|
||||
#
|
||||
# opacity-rule = []
|
||||
|
||||
|
||||
#################################
|
||||
# Corners #
|
||||
#################################
|
||||
|
||||
# Sets the radius of rounded window corners. When > 0, the compositor will
|
||||
# round the corners of windows. Does not interact well with
|
||||
# `transparent-clipping`.
|
||||
corner-radius = 0
|
||||
|
||||
# Exclude conditions for rounded corners.
|
||||
rounded-corners-exclude = [
|
||||
"window_type = 'dock'",
|
||||
"window_type = 'desktop'"
|
||||
];
|
||||
|
||||
|
||||
#################################
|
||||
# Background-Blurring #
|
||||
#################################
|
||||
|
||||
|
||||
# Parameters for background blurring, see the *BLUR* section for more information.
|
||||
# blur-method =
|
||||
blur-size = 12
|
||||
|
||||
blur-deviation = false
|
||||
|
||||
blur-strength = 50
|
||||
|
||||
# Blur background of semi-transparent / ARGB windows.
|
||||
# Bad in performance, with driver-dependent behavior.
|
||||
# The name of the switch may change without prior notifications.
|
||||
#
|
||||
blur-background = true
|
||||
|
||||
# Blur background of windows when the window frame is not opaque.
|
||||
# Implies:
|
||||
# blur-background
|
||||
# Bad in performance, with driver-dependent behavior. The name may change.
|
||||
#
|
||||
blur-background-frame = false
|
||||
|
||||
# Use fixed blur strength rather than adjusting according to window opacity.
|
||||
# blur-background-fixed = false
|
||||
|
||||
|
||||
# Specify the blur convolution kernel, with the following format:
|
||||
# example:
|
||||
# blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1";
|
||||
#
|
||||
# blur-kern = ""
|
||||
blur-kern = "7x7box";
|
||||
|
||||
|
||||
# Exclude conditions for background blur.
|
||||
# blur-background-exclude = []
|
||||
blur-background-exclude = [
|
||||
"window_type = 'dock'",
|
||||
"window_type = 'desktop'",
|
||||
"_GTK_FRAME_EXTENTS@:c"
|
||||
];
|
||||
|
||||
#################################
|
||||
# General Settings #
|
||||
#################################
|
||||
|
||||
# Enable remote control via D-Bus. See the man page for more details.
|
||||
# dbus = true
|
||||
|
||||
# Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers.
|
||||
# daemon = false
|
||||
|
||||
# Specify the backend to use: `xrender`, `glx`, or `xr_glx_hybrid`.
|
||||
# `xrender` is the default one.
|
||||
#
|
||||
# backend = "glx"
|
||||
backend = "xrender";
|
||||
|
||||
# Enable/disable VSync.
|
||||
# vsync = false
|
||||
vsync = true;
|
||||
|
||||
# Enable remote control via D-Bus. See the *D-BUS API* section below for more details.
|
||||
# dbus = false
|
||||
|
||||
# Try to detect WM windows (a non-override-redirect window with no
|
||||
# child that has 'WM_STATE') and mark them as active.
|
||||
#
|
||||
# mark-wmwin-focused = false
|
||||
mark-wmwin-focused = true;
|
||||
|
||||
# Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused.
|
||||
# mark-ovredir-focused = false
|
||||
mark-ovredir-focused = true;
|
||||
|
||||
# Try to detect windows with rounded corners and don't consider them
|
||||
# shaped windows. The accuracy is not very high, unfortunately.
|
||||
#
|
||||
# detect-rounded-corners = false
|
||||
detect-rounded-corners = true;
|
||||
|
||||
# Detect '_NET_WM_WINDOW_OPACITY' on client windows, useful for window managers
|
||||
# not passing '_NET_WM_WINDOW_OPACITY' of client windows to frame windows.
|
||||
#
|
||||
# detect-client-opacity = false
|
||||
detect-client-opacity = true;
|
||||
|
||||
# Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window,
|
||||
# rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy,
|
||||
# provided that the WM supports it.
|
||||
#
|
||||
# use-ewmh-active-win = false
|
||||
|
||||
# Unredirect all windows if a full-screen opaque window is detected,
|
||||
# to maximize performance for full-screen windows. Known to cause flickering
|
||||
# when redirecting/unredirecting windows.
|
||||
#
|
||||
# unredir-if-possible = false
|
||||
|
||||
# Delay before unredirecting the window, in milliseconds. Defaults to 0.
|
||||
# unredir-if-possible-delay = 0
|
||||
|
||||
# Conditions of windows that shouldn't be considered full-screen for unredirecting screen.
|
||||
# unredir-if-possible-exclude = []
|
||||
|
||||
# Use 'WM_TRANSIENT_FOR' to group windows, and consider windows
|
||||
# in the same group focused at the same time.
|
||||
#
|
||||
# detect-transient = false
|
||||
detect-transient = true;
|
||||
|
||||
# Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same
|
||||
# group focused at the same time. This usually means windows from the same application
|
||||
# will be considered focused or unfocused at the same time.
|
||||
# 'WM_TRANSIENT_FOR' has higher priority if detect-transient is enabled, too.
|
||||
#
|
||||
# detect-client-leader = false
|
||||
|
||||
# Resize damaged region by a specific number of pixels.
|
||||
# A positive value enlarges it while a negative one shrinks it.
|
||||
# If the value is positive, those additional pixels will not be actually painted
|
||||
# to screen, only used in blur calculation, and such. (Due to technical limitations,
|
||||
# with use-damage, those pixels will still be incorrectly painted to screen.)
|
||||
# Primarily used to fix the line corruption issues of blur,
|
||||
# in which case you should use the blur radius value here
|
||||
# (e.g. with a 3x3 kernel, you should use `--resize-damage 1`,
|
||||
# with a 5x5 one you use `--resize-damage 2`, and so on).
|
||||
# May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly.
|
||||
#
|
||||
# resize-damage = 1
|
||||
|
||||
# Specify a list of conditions of windows that should be painted with inverted color.
|
||||
# Resource-hogging, and is not well tested.
|
||||
#
|
||||
# invert-color-include = []
|
||||
|
||||
# GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer.
|
||||
# Might cause incorrect opacity when rendering transparent content (but never
|
||||
# practically happened) and may not work with blur-background.
|
||||
# My tests show a 15% performance boost. Recommended.
|
||||
#
|
||||
glx-no-stencil = true;
|
||||
|
||||
# GLX backend: Avoid rebinding pixmap on window damage.
|
||||
# Probably could improve performance on rapid window content changes,
|
||||
# but is known to break things on some drivers (LLVMpipe, xf86-video-intel, etc.).
|
||||
# Recommended if it works.
|
||||
#
|
||||
# glx-no-rebind-pixmap = false
|
||||
|
||||
# Disable the use of damage information.
|
||||
# This cause the whole screen to be redrawn every time, instead of the part of the screen
|
||||
# has actually changed. Potentially degrades the performance, but might fix some artifacts.
|
||||
# The opposing option is use-damage
|
||||
#
|
||||
# no-use-damage = false
|
||||
use-damage = true;
|
||||
|
||||
# Use X Sync fence to sync clients' draw calls, to make sure all draw
|
||||
# calls are finished before picom starts drawing. Needed on nvidia-drivers
|
||||
# with GLX backend for some users.
|
||||
#
|
||||
# xrender-sync-fence = false
|
||||
|
||||
# GLX backend: Use specified GLSL fragment shader for rendering window
|
||||
# contents. Read the man page for a detailed explanation of the interface.
|
||||
#
|
||||
# window-shader-fg = "default"
|
||||
|
||||
# Use rules to set per-window shaders. Syntax is SHADER_PATH:PATTERN, similar
|
||||
# to opacity-rule. SHADER_PATH can be "default". This overrides window-shader-fg.
|
||||
#
|
||||
# window-shader-fg-rule = [
|
||||
# "my_shader.frag:window_type != 'dock'"
|
||||
# ]
|
||||
|
||||
# Force all windows to be painted with blending. Useful if you
|
||||
# have a glx-fshader-win that could turn opaque pixels transparent.
|
||||
#
|
||||
# force-win-blend = false
|
||||
|
||||
# Do not use EWMH to detect fullscreen windows.
|
||||
# Reverts to checking if a window is fullscreen based only on its size and coordinates.
|
||||
#
|
||||
# no-ewmh-fullscreen = false
|
||||
|
||||
# Dimming bright windows so their brightness doesn't exceed this set value.
|
||||
# Brightness of a window is estimated by averaging all pixels in the window,
|
||||
# so this could comes with a performance hit.
|
||||
# Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0)
|
||||
#
|
||||
# max-brightness = 1.0
|
||||
|
||||
# Make transparent windows clip other windows like non-transparent windows do,
|
||||
# instead of blending on top of them.
|
||||
#
|
||||
# transparent-clipping = false
|
||||
|
||||
# Specify a list of conditions of windows that should never have transparent
|
||||
# clipping applied. Useful for screenshot tools, where you need to be able to
|
||||
# see through transparent parts of the window.
|
||||
#
|
||||
# transparent-clipping-exclude = []
|
||||
|
||||
# Set the log level. Possible values are:
|
||||
# "trace", "debug", "info", "warn", "error"
|
||||
# in increasing level of importance. Case doesn't matter.
|
||||
# If using the "TRACE" log level, it's better to log into a file
|
||||
# using *--log-file*, since it can generate a huge stream of logs.
|
||||
#
|
||||
# log-level = "debug"
|
||||
log-level = "warn";
|
||||
|
||||
# Set the log file.
|
||||
# If *--log-file* is never specified, logs will be written to stderr.
|
||||
# Otherwise, logs will to written to the given file, though some of the early
|
||||
# logs might still be written to the stderr.
|
||||
# When setting this option from the config file, it is recommended to use an absolute path.
|
||||
#
|
||||
# log-file = "/path/to/your/log/file"
|
||||
|
||||
# Show all X errors (for debugging)
|
||||
# show-all-xerrors = false
|
||||
|
||||
# Write process ID to a file.
|
||||
# write-pid-path = "/path/to/your/log/file"
|
||||
|
||||
# Window type settings
|
||||
#
|
||||
# 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard:
|
||||
# "unknown", "desktop", "dock", "toolbar", "menu", "utility",
|
||||
# "splash", "dialog", "normal", "dropdown_menu", "popup_menu",
|
||||
# "tooltip", "notification", "combo", and "dnd".
|
||||
#
|
||||
# Following per window-type options are available: ::
|
||||
#
|
||||
# fade, shadow:::
|
||||
# Controls window-type-specific shadow and fade settings.
|
||||
#
|
||||
# opacity:::
|
||||
# Controls default opacity of the window type.
|
||||
#
|
||||
# focus:::
|
||||
# Controls whether the window of this type is to be always considered focused.
|
||||
# (By default, all window types except "normal" and "dialog" has this on.)
|
||||
#
|
||||
# full-shadow:::
|
||||
# Controls whether shadow is drawn under the parts of the window that you
|
||||
# normally won't be able to see. Useful when the window has parts of it
|
||||
# transparent, and you want shadows in those areas.
|
||||
#
|
||||
# clip-shadow-above:::
|
||||
# Controls whether shadows that would have been drawn above the window should
|
||||
# be clipped. Useful for dock windows that should have no shadow painted on top.
|
||||
#
|
||||
# redir-ignore:::
|
||||
# Controls whether this type of windows should cause screen to become
|
||||
# redirected again after been unredirected. If you have unredir-if-possible
|
||||
# set, and doesn't want certain window to cause unnecessary screen redirection,
|
||||
# you can set this to `true`.
|
||||
#
|
||||
wintypes:
|
||||
{
|
||||
tooltip = { fade = true; shadow = true; opacity = 1; focus = true; full-shadow = false; };
|
||||
dock = { shadow = false; clip-shadow-above = true; }
|
||||
dnd = { shadow = false; }
|
||||
popup_menu = { opacity = 1; }
|
||||
dropdown_menu = { opacity = 1; }
|
||||
};
|
||||
99
misc/dot-config/rofi-pass/config
Normal file
99
misc/dot-config/rofi-pass/config
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
# permanently set alternative root dir. Use ":" to separate multiple roots
|
||||
# which can be switched at runtime with shift+left/right
|
||||
# root=/path/to/root
|
||||
|
||||
# rofi command. Make sure to have "$@" as last argument
|
||||
_rofi () {
|
||||
rofi -i -no-auto-select "$@"
|
||||
}
|
||||
|
||||
# default command to generate passwords
|
||||
_pwgen () {
|
||||
pwgen -y "$@"
|
||||
}
|
||||
|
||||
# image viewer to display qrcode of selected entry
|
||||
# qrencode is needed to generate the image and a viewer
|
||||
# that can read from pipes. Known viewers to work are feh and display
|
||||
_image_viewer () {
|
||||
feh -
|
||||
# display
|
||||
}
|
||||
|
||||
# xdotool needs the keyboard layout to be set using setxkbmap
|
||||
# You can do this in your autostart scripts (e.g. xinitrc)
|
||||
|
||||
# If for some reason, you cannot do this, you can set the command here.
|
||||
# and set fix_layout to true
|
||||
fix_layout=false
|
||||
|
||||
layout_cmd () {
|
||||
setxkbmap us
|
||||
}
|
||||
|
||||
# fields to be used
|
||||
URL_field='url'
|
||||
USERNAME_field='user'
|
||||
AUTOTYPE_field='autotype'
|
||||
|
||||
# delay to be used for :delay keyword
|
||||
delay=2
|
||||
|
||||
# rofi-pass needs to close itself before it can type passwords. Set delay here.
|
||||
wait=0.2
|
||||
|
||||
# delay between keypresses when typing (in ms)
|
||||
xdotool_delay=12
|
||||
|
||||
## Programs to be used
|
||||
# Editor
|
||||
EDITOR='gvim -f'
|
||||
|
||||
# Browser
|
||||
BROWSER='xdg-open'
|
||||
|
||||
## Misc settings
|
||||
|
||||
default_do='copyPass' # menu, autotype, copyPass, typeUser, typePass, copyUser, copyUrl, viewEntry, typeMenu, actionMenu, copyMenu, openUrl
|
||||
auto_enter='false'
|
||||
notify='true'
|
||||
default_autotype='user :tab pass'
|
||||
|
||||
# color of the help messages
|
||||
# leave empty for autodetection
|
||||
help_color="#4872FF"
|
||||
|
||||
# Clipboard settings
|
||||
# Possible options: primary, clipboard, both
|
||||
clip=clipboard
|
||||
|
||||
# Seconds before clearing pass from clipboard
|
||||
clip_clear=45
|
||||
|
||||
## Options for generating new password entries
|
||||
|
||||
# open new password entries in editor
|
||||
edit_new_pass="true"
|
||||
|
||||
# default_user is also used for password files that have no user field.
|
||||
#default_user="${ROFI_PASS_DEFAULT_USER-$(whoami)}"
|
||||
#default_user2=mary_ann
|
||||
#password_length=12
|
||||
|
||||
# Custom Keybindings
|
||||
autotype="Alt+1"
|
||||
type_user="Alt+2"
|
||||
type_pass="Alt+3"
|
||||
open_url="Alt+4"
|
||||
copy_name="Alt+u"
|
||||
copy_url="Alt+l"
|
||||
copy_pass="Alt+p"
|
||||
show="Alt+o"
|
||||
copy_entry="Alt+2"
|
||||
type_entry="Alt+1"
|
||||
copy_menu="Alt+c"
|
||||
action_menu="Alt+a"
|
||||
type_menu="Alt+t"
|
||||
help="Alt+h"
|
||||
switch="Alt+x"
|
||||
insert_pass="Alt+n"
|
||||
16
misc/dot-config/rofi/config.rasi
Normal file
16
misc/dot-config/rofi/config.rasi
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
configuration {
|
||||
font: "FiraCode 12";
|
||||
kb-cancel: "Super+q,Escape,Control+c";
|
||||
timeout {
|
||||
action: "kb-cancel";
|
||||
delay: 0;
|
||||
}
|
||||
filebrowser {
|
||||
directories-first: true;
|
||||
sorting-method: "name";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@theme "theme"
|
||||
|
||||
131
misc/dot-config/rofi/themes/gruvbox-common.rasi
Normal file
131
misc/dot-config/rofi/themes/gruvbox-common.rasi
Normal file
|
|
@ -0,0 +1,131 @@
|
|||
/* ==========================================================================
|
||||
File: gruvbox-common.rasi
|
||||
Desc: Shared rules between all gruvbox themes
|
||||
Author: bardisty <b@bah.im>
|
||||
Source: https://github.com/bardisty/gruvbox-rofi
|
||||
Modified: Mon Feb 12 2018 06:06:47 PST -0800
|
||||
========================================================================== */
|
||||
|
||||
window {
|
||||
background-color: @background;
|
||||
border: 2;
|
||||
padding: 2;
|
||||
}
|
||||
|
||||
mainbox {
|
||||
border: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
message {
|
||||
border: 2px 0 0;
|
||||
border-color: @separatorcolor;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
textbox {
|
||||
highlight: @highlight;
|
||||
text-color: @foreground;
|
||||
}
|
||||
|
||||
listview {
|
||||
border: 2px solid 0 0;
|
||||
padding: 2px 0 0;
|
||||
border-color: @separatorcolor;
|
||||
spacing: 2px;
|
||||
scrollbar: @scrollbar;
|
||||
}
|
||||
|
||||
element {
|
||||
border: 0;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
element.normal.normal {
|
||||
background-color: @normal-background;
|
||||
text-color: @normal-foreground;
|
||||
}
|
||||
|
||||
element.normal.urgent {
|
||||
background-color: @urgent-background;
|
||||
text-color: @urgent-foreground;
|
||||
}
|
||||
|
||||
element.normal.active {
|
||||
background-color: @active-background;
|
||||
text-color: @active-foreground;
|
||||
}
|
||||
|
||||
element.selected.normal {
|
||||
background-color: @selected-normal-background;
|
||||
text-color: @selected-normal-foreground;
|
||||
}
|
||||
|
||||
element.selected.urgent {
|
||||
background-color: @selected-urgent-background;
|
||||
text-color: @selected-urgent-foreground;
|
||||
}
|
||||
|
||||
element.selected.active {
|
||||
background-color: @selected-active-background;
|
||||
text-color: @selected-active-foreground;
|
||||
}
|
||||
|
||||
element.alternate.normal {
|
||||
background-color: @alternate-normal-background;
|
||||
text-color: @alternate-normal-foreground;
|
||||
}
|
||||
|
||||
element.alternate.urgent {
|
||||
background-color: @alternate-urgent-background;
|
||||
text-color: @alternate-urgent-foreground;
|
||||
}
|
||||
|
||||
element.alternate.active {
|
||||
background-color: @alternate-active-background;
|
||||
text-color: @alternate-active-foreground;
|
||||
}
|
||||
|
||||
scrollbar {
|
||||
width: 4px;
|
||||
border: 0;
|
||||
handle-color: @scrollbar-handle;
|
||||
handle-width: 8px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
mode-switcher {
|
||||
border: 2px 0 0;
|
||||
border-color: @separatorcolor;
|
||||
}
|
||||
|
||||
inputbar {
|
||||
spacing: 0;
|
||||
text-color: @normal-foreground;
|
||||
padding: 2px;
|
||||
children: [ prompt, textbox-prompt-sep, entry, case-indicator ];
|
||||
}
|
||||
|
||||
case-indicator,
|
||||
entry,
|
||||
prompt,
|
||||
button {
|
||||
spacing: 0;
|
||||
text-color: @normal-foreground;
|
||||
}
|
||||
|
||||
button.selected {
|
||||
background-color: @selected-normal-background;
|
||||
text-color: @selected-normal-foreground;
|
||||
}
|
||||
|
||||
textbox-prompt-sep {
|
||||
expand: false;
|
||||
str: ":";
|
||||
text-color: @normal-foreground;
|
||||
margin: 0 0.3em 0 0;
|
||||
}
|
||||
element-text, element-icon {
|
||||
background-color: inherit;
|
||||
text-color: inherit;
|
||||
}
|
||||
63
misc/dot-config/rofi/themes/gruvbox-dark-transparent.rasi
Normal file
63
misc/dot-config/rofi/themes/gruvbox-dark-transparent.rasi
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
/* ==========================================================================
|
||||
Rofi color theme
|
||||
|
||||
Based on the Gruvbox color scheme for Vim by morhetz
|
||||
https://github.com/morhetz/gruvbox
|
||||
|
||||
File: gruvbox-dark.rasi
|
||||
Desc: Gruvbox dark color theme for Rofi
|
||||
Author: bardisty <b@bah.im>
|
||||
Source: https://github.com/bardisty/gruvbox-rofi
|
||||
Modified: Mon Feb 12 2018 04:08:43 PST -0800
|
||||
========================================================================== */
|
||||
|
||||
* {
|
||||
/* Theme settings */
|
||||
highlight: bold italic;
|
||||
scrollbar: true;
|
||||
|
||||
/* Gruvbox dark colors */
|
||||
gruvbox-dark-bg0: #28282899;
|
||||
gruvbox-dark-bg0-soft: #32302f00;
|
||||
gruvbox-dark-bg3: #665c5499;
|
||||
gruvbox-dark-fg0: #fbf1c7;
|
||||
gruvbox-dark-fg1: #ebdbb2;
|
||||
gruvbox-dark-red-dark: #cc241d;
|
||||
gruvbox-dark-red-light: #fb4934;
|
||||
gruvbox-dark-yellow-dark: #d79921;
|
||||
gruvbox-dark-yellow-light: #fabd2f;
|
||||
gruvbox-dark-gray: #a89984;
|
||||
|
||||
/* Theme colors */
|
||||
background: transparent;
|
||||
background-color: @gruvbox-dark-bg0;
|
||||
|
||||
foreground: @gruvbox-dark-fg1;
|
||||
border-color: @gruvbox-dark-gray;
|
||||
separatorcolor: @border-color;
|
||||
scrollbar-handle: @border-color;
|
||||
|
||||
normal-background: @background;
|
||||
normal-foreground: @foreground;
|
||||
alternate-normal-background: @gruvbox-dark-bg0-soft;
|
||||
alternate-normal-foreground: @foreground;
|
||||
selected-normal-background: @gruvbox-dark-bg3;
|
||||
selected-normal-foreground: @gruvbox-dark-fg0;
|
||||
|
||||
active-background: @gruvbox-dark-yellow-dark;
|
||||
active-foreground: @background;
|
||||
alternate-active-background: @active-background;
|
||||
alternate-active-foreground: @active-foreground;
|
||||
selected-active-background: @gruvbox-dark-yellow-light;
|
||||
selected-active-foreground: @active-foreground;
|
||||
|
||||
urgent-background: @gruvbox-dark-red-dark;
|
||||
urgent-foreground: @background;
|
||||
alternate-urgent-background: @urgent-background;
|
||||
alternate-urgent-foreground: @urgent-foreground;
|
||||
selected-urgent-background: @gruvbox-dark-red-light;
|
||||
selected-urgent-foreground: @urgent-foreground;
|
||||
}
|
||||
|
||||
@import "gruvbox-common"
|
||||
|
||||
9
misc/dot-config/rofi/themes/theme.rasi
Normal file
9
misc/dot-config/rofi/themes/theme.rasi
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
@import "gruvbox-dark-transparent"
|
||||
|
||||
textbox-prompt-sep {
|
||||
expand: false;
|
||||
str: ""; // Override default prompt colon
|
||||
text-color: @normal-foreground;
|
||||
margin: 0 0.3em 0 0;
|
||||
}
|
||||
|
||||
76
misc/dot-config/starship.def.toml
Normal file
76
misc/dot-config/starship.def.toml
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
# Use starship.def.toml to edit the starship configuration. There should be an entr daemon
|
||||
# running which, upon changes to the file, will replace each instance of ${ACCENT_COLOR} with
|
||||
# the appropriate environment variable. This hack was cobbled together because starship currently
|
||||
# does not allow environment variables to be used as a style (which is dumb)
|
||||
|
||||
# Inserts a blank line between shell prompts
|
||||
add_newline = false
|
||||
|
||||
format = '''
|
||||
[┌──\([$username@$hostname](bold ${ACCENT_COLOR})\)-\[$directory\](-\[$git_branch$git_metrics$git_status\])(-\[$nix_shell\])](${ACCENT_COLOR}) $cmd_duration
|
||||
[└$shell ](${ACCENT_COLOR})'''
|
||||
# format = '''
|
||||
# [\[$directory\](-\[$git_branch$git_metrics$git_status\])(-\[$nix_shell\])](${ACCENT_COLOR})[λ ](${ACCENT_COLOR} bold)
|
||||
# '''
|
||||
right_format = '$status'
|
||||
|
||||
[line_break]
|
||||
disabled = false
|
||||
|
||||
[username]
|
||||
style_user = 'bold ${ACCENT_COLOR}'
|
||||
style_root = 'bold red'
|
||||
format = '[$user]($style)'
|
||||
disabled = false
|
||||
show_always = true
|
||||
|
||||
[nix_shell]
|
||||
symbol = '❄️'
|
||||
format = '[$symbol$name](bold purple)'
|
||||
|
||||
[hostname]
|
||||
ssh_only = false
|
||||
format = '[$ssh_symbol](bold blue)$hostname'
|
||||
trim_at = '.companyname.com'
|
||||
disabled = false
|
||||
|
||||
[git_branch]
|
||||
style = 'bold green'
|
||||
symbol = ''
|
||||
format = '[$symbol$branch(hello$banch)](bold green)'
|
||||
|
||||
[git_status]
|
||||
modified = '[✘](bold red)'
|
||||
up_to_date = 'up'
|
||||
format = '$up_to_date$modified$up_to_date'
|
||||
|
||||
[directory]
|
||||
truncation_length = 3
|
||||
truncation_symbol = '…/'
|
||||
truncate_to_repo = true
|
||||
style = 'bold white'
|
||||
format = '[$path]($style)[$read_only]($read_only_style)'
|
||||
|
||||
[character]
|
||||
success_symbol = '[λ](bold ${ACCENT_COLOR})'
|
||||
error_symbol = '[λ](bold red)'
|
||||
# success_symbol = '[❯](bold ${ACCENT_COLOR})'
|
||||
# error_symbol = '[❯](bold red)'
|
||||
|
||||
[cmd_duration]
|
||||
min_time = 1_000
|
||||
style = "bold dimmed yellow"
|
||||
format = '◷[$duration]($style) '
|
||||
|
||||
[shell]
|
||||
fish_indicator = '─[](bold ${ACCENT_COLOR})'
|
||||
powershell_indicator = '[_](bold ${ACCENT_COLOR})'
|
||||
bash_indicator = '─[\$](bold ${ACCENT_COLOR})'
|
||||
zsh_indicator = '─[λ](bold ${ACCENT_COLOR})'
|
||||
unknown_indicator = '─[?](bold ${ACCENT_COLOR})'
|
||||
disabled = false
|
||||
format = '$indicator'
|
||||
|
||||
[status]
|
||||
disabled = false
|
||||
|
||||
73
misc/dot-config/starship.toml
Normal file
73
misc/dot-config/starship.toml
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
# Use starship.def.toml to edit the starship configuration. There should be an entr daemon
|
||||
# running which, upon changes to the file, will replace each instance of blue with
|
||||
# the appropriate environment variable. This hack was cobbled together because starship currently
|
||||
# does not allow environment variables to be used as a style (which is dumb)
|
||||
|
||||
# Inserts a blank line between shell prompts
|
||||
add_newline = false
|
||||
|
||||
format = '''[╭──\([$username@$hostname](bold blue)\)-\[$directory\](-\[$git_branch$git_metrics$git_status\])(-\[$nix_shell\])](blue) $cmd_duration
|
||||
[╰─](blue)[$shell](bold blue) '''
|
||||
# format = '''
|
||||
# [\[$directory\](-\[$git_branch$git_metrics$git_status\])(-\[$nix_shell\])](blue)[λ ](blue bold)
|
||||
# '''
|
||||
right_format = '$status'
|
||||
|
||||
[line_break]
|
||||
disabled = false
|
||||
|
||||
[username]
|
||||
format = '$user'
|
||||
disabled = false
|
||||
show_always = true
|
||||
|
||||
[nix_shell]
|
||||
symbol = '❄️'
|
||||
format = '[$symbol$name](bold purple)'
|
||||
|
||||
[hostname]
|
||||
ssh_only = false
|
||||
format = '[$ssh_symbol](bold blue)$hostname'
|
||||
trim_at = '.companyname.com'
|
||||
disabled = false
|
||||
|
||||
[git_branch]
|
||||
style = 'bold green'
|
||||
symbol = ''
|
||||
format = '[$symbol$branch(hello$banch)](bold green)'
|
||||
|
||||
[git_status]
|
||||
modified = '[✘](bold red)'
|
||||
up_to_date = 'up'
|
||||
format = '$up_to_date$modified$up_to_date'
|
||||
|
||||
[directory]
|
||||
truncation_length = 3
|
||||
truncation_symbol = '…/'
|
||||
truncate_to_repo = true
|
||||
style = 'bold white'
|
||||
format = '[$path]($style)[$read_only]($read_only_style)'
|
||||
|
||||
[character]
|
||||
success_symbol = '[λ](bold blue)'
|
||||
error_symbol = '[λ](bold red)'
|
||||
# success_symbol = '[❯](bold blue)'
|
||||
# error_symbol = '[❯](bold red)'
|
||||
|
||||
[cmd_duration]
|
||||
min_time = 1_000
|
||||
style = "bold dimmed yellow"
|
||||
format = '◷[$duration]($style) '
|
||||
|
||||
[shell]
|
||||
fish_indicator = ''
|
||||
powershell_indicator = '_'
|
||||
bash_indicator = '\$'
|
||||
zsh_indicator = 'λ'
|
||||
unknown_indicator = '?'
|
||||
disabled = false
|
||||
format = '$indicator'
|
||||
|
||||
[status]
|
||||
disabled = false
|
||||
|
||||
71
misc/dot-config/sxhkd/sxhkdrc
Normal file
71
misc/dot-config/sxhkd/sxhkdrc
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
#!/bin/sh
|
||||
# Using super as the main modifier key, so remember to check if a key conflicts with a DWM keybinding.
|
||||
|
||||
# Reload sxhkdrc configuration
|
||||
super + shift + r
|
||||
pkill -usr1 -x sxhkd; notify-send 'sxhkd' 'Reloaded config'
|
||||
|
||||
# Running dmenu/rofi scripts
|
||||
ctrl + alt + BackSpace
|
||||
st -e $SHELL -c 'htop'
|
||||
super + r
|
||||
menu-run
|
||||
super + d; p
|
||||
rofi-pass
|
||||
super + d; s
|
||||
menu-sink
|
||||
super + grave
|
||||
menu-unicode
|
||||
super + d; l
|
||||
menu-layout
|
||||
super + d; m
|
||||
menu-man
|
||||
super + n
|
||||
menu-norg
|
||||
|
||||
# Change layouts
|
||||
super + C
|
||||
autorandr --change --default default
|
||||
|
||||
# Spawn programs
|
||||
super + c
|
||||
emacsclient -c -a "emacs" -n --eval '(progn (set-frame-font "FiraCode Nerd Font") (cfw:open-org-calendar))'
|
||||
super + u
|
||||
emacsclient -c -a "emacs" -n --eval '(vterm-frame)'
|
||||
super + Return
|
||||
st
|
||||
super + w
|
||||
$BROWSER
|
||||
super + e
|
||||
st -e $SHELL -c 'tmp="$(mktemp)" && command lf -last-dir-path="$tmp" "$@" && test -f "$tmp" && dir="$(command cat "$tmp")" && rm -f "$tmp" && test -d "$dir" && cd "$dir" && exec $SHELL'
|
||||
super + s; e
|
||||
emacsclient -c -a 'emacs'
|
||||
|
||||
# Implementing basic control hotkeys
|
||||
super + l
|
||||
xsecurelock
|
||||
# Print
|
||||
F10
|
||||
rofi -dmenu -l 0 -p "Screenshot filename" < /dev/null | xargs -I "name" maim -s ~/name
|
||||
# shift + Print
|
||||
shift + F10
|
||||
rofi -dmenu -l 0 -p "Screenshot filename" < /dev/null | xargs -I "name" maim ~/name
|
||||
super + p
|
||||
rofi -dmenu -l 0 -p "Screenshot filename" < /dev/null | xargs -I "name" maim -s ~/name
|
||||
super + P
|
||||
rofi -dmenu -l 0 -p "Screenshot filename" < /dev/null | xargs -I "name" maim ~/name
|
||||
super + minus
|
||||
wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%-; notify-send -r 44 "$(wpctl get-volume @DEFAULT_AUDIO_SINK@)"
|
||||
super + shift + minus
|
||||
wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-; notify-send -r 44 "$(wpctl get-volume @DEFAULT_AUDIO_SINK@)"
|
||||
super + equal
|
||||
wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%+; notify-send -r 44 "$(wpctl get-volume @DEFAULT_AUDIO_SINK@)"
|
||||
super + shift + equal
|
||||
wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+; notify-send -r 44 "$(wpctl get-volume @DEFAULT_AUDIO_SINK@)"
|
||||
# XF86MonBrightnessUp
|
||||
F7
|
||||
change-brightness up
|
||||
# XF86MonBrightnessDown
|
||||
F6
|
||||
change-brightness down
|
||||
|
||||
30
misc/dot-config/tmux/tmux.conf
Normal file
30
misc/dot-config/tmux/tmux.conf
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
set -g default-terminal "tmux-256color"
|
||||
set -ga terminal-overrides ",*256col*:Tc"
|
||||
|
||||
# Change tmux prefix
|
||||
unbind C-b
|
||||
set-option -g prefix C-a
|
||||
bind-key C-a send-prefix
|
||||
|
||||
set -g mouse on
|
||||
#set -g mouse-resize-pane on
|
||||
#set -g mouse-select-pane on
|
||||
#set -g mouse-select-window on
|
||||
# For newer versions of tmux:
|
||||
set -g mouse on
|
||||
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'select-pane -t=; copy-mode -e; #send-keys -M'"
|
||||
bind -n WheelDownPane select-pane -t= \; send-keys -M
|
||||
set -g status-style 'bg=#333333 fg=#5eacd3'
|
||||
|
||||
# Vim-like visual mode and yanking
|
||||
set-window-option -g mode-keys vi
|
||||
bind -T copy-mode-vi v send-keys -X begin-selection
|
||||
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard'
|
||||
|
||||
# Vim-like pane switching
|
||||
bind -r ^ last-window
|
||||
bind -r k select-pane -U
|
||||
bind -r j select-pane -D
|
||||
bind -r h select-pane -L
|
||||
bind -r l select-pane -R
|
||||
|
||||
72
misc/dot-config/waybar/config
Normal file
72
misc/dot-config/waybar/config
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
{
|
||||
"layer": "top",
|
||||
"position": "top",
|
||||
"height": 27,
|
||||
|
||||
"modules-left": ["hyprland/workspaces", "custom/scratch", "hyprland/mode", "hyprland/window"],
|
||||
"modules-center": [],
|
||||
"modules-right": ["memory", "pulseaudio", "battery", "tray", "clock"],
|
||||
|
||||
"hyprland/workspaces": {
|
||||
"disable-scroll": true,
|
||||
"disable-markup": true,
|
||||
"format": "{name}"
|
||||
},
|
||||
|
||||
"hyprland/window": {
|
||||
"format": "{}",
|
||||
"max-length": 150
|
||||
},
|
||||
|
||||
"tray": {
|
||||
"icon-size": 18,
|
||||
"spacing": 15
|
||||
},
|
||||
|
||||
"clock": {
|
||||
"format": "{: %a %b%e %R}",
|
||||
"interval": 30
|
||||
},
|
||||
|
||||
"memory": {
|
||||
"interval": 5,
|
||||
"format": " {used:0.1f}G/{total:0.1f}G "
|
||||
},
|
||||
|
||||
"battery": {
|
||||
"bat": "BAT0",
|
||||
"states": {
|
||||
"full": 99,
|
||||
"good": 98,
|
||||
"normal": 98,
|
||||
"warning": 20,
|
||||
"critical": 20
|
||||
},
|
||||
"format": "{icon} {capacity}%",
|
||||
"format-good": "{icon} {capacity}%",
|
||||
"format-full": " {capacity}%",
|
||||
"format-charging": " {capacity}%",
|
||||
"format-icons": ["", "", "", "", ""],
|
||||
"interval": 30
|
||||
},
|
||||
|
||||
"network": {
|
||||
"interface": "wlp0s20f3",
|
||||
"format-wifi": " {essid} ",
|
||||
"format-disconnected": " ",
|
||||
"interval": 60
|
||||
},
|
||||
|
||||
"pulseaudio": {
|
||||
"format": " {icon} {volume}%",
|
||||
"format-bluetooth": " {volume}% ",
|
||||
"format-muted":"婢 Mute ",
|
||||
"interval": 60,
|
||||
|
||||
"format-icons": {
|
||||
"default": [""]
|
||||
},
|
||||
|
||||
"on-click": "blueman-manager"
|
||||
}
|
||||
}
|
||||
78
misc/dot-config/waybar/style.css
Normal file
78
misc/dot-config/waybar/style.css
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
* {
|
||||
font-family: FiraCode, Symbols Nerd Font Mono, FontAwesome;
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background-color: rgba(0, 0, 0, 0.8);
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
#window {
|
||||
color: #ffffff;
|
||||
padding: 0px 10px 0px 10px;
|
||||
}
|
||||
|
||||
button:hover {
|
||||
color: #ffffff;
|
||||
border-bottom: 3px solid #ffffff;
|
||||
background: rgba(150, 150, 150, 0.5);
|
||||
box-shadow: inset 0 -3px #ffffff;
|
||||
}
|
||||
|
||||
.modules-left {
|
||||
padding: 0px 0px 0px 0px;
|
||||
}
|
||||
|
||||
.modules-right {
|
||||
padding: 0px 5px 0px 0px;
|
||||
}
|
||||
|
||||
|
||||
#custom-scratch {
|
||||
color: #b8b8b8;
|
||||
padding: 0px 9px 0px 9px;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
padding: 0px 11px 0px 11px;
|
||||
min-width: 1px;
|
||||
color: #888888;
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
#workspaces button.active {
|
||||
padding: 0px 11px 0px 11px;
|
||||
color: #ffffff;
|
||||
box-shadow: inset 0 -3px #ffffff;
|
||||
}
|
||||
|
||||
#mode {
|
||||
background-color: #900000;
|
||||
color: #ffffff;
|
||||
padding: 0px 5px 0px 5px;
|
||||
border: 1px solid #2f343a;
|
||||
}
|
||||
|
||||
#network, #temperature, #backlight, #pulseudio, #battery {
|
||||
padding: 0px 15px 0px 15px;
|
||||
}
|
||||
|
||||
#clock {
|
||||
margin: 0px 15px 0px 15px;
|
||||
}
|
||||
|
||||
#tray{
|
||||
padding: 0px 8px 0px 5px;
|
||||
margin: 0px 5px 0px 5px;
|
||||
}
|
||||
|
||||
#battery.critical {
|
||||
color: #ff5555;
|
||||
}
|
||||
|
||||
#network.disconnected {
|
||||
color: #ff5555;
|
||||
}
|
||||
|
||||
66
misc/dot-config/yazi/init.lua
Normal file
66
misc/dot-config/yazi/init.lua
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
---@diagnostic disable: undefined-global
|
||||
|
||||
-- Draw a full bar around window
|
||||
function Manager:render(area)
|
||||
self.area = area
|
||||
|
||||
local chunks = ui.Layout()
|
||||
:direction(ui.Layout.HORIZONTAL)
|
||||
:constraints({
|
||||
ui.Constraint.Ratio(MANAGER.ratio.parent, MANAGER.ratio.all),
|
||||
ui.Constraint.Ratio(MANAGER.ratio.current, MANAGER.ratio.all),
|
||||
ui.Constraint.Ratio(MANAGER.ratio.preview, MANAGER.ratio.all),
|
||||
})
|
||||
:split(area)
|
||||
|
||||
local bar = function(c, x, y)
|
||||
x, y = math.max(0, x), math.max(0, y)
|
||||
return ui.Bar(ui.Rect { x = x, y = y, w = ya.clamp(0, area.w - x, 1), h = math.min(1, area.h) }, ui.Bar.TOP)
|
||||
:symbol(c)
|
||||
end
|
||||
|
||||
return ya.flat {
|
||||
-- Borders
|
||||
ui.Border(area, ui.Border.ALL):type(ui.Border.ROUNDED),
|
||||
ui.Bar(chunks[1], ui.Bar.RIGHT),
|
||||
ui.Bar(chunks[3], ui.Bar.LEFT),
|
||||
|
||||
bar("┬", chunks[1].right - 1, chunks[1].y),
|
||||
bar("┴", chunks[1].right - 1, chunks[1].bottom - 1),
|
||||
bar("┬", chunks[2].right, chunks[2].y),
|
||||
bar("┴", chunks[2].right, chunks[1].bottom - 1),
|
||||
|
||||
-- Parent
|
||||
Parent:render(chunks[1]:padding(ui.Padding.xy(1))),
|
||||
-- Current
|
||||
Current:render(chunks[2]:padding(ui.Padding.y(1))),
|
||||
-- Preview
|
||||
Preview:render(chunks[3]:padding(ui.Padding.xy(1))),
|
||||
}
|
||||
end
|
||||
|
||||
-- Show user and hostname in top bar
|
||||
-- function Header:host()
|
||||
-- return ui.Span(ya.user_name() .. "@" .. ya.host_name() .. ":"):fg("blue")
|
||||
-- end
|
||||
--
|
||||
-- function Header:layout(area)
|
||||
-- self.area = area
|
||||
--
|
||||
-- return ui.Layout()
|
||||
-- :direction(ui.Layout.HORIZONTAL)
|
||||
-- :constraints({ ui.Constraint.Percentage(50), ui.Constraint.Percentage(50) })
|
||||
-- :split(area)
|
||||
-- end
|
||||
--
|
||||
-- function Header:render(area)
|
||||
-- local chunks = self:layout(area)
|
||||
--
|
||||
-- local left = ui.Line { self:host(), self:cwd() }
|
||||
-- local right = ui.Line { self:tabs() }
|
||||
-- return {
|
||||
-- ui.Paragraph(chunks[1], { left }),
|
||||
-- ui.Paragraph(chunks[2], { right }):align(ui.Paragraph.RIGHT),
|
||||
-- }
|
||||
-- end
|
||||
--
|
||||
15
misc/dot-config/yazi/keymap.toml
Normal file
15
misc/dot-config/yazi/keymap.toml
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
# A TOML linter such as https://taplo.tamasfe.dev/ can use this schema to validate your config.
|
||||
# If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas.
|
||||
"$schema" = "https://yazi-rs.github.io/schemas/keymap.json"
|
||||
|
||||
[manager]
|
||||
|
||||
prepend_keymap = [
|
||||
{ on = [ "l" ], exec = [ "plugin smart-enter --sync", "escape --visual --select" ], desc = "Enter the child directory, or open file." },
|
||||
{ on = [ "L" ], exec = "plugin smart-enter --sync --args='detatch'", desc = "Open in new window." },
|
||||
{ on = [ "n" ], exec = "create", desc = "Create a file or directory (ends with / for directories)" },
|
||||
{ on = [ "=" ], exec = """
|
||||
shell 'printf "Mode Bits: "; read ans; chmod $ans "$@"' --block --confirm
|
||||
""", desc = "chmod" },
|
||||
]
|
||||
|
||||
19
misc/dot-config/yazi/plugins/smart-enter.yazi/init.lua
Normal file
19
misc/dot-config/yazi/plugins/smart-enter.yazi/init.lua
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
---@diagnostic disable: undefined-global
|
||||
|
||||
return {
|
||||
entry = function(self, args)
|
||||
local h = cx.active.current.hovered
|
||||
if h and h.cha.is_dir then
|
||||
ya.manager_emit("enter", {})
|
||||
return
|
||||
end
|
||||
|
||||
if #args > 0 and args[1] == "detatch" then
|
||||
os.execute(string.format("opener detatch \"%s\"", h.url))
|
||||
else
|
||||
ya.manager_emit("open", {})
|
||||
-- os.execute(string.format("opener \"%s\"", h.url))
|
||||
end
|
||||
end,
|
||||
}
|
||||
|
||||
397
misc/dot-config/yazi/theme.toml
Normal file
397
misc/dot-config/yazi/theme.toml
Normal file
|
|
@ -0,0 +1,397 @@
|
|||
# A TOML linter such as https://taplo.tamasfe.dev/ can use this schema to validate your config.
|
||||
# If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas.
|
||||
"$schema" = "https://yazi-rs.github.io/schemas/theme.json"
|
||||
|
||||
# vim:fileencoding=utf-8:foldmethod=marker
|
||||
|
||||
# : Manager {{{
|
||||
|
||||
[manager]
|
||||
cwd = { fg = "white", bold = true }
|
||||
|
||||
# Hovered
|
||||
hovered = { fg = "black", bg = "lightblue" }
|
||||
preview_hovered = { underline = true }
|
||||
|
||||
# Find
|
||||
find_keyword = { fg = "yellow", italic = true }
|
||||
find_position = { fg = "magenta", bg = "reset", italic = true }
|
||||
|
||||
# Marker
|
||||
marker_selected = { fg = "lightgreen", bg = "lightgreen" }
|
||||
marker_copied = { fg = "lightyellow", bg = "lightyellow" }
|
||||
marker_cut = { fg = "lightred", bg = "lightred" }
|
||||
|
||||
# Tab
|
||||
tab_active = { fg = "black", bg = "lightblue" }
|
||||
tab_inactive = { fg = "white", bg = "darkgray" }
|
||||
tab_width = 1
|
||||
|
||||
# Border
|
||||
border_symbol = "│"
|
||||
border_style = { fg = "gray" }
|
||||
|
||||
# Highlighting
|
||||
syntect_theme = ""
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : Status {{{
|
||||
|
||||
[status]
|
||||
separator_open = ""
|
||||
separator_close = ""
|
||||
separator_style = { fg = "darkgray", bg = "darkgray" }
|
||||
|
||||
# Mode
|
||||
mode_normal = { fg = "black", bg = "lightblue", bold = true }
|
||||
mode_select = { fg = "black", bg = "lightgreen", bold = true }
|
||||
mode_unset = { fg = "black", bg = "lightmagenta", bold = true }
|
||||
|
||||
# Progress
|
||||
progress_label = { bold = true }
|
||||
progress_normal = { fg = "blue", bg = "black" }
|
||||
progress_error = { fg = "red", bg = "black" }
|
||||
|
||||
# Permissions
|
||||
permissions_t = { fg = "lightgreen" }
|
||||
permissions_r = { fg = "lightyellow" }
|
||||
permissions_w = { fg = "lightred" }
|
||||
permissions_x = { fg = "lightcyan" }
|
||||
permissions_s = { fg = "darkgray" }
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : Select {{{
|
||||
|
||||
[select]
|
||||
border = { fg = "blue" }
|
||||
active = { fg = "magenta" }
|
||||
inactive = {}
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : Input {{{
|
||||
|
||||
[input]
|
||||
border = { fg = "blue" }
|
||||
title = {}
|
||||
value = {}
|
||||
selected = { reversed = true }
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : Completion {{{
|
||||
|
||||
[completion]
|
||||
border = { fg = "blue" }
|
||||
active = { bg = "darkgray" }
|
||||
inactive = {}
|
||||
|
||||
# Icons
|
||||
icon_file = ""
|
||||
icon_folder = ""
|
||||
icon_command = ""
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : Tasks {{{
|
||||
|
||||
[tasks]
|
||||
border = { fg = "blue" }
|
||||
title = {}
|
||||
hovered = { underline = true }
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : Which {{{
|
||||
|
||||
[which]
|
||||
cols = 3
|
||||
mask = { bg = "black" }
|
||||
cand = { fg = "lightcyan" }
|
||||
rest = { fg = "darkgray" }
|
||||
desc = { fg = "magenta" }
|
||||
separator = " "
|
||||
separator_style = { fg = "darkgray" }
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : Help {{{
|
||||
|
||||
[help]
|
||||
on = { fg = "magenta" }
|
||||
exec = { fg = "cyan" }
|
||||
desc = { fg = "gray" }
|
||||
hovered = { bg = "darkgray", bold = true }
|
||||
footer = { fg = "black", bg = "white" }
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : File-specific styles {{{
|
||||
|
||||
[filetype]
|
||||
|
||||
rules = [
|
||||
# Images
|
||||
{ mime = "image/*", fg = "magenta" },
|
||||
|
||||
# Videos
|
||||
{ mime = "video/*", fg = "green" },
|
||||
{ mime = "audio/*", fg = "green" },
|
||||
|
||||
# Archives
|
||||
{ mime = "application/zip", fg = "red" },
|
||||
{ mime = "application/gzip", fg = "red" },
|
||||
{ mime = "application/x-tar", fg = "red" },
|
||||
{ mime = "application/x-bzip", fg = "red" },
|
||||
{ mime = "application/x-bzip2", fg = "red" },
|
||||
{ mime = "application/x-7z-compressed", fg = "red" },
|
||||
{ mime = "application/x-rar", fg = "red" },
|
||||
{ mime = "application/xz", fg = "red" },
|
||||
|
||||
# Documents
|
||||
# { mime = "application/doc", fg = "green" },
|
||||
{ mime = "application/pdf", fg = "magenta" },
|
||||
# { mime = "application/rtf", fg = "green" },
|
||||
# { mime = "application/vnd.*", fg = "green" },
|
||||
|
||||
# Fallback
|
||||
# { name = "*", fg = "white" },
|
||||
{ name = "*", fg = "yellow", bold = true, is = "exec" },
|
||||
{ name = "*/", fg = "blue", bold = true }
|
||||
]
|
||||
|
||||
[icon]
|
||||
|
||||
rules = [
|
||||
# Programming
|
||||
{ name = "*.cpp" , text = "", fg = "#519aba" },
|
||||
{ name = "*.css" , text = "", fg = "#42a5f5" },
|
||||
{ name = "*.c" , text = "", fg = "#599eff" },
|
||||
{ name = "*.fish" , text = "" },
|
||||
{ name = "*.go" , text = "", fg = "#519aba" },
|
||||
{ name = "*.hpp" , text = "", fg = "#a074c4" },
|
||||
{ name = "*.h" , text = "", fg = "#a074c4" },
|
||||
{ name = "*.htm" , text = "", fg = "#e44d26" },
|
||||
{ name = "*.html" , text = "", fg = "#e44d26" },
|
||||
{ name = "*.java" , text = "", fg = "#cc3e44" },
|
||||
{ name = "*.js" , text = "", fg = "#F1F134" },
|
||||
{ name = "*.jsx" , text = "", fg = "#20c2e3" },
|
||||
{ name = "*.lua" , text = "", fg = "#51a0cf" },
|
||||
{ name = "*.nix" , text = "", fg = "#7ab1db" },
|
||||
{ name = "*.php" , text = "" },
|
||||
{ name = "*.rb" , text = "" },
|
||||
{ name = "*.rs" , text = "", fg = "#dea584" },
|
||||
{ name = "*.scss" , text = "" },
|
||||
{ name = "*.sh" , text = "", fg = "#4d5a5e" },
|
||||
{ name = "*.swift", text = "" },
|
||||
{ name = "*.ts" , text = "", fg = "#519aba" },
|
||||
{ name = "*.tsx" , text = "" },
|
||||
{ name = "*.vim" , text = "" },
|
||||
{ name = "*.vue" , text = "" },
|
||||
{ name = "*.py" , text = "", fg = "#ffbc03" },
|
||||
{ name = "*.pyc" , text = "", fg = "#ffe291" },
|
||||
|
||||
# Text
|
||||
{ name = "*.txt" , text = "", fg = "#bbbbbb" },
|
||||
{ name = "*.csv" , text = "", fg = "#89e051" },
|
||||
{ name = "*.json" , text = "", fg = "#cbcb41" },
|
||||
{ name = "*.conf" , text = "", fg = "#6d8086" }, # Configuration
|
||||
{ name = "*.ini" , text = "", fg = "#6d8086" },
|
||||
{ name = "*.yaml" , text = "", fg = "#6d8086" },
|
||||
{ name = "*.yml" , text = "", fg = "#6d8086" },
|
||||
{ name = "*.toml" , text = "", fg = "#6d8086" },
|
||||
{ name = "*.org" , text = "", fg = "#77aa99" },
|
||||
{ name = "*.tex" , text = "", fg = "#3d6117" }, # Plaintext typesetting
|
||||
{ name = "*.typ" , text = "", fg = "#0e606a" },
|
||||
{ name = "*.markdown", text = "", fg = "#519aba" }, # Markdown
|
||||
{ name = "*.md" , text = "", fg = "#519aba" },
|
||||
{ name = "*.mdx" , text = "", fg = "#519aba" },
|
||||
{ name = "*.rmd" , text = "", fg = "#519aba" },
|
||||
|
||||
# Archives
|
||||
{ name = "*.7z" , text = "" },
|
||||
{ name = "*.ace" , text = "" },
|
||||
{ name = "*.alz" , text = "" },
|
||||
{ name = "*.arc" , text = "" },
|
||||
{ name = "*.arj" , text = "" },
|
||||
{ name = "*.bz2" , text = "" },
|
||||
{ name = "*.bz" , text = "" },
|
||||
{ name = "*.cab" , text = "" },
|
||||
{ name = "*.cpio", text = "" },
|
||||
{ name = "*.deb" , text = "" },
|
||||
{ name = "*.dwm" , text = "" },
|
||||
{ name = "*.dz" , text = "" },
|
||||
{ name = "*.ear" , text = "" },
|
||||
{ name = "*.esd" , text = "" },
|
||||
{ name = "*.gz" , text = "" },
|
||||
{ name = "*.jar" , text = "" },
|
||||
{ name = "*.lha" , text = "" },
|
||||
{ name = "*.lrz" , text = "" },
|
||||
{ name = "*.lz4" , text = "" },
|
||||
{ name = "*.lzh" , text = "" },
|
||||
{ name = "*.lzma", text = "" },
|
||||
{ name = "*.lzo" , text = "" },
|
||||
{ name = "*.lz" , text = "" },
|
||||
{ name = "*.rar" , text = "" },
|
||||
{ name = "*.rpm" , text = "" },
|
||||
{ name = "*.rz" , text = "" },
|
||||
{ name = "*.sar" , text = "" },
|
||||
{ name = "*.swm" , text = "" },
|
||||
{ name = "*.t7z" , text = "" },
|
||||
{ name = "*.tar" , text = "" },
|
||||
{ name = "*.taz" , text = "" },
|
||||
{ name = "*.tbz2", text = "" },
|
||||
{ name = "*.tbz" , text = "" },
|
||||
{ name = "*.tgz" , text = "" },
|
||||
{ name = "*.tlz" , text = "" },
|
||||
{ name = "*.txz" , text = "" },
|
||||
{ name = "*.tzo" , text = "" },
|
||||
{ name = "*.tzst", text = "" },
|
||||
{ name = "*.tz" , text = "" },
|
||||
{ name = "*.war" , text = "" },
|
||||
{ name = "*.wim" , text = "" },
|
||||
{ name = "*.xz" , text = "" },
|
||||
{ name = "*.zip" , text = "" },
|
||||
{ name = "*.zoo" , text = "" },
|
||||
{ name = "*.zst" , text = "" },
|
||||
{ name = "*.z" , text = "" },
|
||||
|
||||
# Images
|
||||
{ name = "*.bmp" , text = "" }, # Lossless
|
||||
{ name = "*.gif" , text = "" },
|
||||
{ name = "*.png" , text = "" },
|
||||
{ name = "*.tiff" , text = "" },
|
||||
{ name = "*.webp" , text = "" },
|
||||
{ name = "*.jpeg" , text = "" }, # Lossy
|
||||
{ name = "*.jpg" , text = "" },
|
||||
{ name = "*.mjpeg", text = "" },
|
||||
{ name = "*.mjpg" , text = "" },
|
||||
{ name = "*.mng" , text = "" },
|
||||
{ name = "*.pbm" , text = "" },
|
||||
{ name = "*.pcx" , text = "" },
|
||||
{ name = "*.pgm" , text = "" },
|
||||
{ name = "*.ppm" , text = "" },
|
||||
{ name = "*.svg" , text = "" },
|
||||
{ name = "*.svgz" , text = "" },
|
||||
{ name = "*.tga" , text = "" },
|
||||
{ name = "*.tif" , text = "" },
|
||||
{ name = "*.xbm" , text = "" },
|
||||
{ name = "*.xpm" , text = "" },
|
||||
|
||||
# Movies
|
||||
{ name = "*.asf" , text = "" },
|
||||
{ name = "*.avi" , text = "" },
|
||||
{ name = "*.cgm" , text = "" },
|
||||
{ name = "*.dl" , text = "" },
|
||||
{ name = "*.emf" , text = "" },
|
||||
{ name = "*.flc" , text = "" },
|
||||
{ name = "*.fli" , text = "" },
|
||||
{ name = "*.flv" , text = "" },
|
||||
{ name = "*.gl" , text = "" },
|
||||
{ name = "*.m2v" , text = "" },
|
||||
{ name = "*.m4v" , text = "" },
|
||||
{ name = "*.mkv" , text = "" },
|
||||
{ name = "*.mov" , text = "" },
|
||||
{ name = "*.mp4" , text = "" },
|
||||
{ name = "*.mp4v", text = "" },
|
||||
{ name = "*.mpeg", text = "" },
|
||||
{ name = "*.mpg" , text = "" },
|
||||
{ name = "*.nuv" , text = "" },
|
||||
{ name = "*.ogm" , text = "" },
|
||||
{ name = "*.ogv" , text = "" },
|
||||
{ name = "*.ogx" , text = "" },
|
||||
{ name = "*.qt" , text = "" },
|
||||
{ name = "*.rm" , text = "" },
|
||||
{ name = "*.rmvb", text = "" },
|
||||
{ name = "*.vob" , text = "" },
|
||||
{ name = "*.webm", text = "" },
|
||||
{ name = "*.wmv" , text = "" },
|
||||
{ name = "*.xcf" , text = "" },
|
||||
{ name = "*.xwd" , text = "" },
|
||||
{ name = "*.yuv" , text = "" },
|
||||
|
||||
# Audio
|
||||
{ name = "*.aac" , text = "" },
|
||||
{ name = "*.au" , text = "" },
|
||||
{ name = "*.flac", text = "" },
|
||||
{ name = "*.m4a" , text = "" },
|
||||
{ name = "*.mid" , text = "" },
|
||||
{ name = "*.midi", text = "" },
|
||||
{ name = "*.mka" , text = "" },
|
||||
{ name = "*.mp3" , text = "" },
|
||||
{ name = "*.mpc" , text = "" },
|
||||
{ name = "*.oga" , text = "" },
|
||||
{ name = "*.ogg" , text = "" },
|
||||
{ name = "*.opus", text = "" },
|
||||
{ name = "*.ra" , text = "" },
|
||||
{ name = "*.spx" , text = "" },
|
||||
{ name = "*.wav" , text = "" },
|
||||
{ name = "*.xspf", text = "" },
|
||||
|
||||
# Documents
|
||||
{ name = "*.pdf" , text = "", fg = "#b30b00" }, # Printable
|
||||
{ name = "*.doc" , text = "", fg = "#185abd" }, # Non plaintext docs
|
||||
{ name = "*.doct", text = "", fg = "#185abd" },
|
||||
{ name = "*.docx", text = "", fg = "#185abd" },
|
||||
{ name = "*.dot" , text = "", fg = "#185abd" },
|
||||
{ name = "*.pom" , text = "", fg = "#cb4a32" }, # Presentations
|
||||
{ name = "*.pot" , text = "", fg = "#cb4a32" },
|
||||
{ name = "*.potx", text = "", fg = "#cb4a32" },
|
||||
{ name = "*.ppm" , text = "", fg = "#cb4a32" },
|
||||
{ name = "*.ppmx", text = "", fg = "#cb4a32" },
|
||||
{ name = "*.pps" , text = "", fg = "#cb4a32" },
|
||||
{ name = "*.ppsx", text = "", fg = "#cb4a32" },
|
||||
{ name = "*.ppt" , text = "", fg = "#cb4a32" },
|
||||
{ name = "*.pptx", text = "", fg = "#cb4a32" },
|
||||
{ name = "*.xlc" , text = "" },
|
||||
{ name = "*.xlm" , text = "" },
|
||||
{ name = "*.xls" , text = "" },
|
||||
{ name = "*.xlsm", text = "" },
|
||||
{ name = "*.xlsx", text = "" },
|
||||
{ name = "*.xlt" , text = "" },
|
||||
{ name = "*.ods" , text = "" },
|
||||
{ name = "*.ots" , text = "" },
|
||||
{ name = "*.odg" , text = "" },
|
||||
|
||||
# Lockfiles
|
||||
{ name = "*.lock", text = "", fg = "#bbbbbb" },
|
||||
|
||||
# Misc
|
||||
{ name = "*.bin", text = "" },
|
||||
{ name = "*.exe", text = "" },
|
||||
{ name = "*.pkg", text = "" },
|
||||
|
||||
# Dotfiles
|
||||
{ name = ".DS_Store" , text = "" },
|
||||
{ name = ".bashprofile" , text = "" },
|
||||
{ name = ".bashrc" , text = "" },
|
||||
{ name = ".gitattributes", text = "" },
|
||||
{ name = ".gitignore" , text = "" },
|
||||
{ name = ".gitmodules" , text = "" },
|
||||
{ name = ".vimrc" , text = "" },
|
||||
{ name = ".zprofile" , text = "" },
|
||||
{ name = ".zshenv" , text = "" },
|
||||
{ name = ".zshrc" , text = "" },
|
||||
|
||||
# Named files
|
||||
{ name = "COPYING" , text = "" },
|
||||
{ name = "Containerfile", text = "", fg = "#458ee6" },
|
||||
{ name = "Dockerfile" , text = "", fg = "#458ee6" },
|
||||
{ name = "LICENSE" , text = "", fg = "#d0bf41" },
|
||||
|
||||
# Default
|
||||
{ name = "*" , text = "" },
|
||||
{ name = "*/", text = "", fg = "yellow" },
|
||||
]
|
||||
|
||||
# : }}}
|
||||
149
misc/dot-config/yazi/yazi.toml
Normal file
149
misc/dot-config/yazi/yazi.toml
Normal file
|
|
@ -0,0 +1,149 @@
|
|||
# A TOML linter such as https://taplo.tamasfe.dev/ can use this schema to validate your config.
|
||||
# If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas.
|
||||
"$schema" = "https://yazi-rs.github.io/schemas/yazi.json"
|
||||
|
||||
[manager]
|
||||
ratio = [ 1, 2, 3 ]
|
||||
sort_by = "natural"
|
||||
sort_sensitive = false
|
||||
sort_reverse = false
|
||||
sort_dir_first = true
|
||||
linemode = "size"
|
||||
show_hidden = false
|
||||
show_symlink = true
|
||||
|
||||
[preview]
|
||||
tab_size = 2
|
||||
max_width = 1000
|
||||
max_height = 1500
|
||||
cache_dir = ""
|
||||
image_filter = "triangle"
|
||||
image_quality = 75
|
||||
sixel_fraction = 15
|
||||
ueberzug_scale = 1
|
||||
ueberzug_offset = [ 0, 0, 0, 0 ]
|
||||
|
||||
[opener]
|
||||
open = [
|
||||
{ exec = 'opener "$@"', block = true, desc = "Open" },
|
||||
]
|
||||
|
||||
[open]
|
||||
rules = [
|
||||
{ name = "*/", use = [ "edit", "open", "reveal" ] },
|
||||
|
||||
{ mime = "*", use = [ "open" ] },
|
||||
]
|
||||
|
||||
[tasks]
|
||||
micro_workers = 10
|
||||
macro_workers = 25
|
||||
bizarre_retry = 5
|
||||
image_alloc = 536870912 # 512MB
|
||||
image_bound = [ 0, 0 ]
|
||||
suppress_preload = false
|
||||
|
||||
[plugin]
|
||||
|
||||
preloaders = [
|
||||
{ name = "*", cond = "!mime", exec = "mime", multi = true, prio = "high" },
|
||||
# Image
|
||||
{ mime = "image/vnd.djvu", exec = "noop" },
|
||||
{ mime = "image/*", exec = "image" },
|
||||
# Video
|
||||
{ mime = "video/*", exec = "video" },
|
||||
# PDF
|
||||
{ mime = "application/pdf", exec = "pdf" },
|
||||
]
|
||||
previewers = [
|
||||
{ name = "*/", exec = "folder", sync = true },
|
||||
# Code
|
||||
{ mime = "text/*", exec = "code" },
|
||||
{ mime = "*/xml", exec = "code" },
|
||||
{ mime = "*/javascript", exec = "code" },
|
||||
{ mime = "*/x-wine-extension-ini", exec = "code" },
|
||||
# JSON
|
||||
{ mime = "application/json", exec = "json" },
|
||||
# Image
|
||||
{ mime = "image/vnd.djvu", exec = "noop" },
|
||||
{ mime = "image/*", exec = "image" },
|
||||
# Video
|
||||
{ mime = "video/*", exec = "video" },
|
||||
# PDF
|
||||
{ mime = "application/pdf", exec = "pdf" },
|
||||
# Archive
|
||||
{ mime = "application/zip", exec = "archive" },
|
||||
{ mime = "application/gzip", exec = "archive" },
|
||||
{ mime = "application/x-tar", exec = "archive" },
|
||||
{ mime = "application/x-bzip", exec = "archive" },
|
||||
{ mime = "application/x-bzip2", exec = "archive" },
|
||||
{ mime = "application/x-7z-compressed", exec = "archive" },
|
||||
{ mime = "application/x-rar", exec = "archive" },
|
||||
{ mime = "application/xz", exec = "archive" },
|
||||
# Fallback
|
||||
{ name = "*", exec = "file" },
|
||||
]
|
||||
|
||||
[input]
|
||||
# cd
|
||||
cd_title = "Change directory:"
|
||||
cd_origin = "top-center"
|
||||
cd_offset = [ 0, 2, 50, 3 ]
|
||||
|
||||
# create
|
||||
create_title = "Create:"
|
||||
create_origin = "top-center"
|
||||
create_offset = [ 0, 2, 50, 3 ]
|
||||
|
||||
# rename
|
||||
rename_title = "Rename:"
|
||||
rename_origin = "hovered"
|
||||
rename_offset = [ 0, 1, 50, 3 ]
|
||||
|
||||
# trash
|
||||
trash_title = "Move {n} selected file{s} to trash? (y/N)"
|
||||
trash_origin = "top-center"
|
||||
trash_offset = [ 0, 2, 50, 3 ]
|
||||
|
||||
# delete
|
||||
delete_title = "Delete {n} selected file{s} permanently? (y/N)"
|
||||
delete_origin = "top-center"
|
||||
delete_offset = [ 0, 2, 50, 3 ]
|
||||
|
||||
# filter
|
||||
filter_title = "Filter:"
|
||||
filter_origin = "top-center"
|
||||
filter_offset = [ 0, 2, 50, 3 ]
|
||||
|
||||
# find
|
||||
find_title = [ "Find next:", "Find previous:" ]
|
||||
find_origin = "top-center"
|
||||
find_offset = [ 0, 2, 50, 3 ]
|
||||
|
||||
# search
|
||||
search_title = "Search via {n}:"
|
||||
search_origin = "top-center"
|
||||
search_offset = [ 0, 2, 50, 3 ]
|
||||
|
||||
# shell
|
||||
shell_title = [ "Shell:", "Shell (block):" ]
|
||||
shell_origin = "top-center"
|
||||
shell_offset = [ 0, 2, 50, 3 ]
|
||||
|
||||
# overwrite
|
||||
overwrite_title = "Overwrite an existing file? (y/N)"
|
||||
overwrite_origin = "top-center"
|
||||
overwrite_offset = [ 0, 2, 50, 3 ]
|
||||
|
||||
# quit
|
||||
quit_title = "{n} task{s} running, sure to quit? (y/N)"
|
||||
quit_origin = "top-center"
|
||||
quit_offset = [ 0, 2, 50, 3 ]
|
||||
|
||||
[select]
|
||||
open_title = "Open with:"
|
||||
open_origin = "hovered"
|
||||
open_offset = [ 0, 1, 50, 7 ]
|
||||
|
||||
[log]
|
||||
enabled = false
|
||||
20
misc/dot-config/zathura/zathurarc
Normal file
20
misc/dot-config/zathura/zathurarc
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
set sandbox none
|
||||
set statusbar-h-padding 0
|
||||
set statusbar-v-padding 0
|
||||
set page-padding 1
|
||||
set selection-clipboard clipboard
|
||||
map u scroll half-up
|
||||
map d scroll half-down
|
||||
map D toggle_page_mode
|
||||
map r reload
|
||||
map R rotate
|
||||
map K zoom in
|
||||
map J zoom out
|
||||
map i recolor
|
||||
map p print
|
||||
map g goto top
|
||||
|
||||
set recolor true
|
||||
set recolor-darkcolor "#EBDBB2"
|
||||
set default-bg rgba(0,0,0,0.8)
|
||||
set adjust-open width
|
||||
21
misc/dot-config/zsh/.zprofile
Normal file
21
misc/dot-config/zsh/.zprofile
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
# Start gpg agent
|
||||
unset SSH_AGENT_PID
|
||||
export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
|
||||
killall gpg-agent 2>/dev/null
|
||||
eval $(gpg-agent --daemon)
|
||||
|
||||
export PATH="$PATH:~/.local/share/cargo/bin/"
|
||||
export PATH="$PATH:$JAVA_HOME/bin/"
|
||||
|
||||
if [ ! -z "$(grep nixos /etc/os-release)" ]; then
|
||||
# NixOS does not explicitly link usr local bin
|
||||
# Yes I know I'm circumventing immutability.
|
||||
export PATH=/usr/local/bin:$PATH
|
||||
fi
|
||||
|
||||
|
||||
export PATH=~/.config/emacs/bin:$PATH
|
||||
export PATH=~/.local/bin/overrides:$PATH # Overriding /usr/bin/*
|
||||
export PATH=~/.local/bin:$PATH # Highest precedence to local bin
|
||||
|
||||
export PATH=sourced:$PATH # Flag to prevent setting PATH multiple times
|
||||
68
misc/dot-config/zsh/.zshenv
Normal file
68
misc/dot-config/zsh/.zshenv
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
#!/bin/zsh
|
||||
|
||||
# source /opt/miniconda3/etc/profile.d/conda.sh
|
||||
|
||||
if [ -z "$(printf $PATH | grep :sourced:)" ] && [ "$DISPLAY" = ":10.0" ]; then
|
||||
# zprofile does not get sourced when logging in through an xrdp session (for some reason), even
|
||||
# if I try to manually source it in ~/startwm.sh. This checks for if this is through xrdp (DISPLAY=:10.0)
|
||||
# and if the :sourced: flag exists in PATH.
|
||||
source ~/.config/zsh/.zprofile
|
||||
fi
|
||||
|
||||
# Below causes discord to not launch
|
||||
# export LIBVA_DRIVER_NAME=nvidia
|
||||
# export GBM_BACKEND=nvidia-drm
|
||||
# export __GLX_VENDOR_LIBRARY_NAME=nvidia
|
||||
|
||||
export BROWSER="$(which firefox)"
|
||||
export EDITOR="$(which nvim)"
|
||||
|
||||
export MANPAGER='nvim +Man! -c "ZenMode" -c "map q :qa!<CR>"'
|
||||
export PAGER=
|
||||
|
||||
# export GTK_THEME=gruvbox-dark
|
||||
export GTK_THEME=Adwaita:dark
|
||||
|
||||
# Configuring input method
|
||||
export QT_IM_MODULE='fcitx'
|
||||
export SDL_IM_MODULE='fcitx'
|
||||
export XMODIFIERS='@im=fcitx'
|
||||
|
||||
# Defining XDG dirs
|
||||
export XDG_CACHE_HOME="$HOME/.cache"
|
||||
export XDG_CONFIG_HOME="$HOME/.config"
|
||||
export XDG_DATA_HOME="$HOME/.local/share"
|
||||
export XDG_RUNTIME_DIR="/run/user/$UID"
|
||||
export XDG_STATE_HOME="$HOME/.local/state"
|
||||
|
||||
# Spring cleaning
|
||||
export CARGO_HOME="$XDG_DATA_HOME/cargo"
|
||||
export CUDA_CACHE_PATH="$XDG_CACHE_HOME/nv"
|
||||
export EMACS_INIT_FILE="$XDG_CONFIG_HOME/emacs"
|
||||
export GIT_CONFIG="$XDG_CONFIG_HOME/git/config"
|
||||
export GNUPGHOME="$XDG_DATA_HOME/gnupg"
|
||||
export INPUTRC="$XDG_CONFIG_HOME/readline/inputrc"
|
||||
export JUPYTER_CONFIG_DIR="$XDG_CONFIG_HOME/jupyter"
|
||||
export NPM_CONFIG_USERCONFIG="$XDG_CONFIG_HOME/npm/npmrc"
|
||||
export PASSWORD_STORE_DIR="$XDG_DATA_HOME/password-store"
|
||||
export PYTHONPYCACHEPREFIX="$XDG_CACHE_HOME/python"
|
||||
export PYTHONUSERBASE="$XDG_DATA_HOME/python"
|
||||
export RUSTUP_HOME="$XDG_DATA_HOME/rustup"
|
||||
export SSB_HOME="$XDG_DATA_HOME/zoom"
|
||||
export TEXMFVAR="$XDG_CACHE_HOME/texlive/texmf-var"
|
||||
export TLDR_CACHE_DIR="$XDG_CACHE_HOME/tldr"
|
||||
export TMUX_TMPDIR="$XDG_RUNTIME_DIR"
|
||||
export VIMINIT='let $MYVIMRC = !has("nvim") ? "$XDG_CONFIG_HOME/vim/vimrc" : "$XDG_CONFIG_HOME/nvim/init.lua" | so $MYVIMRC'
|
||||
export WINEPREFIX="$XDG_DATA_HOME/wine"
|
||||
export XINITRC="$XDG_CONFIG_HOME/X11/xinitrc"
|
||||
export XSERVERRC="$XDG_CONFIG_HOME/X11/xserverrc"
|
||||
|
||||
export JAVA_HOME="/usr/lib/jvm/default"
|
||||
export XSECURELOCK_PASSWORD_PROMPT='kaomoji'
|
||||
export DOOMDIR="$HOME/.config/doom"
|
||||
|
||||
export WALLPAPER=~/.config/wallpaper
|
||||
|
||||
export SUDO_PROMPT="$(cowsay $(fortune))
|
||||
Sudo password: "
|
||||
|
||||
25
misc/dot-config/zsh/.zshhighlighting
Normal file
25
misc/dot-config/zsh/.zshhighlighting
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
ZSH_HIGHLIGHT_STYLES[default]=none
|
||||
|
||||
ZSH_HIGHLIGHT_STYLES[command]=fg=none
|
||||
ZSH_HIGHLIGHT_STYLES[arg0]=fg=none
|
||||
ZSH_HIGHLIGHT_STYLES[precommand]=fg=none
|
||||
ZSH_HIGHLIGHT_STYLES[function]=fg=none
|
||||
ZSH_HIGHLIGHT_STYLES[alias]=fg=none
|
||||
|
||||
ZSH_HIGHLIGHT_STYLES[unknown-token]=fg=007 # Dimmed white
|
||||
ZSH_HIGHLIGHT_STYLES[reserved-word]=fg=green
|
||||
ZSH_HIGHLIGHT_STYLES[builtin]=none
|
||||
ZSH_HIGHLIGHT_STYLES[commandseparator]=none
|
||||
ZSH_HIGHLIGHT_STYLES[hashed-command]=none
|
||||
ZSH_HIGHLIGHT_STYLES[path]=none
|
||||
ZSH_HIGHLIGHT_STYLES[globbing]=none
|
||||
ZSH_HIGHLIGHT_STYLES[history-expansion]=fg=blue
|
||||
ZSH_HIGHLIGHT_STYLES[single-hyphen-option]=none
|
||||
ZSH_HIGHLIGHT_STYLES[double-hyphen-option]=none
|
||||
ZSH_HIGHLIGHT_STYLES[back-quoted-argument]=none
|
||||
ZSH_HIGHLIGHT_STYLES[single-quoted-argument]=fg=yellow
|
||||
ZSH_HIGHLIGHT_STYLES[double-quoted-argument]=fg=yellow
|
||||
ZSH_HIGHLIGHT_STYLES[dollar-double-quoted-argument]=fg=cyan
|
||||
ZSH_HIGHLIGHT_STYLES[back-double-quoted-argument]=fg=cyan
|
||||
ZSH_HIGHLIGHT_STYLES[assign]=none
|
||||
|
||||
249
misc/dot-config/zsh/.zshrc
Executable file
249
misc/dot-config/zsh/.zshrc
Executable file
|
|
@ -0,0 +1,249 @@
|
|||
#!/bin/zsh
|
||||
|
||||
[ -n "$EAT_SHELL_INTEGRATION_DIR" ] && \
|
||||
source "$EAT_SHELL_INTEGRATION_DIR/zsh"
|
||||
|
||||
# Get it out of here
|
||||
[ -d ~/Downloads ] && [ -z "$(ls ~/Downloads)" ] && rmdir ~/Downloads/
|
||||
|
||||
# ZSH Configurations
|
||||
unsetopt autocd # Change directory just by typing its name (hurts performance)
|
||||
setopt interactivecomments # Allow comments in interactive mode
|
||||
setopt complete_aliases # Allows auto-completion with aliases
|
||||
setopt magicequalsubst # Enable filename expansion for arguments of the form ‘anything=expression’
|
||||
setopt nonomatch # Hide error message if there is no match for the pattern
|
||||
setopt notify # Report the status of background jobs immediately
|
||||
setopt numericglobsort # Sort filenames numerically when it makes sense
|
||||
setopt promptsubst # Enable command substitution in prompt
|
||||
setopt hist_expire_dups_first # delete duplicates first when HISTFILE size exceeds HISTSIZE
|
||||
setopt hist_ignore_dups # ignore duplicated commands history list
|
||||
setopt hist_ignore_space # ignore commands that start with space
|
||||
setopt hist_verify # show command with history expansion to user before running it
|
||||
unsetopt ksharrays # 0-indexing arrays breaks highlighting
|
||||
|
||||
# vi mode
|
||||
bindkey -v
|
||||
bindkey -M vicmd -r ":"
|
||||
export KEYTIMEOUT=1
|
||||
|
||||
# Change cursor shape for different vi modes.
|
||||
function zle-keymap-select {
|
||||
if [[ ${KEYMAP} == vicmd ]] ||
|
||||
[[ $1 = 'block' ]]; then
|
||||
echo -ne '\e[1 q'
|
||||
elif [[ ${KEYMAP} == main ]] ||
|
||||
[[ ${KEYMAP} == viins ]] ||
|
||||
[[ ${KEYMAP} = '' ]] ||
|
||||
[[ $1 = 'beam' ]]; then
|
||||
echo -ne '\e[5 q'
|
||||
fi
|
||||
}
|
||||
zle -N zle-keymap-select
|
||||
zle-line-init() {
|
||||
zle -K viins # initiate `vi insert` as keymap (can be removed if `bindkey -V` has been set elsewhere)
|
||||
echo -ne "\e[5 q"
|
||||
}
|
||||
zle -N zle-line-init
|
||||
echo -ne '\e[5 q' # Use beam shape cursor on startup.
|
||||
preexec() { echo -ne '\e[5 q' ;} # Use beam shape cursor for each new prompt.
|
||||
|
||||
## ALIASES ##
|
||||
|
||||
# The rice repo
|
||||
alias config='git --git-dir $HOME/repos/dotfiles/ --work-tree=$HOME'
|
||||
|
||||
# WSL
|
||||
alias wclip='/mnt/c/Windows/System32/clip.exe'
|
||||
alias wclipget='/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -c Get-Clipboard'
|
||||
|
||||
alias s='sudo ' # Allow aliases to be passed to sudo
|
||||
alias pypr='sh -c pypr'
|
||||
alias asciiquarium='asciiquarium -t'
|
||||
alias ll='ls -l'
|
||||
alias la='ls -A'
|
||||
alias l='ls -CF'
|
||||
alias python='python3'
|
||||
alias xournal='xournalpp'
|
||||
alias wget='wget --hsts-file="$XDG_CACHE_HOME/wget-hsts"'
|
||||
alias sxiv='nsxiv'
|
||||
alias blueman='blueman-manager'
|
||||
alias spotify='dlkiller spotify'
|
||||
alias zoom='dlkiller zoom'
|
||||
alias tor='torbrowser-launcher'
|
||||
alias emax="devour emacsclient -c -a 'emacs' 1>/dev/null"
|
||||
alias em="emacsclient -nw -a 'emacs -nw'"
|
||||
|
||||
# Colorful output
|
||||
alias ls='LC_COLLATE=C ls --color=auto --group-directories-first -hN -A'
|
||||
alias grep='grep --color=auto'
|
||||
alias fgrep='fgrep --color=auto'
|
||||
alias egrep='egrep --color=auto'
|
||||
alias diff='diff --color=auto'
|
||||
alias ip='ip --color=auto'
|
||||
alias gcc='grc gcc'
|
||||
alias ifconfig='grc ifconfig'
|
||||
alias make='grc make'
|
||||
alias netstat='grc netstat'
|
||||
alias nmap='grc nmap'
|
||||
alias ping='grc ping'
|
||||
alias ping='grc ping'
|
||||
alias uptime='grc uptime'
|
||||
|
||||
## FUNCTIONS ##
|
||||
|
||||
function colors {
|
||||
for i in {0..255}; do
|
||||
print -Pn "%K{$i} %k%F{$i}${(l:3::0:)i}%f " ${${(M)$((i%6)):#3}:+$"\n"};
|
||||
done
|
||||
}
|
||||
|
||||
function increase_opacity {
|
||||
printf "\033]11;rgba:00/00/00/ff\007"
|
||||
}
|
||||
function decrease_opacity {
|
||||
printf "\033]11;rgba:00/00/00/00\007"
|
||||
}
|
||||
|
||||
function pwdterm {
|
||||
# New terminal in the current working directory
|
||||
setsid -f $TERMINAL -e $SHELL >/dev/null 2>&1 &
|
||||
}
|
||||
|
||||
function ya() {
|
||||
local tmp="$(mktemp -t "yazi-cwd.XXXXX")"
|
||||
yazi "$@" --cwd-file="$tmp"
|
||||
if cwd="$(cat -- "$tmp")" && [ -n "$cwd" ] && [ "$cwd" != "$PWD" ]; then
|
||||
cd -- "$cwd"
|
||||
fi
|
||||
rm -f -- "$tmp"
|
||||
}
|
||||
|
||||
function lfcd {
|
||||
tmp="$(mktemp)"
|
||||
command lf -last-dir-path="$tmp" "$@"
|
||||
if [ -f "$tmp" ]; then
|
||||
dir="$(cat "$tmp")"
|
||||
rm -f "$tmp"
|
||||
if [ -d "$dir" ]; then
|
||||
if [ "$dir" != "$(pwd)" ]; then
|
||||
cd "$dir"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
function nix-clean {
|
||||
nix-env --delete-generations old
|
||||
nix-store --gc
|
||||
nix-channel --update
|
||||
nix-env -u --always
|
||||
for link in /nix/var/nix/gcroots/auto/*
|
||||
do
|
||||
rm $(readlink "$link")
|
||||
done
|
||||
nix-collect-garbage -d
|
||||
}
|
||||
|
||||
# This script was automatically generated by the broot program
|
||||
# More information can be found in https://github.com/Canop/broot
|
||||
# This function starts broot and executes the command
|
||||
# it produces, if any.
|
||||
# It's needed because some shell commands, like `cd`,
|
||||
# have no useful effect if executed in a subshell.
|
||||
function br {
|
||||
local cmd cmd_file code
|
||||
cmd_file=$(mktemp)
|
||||
if broot --outcmd "$cmd_file" "$@"; then
|
||||
cmd=$(<"$cmd_file")
|
||||
command rm -f "$cmd_file"
|
||||
eval "$cmd"
|
||||
else
|
||||
code=$?
|
||||
command rm -f "$cmd_file"
|
||||
return "$code"
|
||||
fi
|
||||
}
|
||||
|
||||
function nix_shell_menu {
|
||||
shell_dir="$HOME/shells"
|
||||
shells=$(ls "$shell_dir")
|
||||
selection=$(echo "$shells" | rofi -dmenu)
|
||||
nix-shell "$shell_dir/$selection" --run "
|
||||
export name=${selection%.*};
|
||||
$([ "$1" = "fhs" ] && echo "fhs-run ")$([ "$1" = "sudo" ] && echo "sudo ")$SHELL
|
||||
"
|
||||
}
|
||||
|
||||
function nixstore () {
|
||||
cd "$(dirname $(readlink -f $(which "$1")))"
|
||||
}
|
||||
|
||||
# function man () {
|
||||
# emacsclient -nw --eval '(progn (man "'$1'"))'
|
||||
# }
|
||||
|
||||
## KEYBINDS ##
|
||||
|
||||
zle -N increase_opacity
|
||||
zle -N decrease_opacity
|
||||
bindkey '^[s' decrease_opacity
|
||||
bindkey '^[a' increase_opacity
|
||||
|
||||
bindkey -s '^e' 'ya\n'
|
||||
bindkey -s '^n' 'nix_shell_menu'
|
||||
|
||||
zle -N pwdterm
|
||||
bindkey '^[^M' pwdterm
|
||||
|
||||
# Enable completion features
|
||||
autoload -Uz compinit
|
||||
compinit -d ~/.cache/zcompdump
|
||||
zstyle ':completion:*:*:*:*:*' menu select
|
||||
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' # case insensitive tab completion
|
||||
|
||||
# Remove green background of simlinks
|
||||
LS_COLORS+=':ow=01;33'
|
||||
|
||||
# Don't consider certain characters part of the word
|
||||
WORDCHARS=${WORDCHARS//\/}
|
||||
|
||||
# History configurations
|
||||
export HISTFILE=~/.local/share/history
|
||||
HISTSIZE=1000
|
||||
SAVEHIST=2000
|
||||
alias history="history 0" # force zsh to show the complete history
|
||||
|
||||
export GPG_TTY=$(tty)
|
||||
|
||||
if [ ! -z "$(grep nixos /etc/os-release)" ]; then
|
||||
# Shell niceties
|
||||
source /run/current-system/sw/share/zsh-autosuggestions/zsh-autosuggestions.zsh
|
||||
source /run/current-system/sw/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
||||
|
||||
# Use zsh as default nix build shell
|
||||
source /run/current-system/sw/share/zsh-nix-shell/nix-shell.plugin.zsh
|
||||
nix-shell-name() {
|
||||
# If hopping into a pkg subshell, the shell name should reflect the
|
||||
# package linked. (i.e.: 'nix-shell -p nyancat' => 'export name=nyancat')
|
||||
if [ "$1" = "-p" ]; then
|
||||
nix-shell "$@" --command "export name='$2'"
|
||||
else
|
||||
nix-shell "$@"
|
||||
fi
|
||||
}
|
||||
alias nix-shell=nix-shell-name
|
||||
else
|
||||
source ~/.config/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.plugin.zsh
|
||||
fi
|
||||
|
||||
source ~/.config/zsh/.zshhighlighting
|
||||
|
||||
if [ -f ~/.config/zsh/.zshpersonalrc ]; then
|
||||
source ~/.config/zsh/.zshpersonalrc
|
||||
fi
|
||||
|
||||
accent_color="$(cat $HOME/.config/colors/accent)"
|
||||
starship config format "'''[╭──\([\$username@\$hostname](bold $accent_color)\)-\[\$directory\](-\[\$git_branch\$git_metrics\$git_status\])(-\[\$nix_shell\])]($accent_color) \$cmd_duration
|
||||
[╰─]($accent_color)[\$shell](bold $accent_color) '''"
|
||||
eval "$(starship init zsh)"
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue