Compare commits
14 commits
078578b173
...
5a9a4e7162
Author | SHA1 | Date | |
---|---|---|---|
5a9a4e7162 | |||
ec5dd24198 | |||
83f40d6f85 | |||
f325456e60 | |||
1c983b2dce | |||
b33ae09a33 | |||
ea37793997 | |||
dff4308b4d | |||
e92e7e5b1c | |||
5dc8e5afce | |||
848f105df8 | |||
e884c94a99 | |||
cf7d890787 | |||
fdc85e5569 |
18 changed files with 423 additions and 30 deletions
|
@ -48,8 +48,8 @@ Enjoy!
|
||||||
* [`waybar`](https://github.com/Alexays/Waybar) - Easily customizable statusbar for wayland
|
* [`waybar`](https://github.com/Alexays/Waybar) - Easily customizable statusbar for wayland
|
||||||
* [`bemenu`](https://github.com/Cloudef/bemenu) - Extended dmenu replacement for wayland, X11 and ncurses
|
* [`bemenu`](https://github.com/Cloudef/bemenu) - Extended dmenu replacement for wayland, X11 and ncurses
|
||||||
* [`fontconfig`] - System-wide font replacements and styling settings
|
* [`fontconfig`] - System-wide font replacements and styling settings
|
||||||
* [`kitty`](https://sw.kovidgoyal.net/kitty/) - Terminal emulator (GPU accelerated and configurable)
|
* [`wezterm`](https://wezfurlong.org/wezterm/) - Terminal emulator (fast, understandable and lua configurable)
|
||||||
* [`tmux`](https://github.com/tmux/tmux/) - terminal multiplexer
|
* [`tmux`](https://github.com/tmux/tmux/) - terminal multiplexer (slowly migrating away in favor of wezterm)
|
||||||
* [`nvim`](https://neovim.io/) - Neovim configuration
|
* [`nvim`](https://neovim.io/) - Neovim configuration
|
||||||
* [`vifm`](https://github.com/vifm/vifm) - vim-like file-manager
|
* [`vifm`](https://github.com/vifm/vifm) - vim-like file-manager
|
||||||
* [`qutebrowser`](https://github.com/qutebrowser/qutebrowser) - vim-key enabled web browser
|
* [`qutebrowser`](https://github.com/qutebrowser/qutebrowser) - vim-key enabled web browser
|
||||||
|
|
|
@ -184,6 +184,11 @@ map.n.nore.silent['<localleader>q'] = 'gqap'
|
||||||
map.x.nore.silent['<localleader>q'] = 'gq'
|
map.x.nore.silent['<localleader>q'] = 'gq'
|
||||||
map.n.nore.silent['<localleader>Q'] = 'vapJgqap'
|
map.n.nore.silent['<localleader>Q'] = 'vapJgqap'
|
||||||
|
|
||||||
|
-- FORMAT code with
|
||||||
|
-- PLUGIN: formatter.nvim
|
||||||
|
map.n.nore.silent['<localleader>f'] = ':FormatLock<cr>'
|
||||||
|
map.n.nore.silent['<localleader>F'] = ':FormatWriteLock<cr>'
|
||||||
|
|
||||||
-- Enter distraction free prose mode with F11
|
-- Enter distraction free prose mode with F11
|
||||||
map.n.nore.silent['<F11>'] = ':ZenMode<cr>'
|
map.n.nore.silent['<F11>'] = ':ZenMode<cr>'
|
||||||
|
|
||||||
|
|
|
@ -52,11 +52,13 @@ local formatters = {
|
||||||
require('formatter').setup({ logging = false, filetype = formatters })
|
require('formatter').setup({ logging = false, filetype = formatters })
|
||||||
|
|
||||||
-- Format on save:
|
-- Format on save:
|
||||||
|
-- DISABLED FOR NOW, due to messing with git contributions if they
|
||||||
|
-- do not use a formatter. Instead, formatting with key mapping used.
|
||||||
-- gather filetypes to autocorrect for each activated formatter above
|
-- gather filetypes to autocorrect for each activated formatter above
|
||||||
for k, _ in pairs(formatters) do
|
-- for k, _ in pairs(formatters) do
|
||||||
vim.api.nvim_create_autocmd({"Filetype " .. k}, {
|
-- vim.api.nvim_create_autocmd({"Filetype " .. k}, {
|
||||||
command = "autocmd BufWritePost <buffer> FormatWrite",
|
-- command = "autocmd BufWritePost <buffer> FormatWrite",
|
||||||
desc = "Automatically format on write",
|
-- desc = "Automatically format on write",
|
||||||
group = vim.api.nvim_create_augroup('formatonsave', {clear = true})
|
-- group = vim.api.nvim_create_augroup('formatonsave', {clear = true})
|
||||||
})
|
-- })
|
||||||
end
|
-- end
|
||||||
|
|
|
@ -1,10 +1,16 @@
|
||||||
local install_path = vim.fn.stdpath("data") .. "/pack/packer/start/packer.nvim"
|
local ensure_packer = function()
|
||||||
|
local fn = vim.fn
|
||||||
if vim.fn.empty(vim.fn.glob(install_path)) > 0 then
|
local install_path = fn.stdpath('data') .. '/site/pack/packer/start/packer.nvim'
|
||||||
vim.cmd("!git clone https://github.com/wbthomason/packer.nvim " ..
|
if fn.empty(fn.glob(install_path)) > 0 then
|
||||||
install_path)
|
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
|
end
|
||||||
|
|
||||||
|
local packer_bootstrap = ensure_packer()
|
||||||
|
|
||||||
-- Compile on plugin edits
|
-- Compile on plugin edits
|
||||||
vim.api.nvim_create_autocmd({ "BufWritePost" }, {
|
vim.api.nvim_create_autocmd({ "BufWritePost" }, {
|
||||||
pattern = "plugins.lua",
|
pattern = "plugins.lua",
|
||||||
|
@ -21,7 +27,8 @@ require("packer").startup(function()
|
||||||
-- vim plugs
|
-- vim plugs
|
||||||
-- essential
|
-- essential
|
||||||
use {
|
use {
|
||||||
'numToStr/Navigator.nvim',
|
'marty-oehme/Navigator.nvim',
|
||||||
|
branch = 'feat/add-wezterm-navigation',
|
||||||
config = function() require('Navigator').setup() end
|
config = function() require('Navigator').setup() end
|
||||||
} -- allow seamless navigation between vim buffers and tmux splits
|
} -- allow seamless navigation between vim buffers and tmux splits
|
||||||
use 'jeffkreeftmeijer/vim-numbertoggle' -- toggles numbers to absolute for all buffers but the current which is relative
|
use 'jeffkreeftmeijer/vim-numbertoggle' -- toggles numbers to absolute for all buffers but the current which is relative
|
||||||
|
@ -232,4 +239,9 @@ require("packer").startup(function()
|
||||||
}
|
}
|
||||||
require('plug._cmp')
|
require('plug._cmp')
|
||||||
|
|
||||||
|
-- Automatically set up your configuration after cloning packer.nvim
|
||||||
|
-- Put this at the end after all plugins
|
||||||
|
if packer_bootstrap then
|
||||||
|
require('packer').sync()
|
||||||
|
end
|
||||||
end)
|
end)
|
||||||
|
|
11
nvim/.config/sh/env.d/set-up-spellfile.sh
Normal file
11
nvim/.config/sh/env.d/set-up-spellfile.sh
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
# Set up a non-english spell dictionary if it doesn't exist yet.
|
||||||
|
|
||||||
|
if [ ! -e "${XDG_DATA_HOME:-$HOME/.local/share}/nvim/site/spell/de.utf-8.spl" ]; then
|
||||||
|
echo "Neovim spell dictionary not yet installed, downloading..."
|
||||||
|
mkdir -p "${XDG_DATA_HOME:-$HOME/.local/share}/nvim/site/spell/"
|
||||||
|
wget -q 'https://ftp.nluug.nl/pub/vim/runtime/spell/de.utf-8.spl' -O "${XDG_DATA_HOME:-$HOME/.local/share}/nvim/site/spell/de.utf-8.spl"
|
||||||
|
echo "Done."
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ c.completion.web_history.max_items = 1000
|
||||||
c.hints.uppercase = True
|
c.hints.uppercase = True
|
||||||
c.editor.command = [
|
c.editor.command = [
|
||||||
term,
|
term,
|
||||||
"-e",
|
"start",
|
||||||
"nvim",
|
"nvim",
|
||||||
"-f",
|
"-f",
|
||||||
"{file}",
|
"{file}",
|
||||||
|
@ -29,9 +29,9 @@ c.editor.command = [
|
||||||
c.fileselect.handler = "external"
|
c.fileselect.handler = "external"
|
||||||
picker = [
|
picker = [
|
||||||
term,
|
term,
|
||||||
|
"start",
|
||||||
"--class",
|
"--class",
|
||||||
"float",
|
"float",
|
||||||
"-e",
|
|
||||||
"vifm",
|
"vifm",
|
||||||
"--choose-files",
|
"--choose-files",
|
||||||
"{}",
|
"{}",
|
||||||
|
|
|
@ -20,6 +20,7 @@ c.url.searchengines = {
|
||||||
"lib": "http://libgen.fun/search.php?req={}",
|
"lib": "http://libgen.fun/search.php?req={}",
|
||||||
"man": "https://manned.org/browse/search?q={}",
|
"man": "https://manned.org/browse/search?q={}",
|
||||||
"maps": "https://www.qwant.com/maps/?q={}",
|
"maps": "https://www.qwant.com/maps/?q={}",
|
||||||
|
"pcw": "https://www.pcgamingwiki.com/w/index.php?search={}",
|
||||||
"r": "https://www.reddit.com/r/{}",
|
"r": "https://www.reddit.com/r/{}",
|
||||||
"t": "https://www.thesaurus.com/browse/{}",
|
"t": "https://www.thesaurus.com/browse/{}",
|
||||||
"w": "https://en.wikipedia.org/w/index.php?search={}",
|
"w": "https://en.wikipedia.org/w/index.php?search={}",
|
||||||
|
|
32
sh/.config/sh/alias.d/timg.sh
Normal file
32
sh/.config/sh/alias.d/timg.sh
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
# Add simple 'image ls' for a directory using timg
|
||||||
|
#
|
||||||
|
# Prints a thumbnail gallery right in the terminal.
|
||||||
|
# WILL stutter when you go crazy in a hundred/thousand
|
||||||
|
# picture folder.
|
||||||
|
|
||||||
|
if exist timg; then
|
||||||
|
il() {
|
||||||
|
images=$(find . -maxdepth 1 -type f -exec file --mime-type {} \+ | awk -F: '{if ($2 ~/image\//) print $1}')
|
||||||
|
if [ -z "$images" ]; then {
|
||||||
|
echo no images found.
|
||||||
|
return
|
||||||
|
}; fi
|
||||||
|
echo "$images" | timg --grid=4x3 --upscale=i --center --title --frames=1 -f -
|
||||||
|
}
|
||||||
|
IL() {
|
||||||
|
images=$(find . -type f -exec file --mime-type {} \+ | awk -F: '{if ($2 ~/image\//) print $1}')
|
||||||
|
if [ -z "$images" ]; then {
|
||||||
|
echo no images found.
|
||||||
|
return
|
||||||
|
}; fi
|
||||||
|
echo "$images" | timg --grid=4x3 --upscale=i --center --title --frames=1 -f -
|
||||||
|
}
|
||||||
|
qr() {
|
||||||
|
# if we are in a pipe, read from stdin and set fct arguments to it
|
||||||
|
if [ ! -t 0 ]; then
|
||||||
|
set -- "$(cat /dev/stdin)"
|
||||||
|
fi
|
||||||
|
qrencode -s1 -m2 "$@" -o- | timg --upscale=i -
|
||||||
|
}
|
||||||
|
fi
|
|
@ -22,7 +22,7 @@ export BIBFILE="${BIBFILE:-$LIBRARYROOT/academia/academia.bib}"
|
||||||
# these are my personal 'important' application settings
|
# these are my personal 'important' application settings
|
||||||
export EDITOR="nvim"
|
export EDITOR="nvim"
|
||||||
export BROWSER="qutebrowser"
|
export BROWSER="qutebrowser"
|
||||||
export TERMINAL="kitty"
|
export TERMINAL="wezterm"
|
||||||
export PAGER="less"
|
export PAGER="less"
|
||||||
|
|
||||||
export FILEREADER="zathura"
|
export FILEREADER="zathura"
|
||||||
|
|
|
@ -392,6 +392,8 @@ filextype *.avi,*.mp4,*.wmv,*.dat,*.3gp,*.ogv,*.mkv,*.mpg,*.mpeg,*.vob,
|
||||||
\*.as[fx]
|
\*.as[fx]
|
||||||
\ {View using unique mplayer instance}
|
\ {View using unique mplayer instance}
|
||||||
\ umpv %f &,
|
\ umpv %f &,
|
||||||
|
\ {View in timg}
|
||||||
|
\ timg --title --center --clear %f; read -k 1 -s -r,
|
||||||
\ {View using ffplay}
|
\ {View using ffplay}
|
||||||
\ ffplay -fs -autoexit %f,
|
\ ffplay -fs -autoexit %f,
|
||||||
\ {View using Dragon}
|
\ {View using Dragon}
|
||||||
|
@ -425,6 +427,8 @@ fileviewer *.[1-8] man ./%c | col -b
|
||||||
|
|
||||||
" Gif
|
" Gif
|
||||||
filextype *.gif
|
filextype *.gif
|
||||||
|
\ {View in timg}
|
||||||
|
\ timg --loops=2 --title --center --clear %f; read -k 1 -s -r,
|
||||||
\ {Loop}
|
\ {Loop}
|
||||||
\ mpv --loop=inf %f %i &,
|
\ mpv --loop=inf %f %i &,
|
||||||
fileviewer *.gif
|
fileviewer *.gif
|
||||||
|
@ -434,6 +438,8 @@ fileviewer *.gif
|
||||||
|
|
||||||
" Images
|
" Images
|
||||||
filextype *.bmp,*.jpg,*.jpeg,*.png,*.gif,*.xpm
|
filextype *.bmp,*.jpg,*.jpeg,*.png,*.gif,*.xpm
|
||||||
|
\ {View in timg}
|
||||||
|
\ timg --title --center --clear %f; read -k 1 -s -r,
|
||||||
\ {View in nsxiv directory viewer}
|
\ {View in nsxiv directory viewer}
|
||||||
\ vifm-thumbnailer %c,
|
\ vifm-thumbnailer %c,
|
||||||
\ {View in nsxiv}
|
\ {View in nsxiv}
|
||||||
|
@ -447,9 +453,7 @@ filextype *.bmp,*.jpg,*.jpeg,*.png,*.gif,*.xpm
|
||||||
\ {View in gpicview}
|
\ {View in gpicview}
|
||||||
\ gpicview %c,
|
\ gpicview %c,
|
||||||
fileviewer *.bmp,*.jpg,*.jpeg,*.png,*.gif,*.xpm
|
fileviewer *.bmp,*.jpg,*.jpeg,*.png,*.gif,*.xpm
|
||||||
\ kitty +kitten icat --silent --transfer-mode=stream --place=%pwx%ph@%pxx%py %c %N
|
\ timg -g%pwx%ph -pq %c
|
||||||
\ %pc
|
|
||||||
\ kitty +kitten icat --clear --silent %pd
|
|
||||||
|
|
||||||
" OpenRaster
|
" OpenRaster
|
||||||
filextype *.ora
|
filextype *.ora
|
||||||
|
|
9
wayland/.config/kanshi/config
Normal file
9
wayland/.config/kanshi/config
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
profile docked {
|
||||||
|
output eDP-1 disable
|
||||||
|
output "Goldstar Company Ltd W2442 0x000075FD" position 1920,0
|
||||||
|
output "Goldstar Company Ltd W2442 0x000075E1" position 0,0
|
||||||
|
}
|
||||||
|
|
||||||
|
profile single {
|
||||||
|
output eDP-1 enable position 0,0
|
||||||
|
}
|
|
@ -224,12 +224,25 @@ for pad in $(riverctl list-inputs | grep -i touchscreen); do
|
||||||
done
|
done
|
||||||
|
|
||||||
setxkbmap -option "compose:menu"
|
setxkbmap -option "compose:menu"
|
||||||
exec swaybg -i ~/pictures/wall.jpg -o '*' -m fill &
|
# set a nice wallpaper
|
||||||
|
exec swww init &
|
||||||
|
if [ -e "$HOME/pictures/wall_l.jpg" ] && [ -e "$HOME/pictures/wall_r.jpg" ]; then
|
||||||
|
swww img -o DP-5 "$HOME/pictures/wall_l.jpg" &
|
||||||
|
swww img -o DP-3 "$HOME/pictures/wall_r.jpg" &
|
||||||
|
elif [ -e "$HOME/pictures/wall.jpg" ]; then
|
||||||
|
swww img "$HOME/pictures/wall.jpg" &
|
||||||
|
fi
|
||||||
|
|
||||||
# killall mako
|
# killall mako
|
||||||
# mako &
|
# mako &
|
||||||
|
|
||||||
|
# start status bar
|
||||||
killall waybar
|
killall waybar
|
||||||
exec waybar &
|
exec waybar &
|
||||||
|
|
||||||
|
# start dynamic display configuration
|
||||||
|
exec kanshi &
|
||||||
|
|
||||||
killall clipman
|
killall clipman
|
||||||
exec wl-paste -t text --watch clipman store &
|
exec wl-paste -t text --watch clipman store &
|
||||||
# bash ~/.config/bin/gtktheme # setting our gtk variables
|
# bash ~/.config/bin/gtktheme # setting our gtk variables
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
"return-type": "json",
|
"return-type": "json",
|
||||||
"exec": "~/.config/waybar/modules/archupdates 5 json",
|
"exec": "~/.config/waybar/modules/archupdates 5 json",
|
||||||
"interval": 3600,
|
"interval": 3600,
|
||||||
"on-click": "kitty --class float topgrade"
|
"on-click": "$TERMINAL start --class float topgrade"
|
||||||
},
|
},
|
||||||
"backlight": {
|
"backlight": {
|
||||||
"device": "intel_backlight",
|
"device": "intel_backlight",
|
||||||
|
@ -45,8 +45,8 @@
|
||||||
"warning": 50,
|
"warning": 50,
|
||||||
"critical": 80
|
"critical": 80
|
||||||
},
|
},
|
||||||
"on-click": "kitty --class float top",
|
"on-click": "$TERMINAL start --class float top",
|
||||||
"on-click-right": "kitty --class float glances"
|
"on-click-right": "$TERMINAL start --class float glances"
|
||||||
},
|
},
|
||||||
"custom/events": {
|
"custom/events": {
|
||||||
"format": "{}",
|
"format": "{}",
|
||||||
|
@ -115,7 +115,7 @@
|
||||||
"tooltip-format-ethernet": "{ifname} ",
|
"tooltip-format-ethernet": "{ifname} ",
|
||||||
"tooltip-format-disconnected": "Disconnected",
|
"tooltip-format-disconnected": "Disconnected",
|
||||||
"max-length": 50,
|
"max-length": 50,
|
||||||
"on-click": "kitty --class float nmtui",
|
"on-click": "$TERMINAL start --class float nmtui",
|
||||||
// "on-click-right": "sudo rfkill toggle wlan"
|
// "on-click-right": "sudo rfkill toggle wlan"
|
||||||
},
|
},
|
||||||
"pulseaudio": {
|
"pulseaudio": {
|
||||||
|
@ -132,7 +132,7 @@
|
||||||
"default": ["", ""]
|
"default": ["", ""]
|
||||||
},
|
},
|
||||||
"scroll-step": 1,
|
"scroll-step": 1,
|
||||||
"on-click": "kitty --class float pulsemixer",
|
"on-click": "$TERMINAL start --class float pulsemixer",
|
||||||
"on-scroll-up": "pactl set-sink-volume @DEFAULT_SINK@ +1%",
|
"on-scroll-up": "pactl set-sink-volume @DEFAULT_SINK@ +1%",
|
||||||
"on-scroll-down": "pactl set-sink-volume @DEFAULT_SINK@ -1%"
|
"on-scroll-down": "pactl set-sink-volume @DEFAULT_SINK@ -1%"
|
||||||
},
|
},
|
||||||
|
@ -146,7 +146,7 @@
|
||||||
"critical-threshold": 80,
|
"critical-threshold": 80,
|
||||||
// "format-critical": "{temperatureC}° ",
|
// "format-critical": "{temperatureC}° ",
|
||||||
"format": "{temperatureC}° ",
|
"format": "{temperatureC}° ",
|
||||||
"on-click": "kitty --class float watch sensors"
|
"on-click": "$TERMINAL start --class float watch sensors"
|
||||||
},
|
},
|
||||||
"tray": {
|
"tray": {
|
||||||
"icon-size": 21,
|
"icon-size": 21,
|
||||||
|
@ -176,6 +176,6 @@
|
||||||
"exec": "wc -l ~/.local/share/vidl/vidl_queue | cut -d' ' -f1",
|
"exec": "wc -l ~/.local/share/vidl/vidl_queue | cut -d' ' -f1",
|
||||||
"exec-if": "[ -f ~/.local/share/vidl/vidl_queue ]",
|
"exec-if": "[ -f ~/.local/share/vidl/vidl_queue ]",
|
||||||
"interval": 5,
|
"interval": 5,
|
||||||
"on-click": "kitty --class float nvim ~/.local/share/vidl/vidl_queue"
|
"on-click": "$TERMINAL start --class float nvim ~/.local/share/vidl/vidl_queue"
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
63
wezterm/.config/wezterm/events.lua
Normal file
63
wezterm/.config/wezterm/events.lua
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
local wezterm = require 'wezterm'
|
||||||
|
local io = require 'io'
|
||||||
|
local os = require 'os'
|
||||||
|
local act = wezterm.action
|
||||||
|
|
||||||
|
local function setup()
|
||||||
|
local function isViProcess(pane)
|
||||||
|
local proc = pane:get_foreground_process_name()
|
||||||
|
if (proc:find('vim') or proc:find('nvim')) then return true end
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
local function conditionalActivatePane(window, pane, pane_direction,
|
||||||
|
vim_direction)
|
||||||
|
if (isViProcess(pane)) then
|
||||||
|
window:perform_action(act.Multiple {
|
||||||
|
act.SendKey { key = 'w', mods = 'CTRL' },
|
||||||
|
act.SendKey { key = vim_direction }
|
||||||
|
}, pane)
|
||||||
|
else
|
||||||
|
window:perform_action(act.ActivatePaneDirection(pane_direction),
|
||||||
|
pane)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
wezterm.on('ActivatePaneDirection-right', function(window, pane)
|
||||||
|
conditionalActivatePane(window, pane, 'Right', 'l')
|
||||||
|
end)
|
||||||
|
wezterm.on('ActivatePaneDirection-left', function(window, pane)
|
||||||
|
conditionalActivatePane(window, pane, 'Left', 'h')
|
||||||
|
end)
|
||||||
|
wezterm.on('ActivatePaneDirection-up', function(window, pane)
|
||||||
|
conditionalActivatePane(window, pane, 'Up', 'k')
|
||||||
|
end)
|
||||||
|
wezterm.on('ActivatePaneDirection-down', function(window, pane)
|
||||||
|
conditionalActivatePane(window, pane, 'Down', 'j')
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- Retrieve the current scrollback text and send to editor
|
||||||
|
wezterm.on('edit-scrollback', function(window, pane)
|
||||||
|
local viewport_text = pane:get_lines_as_text(10000)
|
||||||
|
|
||||||
|
-- Create a temporary file to pass to vim
|
||||||
|
local name = os.tmpname()
|
||||||
|
|
||||||
|
local f = io.open(name, 'w+')
|
||||||
|
if f == nil then return false end
|
||||||
|
f:write(viewport_text)
|
||||||
|
f:flush()
|
||||||
|
f:close()
|
||||||
|
|
||||||
|
-- Open a new window running vim and tell it to open the file
|
||||||
|
window:perform_action(act.SpawnCommandInNewTab {
|
||||||
|
args = { (os.getenv('EDITOR') or 'vi'), name }
|
||||||
|
}, pane)
|
||||||
|
|
||||||
|
-- Wait time for vim to read the file before we remove it.
|
||||||
|
wezterm.sleep_ms(1000)
|
||||||
|
os.remove(name)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
return { setup = setup }
|
113
wezterm/.config/wezterm/maps.lua
Normal file
113
wezterm/.config/wezterm/maps.lua
Normal file
|
@ -0,0 +1,113 @@
|
||||||
|
local wezterm = require('wezterm')
|
||||||
|
local act = wezterm.action
|
||||||
|
|
||||||
|
local keys = {
|
||||||
|
{ key = 'O', mods = 'CTRL', action = act.ShowDebugOverlay },
|
||||||
|
|
||||||
|
{ key = '[', mods = 'CTRL', action = act.ScrollToPrompt(-1) },
|
||||||
|
{ key = ']', mods = 'CTRL', action = act.ScrollToPrompt(1) },
|
||||||
|
{ -- vertical pane
|
||||||
|
key = '\\',
|
||||||
|
mods = 'LEADER',
|
||||||
|
action = act.SplitHorizontal { domain = 'CurrentPaneDomain' }
|
||||||
|
}, { -- horizontal pane
|
||||||
|
key = '-',
|
||||||
|
mods = 'LEADER',
|
||||||
|
action = act.SplitVertical { domain = 'CurrentPaneDomain' }
|
||||||
|
}, -- pane movement keys
|
||||||
|
{
|
||||||
|
key = 'h',
|
||||||
|
mods = 'CTRL',
|
||||||
|
action = act.EmitEvent 'ActivatePaneDirection-left'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = 'j',
|
||||||
|
mods = 'CTRL',
|
||||||
|
action = act.EmitEvent 'ActivatePaneDirection-down'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = 'k',
|
||||||
|
mods = 'CTRL',
|
||||||
|
action = act.EmitEvent 'ActivatePaneDirection-up'
|
||||||
|
}, {
|
||||||
|
key = 'l',
|
||||||
|
mods = 'CTRL',
|
||||||
|
action = act.EmitEvent 'ActivatePaneDirection-right'
|
||||||
|
}, { key = 'z', mods = 'LEADER', action = act.TogglePaneZoomState },
|
||||||
|
{ key = ' ', mods = 'LEADER', action = act.RotatePanes 'Clockwise' },
|
||||||
|
{ key = 'q', mods = 'LEADER', action = act.PaneSelect { mode = 'Activate' } },
|
||||||
|
{
|
||||||
|
key = 'Q',
|
||||||
|
mods = 'LEADER',
|
||||||
|
action = act.PaneSelect { mode = 'SwapWithActive' }
|
||||||
|
}, { key = 'c', mods = 'LEADER', action = act.SpawnTab 'CurrentPaneDomain' },
|
||||||
|
{ key = ',', mods = 'LEADER', action = act.MoveTabRelative(-1) },
|
||||||
|
{ key = '.', mods = 'LEADER', action = act.MoveTabRelative(1) }, -- workspace selection
|
||||||
|
{
|
||||||
|
key = 's',
|
||||||
|
mods = 'LEADER',
|
||||||
|
action = act.ShowLauncherArgs { flags = 'FUZZY|WORKSPACES' }
|
||||||
|
}, { key = 't', mods = 'LEADER', action = act.ShowTabNavigator },
|
||||||
|
{ key = '[', mods = 'LEADER', action = act.ActivateCopyMode }, {
|
||||||
|
key = 'r',
|
||||||
|
mods = 'LEADER',
|
||||||
|
action = act.ActivateKeyTable {
|
||||||
|
name = 'resize_pane',
|
||||||
|
one_shot = false,
|
||||||
|
timeout_milliseconds = 2000,
|
||||||
|
replace_current = true
|
||||||
|
}
|
||||||
|
}, { key = 'F', mods = 'LEADER', action = act.QuickSelect }, {
|
||||||
|
key = '/',
|
||||||
|
mods = 'LEADER',
|
||||||
|
action = act.Search('CurrentSelectionOrEmptyString')
|
||||||
|
}, {
|
||||||
|
key = 'f',
|
||||||
|
mods = 'LEADER',
|
||||||
|
action = act.ActivateKeyTable {
|
||||||
|
name = 'scroll_mode',
|
||||||
|
one_shot = false,
|
||||||
|
replace_current = true
|
||||||
|
}
|
||||||
|
}, { key = 'e', mods = 'LEADER', action = act.EmitEvent 'edit-scrollback' }, {
|
||||||
|
key = 'l',
|
||||||
|
mods = 'LEADER',
|
||||||
|
action = act.EmitEvent 'ActivatePaneDirection-Right'
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
-- Leader + number to activate that tab
|
||||||
|
for i = 1, 8 do
|
||||||
|
table.insert(keys, {
|
||||||
|
key = tostring(i),
|
||||||
|
mods = 'LEADER',
|
||||||
|
action = act.ActivateTab(i - 1)
|
||||||
|
})
|
||||||
|
end
|
||||||
|
-- key table sub modes
|
||||||
|
local key_tables = {
|
||||||
|
-- mode to change size of any panes
|
||||||
|
resize_pane = {
|
||||||
|
{ key = 'h', action = act.AdjustPaneSize { 'Left', 1 } },
|
||||||
|
{ key = 'l', action = act.AdjustPaneSize { 'Right', 1 } },
|
||||||
|
{ key = 'k', action = act.AdjustPaneSize { 'Up', 1 } },
|
||||||
|
{ key = 'j', action = act.AdjustPaneSize { 'Down', 1 } },
|
||||||
|
{ key = 'H', action = act.AdjustPaneSize { 'Left', 10 } },
|
||||||
|
{ key = 'L', action = act.AdjustPaneSize { 'Right', 10 } },
|
||||||
|
{ key = 'K', action = act.AdjustPaneSize { 'Up', 10 } },
|
||||||
|
{ key = 'J', action = act.AdjustPaneSize { 'Down', 10 } },
|
||||||
|
{ key = 'Escape', action = 'PopKeyTable' }
|
||||||
|
},
|
||||||
|
scroll_mode = {
|
||||||
|
{ key = 'y', mods = 'CTRL', action = act.ScrollByLine(-1) },
|
||||||
|
{ key = 'e', mods = 'CTRL', action = act.ScrollByLine(1) },
|
||||||
|
{ key = 'f', mods = 'CTRL', action = act.ScrollByPage(1) },
|
||||||
|
{ key = 'b', mods = 'CTRL', action = act.ScrollByPage(-1) },
|
||||||
|
{ key = 'd', mods = 'CTRL', action = act.ScrollByPage(0.5) },
|
||||||
|
{ key = 'u', mods = 'CTRL', action = act.ScrollByPage(-0.5) },
|
||||||
|
{ key = 'g', mods = 'CTRL', action = act.ScrollToTop },
|
||||||
|
{ key = 'G', mods = 'CTRL', action = act.ScrollToBottom },
|
||||||
|
{ key = 'Escape', action = 'PopKeyTable' }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return { keys = keys, key_tables = key_tables }
|
46
wezterm/.config/wezterm/statusbar.lua
Normal file
46
wezterm/.config/wezterm/statusbar.lua
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
local wezterm = require 'wezterm'
|
||||||
|
|
||||||
|
local function basename(s) return string.gsub(s or '', '(.*[/\\])(.*)', '%2') end
|
||||||
|
|
||||||
|
local SEPARATOR = ' | '
|
||||||
|
local function setup()
|
||||||
|
-- STATUSBAR
|
||||||
|
-- show currently active key table in lower right status bar
|
||||||
|
-- mimicing Vim modes
|
||||||
|
wezterm.on('update-status', function(window, pane)
|
||||||
|
local displayed = { left = {}, right = {} }
|
||||||
|
local keytable = window:active_key_table()
|
||||||
|
if keytable then
|
||||||
|
displayed.left[#displayed.left + 1] = 'MODE: ' .. keytable
|
||||||
|
end
|
||||||
|
|
||||||
|
local workspace = window:active_workspace()
|
||||||
|
if workspace and workspace ~= 'default' then
|
||||||
|
displayed.left[#displayed.left + 1] = 'WORKSPACE: ' .. workspace
|
||||||
|
end
|
||||||
|
|
||||||
|
local bat = ''
|
||||||
|
for _, b in ipairs(wezterm.battery_info()) do
|
||||||
|
bat = '🔋 ' .. string.format('%.0f%%', b.state_of_charge * 100) ..
|
||||||
|
' ' .. b.state
|
||||||
|
end
|
||||||
|
displayed.right[#displayed.right + 1] = bat
|
||||||
|
|
||||||
|
local currentprogram = pane:get_foreground_process_name()
|
||||||
|
displayed.right[#displayed.right + 1] = basename(currentprogram)
|
||||||
|
|
||||||
|
local statusleft = ''
|
||||||
|
for _, v in ipairs(displayed.left) do
|
||||||
|
statusleft = statusleft .. v .. SEPARATOR
|
||||||
|
end
|
||||||
|
local statusright = ''
|
||||||
|
for _, v in ipairs(displayed.right) do
|
||||||
|
statusright = statusright .. v .. SEPARATOR
|
||||||
|
end
|
||||||
|
|
||||||
|
window:set_left_status(statusleft or '')
|
||||||
|
window:set_right_status(statusright or '')
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
return { setup = setup }
|
78
wezterm/.config/wezterm/wezterm.lua
Normal file
78
wezterm/.config/wezterm/wezterm.lua
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
local wezterm = require 'wezterm'
|
||||||
|
local mux = wezterm.mux
|
||||||
|
|
||||||
|
local maps = require 'maps'
|
||||||
|
|
||||||
|
require 'statusbar'.setup()
|
||||||
|
require 'events'.setup()
|
||||||
|
|
||||||
|
-- wezterm.on("set-up-dotfile-workspace", function(window, pane)
|
||||||
|
-- -- Set a workspace for coding on a current project
|
||||||
|
-- -- Top pane is for the editor, bottom pane is for the build tool
|
||||||
|
-- local project_dir = wezterm.home_dir .. '/projects/test/quarto/quarto-test'
|
||||||
|
-- local tab, build_pane, window = mux.spawn_window {
|
||||||
|
-- workspace = 'coding',
|
||||||
|
-- cwd = project_dir,
|
||||||
|
-- args = args
|
||||||
|
-- }
|
||||||
|
-- local editor_pane = build_pane:split{
|
||||||
|
-- direction = 'Top',
|
||||||
|
-- size = 0.6,
|
||||||
|
-- cwd = project_dir
|
||||||
|
-- }
|
||||||
|
-- build_pane:send_text 'quarto check'
|
||||||
|
-- mux.set_active_workspace 'coding'
|
||||||
|
-- end)
|
||||||
|
--
|
||||||
|
-- wezterm.on('gui-startup', function(cmd)
|
||||||
|
-- -- allow `wezterm start -- something` to affect what we spawn
|
||||||
|
-- -- in our initial window
|
||||||
|
-- local args = {}
|
||||||
|
-- if cmd then args = cmd.args end
|
||||||
|
--
|
||||||
|
-- -- Set a workspace for coding on a current project
|
||||||
|
-- -- Top pane is for the editor, bottom pane is for the build tool
|
||||||
|
-- local project_dir = wezterm.home_dir .. '/projects/test/quarto/quarto-test'
|
||||||
|
-- local tab, build_pane, window = mux.spawn_window {
|
||||||
|
-- workspace = 'coding',
|
||||||
|
-- cwd = project_dir,
|
||||||
|
-- args = args
|
||||||
|
-- }
|
||||||
|
-- local editor_pane = build_pane:split {
|
||||||
|
-- direction = 'Top',
|
||||||
|
-- size = 0.6,
|
||||||
|
-- cwd = project_dir
|
||||||
|
-- }
|
||||||
|
-- build_pane:send_text 'quarto check'
|
||||||
|
--
|
||||||
|
-- -- A workspace for interacting with a local machine that
|
||||||
|
-- -- runs some docker containners for home automation
|
||||||
|
-- local tab, pane, window = mux.spawn_window {
|
||||||
|
-- workspace = 'toppy',
|
||||||
|
-- args = { 'top' }
|
||||||
|
-- }
|
||||||
|
--
|
||||||
|
-- -- We want to startup in the coding workspace
|
||||||
|
-- mux.set_active_workspace 'coding'
|
||||||
|
-- end)
|
||||||
|
|
||||||
|
return {
|
||||||
|
enable_wayland = true,
|
||||||
|
|
||||||
|
hide_tab_bar_if_only_one_tab = true,
|
||||||
|
use_fancy_tab_bar = false,
|
||||||
|
tab_bar_at_bottom = true,
|
||||||
|
window_padding = { left = 0, right = 0, top = 0, bottom = 0 },
|
||||||
|
|
||||||
|
color_scheme = "Nord (base16)",
|
||||||
|
|
||||||
|
-- default_prog = {"nu"},
|
||||||
|
scrollback_lines = 10000,
|
||||||
|
|
||||||
|
font = wezterm.font('Iosevka'),
|
||||||
|
line_height = 1.0,
|
||||||
|
|
||||||
|
leader = { key = 'a', mods = 'CTRL', timeout_milliseconds = 1500 },
|
||||||
|
keys = maps.keys,
|
||||||
|
key_tables = maps.key_tables
|
||||||
|
}
|
|
@ -23,11 +23,15 @@ source /usr/share/oh-my-zsh/plugins/colored-man-pages/colored-man-pages.plugin.z
|
||||||
source /usr/share/oh-my-zsh/plugins/command-not-found/command-not-found.plugin.zsh
|
source /usr/share/oh-my-zsh/plugins/command-not-found/command-not-found.plugin.zsh
|
||||||
source /usr/share/fzf/key-bindings.zsh
|
source /usr/share/fzf/key-bindings.zsh
|
||||||
#source /usr/share/nvm/init-nvm.sh
|
#source /usr/share/nvm/init-nvm.sh
|
||||||
|
## find the correct installed tab-completion version
|
||||||
[ -e $PLUG_FOLDER/fzf-tab/fzf-tab.plugin.zsh ] && source $PLUG_FOLDER/fzf-tab/fzf-tab.plugin.zsh
|
[ -e $PLUG_FOLDER/fzf-tab/fzf-tab.plugin.zsh ] && source $PLUG_FOLDER/fzf-tab/fzf-tab.plugin.zsh
|
||||||
|
[ -e $PLUG_FOLDER/fzf-tab-bin-git/fzf-tab.plugin.zsh ] && source $PLUG_FOLDER/fzf-tab-bin-git/fzf-tab.plugin.zsh
|
||||||
# these need to be sourced after fzf-tab
|
# these need to be sourced after fzf-tab
|
||||||
[ -e $PLUG_FOLDER/fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh ] && source $PLUG_FOLDER/fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh
|
[ -e $PLUG_FOLDER/fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh ] && source $PLUG_FOLDER/fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh
|
||||||
|
[ -e $PLUG_FOLDER/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ] && source $PLUG_FOLDER/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
||||||
[ -e $PLUG_FOLDER/alias-tips/alias-tips.plugin.zsh ] && source $PLUG_FOLDER/alias-tips/alias-tips.plugin.zsh
|
[ -e $PLUG_FOLDER/alias-tips/alias-tips.plugin.zsh ] && source $PLUG_FOLDER/alias-tips/alias-tips.plugin.zsh
|
||||||
[ -e $PLUG_FOLDER/zsh-autosuggestions/zsh-autosuggestions.plugin.zsh ] && source $PLUG_FOLDER/zsh-autosuggestions/zsh-autosuggestions.plugin.zsh
|
[ -e $PLUG_FOLDER/zsh-autosuggestions/zsh-autosuggestions.plugin.zsh ] && source $PLUG_FOLDER/zsh-autosuggestions/zsh-autosuggestions.plugin.zsh
|
||||||
|
[ -e $PLUG_FOLDER/zsh-vi-mode/zsh-vi-mode.plugin.zsh ] && source $PLUG_FOLDER/zsh-vi-mode/zsh-vi-mode.plugin.zsh
|
||||||
unset PLUG_FOLDER
|
unset PLUG_FOLDER
|
||||||
|
|
||||||
# simple fzf-tab settings
|
# simple fzf-tab settings
|
||||||
|
|
Loading…
Reference in a new issue