Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/markwoodhall/dot

dotfiles
https://github.com/markwoodhall/dot

Last synced: 14 days ago
JSON representation

dotfiles

Awesome Lists containing this project

README

        

#+TITLE: System Config
#+AUTHOR: Mark Woodhall
#+PROPERTY: header-args :mkdirp yes

* About

This document is a literate version of my system config and includes core tools and applications used often.

The code blocks here are tangled to their relevant files.

These blocks are tangled using a poor mans version of emacs orgmode code tangling.

* Xorg

** xinit

xinitrc starts awesome as well as doing some keyring init

Because of how early these files are needed, they are probably still checked into source control, even though
they are generated from this file.

#+begin_src bash :tangle ~/.xinitrc :shebang #!/bin/bash
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
exec awesome
eval $(/usr/bin/gnome-keyring-daemon --start --components=pgpg,kcs11,secrets,ssh)

export GNOME_KEYRING_CONTROL GNOME_KEYRING_PID GPG_AGENT_INFO SSH_AUTH_SOCK

source /etc/X11/xinit/xinitrc.d/50-systemd-user.sh
#+end_src

* Readline

Set vi editing mode for readline

#+begin_src bash :tangle ~/.inputrc
set editing-mode vi
#+end_src

* Awesome

Awesome is configured using fennel, but we need to bootstrap it with a lua file.

This also relies on the fennel module in the same directory.

#+begin_src lua :tangle ~/.config/awesome/rc.lua :mkdirp yes
local fennel = require("./fennel").install()
fennel.path = fennel.path .. ";.config/awesome/?.fnl"
require("config")
#+end_src

* ZSH

** profile

#+begin_src bash :tangle ~/.zprofile
if [ -z "$DISPLAY" ] && [ -n "$XDG_VTNR" ] && [ "$XDG_VTNR" -eq 1 ]; then
exec startx
fi
#+end_src

** env

*** Home dir and PATH

#+begin_src bash :tangle ~/.zshenv
homedir=~
eval homedir=$homedir
# If you come from bash you might have to change your $PATH.
export PATH=$HOME/bin:/usr/local/bin:/home/markwoodhall/.local/share/gem/ruby/3.0.0/bin:/home/markwoodhall/.cargo/bin:$HOME/.emacs.d/bin/:/usr/share/idea/bin/:/home/markwoodhall/.luarocks:$PATH
export EVENT_NOKQUEUE=1
#+end_src

*** Aliases

#+begin_src bash :tangle ~/.zshenv
alias ls='ls -lGfh'
alias l='ls'
alias cd='cd -P'
alias c='cd -P'
alias mkdir='mkdir -p'
alias cat='ccat'
alias feh='feh -F'

alias v='nvim'
alias vi='nvim'
alias vmi='nvim'
alias vim='nvim'
alias cl='clear'
alias clean='clear'

alias tmx='tmux'
alias tmxns='tmx new -s'
alias tmxls='tmx list-sessions'
alias tmxrw='tmx rename-window'
alias tmxd='tmx detach'
alias tmxa='tmx attach -t'
alias tmxs='tmx switch -t'
alias tmxk='tmx kill-session -t'
#+end_src

*** Setup

#+begin_src bash :tangle ~/.zshenv
set -o vi
set editing-mode vi

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export SHELL=zsh
export EDITOR='nvim'

export ANDROID_HOME=/opt/android-sdk
export NODE_ENV="development"

[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh

ssh-add -A &> /dev/null

SSH_ENV="$HOME/.ssh/environment"
function start_agent {
echo "Initialising new SSH agent..."
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
echo succeeded
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
/usr/bin/ssh-add -t 999999 ~/.ssh/id_rsa;
}

if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi

export FZF_DEFAULT_OPTS=" \
--color=bg+:#1e1e2e,bg:#1e1e2e,spinner:#f5e0dc,hl:#f38ba8 \
--color=fg:#cdd6f4,header:#f38ba8,info:#cba6f7,pointer:#f5e0dc \
--color=marker:#b4befe,fg+:#89b4fa,prompt:#cba6f7,hl+:#f38ba8 \
--color=selected-bg:#45475a \
--multi"
#+end_src

*** Pyenv

#+begin_src bash :tangle ~/.zshenv
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
#+end_src

*** Chrome

Set chrome executable, its useful for things like headless chrome during testing.
#+begin_src bash :tangle ~/.zshenv
export CHROME_EXECUTABLE=google-chrome-stable
#+end_src

** RC

#+begin_src bash :tangle ~/.zshrc
homedir=~
eval homedir=$homedir
# If you come from bash you might have to change your $PATH.
export PATH=$HOME/bin:/usr/local/bin:$PATH
export EVENT_NOKQUEUE=1

# Path to your oh-my-zsh installation.
export ZSH=~/.oh-my-zsh
DEFAULT_USER="markwoodhall"

# Set name of the theme to load. Optionally, if you set this to "random"
# it'll load a random theme each time that oh-my-zsh is loaded.
# See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes
ZSH_THEME="refined"
SHARE_HISTORY="false"

plugins=(archlinux git postgres tmux lein npm zsh-autosuggestions mercurial aws docker docker-compose terraform)

source $ZSH/oh-my-zsh.sh

[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
source /usr/share/fzf/key-bindings.zsh
source ~/.zshenv
source /usr/share/nvm/init-nvm.sh

# added by pipsi (https://github.com/mitsuhiko/pipsi)
export PATH="/home/markwoodhall/.local/bin:$PATH"
eval "$(pyenv init --path)"

vterm_printf() {
if [ -n "$TMUX" ] && ([ "${TERM%%-*}" = "tmux" ] || [ "${TERM%%-*}" = "screen" ]); then
# Tell tmux to pass the escape sequences through
printf "\ePtmux;\e\e]%s\007\e\\" "$1"
elif [ "${TERM%%-*}" = "screen" ]; then
# GNU screen (screen, screen-256color, screen-256color-bce)
printf "\eP\e]%s\007\e\\" "$1"
else
printf "\e]%s\e\\" "$1"
fi
}

if [[ "$INSIDE_EMACS" = 'vterm' ]]; then
alias clear='vterm_printf "51;Evterm-clear-scrollback";tput clear'
fi

#+end_src

* TMUX

** Config

#+begin_src tmux :tangle ~/.tmux.conf
set -g default-terminal "tmux"
set -g base-index 1
set -g pane-base-index 1
set -g set-titles on
set -g status-keys vi
set -s escape-time 0
set -g set-clipboard on
set -g history-limit 50000
set -g mode-keys vi

bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
bind H split-window -h
bind V split-window -v
bind r source-file ~/.tmux.conf

bind -T copy-mode-vi y send-keys -X copy-pipe 'xclip -in -selection clipboard'

set-option -g automatic-rename off

set -g status-position top

set-option -g automatic-rename off

set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'catppuccin/tmux#v0.3.0'
set -g @catppuccin_flavor 'mocha' # latte,frappe, macchiato or mocha
set -g @catppuccin_window_default_text "#W" # use "#W" for application instead of directory
set -g @catppuccin_window_current_text "#W" # use "#W" for application instead of directory

run '~/.tmux/plugins/tpm/tpm'
#+end_src

* Picom

#+begin_src bash :tangle ~/.config/picom/picom.conf :mkdirp yes
corner-radius = 8.6;
shadow = true;
shadow-radius = 14;
shadow-offset-x = -6;
shadow-offset-y = -6;
shadow-exclude = [
"name = 'Notification'",
"class_g = 'Conky'",
"class_g ?= 'Notify-osd'",
"class_g = 'Cairo-clock'",
"_GTK_FRAME_EXTENTS@:c"
];
fading = true

# 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;
inactive-opacity = 0.98;

# Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default)
# frame-opacity = 1.0
frame-opacity = 1;

# Default opacity for dropdown menus and popup menus. (0.0 - 1.0, defaults to 1.0)
# menu-opacity = 1.0

# Let inactive opacity set by -i override the '_NET_WM_OPACITY' values of windows.
# inactive-opacity-override = true
inactive-opacity-override = true;

# Default opacity for active windows. (0.0 - 1.0, defaults to 1.0)
active-opacity = 0.98
# 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 = "3x3box";

# Exclude conditions for background blur.
# blur-background-exclude = []
blur-background-exclude = [
"window_type = 'dock'",
"window_type = 'desktop'",
"_GTK_FRAME_EXTENTS@:c"
];

# Specify the backend to use: `xrender`, `glx`, or `xr_glx_hybrid`.
# `xrender` is the default one.
#
# backend = 'glx'
backend = "glx";

# Enable/disable VSync.
# vsync = false
vsync = true

# 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_OPACITY' on client windows, useful for window managers
# not passing '_NET_WM_OPACITY' of client windows to frame windows.
#
# detect-client-opacity = false
detect-client-opacity = true;

# detect-transient = false
detect-transient = true
# detect-client-leader = false
detect-client-leader = true
# no-use-damage = false
use-damage = true
# log-level = "debug"
log-level = "warn";
#window-shader-fg-rule = [
# "/home/markwoodhall/dotfiles/lebarshader.frag:window_type = 'dock'"
#]
rounded-corners-exclude = [
"window_type = 'dock'"
;
wintypes:
{
tooltip = { fade = true; shadow = true; opacity = 0.75; focus = true; full-shadow = false; };
dock = { shadow = true; opacity = 1; focus = false; full-shadow = false; }
dnd = { shadow = false; }
popup_menu = { opacity = 0.8; }
dropdown_menu = { opacity = 0.8; }
};
#+end_src

* GTK

#+begin_src ini :tangle ~/.icons/default/index.theme :mkdirp yes
[Icon Theme]
Name=Default
Comment=Default Cursor Theme
Inherits=Adwaita
#+end_src

#+begin_src bash :tangle ~/.config/xsettingsd/xsettingsd.conf :mkdirp yes
Net/ThemeName "catppuccin-macchiato-sapphire-standard+default"
Net/IconThemeName "Papirus-Dark"
Gtk/CursorThemeName "Adwaita"
Net/EnableEventSounds 1
EnableInputFeedbackSounds 0
Xft/Antialias 1
Xft/Hinting 1
Xft/HintStyle "hintslight"
Xft/RGBA "rgb"
#+end_src

** GTK 2

#+begin_src bash :tangle ~/.gtkrc-2.0
include "/home/markwoodhall/.gtkrc-2.0.mine"
gtk-theme-name="catppuccin-macchiato-sapphire-standard+default"
gtk-icon-theme-name="Papirus-Dark"
gtk-font-name="System-ui 11"
gtk-cursor-theme-name="Adwaita"
gtk-cursor-theme-size=24
gtk-toolbar-style=GTK_TOOLBAR_ICONS
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
gtk-button-images=0
gtk-menu-images=0
gtk-enable-event-sounds=1
gtk-enable-input-feedback-sounds=0
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle="hintslight"
gtk-xft-rgba="rgb"
#+end_src

** GTK 3

#+begin_src bash :tangle ~/.config/gtk-3.0/settings.ini :mkdirp yes
[Settings]
gtk-theme-name=catppuccin-mocha-sapphire-standard+default
gtk-icon-theme-name=Papirus-Dark
gtk-font-name=System-ui 11
gtk-cursor-theme-name=Adwaita
gtk-cursor-theme-size=24
gtk-toolbar-style=GTK_TOOLBAR_ICONS
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
gtk-button-images=0
gtk-menu-images=0
gtk-enable-event-sounds=1
gtk-enable-input-feedback-sounds=0
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle=hintslight
gtk-xft-rgba=rgb
gtk-application-prefer-dark-theme=0
#+end_src

* Rofi

** Theme

#+begin_src javascript :tangle ~/.local/share/rofi/themes/catppuccin-mocha.rasi :mkdirp yes
* {
bg-col: #1e1e2e;
bg-col-light: #1e1e2e;
border-col: #1e1e2e;
selected-col: #1e1e2e;
blue: #89b4fa;
fg-col: #cdd6f4;
fg-col2: #f38ba8;
grey: #6c7086;

width: 600;
font: "System-ui 14";
}

element-text, element-icon , mode-switcher {
background-color: inherit;
text-color: inherit;
}

window {
height: 360px;
border: 3px;
border-color: @border-col;
background-color: @bg-col;
}

mainbox {
background-color: @bg-col;
}

inputbar {
children: [prompt,entry];
background-color: @bg-col;
border-radius: 5px;
padding: 2px;
}

prompt {
background-color: @blue;
padding: 6px;
text-color: @bg-col;
border-radius: 3px;
margin: 20px 0px 0px 20px;
}

textbox-prompt-colon {
expand: false;
str: ":";
}

entry {
padding: 6px;
margin: 20px 0px 0px 10px;
text-color: @fg-col;
background-color: @bg-col;
}

listview {
border: 0px 0px 0px;
padding: 6px 0px 0px;
margin: 10px 0px 0px 20px;
columns: 2;
lines: 5;
background-color: @bg-col;
}

element {
padding: 5px;
background-color: @bg-col;
text-color: @fg-col ;
}

element-icon {
size: 25px;
}

element selected {
background-color: @selected-col ;
text-color: @fg-col2 ;
}

mode-switcher {
spacing: 0;
}

button {
padding: 10px;
background-color: @bg-col-light;
text-color: @grey;
vertical-align: 0.5;
horizontal-align: 0.5;
}

button selected {
background-color: @bg-col;
text-color: @blue;
}

message {
background-color: @bg-col-light;
margin: 2px;
padding: 2px;
border-radius: 5px;
}

textbox {
padding: 6px;
margin: 20px 0px 0px 20px;
text-color: @blue;
background-color: @bg-col-light;
}
#+end_src

** Config

#+begin_src javascript :tangle ~/.config/rofi/config.rasi :mkdirp yes
configuration{
modi: "run,drun,window";
icon-theme: "Oranchelo";
show-icons: true;
terminal: "kitty";
drun-display-format: "{icon} {name}";
location: 0;
disable-history: false;
hide-scrollbar: true;
display-drun: "  Apps ";
display-run: "  Run ";
display-window: " 﩯 Window";
display-Network: " 󰤨 Network";
sidebar-mode: true;
}

@theme "catppuccin-mocha"
#+end_src

* Lebar

Lebar is a system toolbar configured with fennel

#+begin_src fennel :tangle ~/.local/share/love/lebar/rc.fnl :mkdirp yes
(local config {})

(local blocks (require "blocks.fnl"))
(local themes (require "themes.fnl"))
(local lib (require "lib.fnl"))

(set config.refresh-seconds 0.001)

;; When set to true this will cause the render loop to
;; pause and wait for something to appear on the draw channel
;; When set to false the render loop will only pause based on
;; config.refresh-seconds
(set config.render-on-change true)

(set config.font "JetBrainsMonoNerdFont-Regular.ttf")
(set config.font-size 16)

; set the window position and margins
(set config.window {})
(set config.window.position :top)
(set config.window.margin 0)
(set config.window.height 27)

; set the theme
(set config.theme themes.catppuccin)
(set config.background-color config.theme.black)
(set config.foreground-color config.theme.text)

(set config.block {})

; configuration for the separator block
(set config.block.separator (lib.default-settings config.theme))
(set config.block.separator.padding-x 2)
(set config.block.separator.text "|")
(set config.block.separator.foreground-color config.theme.gray-3)

; configuration for the time block
(set config.block.time (lib.default-settings config.theme))
(set config.block.time.format "%%a %%d, %%H:%%M")

; configuration for the power block
(set config.block.power (lib.default-settings config.theme))
(set config.block.power.include-remaining-time true)

; configuration for the shell block
(set config.block.shell (lib.default-settings config.theme))

; configuration for the memory block
(set config.block.memory (lib.default-settings config.theme))
(set config.block.memory.label " MEM ")

; configuration for the dunst block
(set config.block.dunst (lib.default-settings config.theme))
(set config.block.dunst.label " ")

; configuration for the user block
(set config.block.user (lib.default-settings config.theme))
(set config.block.user.label " ")
(set config.block.user.background-color config.theme.blue)
(set config.block.user.foreground-color config.theme.black)

; configuration for the cpu block
(set config.block.cpu (lib.default-settings config.theme))
(set config.block.cpu.label " CPU ")
(set config.block.cpu.ok-threshold 50)

; configuration for the window-title block
(set config.block.window-title (lib.default-settings config.theme))
(set config.block.window-title.love-font (love.graphics.newFont "JetBrainsMonoNerdFont-Italic.ttf" 14))
(set config.block.window-title.label " ")
(set config.block.window-title.foreground-color config.theme.gray-2)

; configuration for the i3-workspace block
(set config.block.i3-workspace (lib.default-settings config.theme))

; configuration for the free-disk-space block
(set config.block.free-disk-space (lib.default-settings config.theme))
(set config.block.free-disk-space.label " ")

; configuration for the pacman block
(set config.block.pacman (lib.default-settings config.theme))
(set config.block.pacman.label " ")

; configuration for the i3-binding-state block
(set config.block.i3-binding-state (lib.default-settings config.theme))
(set config.block.i3-binding-state.label " ")

; configuration for the wmctrl block
(set config.block.wmctrl (lib.default-settings config.theme))
(set config.block.wmctrl.margin (+ config.block.wmctrl.margin 1))
(set config.block.wmctrl.border [0 0 1 0])
(set config.block.wmctrl.radius 0)

(fn hostname []
(let [f (io.popen "/bin/hostname")
host (or (f:read "*a") "")
host (string.gsub host "\n$" "")]
(f:close)
host))

(set config.blocks
{:left
[blocks.user
blocks.separator
blocks.wmctrl
blocks.window-title]
:right
[blocks.separator
blocks.time
blocks.separator
blocks.power
blocks.separator
blocks.memory
blocks.separator
blocks.cpu
blocks.separator
(when (= (hostname) "minis")
{:load (partial (. blocks.free-disk-space :load) "/" "root")
:draw (partial (. blocks.free-disk-space :draw) "/" "root" "/ ")})
(when (= (hostname) "minis")
{:load (partial (. blocks.free-disk-space :load) "/home" "home")
:draw (partial (. blocks.free-disk-space :draw) "/home" "home" "/home ")})
(when (= (hostname) "minis")
{:load (partial (. blocks.free-disk-space :load) "/mnt/data" "data")
:draw (partial (. blocks.free-disk-space :draw) "/mnt/data" "data" "DATA ")})
(when (= (hostname) "thinker")
{:load (partial (. blocks.free-disk-space :load) "/home" "data")
:draw (partial (. blocks.free-disk-space :draw) "/home" "data" "/home ")})
(when (= (hostname) "archy")
{:load (partial (. blocks.free-disk-space :load) "/mnt/data" "data")
:draw (partial (. blocks.free-disk-space :draw) "/mnt/data" "data" "DATA ")})
blocks.separator
blocks.pacman]})

config
#+end_src

Programming Languages and associated tools

* Clojure

** Kondo

#+begin_src clojure :tangle ~/.config/clj-kondo/config.edn :mkdirp yes
{:lint-as {day8.re-frame.tracing/fn-traced clojure.core/fn
clova.core/defvalidator clj-kondo.lint-as/def-catch-all}
:linters {:clojure-lsp/unused-public-var {:level :warning
:exclude-regex #{".*events/.*"}}
:unresolved-var {:exclude [clova.core/email?
clova/=?
clova.core/before?
clova.core/stringy?
clova.core/longer?
clova.core/between?
clova.core/negative?
clova.core/positive?
clova.core/zip-code?
clova.core/url?
clova.core/matches?
clova.core/alphanumeric?
clova.core/after?
clova.core/date?
clova.core/=?
clova.core/all?
clova.core/lesser?
clova.core/greater?
clova.core/credit-card?
clova.core/not-nil?
clova.core/required?
clova.core/not-empty?
clova.core/=date?
clova.core/exists?
clova.core/numeric?
clova.core/length?
clova.core/shorter?
clova.core/one-of?
clova.core/post-code?
clova.core/gov-uk-post-code?
clova.core/not-exists?]}}}
#+end_src

** lein
#+begin_src clojure :tangle ~/.lein/profiles.clj :mkdirp yes
{:user
{:plugins [[nrepl "1.3.0"]
[cider/cider-nrepl "0.49.3"]
[refactor-nrepl "3.6.0"]]
:dependencies [[org.clojure/tools.namespace "1.3.0"]
[org.clojure/tools.reader "1.3.6"]]}}
#+end_src

** shadow
#+begin_src clojure :tangle ~/.shadow-cljs/config.edn :mkdirp yes
;; shadow-cljs configuration
{;; ADD - CIDER-nREPL middleware required by Fireplace.vim
:dependencies
[[cider/cider-nrepl "0.22.4"]]}
#+end_src

* Git

** Config

#+begin_src bash :tangle ~/.gitconfig
[user]
name = Mark Woodhall
email = [email protected]
signingkey = 6814C0C7A2E45188
[color]
ui = auto
[merge]
tool = fugitive
stat = true
conflictstyle = diff3
[push]
default = current
[commit]
;;gpgsign = true
[diff]
cmd = nvim -f -c \"Gvdiff\" \"$LOCAL\" \"$REMOTE\"
colorMoved = default
[difftool]
prompt = false
[alias]
vimdiff = difftool
[github]
user = markwoodhall
[rebase]
autoStash = true
[pull]
rebase = true
[safe]
directory = /opt/flutter
[core]
pager = delta
excludesfile = ~/.gitignore
[interactive]
diffFilter = delta --color-only
[delta]
navigate = true # use n and N to move between diff sections
light = false # set to true if you're in a terminal w/ a light background color (e.g. the default macOS terminal)
line-numbers = true
minus-style = "#f38ba8" bold dim "#2f343f"
plus-style = "#a6e3a1" bold dim "#2f343f"
[init]
defaultBranch = main
[filter "lfs"]
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
#+end_src

* Kitty

** Config

Kitty is the terminal of choice, configured with JetBrains Mono and Catppuccin colors.

#+begin_src bash :tangle ~/.config/kitty/kitty.conf :mkdirp yes
font_family JetBrains Mono Nerd Font
bold_font JetBrains Mono Bold Nerd Font Complete
italic_font JetBrains Mono Italic Nerd Font Complete
bold_italic_font JetBrains Mono Bold Italic Nerd Font Complete
font_size 9.0

placement_strategy left

# The basic colors
foreground #CDD6F4
background #1e1e2e
selection_foreground #1e1e2e
selection_background #F5E0DC

# Cursor colors
cursor #F5E0DC
cursor_text_color #1e1e2e

# URL underline color when hovering with mouse
url_color #F5E0DC

# Kitty window border colors
active_border_color #B4BEFE
inactive_border_color #6C7086
bell_border_color #F9E2AF

# OS Window titlebar colors
wayland_titlebar_color system
macos_titlebar_color system
hide_window_decoration yes
hide_titlebar yes
x11_hide_window_decorations yes

# Tab bar colors
active_tab_foreground #1e1e2e
active_tab_background #CBA6F7
inactive_tab_foreground #CDD6F4
inactive_tab_background #181825
tab_bar_background #11111B

# Colors for marks (marked text in the terminal)
mark1_foreground #1e1e2e
mark1_background #B4BEFE
mark2_foreground #1e1e2e
mark2_background #CBA6F7
mark3_foreground #1e1e2e
mark3_background #74C7EC

# The 16 terminal colors

# black
color0 #45475A
color8 #585B70

# red
color1 #F38BA8
color9 #F38BA8

# green
color2 #A6E3A1
color10 #A6E3A1

# yellow
color3 #F9E2AF
color11 #F9E2AF

# blue
color4 #89B4FA
color12 #89B4FA

# magenta
color5 #F5C2E7
color13 #F5C2E7

# cyan
color6 #94E2D5
color14 #94E2D5

# white
color7 #BAC2DE
color15 #A6ADC8

window_padding_width 0 0 0 4
window_margin_width 1 0 0 3
linux_display_server x11
repaint_delay 5
input_delay 1
#+end_src

* Wezterm

** Config

Fennel is used to configure wezterm, this lua is used to bootstrap that. The fennel can be found in .config/.wezterm.

#+begin_src fennel :tangle ~/.config/wezterm/wezterm.lua :mkdirp yes
debug = {traceback = function() end}
local fennel = require("./fennel").install()
fennel.path = fennel.path .. ";.config/wezterm/?.fnl"
return require("config")
#+end_src

* Postgres

** Config

#+begin_src bash :tangle ~/.psqlrc
\set QUIET 1
\x off
\timing off
\pset null '[null]'
\set HISTFILE ~/psql_history/.psql_history- :DBNAME
\set QUIET 0
#+end_src

* Mime associations

#+begin_src ini :tangle ~/.config/mimeapps.list
[Default Applications]
text/html=google-chrome.desktop
x-scheme-handler/http=google-chrome.desktop
x-scheme-handler/https=google-chrome.desktop
x-scheme-handler/about=google-chrome.desktop
x-scheme-handler/unknown=google-chrome.desktop
x-scheme-handler/chrome=google-chrome.desktop
application/x-extension-htm=google-chrome.desktop
application/x-extension-html=google-chrome.desktop
application/x-extension-shtml=google-chrome.desktop
application/xhtml+xml=google-chrome.desktop
application/x-extension-xhtml=google-chrome.desktop
application/x-extension-xht=google-chrome.desktop

[Added Associations]
x-scheme-handler/http=google-chrome.desktop;
x-scheme-handler/https=google-chrome.desktop;
text/html=google-chrome.desktop;
application/pdf=google-chrome.desktop;
#+end_src