master
Hektor Misplon 2023-02-26 22:56:09 +00:00
commit 0d68784dcc
28 changed files with 765 additions and 248 deletions

View File

@ -5,7 +5,7 @@ window:
font: font:
normal: normal:
family: Iosevka Term SS08 family: Iosevka Term SS08
white: '#d0d0d0' white: '#d0d0d0'
bold: bold:
family: Iosevka Term SS08 family: Iosevka Term SS08
style: bold style: bold
@ -16,4 +16,13 @@ font:
colors: colors:
primary: primary:
foreground: '0x111111' foreground: '0x111111'
background: '0xdddddd' background: '0xcccccc'
normal:
black: '0x000000'
red: '0xcc3333'
green: '0x33cc33'
yellow: '0x885800'
blue: '0x3333cc'
magenta: '0xcc33cc'
cyan: '0x33cccc'
white: '0xcccccc'

View File

@ -48,12 +48,13 @@ alias df="df -kTh"
alias fzfpac="pacman -Slq | fzf -m --preview 'pacman -Si {1}' | xargs -ro sudo pacman -S" alias fzfpac="pacman -Slq | fzf -m --preview 'pacman -Si {1}' | xargs -ro sudo pacman -S"
alias o="xdg-open" alias o="xdg-open"
alias path="echo -e ${PATH//:/\\n}" # Pretty print path variables alias path="echo -e ${PATH//:/\\n}" # Pretty print path variables
alias wiki="vim +WikiIndex"
# Programs # Programs
alias feh="feh -B black --scale-down --auto-zoom" alias feh="feh -B black --scale-down --auto-zoom"
alias fm='pcmanfm' alias fm='pcmanfm'
alias v="nvim"
alias w="nvim +WikiIndex"
alias g='git' alias g='git'
alias lm='xbacklight -set' alias lm='xbacklight -set'
alias py='python' alias py='python'
@ -64,7 +65,15 @@ alias xev='xev | grep -A2 ButtonPress' # Ignore mouse movements
reboot_to_windows () reboot_to_windows ()
{ {
windows_title=$(grep -i windows /boot/grub/grub.cfg | cut -d "'" -f 2) # Check if grub is installed by checking if the command exists, if it does
sudo grub-reboot "$windows_title" && sudo reboot # not, then assume that the system is using systemd-boot
if grub-install --version &>/dev/null; then
windows_title=$(grep -i windows /boot/grub/grub.cfg | cut -d "'" -f 2)
sudo grub-reboot "$windows_title"
echo "Grub set to reboot to Windows"
else
sudo bootctl set-oneshot windows.conf
echo "Systemd set to reboot to Windows"
fi
} }
alias reboot-to-windows='reboot_to_windows' alias reboot-to-windows='reboot_to_windows'

81
.bashrc
View File

@ -3,13 +3,12 @@
source /etc/os-release source /etc/os-release
# Aliases {{{
# Load aliases dynamically # Load aliases dynamically
[ -f "$HOME/.bash_aliases" ] && source "$HOME/.bash_aliases" [ -f "$HOME/.bash_aliases" ] && source "$HOME/.bash_aliases"
# }}}
# Add ~/.bin to PATH # Prompt {{{
export PATH=~/.bin:$PATH
# Prompt
get_branch_name() { get_branch_name() {
git symbolic-ref --quiet --short HEAD 2>/dev/null \ git symbolic-ref --quiet --short HEAD 2>/dev/null \
|| git rev-parse --short HEAD 2>/dev/null \ || git rev-parse --short HEAD 2>/dev/null \
@ -19,16 +18,35 @@ get_git_info() {
git rev-parse --is-inside-work-tree &>/dev/null || return git rev-parse --is-inside-work-tree &>/dev/null || return
echo -e "$(get_branch_name)" echo -e "$(get_branch_name)"
} }
export PS1="\u \w ❭\[$(tput sgr0)\] "
# History PS1="\u \w ❭\[$(tput sgr0)\] "
# Ellipsis when deep in directory
export PROMPT_DIRTRIM=2
export PS1
# }}}
# Path {{{
# Add ~/.bin to PATH
export PATH=~/.bin:$PATH
# }}}
# History {{{
export HISTCONTROL=ignoreboth:erasedups export HISTCONTROL=ignoreboth:erasedups
export HISTSIZE=500000 export HISTSIZE=500000
# Omit `clear, ls...`; commands prepended with space # Omit `clear, ls...`; commands prepended with space
export HISTIGNORE="clear:l: *" export HISTIGNORE="clear:l: *"
# }}}
# Man pages # Man pages {{{
export MANWIDTH=120 export MANWIDTH=120
# }}}
# Editor {{{
# Set vim as default editor
export EDITOR=nvim
# }}}
# Vim # Vim
export EDITOR=vim export EDITOR=vim
@ -58,11 +76,50 @@ export PATH=~/.nvm/versions/node/v14.16.0/bin:$PATH
export NVM_DIR="$HOME/.nvm" export NVM_DIR="$HOME/.nvm"
[[ -s "$NVM_DIR/nvm.sh" ]] && source "$NVM_DIR/nvm.sh" --no-use [[ -s "$NVM_DIR/nvm.sh" ]] && source "$NVM_DIR/nvm.sh" --no-use
# X11 # X11 {{{
export XDG_SESSION_TYPE=X11 export XDG_SESSION_TYPE=X11
export XDG_CONFIG_HOME=$HOME/.config
# }}}
# Jupyter # Nix package manager {{{
# Add ~/.nix-profile/bin to PATH
export PATH=~/.nix-profile/bin:$PATH
# }}}
# FZF {{{
# Check if fzf is installed
if [ -f "/usr/bin/fzf" ]; then
# Fuzzy finder setup
export FZF_COMPLETION_TRIGGER='**'
export FZF_DEFAULT_COMMAND='ag --hidden --skip-vcs-ignores -t -g ""'
export FZF_DEFAULT_OPTS="
--pointer='❭'
--height 10%
--color=fg:-1,bg:-1"
export FZF_CTRL_T_COMMAND="${FZF_DEFAULT_COMMAND}"
export FZF_CTRL_T_OPTS="--preview='bat {} | head -500'"
source /usr/share/fzf/completion.bash
source /usr/share/fzf/key-bindings.bash
_fzf_setup_completion path vim
_fzf_setup_completion path zathura
_fzf_setup_completion path xournalpp
_fzf_setup_completion path nvim
else
echo "fzf not installed"
fi
# }}}
# Node {{{
# Move nvm folder away from home directory
export NVM_DIR="${XDG_CONFIG_HOME}/nvm"
# Pretty much what is in `/usr/share/nvm/init-nvm.sh` but we add the `--no-use`
# flag to `nvm.sh` to make it lazy
source /usr/share/nvm/nvm.sh --no-use
source /usr/share/nvm/bash_completion
source /usr/share/nvm/install-nvm-exec
# }}}
# Jupyter {{{
export JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab export JUPYTERLAB_DIR=$HOME/.local/share/jupyter/lab
# }}}
# Ellipsis when deep in directory
export PROMPT_DIRTRIM=2

View File

@ -1,3 +0,0 @@
#!/usr/bin/env bash
sudo rtcwake -m no -l -t "$(date +%s -d 'tomorrow 09:30')"

View File

@ -2,4 +2,4 @@
# Open webcam window # Open webcam window
ffplay -f v4l2 -s 640x480 -i /dev/video0 >/dev/null 2>&1 & disown ffplay -f v4l2 -x 640 -y 480 -i /dev/video0 >/dev/null 2>&1 & disown

View File

@ -4,6 +4,6 @@ options="nl:en\nen:nl\nnl:fr\nfr:nl\nen:fr\nfr:en\nnl:de\nde:nl"
selected=$(echo -e "$options" | dmenu -p "s?:t?" -i -l 0) selected=$(echo -e "$options" | dmenu -p "s?:t?" -i -l 0)
notify-send --app-name= -t 3000 "$(trans $selected -b "$(dmenu -p $selected &)" \ notify-send --app-name= -t 3000 "$(trans "$selected" -b "$(dmenu -p "$selected" &)" \
| tr -d '\n' \ | tr -d '\n' \
| xclip -sel clip -f)" | xclip -sel clip -f)"

View File

@ -4,7 +4,8 @@
# Generate menu of book filenames and save paths # Generate menu of book filenames and save paths
# Preview window contains metadata # Preview window contains metadata
selected="$(find /home/h/doc/books/ -regex '.*\.\(pdf\|epub\|djvu\)' -type f | sort | fzf --delimiter=/ --with-nth=-1 --preview 'pdfinfo {}' --preview-window=right:70%:wrap)" # selected="$(find /home/h/doc/books/ -regex '.*\.\(pdf\|epub\|djvu\)' -type f | sort | fzf --delimiter=/ --with-nth=-1 --preview 'pdfinfo {}' --preview-window=right:70%:wrap)"
selected="$(find /home/h/doc/books/ -regex '.*\.\(pdf\|epub\|djvu\)' -type f | sort | fzf --delimiter=/ --with-nth=-1)"
# Open and redirect output to /dev/null # Open and redirect output to /dev/null
zathura "$selected" 2> /dev/null & zathura "$selected" --fork

View File

@ -11,11 +11,12 @@ update() {
font_list=$(fc-list -f "%{fullname}\n") font_list=$(fc-list -f "%{fullname}\n")
echo "$font_list" | while read -r line ; do echo "$font_list" | while read line ; do
first="$(echo "$line" | cut -d',' -f1)" first="$(echo "$line" | cut -d',' -f1)"
last="$(echo "$line" | cut -d',' -f2)" last="$(echo "$line" | cut -d',' -f2)"
if "$(contains_dash "$first")"; then if $(contains_dash "$first"); then
echo "$last" >> "$fn" echo "$last" >> "$fn"
else else
echo "$first" >> "$fn" echo "$first" >> "$fn"
@ -25,5 +26,5 @@ update() {
case "$1" in case "$1" in
--update) update;; --update) update;;
*) sort "$fn" | uniq | awk 'NF' | fzf;; *) cat "$fn" | sort | uniq | awk 'NF' | fzf;;
esac esac

3
.bin/pacman-remove-unrequired Executable file
View File

@ -0,0 +1,3 @@
#!/usr/bin/env bash
sudo pacman -Qtdq | sudo pacman -Rns -

View File

@ -13,45 +13,55 @@ from argparse import ArgumentParser
from time import sleep from time import sleep
from plyer import notification from plyer import notification
def clear(): def clear():
os.system('echo -n "" > /tmp/pomo') os.system('echo -n "" > /tmp/pomo')
atexit.register(clear) atexit.register(clear)
parser = ArgumentParser() parser = ArgumentParser()
parser.add_argument('-p', '--prep-duration', type=int, help='Preparation duration of a session', default=0) parser.add_argument('-p', '--prep-duration', type=int,
parser.add_argument('-w', '--work-duration', type=int, help='Duration of a session', default=25) help='Pre session duration', default=0)
parser.add_argument('-b', '--break-duration', type=int, help='Duration of a break', default=5) parser.add_argument('-w', '--work-duration', type=int,
parser.add_argument('-r', '--repeats', type=int, help='Numer of sessions', default=1) help='Session duration', default=25)
parser.add_argument('-b', '--break-duration', type=int,
help='Break duration', default=5)
parser.add_argument('-r', '--repeats', type=int,
help='Numer of sessions', default=1)
args = parser.parse_args() args = parser.parse_args()
prep_duration = args.prep_duration * 60 prep_duration = args.prep_duration * 60
work_duration = args.work_duration * 60 work_duration = args.work_duration * 60
break_duration = args.break_duration * 60 break_duration = args.break_duration * 60
repeats = args.repeats repeats = args.repeats
def make_countdown(color):
def countdown(duration):
while duration!= 0:
mins = duration // 60
secs = duration % 60
os.system('echo -n "{:s} {:02d}:{:02d} \x01" > /tmp/pomo'.format(color, mins, secs))
sleep(1)
duration -= 1
return countdown
prep_countdown = make_countdown("\x01") def make_countdown(color):
work_countdown = make_countdown("\x03") def countdown(duration):
while duration != 0:
mins = duration // 60
secs = duration % 60
# os.system('echo -n "{:s} {:02d}:{:02d} \x01" > /tmp/pomo'.format(color, mins, secs))
os.system('echo -n "{:02d}:{:02d}" > /tmp/pomo'.format(mins, secs))
sleep(1)
duration -= 1
return countdown
prep_countdown = make_countdown("\x01")
work_countdown = make_countdown("\x03")
break_countdown = make_countdown("\x02") break_countdown = make_countdown("\x02")
prep_countdown(prep_duration) prep_countdown(prep_duration)
while repeats!=0: while repeats != 0:
notification.notify(title="Get started") notification.notify(title="Get started")
work_countdown(work_duration) work_countdown(work_duration)
notification.notify(title="Time for a break") if break_duration != 0:
break_countdown(break_duration) notification.notify(title="Time for a break")
notification.notify(title="Break is over, set a new timer") break_countdown(break_duration)
repeats-=1 notification.notify(title="Break is over, back to work")
repeats -= 1

25
.bin/script Executable file
View File

@ -0,0 +1,25 @@
#!/usr/bin/env bash
# Script to create script
if [ -z "$1" ]; then
echo "Script name required"
exit
fi
path="$HOME/.bin/$1"
# Prevent overwriting existing script
set -o noclobber
# Create script
cat > "$path" << EOF
#!/usr/bin/env bash
EOF
chmod +x "$path"
# Open script in editor on line 3
"$EDITOR" +3 "$path"

4
.condarc Normal file
View File

@ -0,0 +1,4 @@
channels:
- conda-forge
- defaults
channel_priority: strict

4
.config/conda/condarc Normal file
View File

@ -0,0 +1,4 @@
channels:
- conda-forge
- defaults
channel_priority: strict

12
.config/feh/keys Normal file
View File

@ -0,0 +1,12 @@
prev_img h
next_img l
scroll_left L
scroll_right H
scroll_up J
scroll_down K
zoom_in j
zoom_out k
zoom_fit z
zoom_default =
mirror bar
close q Q

3
.config/feh/themes Normal file
View File

@ -0,0 +1,3 @@
feh \
-B black \
--auto-zoom

View File

@ -0,0 +1,56 @@
[General]
buttons=@Variant(\0\0\0\x7f\0\0\0\vQList<int>\0\0\0\0\xf\0\0\0\0\0\0\0\x2\0\0\0\x3\0\0\0\x4\0\0\0\x5\0\0\0\x6\0\0\0\x12\0\0\0\x13\0\0\0\a\0\0\0\t\0\0\0\x10\0\0\0\n\0\0\0\v\0\0\0\r\0\0\0\xe)
checkForUpdates=false
contrastOpacity=127
contrastUiColor=#ffffff
copyPathAfterSave=true
disabledTrayIcon=false
drawColor=#ff0044
drawFontSize=7
drawThickness=1
fontFamily=Inter
saveLastRegion=true
savePath=/home/h/doc/clips
savePathFixed=true
showDesktopNotification=false
showHelp=false
showSidePanelButton=true
showStartupLaunchMessage=false
startupLaunch=true
uiColor=#484848
undoLimit=106
userColors=picker, #800000, #ff0000, #ffff00, #00ff00, #00ffff, #0000ff, #ffffff, #000000
[Shortcuts]
TYPE_ARROW=A
TYPE_CIRCLE=C
TYPE_CIRCLECOUNT=
TYPE_COMMIT_CURRENT_TOOL=Ctrl+Return
TYPE_COPY=Ctrl+C
TYPE_DELETE_CURRENT_TOOL=Del
TYPE_DRAWER=D
TYPE_EXIT=Ctrl+Q
TYPE_IMAGEUPLOADER=Return
TYPE_MARKER=M
TYPE_MOVESELECTION=Ctrl+M
TYPE_MOVE_DOWN=Down
TYPE_MOVE_LEFT=Left
TYPE_MOVE_RIGHT=Right
TYPE_MOVE_UP=Up
TYPE_OPEN_APP=Ctrl+O
TYPE_PENCIL=P
TYPE_PIN=
TYPE_PIXELATE=B
TYPE_RECTANGLE=R
TYPE_REDO=Ctrl+Shift+Z
TYPE_RESIZE_DOWN=Shift+Down
TYPE_RESIZE_LEFT=Shift+Left
TYPE_RESIZE_RIGHT=Shift+Right
TYPE_RESIZE_UP=Shift+Up
TYPE_SAVE=Ctrl+S
TYPE_SELECTION=S
TYPE_SELECTIONINDICATOR=
TYPE_SELECT_ALL=Ctrl+A
TYPE_TEXT=T
TYPE_TOGGLE_PANEL=Space
TYPE_UNDO=Ctrl+Z

3
.config/nvim/init.vim Normal file
View File

@ -0,0 +1,3 @@
set runtimepath^=~/.vim runtimepath+=~/.vim/after
let &packpath = &runtimepath
source ~/.vimrc

40
.config/picom/picom.conf Normal file
View File

@ -0,0 +1,40 @@
backend = "glx";
glx-no-stencil = true;
glx-copy-from-font = false;
active-opacity = 1.0;
inactive-opacity = 0.8;
frame-opacity = 0.8;
inactive-opacity-override = false;
shadow = true;
shadow-radius = 16;
shadow-opacity = 0.5;
shadow-offset-x = -16;
shadow-offset-y = -16;
shadow-color = "#000000"
fading = true;
fade-in-step = 0.05;
fade-out-step = 0.05;
fade-delta = 4
shadow-exclude = ["class_g = 'Rofi'", "class_g = 'albert'", "class_g = 'trayer'"];
focus-exclude = ["class_g = 'Rofi'", "class_g = 'albert'", "class_g = 'trayer'"];
blur-background-exclude = ["class_g = 'Rofi'", "class_g = 'albert'", "class_g = 'trayer'"];
blur-background = true;
blur-inactive = true;
blur-method = "dual_kawase";
blur-strength = 8;
wintypes:
{
dock = { shadow = false; };
dnd = { shadow = false; };
tooltip = { shadow = false; };
menu = { opacity = false; };
dropdown_menu = { opacity = false; };
popup_menu = { opacity = false; };
utility = { opacity = false; };
};

View File

@ -7,9 +7,9 @@ unmap f
map f toggle_fullscreen map f toggle_fullscreen
map [fullscreen] f toggle_fullscreen map [fullscreen] f toggle_fullscreen
# Theme # Initial theme
set default-bg "#ffffff" set default-bg "#cccccc"
set default-fg "#eee" set default-fg "#111"
set statusbar-bg "#111" set statusbar-bg "#111"
set statusbar-fg "#777" set statusbar-fg "#777"
set inputbar-bg "#111" set inputbar-bg "#111"
@ -23,14 +23,10 @@ set completion-highlight-bg "#333"
set highlight-fg "#ccc" set highlight-fg "#ccc"
set highlight-color "#111" set highlight-color "#111"
set highlight-active-color "#333" set highlight-active-color "#333"
set index-fg "#eee"
# Dark mode set index-bg "#111"
set recolor set index-active-fg "#eee"
set recolor-darkcolor "#aaa" set index-active-bg "#333"
set recolor-lightcolor "#111"
# midnight mode
map <F1> focus_inputbar "set default-bg \#111111"
# Hide status bar # Hide status bar
set guioptions none set guioptions none
@ -38,5 +34,32 @@ set render-loading "false"
map J zoom out map J zoom out
map K zoom in map K zoom in
map i recolor
unmap q unmap q
#
# Hack for switching color themes (change default background too on recolor)
#
# Default to light recolor
set recolor
set recolor-lightcolor "#cccccc"
set recolor-darkcolor "#111"
set recolor-keephue
# No recolor
map <F1> focus_inputbar ":set recolor true"
map <F2> focus_inputbar ":set recolor false"
map <F3> focus_inputbar ":set default-bg \#fff"
map 1 feedkeys "<F2><Return><F3><Return>"
# Light recolor
map <F4> focus_inputbar ":set default-bg \#cccccc"
map <F5> focus_inputbar ":set recolor-lightcolor \#cccccc"
map <F6> focus_inputbar ":set recolor-darkcolor \#111"
map 2 feedkeys "<F1><Return><F4><Return><F5><Return><F6><Return>"
# Dark recolor
map <F7> focus_inputbar ":set default-bg \#111"
map <F8> focus_inputbar ":set recolor-lightcolor \#111"
map <F9> focus_inputbar ":set recolor-darkcolor \#aaa"
map 3 feedkeys "<F1><Return><F7><Return><F8><Return><F9><Return>"

256
.vimrc
View File

@ -104,12 +104,13 @@ nn <leader>so :so %<cr>
call plug#begin() call plug#begin()
" Coc " Coc
Plug 'neoclide/coc.nvim', {'branch': 'release'} Plug 'neoclide/coc.nvim', {'branch': 'release'}
Plug 'github/copilot.vim'
" General " General
Plug 'unblevable/quick-scope'
Plug 'tpope/vim-commentary' Plug 'tpope/vim-commentary'
Plug 'machakann/vim-sandwich' Plug 'machakann/vim-sandwich'
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim' Plug 'junegunn/fzf.vim'
Plug 'vimwiki/vimwiki'
" JS and TypeScript " JS and TypeScript
Plug 'pangloss/vim-javascript', { 'for': ['javascript', 'javascript.jsx'] } Plug 'pangloss/vim-javascript', { 'for': ['javascript', 'javascript.jsx'] }
Plug 'leafgarland/typescript-vim', { 'for': ['typescript', 'typescript.tsx'] } Plug 'leafgarland/typescript-vim', { 'for': ['typescript', 'typescript.tsx'] }
@ -119,6 +120,11 @@ Plug 'evanleck/vim-svelte', {'branch': 'main'}
Plug 'neoclide/jsonc.vim' Plug 'neoclide/jsonc.vim'
" LaTeX & markdown " LaTeX & markdown
Plug 'lervag/vimtex' Plug 'lervag/vimtex'
" Wiki
Plug 'lervag/wiki.vim'
Plug 'hektor/taskwiki'
" Markdown
Plug 'vim-pandoc/vim-pandoc'
Plug 'vim-pandoc/vim-pandoc-syntax' Plug 'vim-pandoc/vim-pandoc-syntax'
" TidalCycles " TidalCycles
Plug 'supercollider/scvim' Plug 'supercollider/scvim'
@ -129,29 +135,77 @@ call plug#end()
""""""""""""""" """""""""""""""
" Coc " Coc
" `.../sandwich` {{{
nmap s <Nop>
xmap s <Nop>
let g:sandwich#recipes = deepcopy(g:sandwich#default_recipes)
" }}}
" `neoclide/coc.nvim` {{{
let g:coc_global_extensions = [ let g:coc_global_extensions = [
\'coc-dictionary',
\'coc-syntax',
\'coc-eslint', \'coc-eslint',
\'coc-prettier', \'coc-prettier',
\'coc-tsserver', \'coc-tsserver',
\'coc-python',
\'coc-html', \'coc-html',
\'coc-emmet', \'coc-emmet',
\'coc-css', \'coc-css',
\'coc-svg', \'coc-svg',
\'coc-svelte', \'coc-svelte',
\'coc-jedi',
\'coc-json', \'coc-json',
\'coc-markdownlint',
\'coc-yaml', \'coc-yaml',
\'coc-snippets', \'coc-snippets',
\'coc-clangd' \'coc-clangd',
\'coc-bibtex'
\] \]
" Autocomplete " Autocomplete
imap <tab> <Plug>(coc-snippets-expand) "
nn <leader>es :CocCommand snippets.editSnippets<cr>
ino <silent><expr><c-j> pumvisible() ? "\<c-n>" : " `coc-snippets`
\ coc#refresh()
ino <expr><c-k> pumvisible() ? "\<C-p>" : "k" " TODO: is this block even necessary anymore?
"
" I use `coc-snippets-exand-jump` here as it is more flexible afaics
" As stated in the docs:
" `coc-snippets-expand` Expand snippet w/ current inserted text
" `coc-snippets-expand-jump` Expand snippet or jump to next placeholder of current snippet if possible
" Use tab for expansion in every context Don't use it for jumping as
" expansions have priority over jumping (which is not always what you want)
"
" E.g. You don't want to expand `time` to say `12:05` upon `<tab>`bing to go
" from arguments to body in a function snippet
inor <silent><expr> <TAB>
\ coc#pum#visible() ? coc#_select_confirm() :
\ coc#expandable() ? "\<C-r>=coc#rpc#request('doKeymap', ['snippets-expand-jump',''])\<CR>" :
\ "\<TAB>"
" Use <c-j> and <c-k> to move through suggestions
" Open suggestions if not yet open
inor <silent><expr> <c-j> coc#pum#visible() ? coc#pum#next(1) : coc#refresh()
" NOTE: As the followning interfered with digraphs, I replaced `coc#refresh`
" with `"\<C-g>u\<c-k>"` which afaik just does c-k when no completion menu is
" shown
" ```
" inor <silent><expr> <c-k> coc#pum#visible() ? coc#pum#prev(1) : coc#refresh()
" ```
inor <silent><expr> <c-k> coc#pum#visible() ? coc#pum#prev(1) : "\<C-g>u\<c-k>"
" NOTE: this is cutting text in visual mode, it is replaces `$VISUAL` on next
" expansion
"
" although I mapped it, I have yet to test this feature
vmap <tab> <Plug>(coc-snippets-select)
ino <expr><cr> complete_info()["selected"] != "-1" ? "\<c-y>" : "\<c-g>u\<CR>" ino <expr><cr> complete_info()["selected"] != "-1" ? "\<c-y>" : "\<c-g>u\<CR>"
" Show doccumentation " Show doccumentation
fu! s:show_documentation() fu! s:show_documentation()
if (index(['vim','help'], &filetype) >= 0) if (index(['vim','help'], &filetype) >= 0)
@ -160,13 +214,21 @@ fu! s:show_documentation()
call CocAction('doHover') call CocAction('doHover')
endif endif
endfunction endfunction
nnoremap K :call show_documentation() nn <leader>es :CocCommand snippets.editSnippets<cr>
" Code action on cursor position " Code action on cursor position
nm <leader>do <Plug>(coc-codeaction) nm <leader>do <Plug>(coc-codeaction)
" Coc statusline " Commands
se statusline^=%{coc#status()}%{get(b:,'coc_current_function','')}
" Prettier command
com! -nargs=0 Prettier :CocCommand prettier.formatFile com! -nargs=0 Prettier :CocCommand prettier.formatFile
" }}}
" `.../copilot` {{{
let g:copilot_node_command = "/home/h/.config/nvm/versions/node/v16.18.0/bin/node"
let g:copilot_no_tab_map = v:true
imap <c-l> <Plug>(copilot-next)
imap <c-h> <Plug>(copilot-prev)
imap <silent><script><expr> <s-tab> copilot#Accept("\<CR>")
" Show Copilot node v16 as it does not work with v18 yet
" LaTex " LaTex
let g:vimtex_view_method='zathura' let g:vimtex_view_method='zathura'
@ -202,9 +264,77 @@ let g:fzf_colors =
\ 'marker': ['fg', 'Keyword'], \ 'marker': ['fg', 'Keyword'],
\ 'spinner': ['fg', 'Label'], } \ 'spinner': ['fg', 'Label'], }
" Wiki let g:ag_working_path_mode="r"
let g:vimwiki_auto_chdir = 1
let g:vimwiki_list = [{'path': '~/.vimwiki/', 'syntax': 'markdown', 'ext': '.md'}] " }}}
" `vim-pandoc/vim-pandoc` {{{
" `vim-pandoc/vim-pandoc-syntax`
au FileType pandoc call pandoc#completion#Init()
let g:pandoc#filetypes#pandoc_markdown=0
let g:pandoc#spell#enabled=0
let g:pandoc#spell#default_langs=['en_us', 'nl_be']
let g:pandoc#syntax#conceal#urls=1
let g:pandoc#syntax#conceal#blacklist=[]
let g:pandoc#formatting#mode='a'
let g:pandoc#formatting#textwidth=90
let g:pandoc#modules#disabled = ["formatting", "dashes", "yaml", "metadata"]
" }}}
" `lervag/wiki.vim` {{{
" Only load wiki.vim for wiki directory
let g:wiki_global_load=0
let g:wiki_root='~/.wiki'
let g:wiki_index_name='index'
let g:wiki_zotero_root='~/doc/Zotero'
let g:wiki_filetypes=['md']
let g:wiki_completion_case_sensitive=0
" Mappings
" Remap <leader>p
augroup filetype_pandoc
autocmd!
au BufRead,BufNewFile /home/h/.wiki/*.md nn <buffer><leader>p :WikiFzfPages<cr>
au BufRead,BufNewFile /home/h/.wiki/*.md nnoremap <expr><buffer> sv empty(g:wiki#link#get()) ? ':vs<CR><c-w>w' : '<Plug>(wiki-link-follow-vsplit)'
au BufRead,BufNewFile /home/h/.wiki/*.md nnoremap <expr><buffer> ss empty(g:wiki#link#get()) ? ':sp<CR><c-w>w' : '<Plug>(wiki-link-follow-split)'
augroup END
" If we are on a wiki link
" let g:wiki_file_handlenmap r
" Links
let g:wiki_link_extension='.md'
" Do not automatically transform to link, use `<leader>wf` for this
let g:wiki_link_toggle_on_follow=0
let g:wiki_link_target_type='md'
let g:wiki_map_text_to_link='Slugify'
" E.g. transform `My link` into `[My link](my-link.md)`
function Slugify(text) abort
return [substitute(tolower(a:text), '\s\+', '-', 'g'), a:text]
endfunction
vmap <leader>wf <Plug>(wiki-link-toggle-visual)
" Automatically save when navigation
let g:wiki_write_on_nav=1
" }}}
" `tools-life/taskwiki` {{{
let g:taskwiki_taskrc_location='/home/h/.config/task/taskrc'
let g:taskwiki_disable_concealcursor=1
let g:taskwiki_dont_preserve_folds=1
let g:taskwiki_dont_fold=1
" }}}
" JS and TypeScript " JS and TypeScript
let g:javascript_plugin_jsdoc = 1 " jsdoc syntax highlighting let g:javascript_plugin_jsdoc = 1 " jsdoc syntax highlighting
@ -217,6 +347,13 @@ let g:svelte_indent_style = 0
" JSONC (see https://github.com/neoclide/jsonc.vim/pull/9") " JSONC (see https://github.com/neoclide/jsonc.vim/pull/9")
autocmd BufNewFile,BufRead */.vscode/*.json setlocal filetype=jsonc autocmd BufNewFile,BufRead */.vscode/*.json setlocal filetype=jsonc
" `.../quickscope` {{{
let g:qs_max_chars=80
let g:qs_lazy_highlight = 1
" }}}
" SuperCollider " SuperCollider
au BufEnter,BufWinEnter,BufNewFile,BufRead *.sc,*.scd se filetype=supercollider au BufEnter,BufWinEnter,BufNewFile,BufRead *.sc,*.scd se filetype=supercollider
au Filetype supercollider packadd scvim au Filetype supercollider packadd scvim
@ -238,24 +375,89 @@ let g:fzf_action = {
\ 'ctrl-s': 'split', \ 'ctrl-s': 'split',
\ 'ctrl-v': 'vsplit' \ 'ctrl-v': 'vsplit'
\} \}
" Insert path completion
ino <expr><c-f> fzf#vim#complete#path('rg --files --sort path')
" Color theme & statusline " }}}
""""""""""""""""""""""""""
" Color theme & statusline {{{
"
se nosc
se nosmd
se ls=2 se ls=2
se stl=\ %0*%n se stl=\ %0*%n
se stl+=\ %m se stl+=\ %m
se stl+=\ %y%1* se stl+=\ %y%0*
se stl+=\ %<%F se stl+=\ %<%F
se stl+=\ %1*%=%5l%* se stl+=\ %0*%=%5l%*
se stl+=%2*/%L%* se stl+=%0*/%L%*
colo simple-dark colo yang
" Other " }}}
"""""""""""""""""""""""
" Quick hacks {{{
"
fu! Compile()
if expand('%:e') == "md"
:silent exec "!pandoc % -s -o /tmp/op.pdf &"
endif
endfu
fu! Preview()
:call Compile()
:silent exec "!zathura /tmp/op.pdf &"
endfu
" VIM config hot reload " VIM config hot reload
autocmd! bufwritepost .vimrc source %
au! bufwritepost .vimrc source $HOME/.vimrc
" TODO: separate to filetype specific files
" JS
" Jump between `=` and `;`
au FileType javascript set mps+==:;
" JSONC (see https://github.com/neoclide/jsonc.vim/pull/9")
au BufNewFile,BufRead */.vscode/*.json setlocal filetype=jsonc
" Hacky way to pass on active note to script for automated for HTML preview
au BufEnter /home/h/.wiki/*.md silent exe '!echo %:t > /home/h/.local/share/nvim/plugged/bro/current-page'
" }}}
highlight QuickScopeSecondary cterm=underline
highlight QuickScopePrimary ctermbg=253 ctermfg=232 cterm=none
highlight Pmenu ctermfg=232
function! SynGroup()
let l:s = synID(line('.'), col('.'), 1)
echo synIDattr(l:s, 'name') . ' -> ' . synIDattr(synIDtrans(l:s), 'name')
endfun
com! -nargs=0 Syn :call SynGroup()
" Taken from /usr/share/vim/vim90/defaults.vim
augroup vimStartup
au!
" When editing a file, always jump to the last known cursor position.
" Don't do it when the position is invalid, when inside an event handler
" (happens when dropping a file on gvim) and for a commit message (it's
" likely a different one than last time).
autocmd BufReadPost *
\ if line("'\"") >= 1 && line("'\"") <= line("$") && &ft !~# 'commit'
\ | exe "normal! g`\""
\ | endif
augroup END
" Highlight todo's for every filetype
" https://stackoverflow.com/questions/11709965/vim-highlight-the-word-todo-for-every-filetype
augroup HiglightTODO
autocmd!
autocmd WinEnter,VimEnter * :silent! call matchadd('Todo', 'TODO', -1)
autocmd WinEnter,VimEnter * :silent! call matchadd('Todo', 'FIXME', -1)
autocmd WinEnter,VimEnter * :silent! call matchadd('Todo', 'QUESTION', -1)
augroup END

View File

@ -1,5 +1,19 @@
# Vortex core # Keyboard configuration
Generated from [TsFreddie's MPC tool](https://tsdo.in/much-programming-core/) Keyboard configuration for the Vortex Core 40% keyboard.
![](layout.png) Generated using [TsFreddie's MPC tool](https://tsdo.in/much-programming-core/).
Note: this is assuming `Caps lock` is remapped to `Esc` on press and `Ctrl` on hold (e.g. using `caps2esc`).
## Layer 0
Macros are mainly used for shift, ctrl & alt modifiers.
![](l0.png)
## Layer 1
Lighting configuration layer with some macros for workspaces.
![](l1.png)

BIN
.vortex-core/l0.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

BIN
.vortex-core/l1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

File diff suppressed because one or more lines are too long

View File

@ -1,13 +1,21 @@
Config { overrideRedirect = False Config { overrideRedirect = False
, font = "xft:Iosevka Term SS08:size=12:antialias=true" , font = "xft:Iosevka Term SS08:size=12:antialias=true"
, bgColor = "#111" , bgColor = "#cccccc"
, fgColor = "#ccc" , fgColor = "#111"
, position = TopW L 90 , position = TopW L 100
, commands = [ Run Cpu , commands = [ Run Cpu
[ "-L", "3" [ "-L", "3"
, "-H", "50" , "-H", "50"
, "--high" , "red" , "--high" , "red"
, "--normal", "green" ] 10
, Run Battery [
"-t", "<acstatus>: <left>% - <timeleft>",
"--",
--"-c", "charge_full",
"-O", "AC",
"-o", "Bat",
"-h", "green",
"-l", "red"
] 10 ] 10
, Run Alsa "default" "Master" , Run Alsa "default" "Master"
[ "--template", "Vol: <volumestatus>" [ "--template", "Vol: <volumestatus>"
@ -17,9 +25,12 @@ Config { overrideRedirect = False
] ]
, Run Memory ["--template", "Mem: <usedratio>%"] 10 , Run Memory ["--template", "Mem: <usedratio>%"] 10
, Run Date "%a %Y-%m-%d %H:%M" "date" 10 , Run Date "%a %Y-%m-%d %H:%M" "date" 10
, Run Com "sb-pomo" [] "pomo" 10
, Run Com "sb-anki" [] "anki" 10
, Run Com "sb-tasks" [] "tasks" 10
, Run XMonadLog , Run XMonadLog
] ]
, sepChar = "%" , sepChar = "%"
, alignSep = "}{" , alignSep = "}{"
, template = "%XMonadLog% }{ %alsa:default:Master% | %cpu% | %memory% | %date% " , template = "%XMonadLog%%anki%%pomo%%tasks% }{ %alsa:default:Master% | %battery% | %date%"
} }

View File

@ -1,170 +1,203 @@
import XMonad import XMonad
import XMonad.Hooks.DynamicLog import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks import XMonad.Hooks.EwmhDesktops
import XMonad.Layout.NoBorders (smartBorders) import XMonad.Hooks.ManageDocks
import XMonad.Hooks.ManageHelpers
import XMonad.Hooks.StatusBar
import XMonad.Hooks.StatusBar.PP
import XMonad.Layout.Magnifier
import qualified XMonad.Layout.Magnifier as Mag (MagnifyMsg (..))
import XMonad.Layout.NoBorders (hasBorder, smartBorders)
import XMonad.Layout.PerScreen
import XMonad.Layout.ResizableTile
import XMonad.Layout.Spacing
import XMonad.Layout.ThreeColumns
import XMonad.Layout.ToggleLayouts
( ToggleLayout (..),
toggleLayouts,
)
import XMonad.Layout.WindowNavigation
import qualified XMonad.StackSet as W
import XMonad.Util.EZConfig
import qualified XMonad.Util.Hacks as Hacks
import XMonad.Util.Loggers
import XMonad.Util.Paste
import XMonad.Util.Run
( spawnExternalProcess,
spawnPipe,
)
import XMonad.Util.Ungrab
import XMonad.Layout.Magnifier -- Statusbar
import qualified XMonad.Layout.Magnifier as Mag (MagnifyMsg (..)) myXmobarPP :: PP
import XMonad.Layout.Spacing myXmobarPP =
import XMonad.Layout.Tabbed (Theme (..), shrinkText, def
tabbedAlways) { ppSep = tertiaryColor " | ",
import XMonad.Layout.ThreeColumns ppCurrent = brackitify,
import XMonad.Layout.ToggleLayouts (ToggleLayout (..), toggleLayouts) ppHidden = secondaryColor,
import XMonad.Layout.WindowArranger ppHiddenNoWindows = tertiaryColor,
ppUrgent = red . wrap (yellow "!") (yellow "!"),
ppLayout = \l -> case l of
"Tall" -> "[]="
"Magnifier Tall" -> "[]+"
"Magnifier (off) Tall" -> "[]="
"Magnifier Mirror Tall" -> "+[]"
"Magnifier (off) Mirror Tall" -> "=[]"
"Full" -> "[ ]"
"ThreeCol" -> "|||"
_ -> l,
ppTitle = shorten 80,
ppTitleSanitize = xmobarStrip,
ppOrder = \[ws, l, _, wins] -> [ws, l, wins],
ppExtras = [logTitles formatFocused formatUnfocused]
}
where
brackitify = wrap "[" "]"
formatFocused = secondaryColor . brackitify . ppWindow
formatUnfocused = tertiaryColor . ppWindow
import XMonad.Util.EZConfig ppWindow = xmobarRaw . (\w -> if null w then "Untitled" else w) . shorten 16
import XMonad.Util.Loggers
import XMonad.Util.Paste
import XMonad.Util.Run (spawnPipe)
import XMonad.Util.Ungrab
import XMonad.Actions.CycleWS primaryColor = xmobarColor "#000000" ""
import XMonad.Actions.WindowGo secondaryColor = xmobarColor "#333333" ""
tertiaryColor = xmobarColor "#555555" ""
yellow = xmobarColor "#ff0" ""
red = xmobarColor "#ff5555" ""
import XMonad.Hooks.ManageHelpers -- Shift to workspace and view workspace
import XMonad.Hooks.ScreenCorners shiftAndView id = doF (W.view id) <> doF (W.shift id)
import XMonad.Hooks.StatusBar
import XMonad.Hooks.StatusBar.PP
import qualified XMonad.Util.Hacks as Hacks -- manageHook
myManageHook =
composeAll
[ className =? "Zathura" --> doShift "pdf",
className =? "firefox" --> shiftAndView "www",
className =? "Anki" --> shiftAndView "etc",
className =? "Obsidian" --> shiftAndView "etc",
className =? "Launcher" --> doRectFloat (W.RationalRect 0.05 0.4 0.9 0.5),
className =? "Calculator" --> doCenterFloat,
className =? "feh" --> doCenterFloat,
className =? "albert" --> hasBorder False,
className =? "Xournalpp" --> doRectFloat (W.RationalRect 0.5 0.5 0.5 0.5)
]
-- EWMH compliance -- layoutHook
import XMonad.Hooks.EwmhDesktops myLayoutHook =
smartBorders $
import qualified Data.Map.Strict as M -- Column layouts
import qualified XMonad.StackSet as W threeCol
||| threeColMid
-- Magnifier is off by default (can be controlled using arrow keys) -- Tiled layouts
myLayout = smartBorders $ -- Note: magnifier is off by default
threeColMid ||| -- (controllable usingarrow keys)
magnifiercz magnificationFactorH tiled ||| ||| magnifiercz magnificationFactorH tiled
magnifiercz magnificationFactorV (Mirror tiled) ||| ||| magnifiercz magnificationFactorV (Mirror tiled)
Full -- Single window / monocle layout
||| Full
where where
magnificationFactorV = 1.384 magnificationFactorV = 1.384
magnificationFactorH = 1.621 magnificationFactorH = 1.621
tiled = Tall nmaster delta ratio tiled = Tall nmaster delta ratio
threeCol = ThreeCol nmaster delta ratio threeCol = ThreeCol nmaster delta ratio
threeColMid = ThreeColMid nmaster delta ratio threeColMid = ThreeColMid nmaster delta ratio
nmaster = 1 nmaster = 1
ratio = 1/2 ratio = 1 / 2
delta = 4/100 delta = 4 / 100
myStartupHook = do myConfig =
addScreenCorners [ (SCUpperRight, nextWS) def
, (SCUpperLeft, prevWS) { terminal = "alacritty",
] -- Use Win key instead of Alt
modMask = mod4Mask,
myManageHook = composeAll -- , workspaces = ["α", "β", "γ", "δ", "ε", "ζ", "η"]
[ className =? "Zathura" --> doShift "ε" workspaces =
, className =? "Launcher" --> doRectFloat (W.RationalRect 0.05 0.4 0.9 0.5) [ "sh",
] "www",
"dev",
myConfig = def -- "nix",
{ "pdf",
terminal = "alacritty" "etc"
],
-- Use Win key instead of Alt -- Styling
, modMask = mod4Mask focusedBorderColor = "#888",
, workspaces = ["α", "β", "γ", "δ", "ε", "ζ", "η"] normalBorderColor = "#000",
borderWidth = 2,
-- Styling -- Hooks
, focusedBorderColor = "#888" manageHook = myManageHook <+> manageHook def,
, normalBorderColor = "#000" layoutHook = avoidStruts myLayoutHook,
, borderWidth = 2 handleEventHook = handleEventHook def <> Hacks.windowedFullscreenFixEventHook
}
-- Hooks `additionalKeysP` myKeysP
, startupHook = myStartupHook
, manageHook = myManageHook <+> manageHook def
, layoutHook = screenCornerLayoutHook $ avoidStruts myLayout
, handleEventHook = handleEventHook def <> Hacks.windowedFullscreenFixEventHook <+> screenCornerEventHook
} `additionalKeysP` myKeysP
`removeKeysP` myRemoveKeysP `removeKeysP` myRemoveKeysP
-- Keybindings to be added/overridden -- Keybindings to be added/overridden
myKeysP = [ myKeysP =
-- Fit floating windows back to layout [ -- Fit floating windows back to layout
("M-S-<Space>", withFocused $ windows . W.sink) ("M-S-<Space>", withFocused $ windows . W.sink),
-- Launchers
-- Use rofi to launch programs ("M-S-p", spawn "alacritty --class Launcher,Launcher"),
, ("M-p", spawn "launcher") ("M-p", spawn "albert toggle"),
-- Map insert key to paste from clipboard
-- Map insert key to paste from clipboard ("<Insert>", pasteSelection),
, ("<Insert>", pasteSelection) -- Map print screen to take a screenshot with flameshot
("<Print>", spawn "flameshot gui"),
-- Map print screen to take a screenshot with flameshot -- Map audio keys to control volume
, ("<Print>", spawn "flameshot gui") ("<XF86AudioRaiseVolume>", spawn "pactl set-sink-volume @DEFAULT_SINK@ +5%"),
("<XF86AudioLowerVolume>", spawn "pactl set-sink-volume @DEFAULT_SINK@ -5%"),
-- Map audio keys to control volume ("<XF86AudioMute>", spawn "pactl set-sink-mute @DEFAULT_SINK@ toggle"),
, ("<XF86AudioRaiseVolume>", spawn "pactl set-sink-volume @DEFAULT_SINK@ +5%") -- Map brightness keys to control brightness with brightnessctl
, ("<XF86AudioLowerVolume>", spawn "pactl set-sink-volume @DEFAULT_SINK@ -5%") ("<XF86MonBrightnessUp>", spawn "brightnessctl set 20+"),
, ("<XF86AudioMute>", spawn "pactl set-sink-mute @DEFAULT_SINK@ toggle") ("<XF86MonBrightnessDown>", spawn "brightnessctl set 20-"),
-- Map brightness keys + shift to adjust redshift temperature
-- Map brightness keys to control brightness with brightnessctl ("S-<XF86MonBrightnessUp>", spawn "echo $(($(cat /tmp/temperature) + 50)) > /tmp/temperature && redshift -O $(cat /tmp/temperature) -P && notify < /tmp/temperature -h string:x-canonical-private-synchronous:anything"),
, ("<XF86MonBrightnessUp>", spawn "brightnessctl set 20+") ("S-<XF86MonBrightnessDown>", spawn "echo $(($(cat /tmp/temperature) - 50)) > /tmp/temperature && redshift -O $(cat /tmp/temperature) -P && notify < /tmp/temperature -h string:x-canonical-private-synchronous:anything"),
, ("<XF86MonBrightnessDown>", spawn "brightnessctl set 20-") -- Reset redshift temperature
("M-S-<XF86MonBrightnessUp>", spawn "echo 3000 > /tmp/temperature && redshift -x"),
-- Map brightness keys + shift to adjust redshift temperature ("M-S-<XF86MonBrightnessDown>", spawn "echo 3000 > /tmp/temperature && redshift -x"),
, ("S-<XF86MonBrightnessUp>", spawn "echo $(($(cat /tmp/temperature) + 50)) > /tmp/temperature && redshift -O $(cat /tmp/temperature) -P && notify < /tmp/temperature -h string:x-canonical-private-synchronous:anything") -- Use power down key to suspend
, ("S-<XF86MonBrightnessDown>", spawn "echo $(($(cat /tmp/temperature) - 50)) > /tmp/temperature && redshift -O $(cat /tmp/temperature) -P && notify < /tmp/temperature -h string:x-canonical-private-synchronous:anything") ("<XF86PowerOff>", spawn "systemctl suspend"),
-- FIXME: Spawn firefox in fullscreen, but not in kiosk mode
-- Reset redshift temperature ("M-S-b", spawn "firefox --fullscreen"),
, ("M-S-<XF86MonBrightnessUp>", spawn "echo 3000 > /tmp/temperature && redshift -x") -- Magnify window using arrow keys
, ("M-S-<XF86MonBrightnessDown>", spawn "echo 3000 > /tmp/temperature && redshift -x") ("M-=", sendMessage MagnifyMore >> sendMessage Mag.ToggleOn),
("M--", sendMessage MagnifyLess >> sendMessage Mag.ToggleOn),
-- Use power down key to suspend -- Reset magnification
, ("<XF86PowerOff>", spawn "systemctl suspend") ("M-S-=", sendMessage Mag.ToggleOff),
("<XF86Calculator>", spawn "alacritty --class 'Calculator' -e ipython -i /home/h/.bin/calc.py"),
-- FIXME: Spawn firefox in fullscreen, but not in kiosk mode -- playerctl ncspot using arrow keys
, ("M-S-b", spawn "firefox --fullscreen") ("M-<Right>", spawn "playerctl next"),
("M-<Left>", spawn "playerctl previous"),
-- Magnify window using arrow keys ("M-<Up>", spawn "playerctl play"),
, ("M-=", sendMessage MagnifyMore >> sendMessage Mag.ToggleOn) ("M-<Down>", spawn "playerctl pause"),
, ("M--", sendMessage MagnifyLess >> sendMessage Mag.ToggleOn) -- Use a,s,d,f,g to switch to workspaces
-- Reset magnification ("M-a", windows $ W.greedyView "sh"),
, ("M-S-=", sendMessage Mag.ToggleOff) ("M-s", windows $ W.greedyView "www"),
("M-d", windows $ W.greedyView "dev"),
, ("M-t", sendMessage $ JumpToLayout "Tall") ("M-f", windows $ W.greedyView "pdf"),
, ("M-f", sendMessage $ JumpToLayout "Full") ("M-g", windows $ W.greedyView "etc"),
, ("M-S-\\", sendMessage $ JumpToLayout "ThreeCol") -- Use shift + a,s,d,f,g to move window to workspace
("M-S-a", windows $ W.shift "sh"),
("M-S-s", windows $ W.shift "www"),
("M-S-d", windows $ W.shift "dev"),
("M-S-f", windows $ W.shift "pdf"),
("M-S-g", windows $ W.shift "etc")
] ]
-- Keybindings to be removed -- Keybindings to be removed
myRemoveKeysP = [ "M-t" ] myRemoveKeysP =
[ -- Remove 1,2,3,4,5 bindings for workspaces
myXmobarPP :: PP "M-1",
myXmobarPP = def "M-2",
{ ppSep = tertiaryColor " | " "M-3",
, ppTitleSanitize = xmobarStrip "M-4",
, ppCurrent = brackitify "M-5",
, ppHidden = secondaryColor . wrap " " "" -- Remove shift + 1,2,3,4,5 bindings for workspaces
, ppHiddenNoWindows = secondaryColor . wrap " " "" "M-S-1",
, ppUrgent = red . wrap (yellow "!") (yellow "!") "M-S-2",
, ppLayout = \l -> case l of "Tall" -> "[]=" "M-S-3",
"Magnifier Tall" -> "[]+" "M-S-4",
"Magnifier Mirror Tall" -> "+[]" "M-S-5"
"Full" -> "[ ]" ]
"ThreeCol" -> "|||"
_ -> l
, ppTitle = shorten 80
, ppOrder = \[ws, l, _, wins] -> [ws, l, wins]
, ppExtras = [logTitles formatFocused formatUnfocused]
}
where
brackitify = wrap "[" "]"
formatFocused = primaryColor . brackitify . ppWindow
formatUnfocused = secondaryColor . brackitify . ppWindow
ppWindow = xmobarRaw . (\w -> if null w then "Untitled" else w) . shorten 30
primaryColor = xmobarColor "#eeeeee" ""
secondaryColor = xmobarColor "#888888" ""
tertiaryColor = xmobarColor "#555555" ""
white = xmobarColor "#ffffff" ""
yellow = xmobarColor "#ff0" ""
red = xmobarColor "#ff5555" ""
main :: IO () main :: IO ()
main = do xmonad $ docks $ ewmh $ withEasySB (statusBarProp "xmobar" (pure myXmobarPP)) defToggleStrutsKey myConfig main = do xmonad $ docks $ ewmh $ withEasySB (statusBarProp "xmobar" (pure myXmobarPP)) defToggleStrutsKey myConfig