dotfiles

my shiny new dotfiles
git clone git://git.jakekoroman.com/dotfiles
Log | Files | Refs | README

commit 68d97ad6a164f81feb9f417dab815e06e6c03dbb
Author: Jake Koroman <jakekoroman@gmail.com>
Date:   Wed, 14 Feb 2024 14:00:03 -0500

Ready. Set. Go!

Diffstat:
A.bash_aliases | 27+++++++++++++++++++++++++++
A.bash_profile | 14++++++++++++++
A.bashrc | 30++++++++++++++++++++++++++++++
A.config/nvim/colors/GruberDarker.vim | 228+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A.config/nvim/colors/clean.vim | 92+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A.config/nvim/init.lua | 64++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A.config/nvim/lua/keybinds.lua | 38++++++++++++++++++++++++++++++++++++++
A.config/nvim/lua/plugins.lua | 31+++++++++++++++++++++++++++++++
A.config/nvim/lua/settings.lua | 36++++++++++++++++++++++++++++++++++++
A.config/sway/config | 218+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A.emacs | 530+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A.emacs.local/handmade-theme.el | 38++++++++++++++++++++++++++++++++++++++
A.emacs.local/toxi-theme.el | 65+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A.emacs.snippets/c++-mode/.yas-parents | 2++
A.emacs.snippets/c-mode/define | 6++++++
A.emacs.snippets/c-mode/for | 8++++++++
A.emacs.snippets/c-mode/fprintf | 6++++++
A.emacs.snippets/c-mode/if | 8++++++++
A.emacs.snippets/c-mode/include | 6++++++
A.emacs.snippets/c-mode/includeq | 6++++++
A.emacs.snippets/c-mode/main | 10++++++++++
A.emacs.snippets/c-mode/note | 6++++++
A.emacs.snippets/c-mode/printf | 6++++++
A.emacs.snippets/c-mode/printf_args | 6++++++
A.emacs.snippets/c-mode/sdlboil | 30++++++++++++++++++++++++++++++
A.emacs.snippets/c-mode/stdio | 6++++++
A.emacs.snippets/c-mode/stdlib | 6++++++
A.emacs.snippets/c-mode/struct | 7+++++++
A.emacs.snippets/c-mode/todo | 6++++++
A.emacs.snippets/fundamental-mode/mit | 25+++++++++++++++++++++++++
A.emacs.snippets/zig-mode/note | 6++++++
A.emacs.snippets/zig-mode/todo | 6++++++
A.gitignore | 3+++
A.stow-local-ignore | 8++++++++
A.tmux.conf | 19+++++++++++++++++++
AREADME | 4++++
Adeploy | 39+++++++++++++++++++++++++++++++++++++++
Adevice-specific/desktop/hardware | 14++++++++++++++
Adevice-specific/desktop/i3status | 56++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Adevice-specific/laptop/hardware | 18++++++++++++++++++
Adevice-specific/laptop/i3status | 61+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ascripts/bookmarks | 7+++++++
Ascripts/brightness | 17+++++++++++++++++
Ascripts/sshmenu | 7+++++++
Ashared-configs/foot/template.ini | 225+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
45 files changed, 2051 insertions(+), 0 deletions(-)

diff --git a/.bash_aliases b/.bash_aliases @@ -0,0 +1,27 @@ +alias grep='grep --color=auto' +alias ls='ls --color=auto' +alias l='ls -l' +alias ll='ls -la' + +alias e='nvim' +alias cs='ssh jake@mainframe' + +alias nt='firefox --new-tab' +alias nw='firefox --new-window' + +if [ -z $I3SOCK ]; then + alias sw='$HOME/dotfiles/Scripts/myswallow' +else + alias sw='swallow' +fi + +alias sudo='sudo ' + +alias dwmd='cd ~/dotfiles/dwm' +alias std='cd ~/dotfiles/st-instantos' + +alias work='vncviewer -passwd ~/.vnc/passwd 192.168.0.247' +alias nas='doas mount /media/nas && cd /media/nas' + +alias poweroff='doas /sbin/poweroff' +alias reboot='doas /sbin/reboot' diff --git a/.bash_profile b/.bash_profile @@ -0,0 +1,14 @@ +# /etc/skel/.bash_profile + +# This file is sourced by bash for login shells. The following line +# runs your .bashrc and is recommended by the bash info pages. +if [[ -f ~/.bashrc ]] ; then + . ~/.bashrc +fi + +if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then + echo 'welcome bozo' + export MOZ_ENABLE_WAYLAND=1 + export GTK_THEME=Adwaita-dark + dbus-run-session sway +fi diff --git a/.bashrc b/.bashrc @@ -0,0 +1,30 @@ +# /etc/skel/.bashrc +# +# This file is sourced by all *interactive* bash shells on startup, +# including some apparently interactive shells such as scp and rcp +# that can't tolerate any output. So make sure this doesn't display +# anything or bad things will happen ! + + +# Test for an interactive shell. There is no need to set anything +# past this point for scp and rcp, and it's important to refrain from +# outputting anything in those cases. +if [[ $- != *i* ]] ; then + # Shell is non-interactive. Be done now! + return +fi + +# Put your fun stuff here. + +export HISTCONTROL=ignoreboth:erasedups +export HISTSIZE=2500 +export HISTFILESIZE=5000 +complete -cf doas + +source $HOME/.bash_aliases + +export PS1='\[\e[92m\]\w\[\e[0m\] \[\e[95m\]>\[\e[0m\] ' +#export PS1="${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ " +export PATH=$HOME/.local/bin:$HOME/scripts:$PATH + +clear diff --git a/.config/nvim/colors/GruberDarker.vim b/.config/nvim/colors/GruberDarker.vim @@ -0,0 +1,228 @@ +" GruberDarker Theme for Vim +" +" Adapted from an Emacs theme: +" https://github.com/rexim/gruber-darker-theme +" +" Colorscheme template: https://github.com/mhartington/oceanic-next/blob/master/colors/OceanicNext.vim +" -------------------------------------------- + +" {{{ Setup + set background=dark + hi clear + if exists("syntax_on") + syntax reset + endif + let g:colors_name="GruberDarker" +" }}} +" {{{ Italics + let g:gruber_terminal_italic = get(g:, 'gruber_terminal_italic', 0) + let s:italic = "" + if g:gruber_terminal_italic == 1 + let s:italic = "italic" + endif +"}}} +" {{{ Bold + let g:gruber_terminal_bold = get(g:, 'gruber_terminal_bold', 0) + let s:bold = "" + if g:gruber_terminal_bold == 1 + let s:bold = "bold" + endif +"}}} +" {{{ Colors + let s:gruberFG=['#e4e4ef', '253'] + let s:gruberFG1=['#f4f4ff', '254'] + let s:gruberFG2=['#f5f5ff', '240'] + let s:gruberFG3=['#65737e', '243'] + let s:gruberWhite=['#ffffff', '15'] + let s:gruberBlack=['#000000', '0'] + let s:gruberBG=['#181818', '233'] + let s:gruberBG1=['#282828', '235'] + let s:gruberBG2=['#453d41', '238'] + let s:gruberLightRed=['#c73c3f', '203'] + let s:gruberRed=['#f43841', '160'] + let s:gruberNiagara=['#96a6c8', '147'] + let s:gruberQuartz=['#95a99f', '108'] + let s:gruberGreen=['#73c936', '70'] + let s:gruberMain=['#ffdd33', '220'] + let s:gruberBrown=['#cc8c3c', '172'] + let s:gruberPurple=['#9e95c7', '98'] + let s:gruberLightBlue=['#0087d7', '32'] + let s:gruberBlue=['#0000d7', '20'] + let s:gruberGold=['#d7af00', '178'] + let s:none=['NONE', 'NONE'] + +" {{{ Highlight function +function! <sid>hi(group, fg, bg, attr, attrsp) + " fg, bg, attr, attrsp + if !empty(a:fg) + exec "hi " . a:group . " guifg=" . a:fg[0] + exec "hi " . a:group . " ctermfg=" . a:fg[1] + endif + if !empty(a:bg) + exec "hi " . a:group . " guibg=" . a:bg[0] + exec "hi " . a:group . " ctermbg=" . a:bg[1] + endif + if a:attr != "" + exec "hi " . a:group . " gui=" . a:attr + exec "hi " . a:group . " cterm=" . a:attr + endif + if !empty(a:attrsp) + exec "hi " . a:group . " guisp=" . a:attrsp[0] + endif +endfunction +" }}} +" {{{ call <sid>:hi(group, fg, bg, gui, guisp) +call <sid>hi('Bold', '', '', 'bold', '') +call <sid>hi('Debug', s:gruberFG2, '', '', '') +call <sid>hi('Directory', s:gruberLightBlue, '', '', '') +call <sid>hi('ErrorMsg', s:gruberWhite, s:gruberRed, '', '') +call <sid>hi('Exception', s:gruberBrown, '', '', '') +call <sid>hi('FoldColumn', s:gruberBrown, s:gruberFG2, '', '') +call <sid>hi('Folded', s:gruberBrown, s:gruberFG2, s:italic, '') +call <sid>hi('IncSearch', s:gruberBlack, s:gruberFG2, 'NONE', '') +call <sid>hi('Italic', '', '', s:italic, '') + +call <sid>hi('Macro', s:gruberFG, '', '', '') +call <sid>hi('MatchParen', s:gruberBG2, s:gruberMain, '', '') +call <sid>hi('ModeMsg', s:gruberFG2, '', '', '') +call <sid>hi('MoreMsg', s:gruberFG2, '', '', '') +call <sid>hi('Question', s:gruberNiagara, '', '', '') +call <sid>hi('Search', s:gruberBlack, s:gruberMain, '', '') +call <sid>hi('SpecialKey', s:gruberFG2, '', '', '') +call <sid>hi('TooLong', s:gruberFG2, '', '', '') +call <sid>hi('Underlined', s:gruberPurple, '', '', '') +call <sid>hi('Visual', '', s:gruberBG2, '', '') +call <sid>hi('VisualNOS', s:gruberRed, '', '', '') +call <sid>hi('WarningMsg', s:gruberRed, '', '', '') +call <sid>hi('WildMenu', s:gruberBlack, s:gruberMain, '', '') +call <sid>hi('Title', s:gruberQuartz, '', '', '') +call <sid>hi('Conceal', s:gruberFG, s:gruberBG, '', '') +call <sid>hi('Cursor', s:gruberBG, s:gruberFG, '', '') +call <sid>hi('NonText', s:gruberFG2, '', '', '') +call <sid>hi('Normal', s:gruberFG, s:gruberBG, '', '') +call <sid>hi('EndOfBuffer', s:gruberFG, s:gruberBG, '', '') +call <sid>hi('LineNr', s:gruberFG, s:gruberBG, '', '') +call <sid>hi('SignColumn', s:none, s:none, '', '') +call <sid>hi('VertSplit', s:gruberFG2, s:gruberBG1, '', '') +call <sid>hi('ColorColumn', '', s:gruberBG2, '', '') +call <sid>hi('CursorColumn', '', s:gruberBG2, '', '') +call <sid>hi('CursorLine', '', s:gruberBG2, 'NONE', '') +call <sid>hi('CursorLineNr', s:gruberMain, s:gruberBG, '', '') +call <sid>hi('PMenu', s:gruberFG, s:gruberBG1, '', '') +call <sid>hi('PMenuSel', s:gruberFG, s:gruberBG2, '', '') +call <sid>hi('PmenuSbar', '', s:gruberBG, '', '') +call <sid>hi('PmenuThumb', '', s:gruberBG, '', '') +call <sid>hi('helpExample', s:gruberMain, '', '', '') +call <sid>hi('helpCommand', s:gruberMain, '', '', '') + +" Standard syntax highlighting +call <sid>hi('Boolean', s:gruberQuartz, '', '', '') +call <sid>hi('Character', s:gruberGreen, '', '', '') +call <sid>hi('Comment', s:gruberBrown, '', s:italic, '') +call <sid>hi('Conditional', s:gruberMain, '', '', '') +call <sid>hi('Constant', s:gruberQuartz, '', '', '') +call <sid>hi('Define', s:gruberMain, '', '', '') +call <sid>hi('Delimiter', s:gruberFG, '', '', '') +call <sid>hi('Float', s:gruberQuartz, '', '', '') +call <sid>hi('Function', s:gruberNiagara, '', '', '') +call <sid>hi('Identifier', s:gruberNiagara, '', '', '') +call <sid>hi('Include', s:gruberMain, '', '', '') +call <sid>hi('Keyword', s:gruberMain, '', '', '') +call <sid>hi('Label', s:gruberFG, '', '', '') +call <sid>hi('Number', s:gruberQuartz, '', '', '') +call <sid>hi('Operator', s:gruberFG, '', '', '') +call <sid>hi('PreProc', s:gruberFG1, '', '', '') +call <sid>hi('Repeat', s:gruberMain, '', '', '') +call <sid>hi('Special', s:gruberMain, '', '', '') +call <sid>hi('SpecialChar', s:gruberMain, '', '', '') +call <sid>hi('Statement', s:gruberMain, '', '', '') +call <sid>hi('StorageClass', s:gruberMain, '', '', '') +call <sid>hi('String', s:gruberGreen, '', '', '') +call <sid>hi('Structure', s:gruberMain, '', '', '') +call <sid>hi('Todo', s:gruberBG, s:gruberMain, '', '') +call <sid>hi('Type', s:gruberQuartz, '', '', '') +call <sid>hi('Typedef', s:gruberQuartz, '', '', '') + +call <sid>hi('SpellBad', '', '', 'undercurl', '') +call <sid>hi('SpellLocal', '', '', 'undercurl', '') +call <sid>hi('SpellCap', '', '', 'undercurl', '') +call <sid>hi('SpellRare', '', '', 'undercurl', '') + +" Haskell Highlighting +call <sid>hi('hsTypeDef', s:gruberMain, '', '', '') +call <sid>hi('hsStructure', s:gruberMain, '', '', '') +call <sid>hi('hsStatement', s:gruberMain, '', '', '') +call <sid>hi('hsconditional', s:gruberMain, '', '', '') +call <sid>hi('hsconditional', s:gruberMain, '', '', '') +call <sid>hi('hsconditional', s:gruberMain, '', '', '') + +" Java Highlighting +" TODO Fix function definitions +call <sid>hi('javaConstant', s:gruberQuartz, '', '', '') +call <sid>hi('javaConditional', s:gruberMain, '', '', '') +call <sid>hi('javaOperator', s:gruberMain, '', '', '') +call <sid>hi('javaExceptions', s:gruberMain, '', '', '') +call <sid>hi('javaAssert', s:gruberMain, '', '', '') +call <sid>hi('javaClassDecl', s:gruberMain, '', '', '') +call <sid>hi('javaBraces', s:gruberFG, '', '', '') +call <sid>hi('javaLangObject', s:gruberFG, '', '', '') +call <sid>hi('javaType', s:gruberQuartz, '', '', '') + +" Python Highlighting +call <sid>hi('pythonRepeat', s:gruberMain, '', '', '') +call <sid>hi('pythonOperator', s:gruberMain, '', '', '') +call <sid>hi('pythonException', s:gruberMain, '', '', '') + + +call <sid>hi('markdownCode', s:gruberGreen, '', '', '') +call <sid>hi('markdownCodeBlock', s:gruberGreen, '', '', '') +call <sid>hi('markdownHeadingDelimiter', s:gruberNiagara, '', '', '') +call <sid>hi('markdownItalic', s:gruberPurple, '', s:italic, '') +call <sid>hi('markdownBold', s:gruberMain, '', s:bold, '') +call <sid>hi('markdownCodeDelimiter', s:gruberBrown, '', s:italic, '') +call <sid>hi('markdownError', s:gruberFG, s:gruberBG1, '', '') + +call <sid>hi('ALEErrorSign', s:gruberRed, s:gruberBG2, s:bold, '') +call <sid>hi('ALEWarningSign', s:gruberMain, s:gruberBG2, s:bold, '') +call <sid>hi('ALEInfoSign', s:gruberGreen, s:gruberBG2, s:bold, '') + +call <sid>hi('NERDTreeExecFile', s:gruberFG, '', '', '') +call <sid>hi('NERDTreeDirSlash', s:gruberNiagara, '', '', '') +call <sid>hi('NERDTreeOpenable', s:gruberNiagara, '', '', '') +call <sid>hi('NERDTreeFile', '', s:none, '', '') +call <sid>hi('NERDTreeFlags', s:gruberNiagara, '', '', '') + +call <sid>hi('vimfilerLeaf', s:gruberFG, '', '', '') +call <sid>hi('vimfilerNormalFile', s:gruberFG, s:gruberBG1, '', '') +call <sid>hi('vimfilerOpenedFile', s:gruberNiagara, '', '', '') +call <sid>hi('vimfilerClosedFile', s:gruberNiagara, '', '', '') + +" }}} + +let g:terminal_color_0=s:gruberBG1[0] +let g:terminal_color_8=s:gruberBG1[0] + +let g:terminal_color_1=s:gruberLightRed[0] +let g:terminal_color_9=s:gruberLightRed[0] + +let g:terminal_color_2=s:gruberGreen[0] +let g:terminal_color_10=s:gruberGreen[0] + +let g:terminal_color_3=s:gruberMain[0] +let g:terminal_color_11=s:gruberMain[0] + +let g:terminal_color_4=s:gruberNiagara[0] +let g:terminal_color_12=s:gruberNiagara[0] + +let g:terminal_color_5=s:gruberPurple[0] +let g:terminal_color_13=s:gruberPurple[0] + +let g:terminal_color_6=s:gruberNiagara[0] +let g:terminal_color_14=s:gruberNiagara[0] + +let g:terminal_color_7=s:gruberFG[0] +let g:terminal_color_15=s:gruberFG[0] + +let g:terminal_color_background=s:gruberBG1[0] +let g:terminal_color_foreground=s:gruberWhite[0] + diff --git a/.config/nvim/colors/clean.vim b/.config/nvim/colors/clean.vim @@ -0,0 +1,92 @@ +" to get font face under cursor: :echo synIDattr(synID(line("."), col("."), 1), "name") + +hi clear +syntax reset +let g:colors_name = 'clean' +set background=dark + +hi Normal guifg=#cdaa7d guibg=#181818 gui=NONE cterm=NONE +hi ColorColumn guifg=NONE guibg=#181818 gui=NONE cterm=NONE +hi Conceal guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE +hi Cursor guifg=NONE guibg=NONE gui=reverse ctermfg=NONE ctermbg=NONE cterm=reverse +hi CursorColumn guifg=NONE guibg=#181818 gui=NONE cterm=NONE +hi CursorLine guifg=NONE guibg=#181818 gui=NONE cterm=NONE +hi CursorLineNr guifg=#e4e4ef guibg=#181818 gui=NONE cterm=NONE +hi DiffAdd guifg=#e4e4ef guibg=#181818 gui=reverse cterm=reverse +hi DiffChange guifg=#e4e4ef guibg=#181818 gui=reverse cterm=reverse +hi DiffDelete guifg=#e4e4ef guibg=#181818 gui=reverse cterm=reverse +hi DiffText guifg=#e4e4ef guibg=#181818 gui=reverse cterm=reverse +hi Directory guifg=#e4e4ef guibg=NONE gui=NONE cterm=NONE +hi EndOfBuffer guifg=#e4e4ef guibg=NONE gui=NONE cterm=NONE +hi ErrorMsg guifg=#ffff00 guibg=#181818 gui=NONE cterm=NONE +hi FoldColumn guifg=#e4e4ef guibg=NONE gui=NONE cterm=NONE +hi Folded guifg=#e4e4ef guibg=#181818 gui=NONE cterm=NONE +hi IncSearch guifg=#ffaf00 guibg=#181818 gui=reverse cterm=reverse +hi LineNr guifg=#7a7a7a guibg=NONE gui=NONE cterm=NONE +hi MatchParen guifg=#ff0000 guibg=NONE gui=bold cterm=bold +hi ModeMsg guifg=#e4e4ef guibg=NONE gui=bold cterm=bold +hi MoreMsg guifg=#e4e4ef guibg=NONE gui=NONE cterm=NONE +hi NonText guifg=#e4e4ef guibg=NONE gui=NONE cterm=NONE +hi Pmenu guifg=#cdaa7d guibg=#101010 gui=NONE cterm=NONE +hi PmenuSbar guifg=#e4e4ef guibg=#101010 gui=NONE cterm=NONE +hi PmenuSel guifg=#cd950c guibg=#1F1F1F gui=NONE cterm=NONE +hi PmenuThumb guifg=#e4e4ef guibg=#101010 gui=NONE cterm=NONE +hi Question guifg=#e4e4ef guibg=NONE gui=NONE cterm=NONE +hi QuickFixLine guifg=#ad7fa8 guibg=#181818 gui=reverse cterm=reverse +hi Search guifg=#ffaf00 guibg=#181818 gui=reverse cterm=reverse +hi SignColumn guifg=#e4e4ef guibg=NONE gui=NONE cterm=NONE +hi SpecialKey guifg=#e4e4ef guibg=NONE gui=NONE cterm=NONE +hi SpellBad guifg=#e4e4ef guibg=NONE guisp=#d7005f gui=undercurl cterm=underline +hi SpellCap guifg=#e4e4ef guibg=NONE guisp=#0087d7 gui=undercurl cterm=underline +hi SpellLocal guifg=#e4e4ef guibg=NONE guisp=#d787d7 gui=undercurl cterm=underline +hi SpellRare guifg=#e4e4ef guibg=NONE guisp=#00afaf gui=undercurl cterm=underline +hi StatusLine guifg=#e4e4ef guibg=#181818 gui=bold,reverse cterm=bold +hi StatusLineNC guifg=#878787 guibg=#181818 gui=reverse cterm=reverse +hi TabLine guifg=#e4e4ef guibg=#181818 gui=reverse cterm=reverse +hi TabLineFill guifg=#e4e4ef guibg=NONE gui=NONE cterm=NONE +hi TabLineSel guifg=#e4e4ef guibg=#181818 gui=bold cterm=bold +hi Title guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE +hi VertSplit guifg=#e4e4ef guibg=#181818 gui=NONE cterm=NONE +hi Visual guifg=#595959 guibg=#181818 gui=reverse cterm=reverse +hi VisualNOS guifg=NONE guibg=#181818 gui=NONE cterm=NONE +hi WarningMsg guifg=#e4e4ef guibg=NONE gui=NONE cterm=NONE +hi WildMenu guifg=#e4e4ef guibg=#181818 gui=bold cterm=bold +hi Comment guifg=#5e5e63 guibg=NONE gui=bold cterm=bold +hi Constant guifg=#e4e4ef guibg=NONE gui=NONE cterm=NONE +hi String guifg=#4e9a06 guibg=NONE gui=NONE cterm=NONE +hi Error guifg=#ff0000 guibg=#181818 gui=bold,reverse cterm=bold,reverse +hi Identifier guifg=#e4e4ef guibg=NONE gui=NONE cterm=NONE +hi Ignore guifg=#e4e4ef guibg=NONE gui=NONE cterm=NONE +hi PreProc guifg=#e4e4ef guibg=NONE gui=NONE cterm=NONE +hi Special guifg=#cdaa7d guibg=NONE gui=NONE cterm=NONE +hi Number guifg=#cdaa7d guibg=NONE gui=NONE cterm=NONE +hi Statement guifg=#cd950c guibg=NONE gui=NONE cterm=NONE +hi Todo guifg=#181818 guibg=#ffffff gui=bold,reverse cterm=bold,reverse +hi Type guifg=#cd950c guibg=NONE gui=NONE cterm=NONE +hi Underlined guifg=#e4e4ef guibg=NONE gui=underline cterm=underline +hi CursorIM guifg=#e4e4ef guibg=#181818 gui=NONE cterm=NONE +hi ToolbarLine guifg=NONE guibg=#181818 gui=NONE cterm=NONE +hi ToolbarButton guifg=#e4e4ef guibg=#181818 gui=bold cterm=bold + +hi vimFgBgAttrib guifg=#cdaa7D guibg=#181818 gui=NONE cterm=NONE +hi vimHiAttrib guifg=#cdaa7d guibg=#181818 gui=NONE cterm=NONE +hi vimVar guifg=#cdaa7D guibg=#181818 gui=NONE cterm=NONE +hi vimOption guifg=#cdaa7d guibg=#181818 gui=NONE cterm=NONE +hi vimHighlight guifg=#cdaa7d guibg=#181818 gui=NONE cterm=NONE +hi vimHigroup guifg=#cdaa7d guibg=#181818 gui=NONE cterm=NONE +hi vimGroup guifg=#cdaa7d guibg=#181818 gui=NONE cterm=NONE + +hi zigVarDecl guifg=#cd950c guibg=NONE gui=NONE cterm=NONE +hi zigMacro guifg=#cd950c guibg=NONE gui=NONE cterm=NONE +hi zigOperator guifg=#cdaa7d guibg=NONE gui=NONE cterm=NONE +hi zigType guifg=#cdaa7d guibg=NONE gui=NONE cterm=NONE +hi zigPreProc guifg=#cd950c guibg=NONE gui=NONE cterm=NONE +hi zigConstant guifg=#cdaa7d guibg=NONE gui=NONE cterm=NONE +hi zigBoolean guifg=#cdaa7d guibg=NONE gui=NONE cterm=NONE +hi zigBuiltinFn guifg=#f77454 guibg=#181818 gui=NONE cterm=NONE +hi zigNull guifg=#cdaa7d guibg=#181818 gui=NONE cterm=NONE + +hi shVariable guifg=#cdaa7d guibg=#181818 gui=NONE cterm=NONE +hi shDerefSimple guifg=#f77454 guibg=#181818 gui=NONE cterm=NONE + +hi luaConstant guifg=#cdaa7d guibg=#181818 gui=NONE cterm=NONE diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua @@ -0,0 +1,64 @@ +require('plugins') +require('settings') +require('keybinds') + +local api = vim.api + +-- Auto save when running :make +api.nvim_create_autocmd({ "QuickFixCmdPre" }, { + callback = function() + vim.cmd ":w" + end, +}) + +-- Tree sitter settings +-- require'nvim-treesitter.configs'.setup { +-- -- A list of parser names, or "all" +-- ensure_installed = { "c", "cpp", "lua", "python" }, + +-- -- Install parsers synchronously (only applied to `ensure_installed`) +-- sync_install = false, + +-- -- Automatically install missing parsers when entering buffer +-- -- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally +-- auto_install = true, + +-- highlight = { +-- -- `false` will disable the whole extension +-- enable = true, +-- }, +-- } + +-- Snippet settings +require('snippets').snippets = { + _global = { + todo = "/* TODO(jake): $0 */"; + note = "/* NOTE(jake): $0 */"; + inc = "#include <$0>"; + incq = "#include \"$0\""; + } +} + +require('marks').setup { + -- whether to map keybinds or not. default true + default_mappings = true, + -- whether movements cycle back to the beginning/end of buffer. default true + cyclic = true, + force_write_shada = true, + -- how often (in ms) to redraw signs/recompute mark positions. + -- higher values will have better performance but may cause visual lag, + -- while lower values may cause performance penalties. default 150. + refresh_interval = 250, + -- marks.nvim allows you to configure up to 10 bookmark groups, each with its own + -- sign/virttext. Bookmarks can be used to group together positions and quickly move + -- across multiple buffers. default sign is '!@#$%^&*()' (from 0 to 9), and + -- default virt_text is "". + bookmark_0 = { + sign = "⚑", + virt_text = "hello world", + -- explicitly prompt for a virtual line annotation when setting a bookmark from this group. + -- defaults to false. + annotate = false, + }, + mappings = {} +} diff --git a/.config/nvim/lua/keybinds.lua b/.config/nvim/lua/keybinds.lua @@ -0,0 +1,38 @@ +local snippets = require('snippets') + +local change_scale_factor = function(delta) + vim.g.neovide_scale_factor = vim.g.neovide_scale_factor * delta +end + +-- General Editor binds +vim.keymap.set('n', '<M-j>', '}') +vim.keymap.set('n', '<M-k>', '{') +vim.keymap.set('v', '<M-j>', '}') +vim.keymap.set('v', '<M-k>', '{') +vim.keymap.set('i', '<C-k>', snippets.expand_or_advance) +vim.keymap.set('n', '<leader>e', '<CMD>Lexplore<CR>') + +-- Compilation bind +vim.keymap.set('n', '<leader>c', '<CMD>make<CR>') +vim.keymap.set('n', '<M-n>', '<CMD>cn<CR>') +vim.keymap.set('n', '<M-p>', '<CMD>cp<CR>') +vim.keymap.set('n', '<M-l>', '<CMD>cl<CR>') + +-- Buffer binds +vim.keymap.set('n', '<leader>bp', '<CMD>bn<CR>') +vim.keymap.set('n', '<leader>bn', '<CMD>bp<CR>') + +-- Window binds +vim.keymap.set('n', '<leader>ww', '<C-w>w') +vim.keymap.set('n', '<leader>wn', '<C-w>n') +vim.keymap.set('n', '<leader>wv', '<C-w>v') +vim.keymap.set('n', '<leader>wm', '<CMD>only<CR>') +vim.keymap.set('n', '<M-o>', '<C-w>w') +vim.keymap.set('n', '<leader>wc', '<CMD>close<CR>') + +-- Move line up and down in NORMAL and VISUAL modes +-- Reference: https://vim.fandom.com/wiki/Moving_lines_up_or_down +vim.keymap.set('n', '<C-j>', '<CMD>move .+1<CR>') +vim.keymap.set('n', '<C-k>', '<CMD>move .-2<CR>') +vim.keymap.set('v', '<C-j>', ":move '>+1<CR>gv=gv") +vim.keymap.set('v', '<C-k>', ":move '<-2<CR>gv=gv") diff --git a/.config/nvim/lua/plugins.lua b/.config/nvim/lua/plugins.lua @@ -0,0 +1,31 @@ +local ensure_packer = function() + local fn = vim.fn + local install_path = fn.stdpath('data')..'/site/pack/packer/start/packer.nvim' + if fn.empty(fn.glob(install_path)) > 0 then + fn.system({'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path}) + vim.cmd [[packadd packer.nvim]] + return true + end + return false +end + +local packer_bootstrap = ensure_packer() + +return require('packer').startup({ + function(use) + use('wbthomason/packer.nvim') + use('nvim-lua/plenary.nvim') + + use('tpope/vim-commentary') + use('mg979/vim-visual-multi') + use('rhysd/clever-f.vim') + -- use({'nvim-treesitter/nvim-treesitter', run = ':TSUpdate'}) + use('norcalli/snippets.nvim') + use('rbgrouleff/bclose.vim') + use('chentoast/marks.nvim') + -- use('chaoren/vim-wordmotion') + use { "catppuccin/nvim", as = "catppuccin" } + use('zekzekus/menguless') + + end +}) diff --git a/.config/nvim/lua/settings.lua b/.config/nvim/lua/settings.lua @@ -0,0 +1,36 @@ +local o = vim.o +local g = vim.g + +g.mapleader = " " +g.netrw_keepdir = 0 +g.netrw_banner = 0 +g.netrw_winsize = 15 +g.netrw_localcopydircmd = 'cp -r' +-- o.termguicolors = true +g.zig_fmt_autosave = 0 + +-- vim.cmd('set termguicolors') +-- vim.cmd('colorscheme GruberDarker') +vim.cmd('set wrap!') +vim.cmd('set makeprg=./build.sh') + +o.mouse = 'a' +o.relativenumber = true +o.number = true +o.expandtab = true +o.tabstop = 4 +o.shiftwidth = 4 +-- o.autochdir = true +o.guifont = "Liberation Mono:h10" + +-- my super cool c indentation style +o.cindent = true +o.cino = "l1,t0,(0" -- :0 will align case to the switch statement + +o.swapfile = false +o.backup = false +-- o.scrolloff = 8 + +osmartcase = true + +o.clipboard = 'unnamedplus' diff --git a/.config/sway/config b/.config/sway/config @@ -0,0 +1,218 @@ +### Variables +# +# Logo key. Use Mod1 for Alt. +set $mod Mod4 + +# Home row direction keys, like vim +set $left h +set $down j +set $up k +set $right l + +# Your preferred terminal emulator +set $term foot + +# Your preferred application launcher +# Note: pass the final command to swaymsg so that the resulting window can be opened +# on the original workspace that the command was run on. +set $menu dmenu_path | wmenu | xargs swaymsg exec -- + +include /etc/sway/config-vars.d/* + +include ./hardware-specific-config + +exec dbus-update-activation-environment WAYLAND_DISPLAY + +### Key bindings +# +# Basics: +# + # Start a terminal + bindsym $mod+Return exec $term + + # launch browser + bindsym $mod+b exec firefox + + # bookmark script + bindsym $mod+Shift+b exec bookmarks + + # ssh-client script + bindsym $mod+Shift+Return exec sshmenu + + # emacs + bindsym $mod+e exec emacs + + # launch pcmanfm + bindsym $mod+F2 exec pcmanfm + + # screenshot + bindsym $mod+s exec grimshot copy window + bindsym $mod+Shift+s exec grimshot copy area + + # passmenu + bindsym $mod+p exec passmenu-otp + + # pavucontrol + bindsym $mod+F1 exec pavucontrol + + # lock screen + bindsym $mod+Delete exec --no-startup-id "swaylock -f -c 181818" + + # Kill focused window + bindsym $mod+Shift+c kill + + # Start your launcher + bindsym $mod+d exec j4-dmenu-desktop --dmenu="wmenu -i" --term="foot" + bindsym $mod+Shift+d exec $menu + + # Audio binds + bindsym XF86AudioMute exec wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle + bindsym XF86AudioLowerVolume exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%- + bindsym XF86AudioRaiseVolume exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%+ + + bindsym XF86AudioPlay exec playerctl play-pause + + # Brightness + bindsym XF86MonBrightnessUp exec brightness up + bindsym XF86MonBrightnessDown exec brightness down + + # Drag floating windows by holding down $mod and left mouse button. + # Resize them with right mouse button + $mod. + # Despite the name, also works for non-floating windows. + # Change normal to inverse to use left mouse button for resizing and right + # mouse button for dragging. + floating_modifier $mod normal + + # toggle bar + bindsym $mod+comma bar mode toggle + + # Reload the configuration file + bindsym $mod+Control+r reload + + # Exit sway (logs you out of your Wayland session) + bindsym $mod+Control+q exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit' + +# +# Moving around: +# + # Move your focus around + bindsym $mod+$left focus left + bindsym $mod+$down focus down + bindsym $mod+$up focus up + bindsym $mod+$right focus right + # Or use $mod+[up|down|left|right] + bindsym $mod+Left focus left + bindsym $mod+Down focus down + bindsym $mod+Up focus up + bindsym $mod+Right focus right + + # Move the focused window with the same, but add Shift + bindsym $mod+Shift+$left move left + bindsym $mod+Shift+$down move down + bindsym $mod+Shift+$up move up + bindsym $mod+Shift+$right move right + # Ditto, with arrow keys + bindsym $mod+Shift+Left move left + bindsym $mod+Shift+Down move down + bindsym $mod+Shift+Up move up + bindsym $mod+Shift+Right move right +# +# Workspaces: +# + # Switch to workspace + bindsym $mod+1 workspace number 1 + bindsym $mod+2 workspace number 2 + bindsym $mod+3 workspace number 3 + bindsym $mod+4 workspace number 4 + bindsym $mod+5 workspace number 5 + bindsym $mod+6 workspace number 6 + bindsym $mod+7 workspace number 7 + bindsym $mod+8 workspace number 8 + bindsym $mod+9 workspace number 9 + bindsym $mod+0 workspace number 10 + # Move focused container to workspace + bindsym $mod+Shift+1 move container to workspace number 1 + bindsym $mod+Shift+2 move container to workspace number 2 + bindsym $mod+Shift+3 move container to workspace number 3 + bindsym $mod+Shift+4 move container to workspace number 4 + bindsym $mod+Shift+5 move container to workspace number 5 + bindsym $mod+Shift+6 move container to workspace number 6 + bindsym $mod+Shift+7 move container to workspace number 7 + bindsym $mod+Shift+8 move container to workspace number 8 + bindsym $mod+Shift+9 move container to workspace number 9 + bindsym $mod+Shift+0 move container to workspace number 10 + # Note: workspaces can have any name you want, not just numbers. + # We just use 1-10 as the default. +# +# Layout stuff: +# + # toggle split orientation + bindsym $mod+v split t + + bindsym $mod+Tab layout toggle tabbed split + + workspace_layout tabbed + + # Make the current focus fullscreen + bindsym $mod+f fullscreen + + # Toggle the current focus between tiling and floating mode + bindsym $mod+Shift+space floating toggle + + # Swap focus between the tiling area and the floating area + bindsym $mod+space focus mode_toggle + + # Move focus to the parent container + bindsym $mod+a focus parent + + for_window [class="steam" title="Friends List"] floating enable +# +# Scratchpad: +# + # Sway has a "scratchpad", which is a bag of holding for windows. + # You can send windows there and get them back later. + + # Move the currently focused window to the scratchpad + bindsym $mod+Shift+minus move scratchpad + + # Show the next scratchpad window or hide the focused scratchpad window. + # If there are multiple scratchpad windows, this command cycles through them. + bindsym $mod+minus scratchpad show +# +# Resizing containers: +# +mode "resize" { + # left will shrink the containers width + # right will grow the containers width + # up will shrink the containers height + # down will grow the containers height + bindsym $left resize shrink width 10px + bindsym $down resize grow height 10px + bindsym $up resize shrink height 10px + bindsym $right resize grow width 10px + + # Ditto, with arrow keys + bindsym Left resize shrink width 10px + bindsym Down resize grow height 10px + bindsym Up resize shrink height 10px + bindsym Right resize grow width 10px + + # Return to default mode + bindsym Return mode "default" + bindsym Escape mode "default" +} +bindsym $mod+r mode "resize" + +# +# Status Bar: +# +# Read `man 5 sway-bar` for more information about this section. +bar { + position bottom + + # When the status_command prints a new line to stdout, swaybar updates. + # The default just shows the current date and time. + status_command i3status +} + +include /etc/sway/config.d/* diff --git a/.emacs b/.emacs @@ -0,0 +1,530 @@ +;;; https://github.com/hrs/dotfiles/blob/main/emacs/.config/emacs/configuration.org + +(setq custom-file (concat user-emacs-directory "custom.el")) +(add-to-list 'load-path "~/.emacs.local") +(add-to-list 'custom-theme-load-path "~/.emacs.local") +(when (file-exists-p custom-file) + (load custom-file)) + +;;; Appearance and basic functionality +(menu-bar-mode -1) +(tool-bar-mode -1) +(scroll-bar-mode -1) + +(setq default-frame-alist '((font . "Iosevka-12"))) +;; (setq default-frame-alist '((font . "Liberation Mono-10"))) +(defun my/disable-scroll-bars (frame) + (modify-frame-parameters frame + '((vertical-scroll-bars . nil) + (horizontal-scroll-bars . nil)))) + +(add-hook 'after-make-frame-functions 'my/disable-scroll-bars) + +(setq-default indent-tabs-mode nil) +(setq-default tab-width 4) +(setq inhibit-splash-screen t + inhibit-startup-message t + scroll-step 3 + auto-save-default nil + make-backup-files nil + blink-cursor-mode nil + ring-bell-function 'ignore + display-line-numbers-type 'relative + transient-mark-mode nil + dired-listing-switches "-alh --group-directories-first" + compilation-scroll-output t + gc-cons-threshold 100000000 + compilation-ask-about-save nil + frame-resize-pixelwise t + mouse-drag-mode-line-buffer 1 + display-time-24hr-format t + ) + +;; (global-hl-line-mode 1) +(global-display-line-numbers-mode) + +;;; Package installs and configuration +(require 'package) +(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t) +(package-initialize) + +(eval-when-compile + (require 'use-package)) + +(use-package gruber-darker-theme + :ensure) + +(use-package minions + :ensure t + + :custom + (minions-mode-line-delimiters (cons "" "")) + + :config + (defun +set-minions-mode-line-lighter () + (setq minions-mode-line-lighter + (if (display-graphic-p) "⚙" "#"))) + + (add-hook 'server-after-make-frame-hook #'+set-minions-mode-line-lighter) + (display-time-mode 1) + (display-battery-mode 1) + (minions-mode 1)) + +(use-package naysayer-theme + :ensure) + +(use-package zenburn-theme + :ensure) + +(use-package undo-fu + :ensure) + +(use-package savehist + :init + (savehist-mode)) + +(use-package eat + :ensure) + ;; (add-hook 'eshell-first-time-mode-hook #'eat-eshell-mode)) + +(use-package vertico + :ensure + :init + (vertico-mode) + (setq vertico-cycle t) + :config + (setq vertico-multiform-categories + '((consult-grep + buffer + (vertico-buffer-display-action . (display-buffer-same-window)))))) + +(use-package orderless + :ensure + :init + ;; Configure a custom style dispatcher (see the Consult wiki) + ;; (setq orderless-style-dispatchers '(+orderless-consult-dispatch orderless-affix-dispatch) + ;; orderless-component-separator #'orderless-escapable-split-on-space) + (setq completion-styles '(orderless basic) + completion-category-defaults nil + completion-category-overrides '((file (styles partial-completion)))) + :config + (vertico-multiform-mode) + (setq vertico-multiform-categories + '((consult-grep buffer)))) + +(use-package dired + :config + (setq dired-clean-up-buffers-too t + dired-dwim-target t + dired-recursive-copies 'always + dired-recursive-deletes 'top + global-auto-revert-non-file-buffers t + auto-revert-verbose nil)) + +(use-package marginalia + :ensure + :init + (marginalia-mode)) + +(use-package consult + :ensure) + +(use-package evil + :ensure + :init + (setq evil-want-keybinding nil) + (setq evil-undo-system 'undo-fu) + :config + (evil-mode 1)) + +(use-package evil-surround + :ensure + :config + (global-evil-surround-mode 1)) + +(use-package evil-collection + :ensure + :init + (evil-collection-init)) + +(use-package evil-multiedit + :ensure + :config + ;; Sets the colour of the region + (evil-multiedit-default-keybinds)) + +(use-package evil-snipe + :ensure + :config + (add-hook 'magit-mode-hook 'turn-off-evil-snipe-override-mode) + (evil-snipe-override-mode 1)) + +;; (use-package smex +;; :ensure +;; :config +;; (smex-initialize) +;; :bind +;; ("M-x" . smex) +;; ("M-X" . smex-major-mode-commands)) + +(use-package which-key + :ensure + :config + (which-key-mode)) + +(use-package company + :ensure + :config + (setq company-idle-delay nil) + (global-company-mode) + :bind + ("C-<return>" . company-complete) + ("C-<tab>" . dabbrev-expand)) + +(use-package yasnippet + :ensure + :config + (require 'company) + ;; Add yasnippet support for all company backends + ;; https://github.com/syl20bnr/spacemacs/pull/179 + (defvar company-mode/enable-yas t + "Enable yasnippet for all backends.") + + (defun company-mode/backend-with-yas (backend) + (if (or (not company-mode/enable-yas) (and (listp backend) (member 'company-yasnippet backend))) + backend + (append (if (consp backend) backend (list backend)) + '(:with company-yasnippet)))) + (setq company-backends (mapcar #'company-mode/backend-with-yas company-backends)) + (setq yas-snippet-dirs '("~/.emacs.snippets")) + (yas-global-mode 1)) + +(use-package general + :ensure + :config + (general-evil-setup t)) + +(use-package hl-todo + :ensure + :config + (setq hl-todo-keyword-faces + '(("TODO" . "#FF0000") + ("NOTE" . "#00FF00") + ("IMPORTANT" . "#FFFF00"))) + :init + (global-hl-todo-mode)) + +(use-package dumb-jump + :ensure + :config + (add-hook 'xref-backend-functions #'dumb-jump-xref-activate)) + +(use-package magit + :ensure) + +(use-package go-mode + :ensure) + +(use-package lua-mode + :ensure) + +(use-package rust-mode + :ensure) + +(use-package zig-mode + :ensure + :config + (setq zig-format-on-save nil)) + +(use-package glsl-mode + :ensure) + +(use-package evil-commentary + :ensure + :config + (evil-commentary-mode)) + +(use-package org + :defer t + :hook (org-mode . (lambda () + (display-line-numbers-mode -1)))) + +(use-package org-download + :ensure + :after (org) + :init + ;; remove the stupid #+DOWNLOADED annotation + (defun dummy-org-download-annotate-function (link) + "") + (setq org-download-annotate-function #'dummy-org-download-annotate-function) + + (setq org-download-method 'directory) + (setq org-download-image-dir (concat (file-name-sans-extension (buffer-file-name)) "-images")) + (setq org-download-image-org-width 600) + (setq org-download-link-format "[[file:%s]]\n") + (setq org-download-abbreviate-filename-function #'file-relative-name) + (setq org-download-link-format-function #'org-download-link-format-function-default)) + +(use-package org-tempo + :after (org) + :config + (add-to-list 'org-structure-template-alist + '("el" . "src emacs-lisp"))) + +(use-package evil-org + :ensure t + :after org + :hook (org-mode . (lambda () evil-org-mode)) + :config + (require 'evil-org-agenda) + (evil-org-agenda-set-keys)) + +(use-package org-bullets + :disabled + :ensure + :config + (add-hook 'org-mode-hook #'(lambda () (org-bullets-mode 1)))) + +(use-package ido + :config + (setq ido-enable-flex-matching t + ido-everywhere t + ido-show-dot-for-dired t + ido-auto-merge-work-directories-length -1) + (ido-mode 0)) + +(defun ido-goto-symbol (&optional symbol-list) + "Refresh imenu and jump to a place in the buffer using Ido." + (interactive) + (unless (featurep 'imenu) + (require 'imenu nil t)) + (cond + ((not symbol-list) + (let ((ido-mode ido-mode) + (ido-enable-flex-matching + (if (boundp 'ido-enable-flex-matching) + ido-enable-flex-matching t)) + name-and-pos symbol-names position) + (unless ido-mode + (ido-mode 1) + (setq ido-enable-flex-matching t)) + (while (progn + (imenu--cleanup) + (setq imenu--index-alist nil) + (ido-goto-symbol (imenu--make-index-alist)) + (setq selected-symbol + (ido-completing-read "Goto: " symbol-names)) + (string= (car imenu--rescan-item) selected-symbol))) + (unless (and (boundp 'mark-active) mark-active) + (push-mark nil t nil)) + (setq position (cdr (assoc selected-symbol name-and-pos))) + (cond + ((overlayp position) + (goto-char (overlay-start position))) + (t + (goto-char position))))) + ((listp symbol-list) + (dolist (symbol symbol-list) + (let (name position) + (cond + ((and (listp symbol) (imenu--subalist-p symbol)) + (ido-goto-symbol symbol)) + ((listp symbol) + (setq name (car symbol)) + (setq position (cdr symbol))) + ((stringp symbol) + (setq name symbol) + (setq position + (get-text-property 1 'org-imenu-marker symbol)))) + (unless (or (null position) (null name) + (string= (car imenu--rescan-item) name)) + (add-to-list 'symbol-names name) + (add-to-list 'name-and-pos (cons name position)))))))) + +;;; C-mode +(setq-default c-basic-offset 4 + c-default-style '((java-mode . "java") + (awk-mode . "awk") + (other . "bsd"))) +(c-set-offset 'case-label '+) + +(font-lock-add-keywords 'c-mode + '(("internal" . font-lock-keyword-face) + ("global" . 'font-lock-keyword-face))) + +;;; Keybinds +(defun my/eshell () + "Open eshell in other window" + (interactive) + (split-window-sensibly) + (other-window 1) + (eshell)) + +;; Binds with SPC prefix +(nvmap :keymaps 'override :prefix "SPC" + "." '(find-file :which-key "Find File") + ">" '(find-file-other-window :which-key "Open file in other window") + "," '(ido-switch-buffer :which-key "Switch Buffer") + "<" '(ido-switch-buffer-other-window :which-key "Open buffer in other window") + "/" '(consult-grep :which-key "Run grep in cwd") + "g g" '(magit :which-key "Magit") + "o -" '(dired-jump :which-key "Open Dired here") + "o t" '(eshell :which-key "Open eshell in other window") + "o T" '(my/eshell :which-key "Open eshell here") + + ;; Compile Binds + "c" '(recompile :which-key "Recompile") + "C" '(compile :which-key "Compile") + + ;; Window Binds + "w w" '(evil-window-next :which-key "Cycle through windows") + "w h" '(evil-window-left :which-key "Move left a window") + "w l" '(evil-window-right :which-key "Move right a window") + "w j" '(evil-window-down :which-key "Move down a window") + "w k" '(evil-window-up :which-key "Move up a window") + "w m" '(delete-other-windows :which-key "Maximize current window") + "w n" '(evil-window-new :which-key "Open a new window") + "w c" '(evil-window-delete :which-key "Close active window") + "w s" '(evil-window-split :which-key "Split current window horizontally") + "w v" '(evil-window-vsplit :which-key "Split current window vertically") + + ;; Buffer Binds + "b p" '(previous-buffer :which-key "Open previous buffer") + "b n" '(next-buffer :which-key "Open next buffer") + "b k" '(kill-current-buffer :which-key "Kill current buffer")) + +(defun previous-blank-line () + "Moves to the previous line containing nothing but whitespace." + (interactive) + (search-backward-regexp "^[ \t]*\n")) + +(defun next-blank-line () + "Moves to the next line containing nothing but whitespace." + (interactive) + (forward-line) + (search-forward-regexp "^[ \t]*\n") + (forward-line -1)) + +(defun indent-buffer () + "Run indent-region on entire buffer" + (interactive) + (indent-region (point-min) (point-max) nil)) +;; (add-hook 'before-save-hook 'indent-buffer) + +(defun find-corresponding-file () + "Find the file that corresponds to this one." + (interactive) + (setq CorrespondingFileName nil) + (setq BaseFileName (file-name-sans-extension buffer-file-name)) + (if (string-match "\\.c" buffer-file-name) + (setq CorrespondingFileName (concat BaseFileName ".h"))) + (if (string-match "\\.h" buffer-file-name) + (if (file-exists-p (concat BaseFileName ".c")) (setq CorrespondingFileName (concat BaseFileName ".c")) + (setq CorrespondingFileName (concat BaseFileName ".cpp")))) + (if (string-match "\\.hin" buffer-file-name) + (setq CorrespondingFileName (concat BaseFileName ".cin"))) + (if (string-match "\\.cin" buffer-file-name) + (setq CorrespondingFileName (concat BaseFileName ".hin"))) + (if (string-match "\\.cpp" buffer-file-name) + (setq CorrespondingFileName (concat BaseFileName ".h"))) + (if CorrespondingFileName (find-file CorrespondingFileName) + (error "Unable to find a corresponding file"))) + +(defun find-corresponding-file-other-window () + "Finds the file that corresponds to this and opens it in the other window." + (interactive) + (find-file-other-window buffer-file-name) + (find-corresponding-file)) + +;; Normal mode binds +(general-nmap + "C-e" 'move-end-of-line + "C-j" 'evil-collection-unimpaired-move-text-down + "C-k" 'evil-collection-unimpaired-move-text-up + "C-d" 'kill-region + "M-j" 'evil-forward-paragraph + "M-k" 'evil-backward-paragraph + "M-v" 'find-corresponding-file + [(meta shift v)] 'find-corresponding-file-other-window) + +;; Insert mode binds +(general-imap + "C-y" 'evil-paste-after + "C-a" 'move-beginning-of-line + "C-e" 'move-end-of-line) + +(general-imap + :keymaps 'eshell-mode-map + "M-p" 'eshell-previous-matching-input-from-input + "M-n" 'eshell-next-matching-input-from-input) + +;; Binds without SPC prefix +(general-define-key + :keymaps 'override + "M-N" 'previous-error + "M-P" 'next-error + "M-o" 'other-window + "<f2>" 'ido-goto-symbol) + +;;; Launch gud-gdb in a new window +(defun my/gud () + "Run gud-gdb in other window" + (interactive) + (setq files (directory-files (file-name-directory buffer-file-name))) + (setq input (completing-read "executable: " files)) + (split-window-sensibly) + (other-window 1) + (gud-gdb (concat "gdb --fullname " input))) + +;; Sets the default compile command based on OS +(if (string= system-type "windows-nt") + (setq compile-command "build.bat") + (setq compile-command "./build.sh")) + +(defun disable-all-themes () + "Disables all active themes." + (interactive) + (dolist (i custom-enabled-themes) + (disable-theme i))) + +(defun update-theme () + "Set theme based on time of day" + (interactive) + (let ((hour (nth 2 (parse-time-string (current-time-string))))) + (disable-all-themes) + (if (and (> hour 9) + (< hour 18)) + (load-theme 'zenburn t) + (load-theme 'gruber-darker t)))) + +(defun swap-theme () + "Swaps theme to either zenburn or gruber-darker" + (interactive) + (let ((theme (nth 0 custom-enabled-themes))) + (disable-all-themes) + (if (string= theme "gruber-darker") + (load-theme 'zenburn t) + (load-theme 'gruber-darker t)))) + +(defun transparency (value) + "Sets the transparency of the frame window. 0=transparent/100=opaque" + (interactive "nTransparency Value 0 - 100 opaque: ") + (set-frame-parameter (selected-frame) 'alpha-background value)) + +;; (split-window-horizontally) +(toggle-frame-maximized) +(set-default 'truncate-lines t) +;; (list-colors-display) for a color picker +(load-theme 'toxi t) +(transparency 85) + +;; ;; Startup time +;; (defun efs/display-startup-time () +;; (message +;; "Emacs loaded in %s with %d garbage collections." +;; (format +;; "%.2f seconds" +;; (float-time +;; (time-subtract after-init-time before-init-time))) +;; gcs-done)) +;; (add-hook 'emacs-startup-hook #'efs/display-startup-time) diff --git a/.emacs.local/handmade-theme.el b/.emacs.local/handmade-theme.el @@ -0,0 +1,38 @@ +(unless (<= 24 emacs-major-version) + (error "handmade-theme requires Emacs 24 or later.")) + +(deftheme handmade + "Dark theme based on Casey Muratori's handmade hero theme") + +(custom-theme-set-faces + 'handmade + `(default ((t (:foreground "burlywood3" :background "#181818")))) + `(cursor ((t (:background "#40FF40")))) + `(region ((t (:background "dark blue")))) + `(font-lock-builtin-face ((t (:foreground "burlywood3")))) + `(font-lock-comment-face ((t (:foreground "gray50")))) + ;; `(font-lock-constant-face ((t (:foreground "olive drab")))) + `(font-lock-doc-face ((t (:foreground "gray50")))) + `(font-lock-function-name-face ((t (:foreground "burlywood3")))) + `(font-lock-keyword-face ((t (:foreground "DarkGoldenrod3")))) + `(font-lock-string-face ((t (:foreground "olive drab")))) + `(font-lock-type-face ((t (:foreground "burlywood3")))) + `(font-lock-variable-name-face ((t (:foreground "burlywood3")))) + `(font-lock-constant-face ((t (:foreground "burlywood3")))) + `(mode-line ((t (:background "#242424")))) + ;; dired + `(dired-directory ((t (:foreground "DarkGoldenrod3")))) + `(dired-symlink ((t (:foreground "cyan")))) + ;; vertico + `(vertico-current ((t (:background "navy")))) + ;; ido + `(ido-subdir ((t (:foreground "cyan")))) + ;; iedit + `(iedit-occurrence ((t (:background "navy"))))) + +;;;###autoload +(when load-file-name + (add-to-list 'custom-theme-load-path + (file-name-as-directory (file-name-directory load-file-name)))) + +(provide-theme 'handmade) diff --git a/.emacs.local/toxi-theme.el b/.emacs.local/toxi-theme.el @@ -0,0 +1,65 @@ +(unless (<= 24 emacs-major-version) + (error "toxi-theme requires Emacs 24 or later.")) + +(deftheme toxi + "toxi's dark color theme - forked to my liking") + +(custom-theme-set-faces + 'toxi + ;; frame + `(default ((t (:foreground "#a4ffd8" :background "#0b1210")))) + `(cursor ((t (:foreground "white")))) + `(hl-line ((t (:background "#272822")))) + `(minibuffer-prompt ((t (:foreground "#14bccc" :bold t)))) + `(modeline ((t (:background "#465253" :foreground "#ffffff")))) + `(modeline-inactive ((t (:background "#162223" :foreground "#355e6b")))) + `(region ((t (:background "#441ea4")))) + `(show-paren-match-face ((t (:background "#ffff00")))) + ;; main + `(font-lock-builtin-face ((t (:foreground "#00ffff")))) + `(font-lock-comment-face ((t (:foreground "#7d7d7d")))) + `(font-lock-constant-face ((t (:foreground "#f2ee81")))) + `(font-lock-doc-string-face ((t (:foreground "#40be67")))) + `(font-lock-function-name-face ((t (:foreground "#a4ffd8")))) + `(font-lock-keyword-face ((t (:foreground "#ffff00")))) + `(font-lock-string-face ((t (:foreground "#50de77")))) + `(font-lock-type-face ((t (:foreground "#a4ffd8")))) + `(font-lock-variable-name-face ((t (:foreground "#a4ffd8")))) + `(font-lock-warning-face ((t (:bold t :foreground "#ff0055")))) + ;; dired + `(dired-directory ((t (:bold t :foreground "#ffff00")))) + `(dired-symlink ((t (:bold t :foreground "#00ffff")))) + ;; rainbow-delimiters + `(rainbow-delimiters-depth-1-face ((t (:foreground "#990000")))) + `(rainbow-delimiters-depth-2-face ((t (:foreground "#383838")))) + `(rainbow-delimiters-depth-3-face ((t (:foreground "#505050")))) + `(rainbow-delimiters-depth-4-face ((t (:foreground "#6c6c6c")))) + `(rainbow-delimiters-depth-5-face ((t (:foreground "#888888")))) + `(rainbow-delimiters-depth-6-face ((t (:foreground "#a7a7a7")))) + `(rainbow-delimiters-depth-7-face ((t (:foreground "#c4c4c4")))) + `(rainbow-delimiters-depth-8-face ((t (:foreground "#e1e1e1")))) + `(rainbow-delimiters-depth-9-face ((t (:foreground "#ffffff")))) + ;; ido + `(ido-first-match ((t (:foreground "#ffff00")))) + `(ido-only-match ((t (:foreground "#00ff00")))) + `(ido-subdir ((t (:foreground "#00ffff")))) + ;; iedit + `(iedit-occurrence ((t (:background "#441ea4")))) + ;; whitespace + `(whitespace-space ((t (:foreground "#595959")))) + ;; yasnippet + `(yas/field-highlight-face ((t (:background "#383830")))) + ;; vertico + `(vertico-current ((t (:background "#441ea4")))) + ;; org + `(org-hide ((t (:foreground "#0b1210")))) + `(org-block ((t (:background "#1b2220")))) + `(org-link ((t (:foreground "#56cff2" :underline t))))) + +;;;###autoload +(when load-file-name + (add-to-list 'custom-theme-load-path + (file-name-as-directory (file-name-directory load-file-name)))) + +(provide-theme 'toxi) + diff --git a/.emacs.snippets/c++-mode/.yas-parents b/.emacs.snippets/c++-mode/.yas-parents @@ -0,0 +1 @@ +c-mode +\ No newline at end of file diff --git a/.emacs.snippets/c-mode/define b/.emacs.snippets/c-mode/define @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: define +# key: d +# -- +#define $0 +\ No newline at end of file diff --git a/.emacs.snippets/c-mode/for b/.emacs.snippets/c-mode/for @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: for +# key: for +# -- +for (size_t ${1:i} = 0; $1 < $2; ++$1) { + $0 +} +\ No newline at end of file diff --git a/.emacs.snippets/c-mode/fprintf b/.emacs.snippets/c-mode/fprintf @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: fprintf +# key: fpr +# -- +fprintf($1, "$2"); +\ No newline at end of file diff --git a/.emacs.snippets/c-mode/if b/.emacs.snippets/c-mode/if @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: if +# key: if +# -- +if ($1) { + $0 +} +\ No newline at end of file diff --git a/.emacs.snippets/c-mode/include b/.emacs.snippets/c-mode/include @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: include +# key: inc +# -- +#include <$0> +\ No newline at end of file diff --git a/.emacs.snippets/c-mode/includeq b/.emacs.snippets/c-mode/includeq @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: includeq +# key: incq +# -- +#include "$0" +\ No newline at end of file diff --git a/.emacs.snippets/c-mode/main b/.emacs.snippets/c-mode/main @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: main +# key: main +# -- +int +main(int argc, char **argv) { + $0 + return 0; +} +\ No newline at end of file diff --git a/.emacs.snippets/c-mode/note b/.emacs.snippets/c-mode/note @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: note +# key: note +# -- +/* NOTE(jake): $0 */ +\ No newline at end of file diff --git a/.emacs.snippets/c-mode/printf b/.emacs.snippets/c-mode/printf @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: printf +# key: pr +# -- +printf("$0"); +\ No newline at end of file diff --git a/.emacs.snippets/c-mode/printf_args b/.emacs.snippets/c-mode/printf_args @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: printf_args +# key: pra +# -- +printf("$1", $0); +\ No newline at end of file diff --git a/.emacs.snippets/c-mode/sdlboil b/.emacs.snippets/c-mode/sdlboil @@ -0,0 +1,29 @@ +# -*- mode: snippet -*- +# name: sdlboil +# key: sdlboil +# -- +SDL_Init(SDL_INIT_VIDEO); + +SDL_Window *window = SDL_CreateWindow("SDL Boilerplate", + 0, 0, + 1280, 720, + SDL_WINDOW_RESIZABLE); + +SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, + SDL_RENDERER_PRESENTVSYNC | SDL_RENDERER_ACCELERATED); + +bool running = true; +while (running) { + SDL_Event event = {0}; + while (SDL_PollEvent(&event)) { + switch (event.type) { + case SDL_QUIT: { + running = false; + } break; + } + } + SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255); + SDL_RenderClear(renderer); + SDL_RenderPresent(renderer); +} +$0 +\ No newline at end of file diff --git a/.emacs.snippets/c-mode/stdio b/.emacs.snippets/c-mode/stdio @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: stdio +# key: stdio +# -- +#include <stdio.h> +\ No newline at end of file diff --git a/.emacs.snippets/c-mode/stdlib b/.emacs.snippets/c-mode/stdlib @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: stdlib +# key: stdlib +# -- +#include <stdlib.h> +\ No newline at end of file diff --git a/.emacs.snippets/c-mode/struct b/.emacs.snippets/c-mode/struct @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: struct +# key: st +# -- +typedef struct { +} $0; +\ No newline at end of file diff --git a/.emacs.snippets/c-mode/todo b/.emacs.snippets/c-mode/todo @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: todo +# key: todo +# -- +/* TODO(jake): $0 */ +\ No newline at end of file diff --git a/.emacs.snippets/fundamental-mode/mit b/.emacs.snippets/fundamental-mode/mit @@ -0,0 +1,24 @@ +# -*- mode: snippet -*- +# name: mit +# key: mit +# -- +Copyright `(format-time-string "%Y")` Jake Koroman <jakekoroman@gmail.com> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +\ No newline at end of file diff --git a/.emacs.snippets/zig-mode/note b/.emacs.snippets/zig-mode/note @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: note +# key: note +# -- +// NOTE(jake): $0 +\ No newline at end of file diff --git a/.emacs.snippets/zig-mode/todo b/.emacs.snippets/zig-mode/todo @@ -0,0 +1,5 @@ +# -*- mode: snippet -*- +# name: todo +# key: todo +# -- +// TODO(jake): $0 +\ No newline at end of file diff --git a/.gitignore b/.gitignore @@ -0,0 +1,3 @@ +.config/sway/hardware-specific-config +.config/i3status/config +.config/foot/foot.ini diff --git a/.stow-local-ignore b/.stow-local-ignore @@ -0,0 +1,8 @@ +\.git +\.gitignore +README.md + +device-specific +shared-configs + +deploy diff --git a/.tmux.conf b/.tmux.conf @@ -0,0 +1,19 @@ +unbind C-b +set -g prefix C-x +bind C-x send-prefix + +set -g mouse on +set-option -g history-limit 10000 +set -s escape-time 0 + +set -g base-index 1 +setw -g pane-base-index 1 + +set-option -g status-position "bottom" +set-option -g status-style bg=default,fg=default +set-option -g status-justify centre +# set-option -g status-left '#[bg=default,fg=default,bold]#{?client_prefix,, (._.) }#[bg=#ffff00,fg=black,bold]#{?client_prefix, (._.) ,}' +set-option -g status-left '#[bg=default,fg=default,bold]#{?client_prefix,, (._.) }#[bg=default,fg=red,bold]#{?client_prefix, (._.) ,}' +set-option -g status-right '#H:#S' +set-option -g window-status-format ' #I:#W ' +set-option -g window-status-current-format '#[bg=#ffff00,fg=#000000] #I:#W#{?window_zoomed_flag, 󰊓 , }' diff --git a/README b/README @@ -0,0 +1,4 @@ +bullshit +----- + +stuff diff --git a/deploy b/deploy @@ -0,0 +1,39 @@ +#!/bin/sh + +# MUST BE RUN IN THE THIS DIRECTORY !! + +USAGE="Usage: ./deploy [laptop|desktop]" + +if test -z "$1"; then + echo $USAGE + exit +fi + +if test "$1" = "laptop" || test $(echo "$1" | cut -c1-1) = "l" ; then + hardware="laptop" + FOOT_FONT="monospace:size=12" +elif test "$1" = "desktop" || test $(echo "$1" | cut -c1-1) = "d"; then + hardware="desktop" + FOOT_FONT="Iosevka Nerd Font:size=14" +else + echo $USAGE + exit +fi + +symlink_file() { + input=$1 + output=$2 + + rm -f $output + ln -s $input $output +} + +symlink_file "$(pwd)/device-specific/$hardware/hardware" "$(pwd)/.config/sway/hardware-specific-config" +symlink_file "$(pwd)/device-specific/$hardware/i3status" "$(pwd)/.config/i3status/config" + +cat "$(pwd)/shared-configs/foot/template.ini" | sed "s/{FOOT_FONT}/$FOOT_FONT/g" > "$(pwd)/.config/foot/foot.ini" + +stow -D . 2> /dev/null +stow . + +echo "Successfully deployed $hardware's configuration" diff --git a/device-specific/desktop/hardware b/device-specific/desktop/hardware @@ -0,0 +1,14 @@ +font pango:Terminus 8 +titlebar_padding 1 + +output * bg ~/Pictures/wallpapers/watermon-ai.jpg fill +output DP-2 mode 1920x1080@144Hz pos 1920 0 +output DP-3 mode 1920x1080@144Hz pos 0 0 + +input "1133:50504:Logitech_USB_Receiver_Mouse" { + accel_profile "flat" + pointer_accel -0.15 +} + +exec gentoo-pipewire-launcher & +exec /usr/libexec/polkit-gnome-authentication-agent-1 & diff --git a/device-specific/desktop/i3status b/device-specific/desktop/i3status @@ -0,0 +1,56 @@ +# i3status configuration file. +# see "man i3status" for documentation. + +# It is important that this file is edited as UTF-8. +# The following line should contain a sharp s: +# ß +# If the above line is not correctly displayed, fix your editor first! + +general { + colors = true + interval = 5 +} + +order += "wireless _first_" +order += "ethernet _first_" +order += "disk /" +order += "load" +order += "memory" +order += "volume master" +order += "tztime local" + +wireless _first_ { + # format_up = "W: (%quality at %essid) %ip" + format_up = "W: (Signal%quality) %ip" + format_down = "W: down" +} + +ethernet _first_ { + format_up = "E: %ip (%speed)" + format_down = "E: down" +} + +disk "/" { + format = "%avail" +} + +load { + format = "%1min" +} + +memory { + format = "%used | %total" + threshold_degraded = "1G" + format_degraded = "MEMORY < %available" +} + +tztime local { + format = "%A %Y-%m-%d %H:%M:%S" + locale = "fr_CA.utf8" +} + +volume master { + format = "Volume: %volume" + format_muted = "Volume: muted (%volume)" + # device = "pulse:0" +} diff --git a/device-specific/laptop/hardware b/device-specific/laptop/hardware @@ -0,0 +1,18 @@ +font pango:monospace 10 +titlebar_padding 1 + +output eDP-1 bg ~/Pictures/wallpaper.jpg fill +output eDP-1 resolution 2560x1440 scale 1.5 + +exec swayidle -w \ + timeout 300 'swaylock -f -c 000000' \ + timeout 600 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' \ + before-sleep 'swaylock -f -c 000000' + +input "1:1:AT_Translated_Set_2_keyboard" { + xkb_options "caps:escape" +} + +input "2:10:TPPS/2_Elan_TrackPoint" { + pointer_accel -0.2 +} diff --git a/device-specific/laptop/i3status b/device-specific/laptop/i3status @@ -0,0 +1,61 @@ +# i3status configuration file. +# see "man i3status" for documentation. + +# It is important that this file is edited as UTF-8. +# The following line should contain a sharp s: +# ß +# If the above line is not correctly displayed, fix your editor first! + +general { + colors = true + interval = 5 +} + +order += "wireless _first_" +order += "ethernet _first_" +order += "disk /" +order += "load" +order += "memory" +order += "volume master" +order += "battery all" +order += "tztime local" + +wireless _first_ { + # format_up = "W: (%quality at %essid) %ip" + format_up = "W: (Signal%quality) %ip" + format_down = "W: down" +} + +ethernet _first_ { + format_up = "E: %ip (%speed)" + format_down = "E: down" +} + +battery all { + format = "%status %percentage %remaining" +} + +disk "/" { + format = "%avail" +} + +load { + format = "%1min" +} + +memory { + format = "%used | %total" + threshold_degraded = "1G" + format_degraded = "MEMORY < %available" +} + +tztime local { + format = "%A %Y-%m-%d %H:%M:%S" + locale = "fr_CA.utf8" +} + +volume master { + format = "Volume: %volume" + format_muted = "Volume: muted (%volume)" + # device = "pulse:0" +} diff --git a/scripts/bookmarks b/scripts/bookmarks @@ -0,0 +1,7 @@ +#!/bin/bash + +readarray -t bookmarks < ~/.bookmarks + +url=$(printf '%s\n' "${bookmarks[@]}" | wmenu -p "Bookmark" -i -l 4 | sed 's/^.*: //g') + +[[ ! -z "$url" ]] && firefox --new-tab $url diff --git a/scripts/brightness b/scripts/brightness @@ -0,0 +1,17 @@ +#!/bin/sh + +fifo_path="/tmp/wobpipe-brightness" + +if test ! -e $fifo_path; then + killall wob + mkfifo $fifo_path + tail -f $fifo_path | wob & +fi + +if test "$1" = "up"; then + brightnessctl s 10%+ | egrep -o "[0-9]*%" | sed "s/%//g" > $fifo_path +elif test "$1" = "down"; then + brightnessctl s 10%- | egrep -o "[0-9]*%" | sed "s/%//g" > $fifo_path +else + echo "Usage: ./brightness [up|down]" +fi diff --git a/scripts/sshmenu b/scripts/sshmenu @@ -0,0 +1,7 @@ +#!/bin/bash + +readarray -t servers < ~/.sshmenu + +server=$(printf '%s\n' "${servers[@]}" | wmenu -p "Server" -i -l 4 | sed 's/^.*: //g') + +[[ ! -z "$server" ]] && foot -e ssh -Y -X $server diff --git a/shared-configs/foot/template.ini b/shared-configs/foot/template.ini @@ -0,0 +1,225 @@ +# -*- conf -*- + +# shell=$SHELL (if set, otherwise user's default shell from /etc/passwd) +# term=foot (or xterm-256color if built with -Dterminfo=disabled) +# login-shell=no + +# app-id=foot # globally set wayland app-id. Default values are "foot" and "footclient" for desktop and server mode +# title=foot +# locked-title=no + +font={FOOT_FONT} +# font-bold=<bold variant of regular font> +# font-italic=<italic variant of regular font> +# font-bold-italic=<bold+italic variant of regular font> +# font-size-adjustment=0.5 +# line-height=<font metrics> +# letter-spacing=0 +# horizontal-letter-offset=0 +# vertical-letter-offset=0 +# underline-offset=<font metrics> +# underline-thickness=<font underline thickness> +# box-drawings-uses-font-glyphs=no +# dpi-aware=no + +# initial-window-size-pixels=700x500 # Or, +# initial-window-size-chars=<COLSxROWS> +# initial-window-mode=windowed +# pad=0x0 # optionally append 'center' +# resize-delay-ms=100 + +# notify=notify-send -a ${app-id} -i ${app-id} ${title} ${body} + +# bold-text-in-bright=no +# word-delimiters=,│`|:"'()[]{}<> +# selection-target=primary +# workers=<number of logical CPUs> +# utmp-helper=/usr/lib/utempter/utempter # When utmp backend is ‘libutempter’ (Linux) +# utmp-helper=/usr/libexec/ulog-helper # When utmp backend is ‘ulog’ (FreeBSD) + +[environment] +# name=value + +[bell] +# urgent=no +# notify=no +# visual=no +# command= +# command-focused=no + +[scrollback] +# lines=1000 +# multiplier=3.0 +# indicator-position=relative +# indicator-format="" + +[url] +# launch=xdg-open ${url} +# label-letters=sadfjklewcmpgh +# osc8-underline=url-mode +# protocols=http, https, ftp, ftps, file, gemini, gopher +# uri-characters=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.,~:;/?#@!$&%*+="'()[] + +[cursor] +# style=block +# color=<inverse foreground/background> +# blink=no +# beam-thickness=1.5 +# underline-thickness=<font underline thickness> + +[mouse] +# hide-when-typing=no +# alternate-scroll-mode=yes + +[touch] +# long-press-delay=400 + +[colors] +alpha=0.9 +# background=242424 +# foreground=ffffff +# flash=7f7f00 +# flash-alpha=0.5 + +## Normal/regular colors (color palette 0-7) +# regular0=242424 # black +# regular1=f62b5a # red +# regular2=47b413 # green +# regular3=e3c401 # yellow +# regular4=24acd4 # blue +# regular5=f2affd # magenta +# regular6=13c299 # cyan +# regular7=e6e6e6 # white + +## Bright colors (color palette 8-15) +# bright0=616161 # bright black +# bright1=ff4d51 # bright red +# bright2=35d450 # bright green +# bright3=e9e836 # bright yellow +# bright4=5dc5f8 # bright blue +# bright5=feabf2 # bright magenta +# bright6=24dfc4 # bright cyan +# bright7=ffffff # bright white + +## dimmed colors (see foot.ini(5) man page) +# dim0=<not set> +# ... +# dim7=<not-set> + +## The remaining 256-color palette +# 16 = <256-color palette #16> +# ... +# 255 = <256-color palette #255> + +## Misc colors +# selection-foreground=<inverse foreground/background> +# selection-background=<inverse foreground/background> +# jump-labels=<regular0> <regular3> # black-on-yellow +# scrollback-indicator=<regular0> <bright4> # black-on-bright-blue +# search-box-no-match=<regular0> <regular1> # black-on-red +# search-box-match=<regular0> <regular3> # black-on-yellow +# urls=<regular3> + +[csd] +# preferred=server +# size=26 +# font=<primary font> +# color=<foreground color> +# hide-when-maximized=no +# double-click-to-maximize=yes +# border-width=0 +# border-color=<csd.color> +# button-width=26 +# button-color=<background color> +# button-minimize-color=<regular4> +# button-maximize-color=<regular2> +# button-close-color=<regular1> + +[key-bindings] +# scrollback-up-page=Shift+Page_Up +# scrollback-up-half-page=none +# scrollback-up-line=none +# scrollback-down-page=Shift+Page_Down +# scrollback-down-half-page=none +# scrollback-down-line=none +# scrollback-home=none +# scrollback-end=none +# clipboard-copy=Control+Shift+c XF86Copy +# clipboard-paste=Control+Shift+v XF86Paste +# primary-paste=Shift+Insert +# search-start=Control+Shift+r +# font-increase=Control+plus Control+equal Control+KP_Add +# font-decrease=Control+minus Control+KP_Subtract +# font-reset=Control+0 Control+KP_0 +# spawn-terminal=Control+Shift+n +# minimize=none +# maximize=none +# fullscreen=none +# pipe-visible=[sh -c "xurls | fuzzel | xargs -r firefox"] none +# pipe-scrollback=[sh -c "xurls | fuzzel | xargs -r firefox"] none +# pipe-selected=[xargs -r firefox] none +# show-urls-launch=Control+Shift+o +# show-urls-copy=none +# show-urls-persistent=none +# prompt-prev=Control+Shift+z +# prompt-next=Control+Shift+x +# unicode-input=Control+Shift+u +# noop=none + +[search-bindings] +# cancel=Control+g Control+c Escape +# commit=Return +# find-prev=Control+r +# find-next=Control+s +# cursor-left=Left Control+b +# cursor-left-word=Control+Left Mod1+b +# cursor-right=Right Control+f +# cursor-right-word=Control+Right Mod1+f +# cursor-home=Home Control+a +# cursor-end=End Control+e +# delete-prev=BackSpace +# delete-prev-word=Mod1+BackSpace Control+BackSpace +# delete-next=Delete +# delete-next-word=Mod1+d Control+Delete +# extend-char=Shift+Right +# extend-to-word-boundary=Control+w Control+Shift+Right +# extend-to-next-whitespace=Control+Shift+w +# extend-line-down=Shift+Down +# extend-backward-char=Shift+Left +# extend-backward-to-word-boundary=Control+Shift+Left +# extend-backward-to-next-whitespace=none +# extend-line-up=Shift+Up +# clipboard-paste=Control+v Control+Shift+v Control+y XF86Paste +# primary-paste=Shift+Insert +# unicode-input=none +# scrollback-up-page=Shift+Page_Up +# scrollback-up-half-page=none +# scrollback-up-line=none +# scrollback-down-page=Shift+Page_Down +# scrollback-down-half-page=none +# scrollback-down-line=none +# scrollback-home=none +# scrollback-end=none + +[url-bindings] +# cancel=Control+g Control+c Control+d Escape +# toggle-url-visible=t + +[text-bindings] +# \x03=Mod4+c # Map Super+c -> Ctrl+c + +[mouse-bindings] +# scrollback-up-mouse=BTN_BACK +# scrollback-down-mouse=BTN_FORWARD +# selection-override-modifiers=Shift +# primary-paste=BTN_MIDDLE +# select-begin=BTN_LEFT +# select-begin-block=Control+BTN_LEFT +# select-extend=BTN_RIGHT +# select-extend-character-wise=Control+BTN_RIGHT +# select-word=BTN_LEFT-2 +# select-word-whitespace=Control+BTN_LEFT-2 +# select-quote = BTN_LEFT-3 +# select-row=BTN_LEFT-4 + +# vim: ft=dosini