dotfiles/dotfiles.org
2024-09-18 18:58:42 -04:00

7.4 KiB

#+title:Dotfiles Configuration

Terminal

Shell Environment

  alias k=kubectl
  alias lg=lazygit
  alias ld=lazydocker

  export EDITOR=vim
  export BROWSER=firefox
  export PAGER=bat
  export SHELL=fish

  export TERMINAL=wezterm
  export PATH="~/.dotfiles/scripts:$PATH"
  export PATH="/usr/local/bin:$PATH"

TODO Autojump

TODO Atuin

Fish

OMF must be installed separately (nix package for this is broken)

  • curl https://raw.githubusercontent.com/oh-my-fish/oh-my-fish/master/bin/install | fish
  • omf install pie
  • remove fortune line from .local/share/omf/themes/pie/fish_greeting.fish
fish_vi_key_bindings
omf theme pie
function fish_mode_prompt
end

Tmux

# Required for yazi
set -g allow-passthrough on
set -ga update-environment TERM
set -ga update-environment TERM_PROGRAM

# set-option -g default-shell /usr/bin/fish
# set -g default-terminal "screen-256color"
# # set-window-option -g mode-keys vi

# set-window-option -g automatic-rename on
set-window-option -g mode-keys vi

# Blank space between status and bottom of window
set -Fg 'status-format[1]' '#{status-format[0]}'
set -g 'status-format[0]' '#[bg=black]                                                                                                                                                                                                                                                                                                                                                                 '
set -g status 2

# Smart pane switching with awareness of Vim splits.
# See: https://github.com/christoomey/vim-tmux-navigator
# Adapted to avoid fzf conflicts

is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
| grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'"

multiple_panes="[ $(tmux list-panes | wc -l) -gt 1 ]"

bind-key -n 'C-h' if-shell "$is_vim && $multiple_panes" 'send-keys C-h'  'select-pane -L'
bind-key -n 'C-j' if-shell "$is_vim && $multiple_panes" 'send-keys C-j'  'select-pane -D'
bind-key -n 'C-k' if-shell "$is_vim && $multiple_panes" 'send-keys C-k'  'select-pane -U'
bind-key -n 'C-l' if-shell "$is_vim && $multiple_panes" 'send-keys C-l'  'select-pane -R'


# bind-key -n C-\ if-shell "$is_vim" "send-keys C-\\" "select-pane -l"

bind a resize-pane -Z

# Shift arrow to switch windows
bind -n C-S-Space  previous-window
bind -n C-Space next-window

# Remove escape delay
set -g escape-time 0

# Enable mouse scroll
set -g mouse on

set-option -g status-right-length 140
set-option -g status-right "#(curl 'wttr.in/?format=%%c%%t%%20')|#[bg=default] %a %l:%M %p#[default]#(curl 'wttr.in/?format=%%20%%m%%20(%%M)%') |#(sugar --tmux)#[bg=default]"

set-option -g status-left-length 140
set-option -g status-left " Session: #[bold,fg=green,bg=black] #S #[fg=black,bg=green]             "

set-option -g status-justify centre
set-option -g window-status-current-format '#[bold,fg=green,bg=black] #{window_name} '
set-option -g window-status-format '#{window_name}'

TODO Tmuxinator

Wezterm

local wezterm = require 'wezterm'
local config = {}

-- config.color_scheme = 'OceanicNext (base16)'
-- config.color_scheme = 'Wzoreck (Gogh)'
-- config.color_scheme = 'Whimsy'
-- config.color_scheme = 'Grey-green
-- config.color_scheme = 'Gruvbox light, soft (base16)'
-- config.color_scheme = 'Obsidian'

config.color_scheme = 'OceanicNext (base16)'

config.font = wezterm.font 'Deja Vu Sans Mono'
config.font_size = 20

config.enable_tab_bar = false

return config

Text Editors

Helix

  theme = "base16_default"

Emacs Pinentry

allow-emacs-pinentry

Bluetooth

bluez_monitor.properties = {
        ["bluez5.enable-sbc-xq"] = true,
        ["bluez5.enable-msbc"] = true,
        ["bluez5.enable-hw-volume"] = true,
        ["bluez5.headset-roles"] = "[ hsp_hs hsp_ag hfp_hf hfp_ag ]"
}

Xorg Config

  • Tangle to /etc/X11/xorg.conf.d/00-keyboard.conf for non-nixos
Section "InputClass"
    Identifier "keyboard-catchall"
    MatchIsKeyboard "on"
    Option "XkbLayout" "us,ru,ara"
    Option "XkbOptions" "grp:alt_shift_toggle,ctrl:nocaps,altwin:swap_alt_win"
EndSection

Dunst

  [global]
    monitor = 0

    follow = none

    width = 300
    height = 300
    origin = top-right
    offset = 10x50
    scale = 0
    notification_limit = 0
    progress_bar = true
    progress_bar_height = 10
    progress_bar_frame_width = 1
    progress_bar_min_width = 150
    progress_bar_max_width = 300

    indicate_hidden = yes
    transparency = 0
    separator_height = 2
    padding = 8
    horizontal_padding = 8
    text_icon_padding = 0
    frame_width = 3
    gap_size = 0

    sort = yes
    font = Monospace 12

    line_height = 0

    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 = left

    vertical_alignment = center
    show_age_threshold = 60
    ellipsize = middle

    ignore_newline = no

    stack_duplicates = true

    hide_duplicate_count = false
    show_indicators = yes

    sticky_history = yes
    history_length = 20

    dmenu = /usr/bin/dmenu -p dunst:

    browser = /usr/bin/xdg-open
    always_run_script = true
    title = Dunst
    class = Dunst

    corner_radius = 0
    ignore_dbusclose = false
    force_xinerama = false
    mouse_left_click = close_current
    mouse_middle_click = do_action, close_current
    mouse_right_click = close_all

[experimental]
    per_monitor_dpi = false

Special Exceptions

Tdrop

  • Must be installed from the repo, doesn't work from nix repos
  • Must be moved to /usr/local/bin and given same permissions that come from make install

TODO Desktop Environment

  • .fehbg
  • bspwm/sxhkd/initrc
  • polybar

TODO Media

  • mpv
  • video streaming
  • lf file selection
  • mpv plugins

TODO chat

TODO weechat

TODO

  • Better polybar config
  • BSPWM / sxhkd / startup stuff / xinitrc
  • Consider configuring flavours
  • taskwarrior
  • vit
  • vimrc
  • tmuxinator setup
  • special popup for emacs, chat, gpt, etc
  • git / delta
  • firefox plugins settings
  • dunst alert once polybar battery widget shows low
  • mpd + radio?
  • sync calcurse and etar
  • polybar modules

    • brightness
    • bluetooth
    • polybar font colors
    • click battery to notify-send percentage
    • clock click to open calcurse
    • master chat notifications (click to open chat tdrop)
  • autorandr
  • dunstrc
  • ncmpcpp

    • scrobble

      • mpdscribble
    • internet radio
    • polybar
  • manage polybar w/ systemctl
  • make 'youtube' albums of songs I from there
  • explore mpd auto playlists