Compare commits

..

14 commits

Author SHA1 Message Date
5a9a4e7162
qutebrowser: Add pcgamingwiki search
Now that I have time to enjoy a game every now and again once more,
pcgamingwiki is a wonderful resource to start looking into all sorts of
compatibility issues and troubleshooting, so it is added as a
qutebrowser search engine as `pcw`.
2022-12-08 13:42:09 +01:00
ec5dd24198
nvim: Bootstrap spellfile if not existing
Neovim sometimes errors out when enabling spelling without having all
the necessary spellfiles available. This ensures on setting up the
environment that a spellfile is downloaded.
2022-12-08 13:39:40 +01:00
83f40d6f85
wayland: Set up basic multi-display support
Added continuous wallpaper setting and different settings for laptop use
(only one screen enabled) and docked use (two screens enabled and laptop
screen disabled) using the wonderful `kanshi` program.
2022-12-08 13:38:16 +01:00
f325456e60
zsh: Check for additional plugins
Checking for a couple additional plugins and automatically sourcing them
- mostly alternate versions of previous plugins.
2022-12-08 13:31:07 +01:00
1c983b2dce
nvim: Fix automatic packer installation
Updated to new recommended bootstrapping for packer itself, straight
from the project respository.
2022-12-08 13:30:20 +01:00
b33ae09a33
nvim: Disable automatic formatting on save
Had to disable automatic formatting since it was messing with my
contributions to other git projects, if they did either not have a
formatter enabled (most of the time) or had different formatters or
those set up differently than this setup (fixable, but I don't think
it's worth the time).

Instead, formatting can be invoked with `<localleader>f`/`F` to format
or format and save respectively.
2022-12-08 13:28:00 +01:00
ea37793997
wezterm: Default to dark theme and general font
Generalized the font used from special ligaturized Iosevka to the
standard Iosevka installed in the bootstrap process.

Changed from a blindingly bright default color scheme to a nice dark one
(Nord).
2022-12-08 13:16:04 +01:00
dff4308b4d
nvim: Change to Navigator fork supporting wezterm
Changed to personal fork of Navigator which supports wezterm for the
time being - until the changes are merged in some fashion upstream.
2022-12-08 13:15:34 +01:00
e92e7e5b1c
vifm: Change default image opener to timg
Changed opening images by default to do so on the commandline itself,
using timg.
Other openers can still be invoked through the `:file` command like
before.
2022-11-25 17:02:49 +01:00
5dc8e5afce
wezterm: Add event handling 2022-11-25 17:02:49 +01:00
848f105df8
wezterm: Add config 2022-11-25 17:02:49 +01:00
e884c94a99
qutebrowser: Fix terminal calls for wezterm 2022-11-25 17:02:48 +01:00
cf7d890787
sh: Add timg aliases
Added shell aliases for 'image listings' which aims to mimic the `ls`
command in a very simple way.

Invoke it via `il` to display a grid of all images residing in current
directory. Images are being detected not by their extension but by
running a `file` operation on, so in very large directories this might
take a little (though, your terminal will probably buckle under the
weight of displaying thousands of images anyway, so use with care).

`IL` provides the same functionality but recurses into an arbitrary
amount of subdirectories. Very useful to get an overview of a certain
directory and its children but, again, think for a second before using
since this could easily spew thousands of pictures into your term.
2022-11-25 17:02:48 +01:00
fdc85e5569
sh: Replace kitty invocations with wezterm 2022-11-25 17:02:48 +01:00
18 changed files with 423 additions and 30 deletions

View file

@ -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

View file

@ -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>'

View file

@ -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

View file

@ -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)

View 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

View file

@ -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",
"{}", "{}",

View file

@ -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={}",

View 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

View file

@ -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"
@ -42,5 +42,5 @@ export SHELL=${SHELL:-/bin/bash}
export TERM=xterm-256color export TERM=xterm-256color
if exist fzf; then if exist fzf; then
export FZF_DEFAULT_OPTS="--bind 'tab:toggle+down,shift-tab:toggle+up,ctrl-g:top,ctrl-t:toggle-preview,ctrl-d:preview-half-page-down,ctrl-u:preview-half-page-up' --color=light -1 -m --delimiter :" export FZF_DEFAULT_OPTS="--bind 'tab:toggle+down,shift-tab:toggle+up,ctrl-g:top,ctrl-t:toggle-preview,ctrl-d:preview-half-page-down,ctrl-u:preview-half-page-up' --color=light -1 -m --delimiter :"
fi fi

View file

@ -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

View 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
}

View file

@ -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

View file

@ -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"
}, },
} }

View 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 }

View 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 }

View 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 }

View 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
}

View file

@ -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