summaryrefslogtreecommitdiffstats
path: root/.config
diff options
context:
space:
mode:
Diffstat (limited to '.config')
-rw-r--r--.config/alacritty/alacritty.toml9
-rw-r--r--.config/ardour8/my-gruvbox-ardour-8.12.colors538
-rw-r--r--.config/cmus/rc71
-rw-r--r--.config/dunst/dunstrc34
-rw-r--r--.config/env22
-rw-r--r--.config/fontconfig/fonts.conf6
-rw-r--r--.config/go2work/go2work.toml20
-rw-r--r--.config/gtk-2.0/gtkrc6
-rw-r--r--.config/gtk-3.0/bookmarks1
-rw-r--r--.config/gtk-3.0/settings.ini4
-rw-r--r--.config/lazygit/config.yml8
-rw-r--r--.config/lf/colors174
-rw-r--r--.config/lf/lfrc8
-rw-r--r--.config/mimeapps.list69
-rw-r--r--.config/mpv/mpv.conf9
-rw-r--r--.config/mpv/scripts/mpv_thumbnail_script_server-1.lua815
-rw-r--r--.config/newsboat/config63
-rwxr-xr-x.config/nnn/plugins/joe_clipper79
-rwxr-xr-x.config/nnn/plugins/joe_dragdrop47
-rwxr-xr-x.config/nnn/plugins/joe_fzfcd21
-rwxr-xr-x.config/nnn/plugins/preview-tui538
-rw-r--r--.config/nvim/after/plugin/gitsigns.lua42
-rw-r--r--.config/nvim/after/plugin/gruvbox.lua29
-rw-r--r--.config/nvim/after/plugin/kanagawa.lua27
-rw-r--r--.config/nvim/after/plugin/lsp.lua229
-rw-r--r--.config/nvim/after/plugin/lualine.lua349
-rw-r--r--.config/nvim/after/plugin/rainbow.lua23
-rw-r--r--.config/nvim/after/plugin/telescope.lua16
-rw-r--r--.config/nvim/after/plugin/treesitter.lua42
-rw-r--r--.config/nvim/after/plugin/trouble.lua17
-rw-r--r--.config/nvim/init.lua16
-rw-r--r--.config/nvim/lua/config/bindings.lua (renamed from .config/nvim/lua/bindings.lua)31
-rw-r--r--.config/nvim/lua/config/hooks.lua (renamed from .config/nvim/lua/hooks.lua)9
-rw-r--r--.config/nvim/lua/config/langs.lua (renamed from .config/nvim/lua/langs.lua)0
-rw-r--r--.config/nvim/lua/config/lazy.lua146
-rw-r--r--.config/nvim/lua/config/settings.lua (renamed from .config/nvim/lua/settings.lua)1
-rw-r--r--.config/nvim/lua/lsp/arduino.lua14
-rw-r--r--.config/nvim/lua/lsp/bashls.lua12
-rw-r--r--.config/nvim/lua/lsp/clangd.lua11
-rw-r--r--.config/nvim/lua/lsp/gopls.lua25
-rw-r--r--.config/nvim/lua/lsp/luals.lua14
-rw-r--r--.config/nvim/lua/lsp/perlls.lua23
-rw-r--r--.config/nvim/lua/packs.lua171
-rw-r--r--.config/nvim/lua/plugins/gruvbox.lua38
-rw-r--r--.config/nvim/lua/plugins/lspkind.lua110
-rw-r--r--.config/nvim/lua/plugins/lualine.lua239
-rw-r--r--.config/nvim/lua/plugins/rainbow.lua28
-rw-r--r--.config/nvim/lua/plugins/treesitter.lua53
-rw-r--r--.config/nvim/lua/plugins/trouble.lua27
-rw-r--r--.config/picom.conf10
-rw-r--r--.config/pipe-viewer/pipe-viewer.conf7
-rw-r--r--.config/tremc/settings.cfg9
-rwxr-xr-x.config/wayland/init.sh16
-rw-r--r--.config/x11/xinitrc37
-rw-r--r--.config/x11/xresources4
-rw-r--r--.config/zsh/.zshrc80
-rw-r--r--.config/zsh/alias.zsh35
-rw-r--r--.config/zsh/plugins.zsh2
58 files changed, 2525 insertions, 1959 deletions
diff --git a/.config/alacritty/alacritty.toml b/.config/alacritty/alacritty.toml
index 8233a9f..9cd76d4 100644
--- a/.config/alacritty/alacritty.toml
+++ b/.config/alacritty/alacritty.toml
@@ -50,11 +50,11 @@ args = ["--login"]
[font]
#size = 15.0
-size = 14.0
+size = 13.0
[font.normal]
#family = "UbuntuMono Nerd Font"
-family = "Terminess Nerd Font"
+family = "BlexMono Nerd Font"
style = "Regular"
[font.offset]
@@ -62,8 +62,9 @@ x = 0
y = 0
[[hints.enabled]]
-command = "linkview"
+command = { program = "linkview", args = [ "-e", "linkview" ] }
post_processing = true
+persist = false
regex = "(ipfs:|ipns:|magnet:|mailto:|gemini:|gopher:|https:|http:..|news:|file:|git:|ssh:|ftp:)[^\u0000-\u001F\u007F-Ÿ<>\"\\s{-}\\^⟨⟩`]+"
[hints.enabled.binding]
@@ -117,7 +118,7 @@ semantic_escape_chars = ",│`|:\"' ()[]{}<>\t"
[window]
decorations = "full"
-opacity = 0.92
+opacity = 1.00
title = "Alacritty"
[window.class]
diff --git a/.config/ardour8/my-gruvbox-ardour-8.12.colors b/.config/ardour8/my-gruvbox-ardour-8.12.colors
new file mode 100644
index 0000000..4880b1b
--- /dev/null
+++ b/.config/ardour8/my-gruvbox-ardour-8.12.colors
@@ -0,0 +1,538 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Ardour>
+ <Colors>
+ <Color name="alert:blue" value="076678ff"/>
+ <Color name="alert:cyan" value="458588ff"/>
+ <Color name="alert:green" value="689d6aff"/>
+ <Color name="alert:greenish" value="689d6aff"/>
+ <Color name="alert:orange" value="458588ff"/>
+ <Color name="alert:red" value="cc241dff"/>
+ <Color name="alert:ruddy" value="9d0006ff"/>
+ <Color name="alert:yellow" value="cc241dff"/>
+ <Color name="meter color0" value="689d6aff"/>
+ <Color name="meter color1" value="689d6aff"/>
+ <Color name="meter color2" value="b8bb26ff"/>
+ <Color name="meter color3" value="b8bb26ff"/>
+ <Color name="meter color4" value="fabd2fff"/>
+ <Color name="meter color5" value="fabd2fff"/>
+ <Color name="meter color6" value="ff8800ff"/>
+ <Color name="meter color7" value="ff8800ff"/>
+ <Color name="meter color8" value="cc241dff"/>
+ <Color name="meter color9" value="cc241dff"/>
+ <Color name="midi meter 52" value="e8faa1ff"/>
+ <Color name="midi meter 53" value="f2c37dff"/>
+ <Color name="midi meter 54" value="ffac44ff"/>
+ <Color name="midi meter 55" value="f48352ff"/>
+ <Color name="midi meter 56" value="f85813ff"/>
+ <Color name="neutral:background" value="1d2021ff"/>
+ <Color name="neutral:background2" value="282828ff"/>
+ <Color name="neutral:backgroundest" value="1d2021ff"/>
+ <Color name="neutral:foreground" value="ebdbb2ff"/>
+ <Color name="neutral:foreground2" value="ebdbb2ff"/>
+ <Color name="neutral:foregroundest" value="ebdbb2ff"/>
+ <Color name="neutral:midground" value="928374ff"/>
+ <Color name="theme:bg" value="282828ff"/>
+ <Color name="theme:bg1" value="282828ff"/>
+ <Color name="theme:bg2" value="282828ff"/>
+ <Color name="theme:contrasting" value="ebdbb2ff"/>
+ <Color name="theme:contrasting alt" value="fabd2fff"/>
+ <Color name="theme:contrasting clock" value="b8bb26ff"/>
+ <Color name="theme:contrasting less" value="98971aff"/>
+ <Color name="theme:contrasting selection" value="cc241dff"/>
+ <Color name="widget:bg" value="3c3836ff"/>
+ <Color name="widget:blue" value="458588ff"/>
+ <Color name="widget:blue darker" value="39191bff"/>
+ <Color name="widget:blue lighter" value="628db4ff"/>
+ <Color name="widget:gray" value="595755ff"/>
+ <Color name="widget:green" value="617552ff"/>
+ <Color name="widget:green darker" value="3c403aff"/>
+ <Color name="widget:green lighter" value="8ec07cff"/>
+ <Color name="widget:orange" value="904010ff"/>
+ <Color name="widget:ruddy" value="7c3a3aff"/>
+ <Color name="widget:yellow" value="eddc3dff"/>
+ </Colors>
+ <ColorAliases>
+ <ColorAlias name="active crossfade" alias="neutral:foreground"/>
+ <ColorAlias name="arrange base" alias="theme:bg"/>
+ <ColorAlias name="arrangement marker bar" alias="neutral:background2"/>
+ <ColorAlias name="arrangement rect" alias="widget:blue"/>
+ <ColorAlias name="arrangement rect alt" alias="widget:blue lighter"/>
+ <ColorAlias name="audio automation track fill" alias="theme:bg"/>
+ <ColorAlias name="audio bus base" alias="widget:blue darker"/>
+ <ColorAlias name="audio master bus base" alias="neutral:backgroundest"/>
+ <ColorAlias name="audio track base" alias="neutral:background"/>
+ <ColorAlias name="automation line" alias="alert:green"/>
+ <ColorAlias name="automation track outline" alias="theme:bg1"/>
+ <ColorAlias name="big clock active: background" alias="neutral:backgroundest"/>
+ <ColorAlias name="big clock active: cursor" alias="theme:contrasting alt"/>
+ <ColorAlias name="big clock active: edited text" alias="theme:contrasting alt"/>
+ <ColorAlias name="big clock active: text" alias="alert:red"/>
+ <ColorAlias name="big clock active:gtk_somewhat_bright_indicator background" alias="neutral:backgroundest"/>
+ <ColorAlias name="big clock: background" alias="theme:bg2"/>
+ <ColorAlias name="big clock: cursor" alias="theme:contrasting alt"/>
+ <ColorAlias name="big clock: edited text" alias="theme:contrasting alt"/>
+ <ColorAlias name="big clock: text" alias="theme:contrasting clock"/>
+ <ColorAlias name="border color" alias="neutral:backgroundest"/>
+ <ColorAlias name="cd marker bar" alias="neutral:background2"/>
+ <ColorAlias name="clipped waveform" alias="alert:red"/>
+ <ColorAlias name="clock: background" alias="theme:bg2"/>
+ <ColorAlias name="clock: cursor" alias="theme:contrasting alt"/>
+ <ColorAlias name="clock: edited text" alias="theme:contrasting alt"/>
+ <ColorAlias name="clock: text" alias="theme:contrasting clock"/>
+ <ColorAlias name="comment button: fill" alias="widget:bg"/>
+ <ColorAlias name="control point fill" alias="alert:green"/>
+ <ColorAlias name="control point outline" alias="alert:green"/>
+ <ColorAlias name="control point selected fill" alias="alert:orange"/>
+ <ColorAlias name="control point selected outline" alias="alert:red"/>
+ <ColorAlias name="covered region" alias="neutral:background2"/>
+ <ColorAlias name="crossfade editor base" alias="neutral:foreground2"/>
+ <ColorAlias name="crossfade editor line" alias="neutral:backgroundest"/>
+ <ColorAlias name="crossfade editor line shading" alias="widget:blue"/>
+ <ColorAlias name="crossfade editor point fill" alias="alert:green"/>
+ <ColorAlias name="crossfade editor point outline" alias="alert:blue"/>
+ <ColorAlias name="crossfade editor wave" alias="neutral:foregroundest"/>
+ <ColorAlias name="crossfade line" alias="neutral:backgroundest"/>
+ <ColorAlias name="edit point" alias="alert:blue"/>
+ <ColorAlias name="entered automation line" alias="widget:orange"/>
+ <ColorAlias name="entered gain line" alias="widget:orange"/>
+ <ColorAlias name="entered marker" alias="widget:orange"/>
+ <ColorAlias name="fader outline" alias="neutral:backgroundest"/>
+ <ColorAlias name="feedback alert: alt active" alias="alert:ruddy"/>
+ <ColorAlias name="feedback alert: fill" alias="widget:bg"/>
+ <ColorAlias name="feedback alert: fill active" alias="alert:red"/>
+ <ColorAlias name="feedback alert: led active" alias="alert:red"/>
+ <ColorAlias name="foldback knob" alias="widget:bg"/>
+ <ColorAlias name="foldback knob: arc end" alias="widget:blue"/>
+ <ColorAlias name="foldback knob: arc start" alias="widget:blue"/>
+ <ColorAlias name="foldback knob: fill" alias="widget:bg"/>
+ <ColorAlias name="foldback postfader: fill" alias="widget:blue darker"/>
+ <ColorAlias name="foldback postfader: fill active" alias="widget:blue darker"/>
+ <ColorAlias name="foldback postfader: led active" alias="alert:green"/>
+ <ColorAlias name="foldback prefader: fill" alias="widget:blue darker"/>
+ <ColorAlias name="foldback prefader: fill active" alias="widget:blue darker"/>
+ <ColorAlias name="foldback prefader: led active" alias="alert:green"/>
+ <ColorAlias name="frame handle" alias="theme:bg1"/>
+ <ColorAlias name="gain line" alias="alert:green"/>
+ <ColorAlias name="gain line inactive" alias="theme:bg1"/>
+ <ColorAlias name="generic button: fill" alias="widget:bg"/>
+ <ColorAlias name="generic button: fill active" alias="alert:red"/>
+ <ColorAlias name="generic button: led active" alias="alert:green"/>
+ <ColorAlias name="generic button: outline" alias="neutral:backgroundest"/>
+ <ColorAlias name="ghost track base" alias="neutral:background2"/>
+ <ColorAlias name="ghost track midi outline" alias="neutral:backgroundest"/>
+ <ColorAlias name="ghost track wave" alias="neutral:background"/>
+ <ColorAlias name="ghost track wave clip" alias="neutral:background"/>
+ <ColorAlias name="ghost track wave fill" alias="neutral:foregroundest"/>
+ <ColorAlias name="ghost track zero line" alias="neutral:foreground2"/>
+ <ColorAlias name="grid line major" alias="neutral:backgroundest"/>
+ <ColorAlias name="grid line micro" alias="neutral:backgroundest"/>
+ <ColorAlias name="grid line minor" alias="neutral:backgroundest"/>
+ <ColorAlias name="gtk_arm" alias="alert:red"/>
+ <ColorAlias name="gtk_audio_bus" alias="widget:blue darker"/>
+ <ColorAlias name="gtk_audio_track" alias="theme:bg1"/>
+ <ColorAlias name="gtk_automation_track_header" alias="theme:bg"/>
+ <ColorAlias name="gtk_background" alias="theme:bg"/>
+ <ColorAlias name="gtk_bases" alias="theme:bg2"/>
+ <ColorAlias name="gtk_bg_selected" alias="theme:contrasting selection"/>
+ <ColorAlias name="gtk_bg_tooltip" alias="neutral:backgroundest"/>
+ <ColorAlias name="gtk_bright_color" alias="widget:blue"/>
+ <ColorAlias name="gtk_bright_indicator" alias="alert:red"/>
+ <ColorAlias name="gtk_clip_indicator" alias="alert:red"/>
+ <ColorAlias name="gtk_contrasting_indicator" alias="alert:green"/>
+ <ColorAlias name="gtk_control_master" alias="theme:bg1"/>
+ <ColorAlias name="gtk_control_text" alias="neutral:foreground"/>
+ <ColorAlias name="gtk_control_text2" alias="alert:ruddy"/>
+ <ColorAlias name="gtk_darkest" alias="theme:bg2"/>
+ <ColorAlias name="gtk_entry_cursor" alias="alert:red"/>
+ <ColorAlias name="gtk_fg_selected" alias="theme:bg2"/>
+ <ColorAlias name="gtk_fg_tooltip" alias="neutral:foreground"/>
+ <ColorAlias name="gtk_foldback_bg" alias="theme:bg1"/>
+ <ColorAlias name="gtk_foreground" alias="neutral:foreground"/>
+ <ColorAlias name="gtk_light_text_on_dark" alias="neutral:foreground2"/>
+ <ColorAlias name="gtk_lightest" alias="neutral:foregroundest"/>
+ <ColorAlias name="gtk_midi_channel_selector" alias="widget:blue"/>
+ <ColorAlias name="gtk_midi_track" alias="widget:green darker"/>
+ <ColorAlias name="gtk_monitor" alias="alert:orange"/>
+ <ColorAlias name="gtk_mono" alias="neutral:foreground"/>
+ <ColorAlias name="gtk_mute" alias="alert:yellow"/>
+ <ColorAlias name="gtk_not_so_bright_indicator" alias="theme:contrasting"/>
+ <ColorAlias name="gtk_processor_fader" alias="widget:gray"/>
+ <ColorAlias name="gtk_processor_fader_frame" alias="neutral:midground"/>
+ <ColorAlias name="gtk_processor_frame_selected" alias="theme:contrasting"/>
+ <ColorAlias name="gtk_processor_postfader" alias="widget:green"/>
+ <ColorAlias name="gtk_processor_postfader_frame" alias="widget:green"/>
+ <ColorAlias name="gtk_processor_prefader" alias="widget:ruddy"/>
+ <ColorAlias name="gtk_processor_prefader_frame" alias="widget:ruddy"/>
+ <ColorAlias name="gtk_send_bg" alias="theme:bg1"/>
+ <ColorAlias name="gtk_send_fg" alias="widget:blue"/>
+ <ColorAlias name="gtk_solo" alias="alert:green"/>
+ <ColorAlias name="gtk_somewhat_bright_indicator" alias="theme:contrasting alt"/>
+ <ColorAlias name="gtk_texts" alias="neutral:foreground"/>
+ <ColorAlias name="gtk_track_header_inactive" alias="theme:bg"/>
+ <ColorAlias name="gtk_track_header_selected" alias="widget:ruddy"/>
+ <ColorAlias name="image track" alias="neutral:foreground2"/>
+ <ColorAlias name="inactive crossfade" alias="theme:contrasting"/>
+ <ColorAlias name="inactive fade handle" alias="neutral:foreground2"/>
+ <ColorAlias name="inactive group tab" alias="theme:bg"/>
+ <ColorAlias name="invert button: fill" alias="widget:bg"/>
+ <ColorAlias name="invert button: fill active" alias="alert:blue"/>
+ <ColorAlias name="invert button: led active" alias="alert:green"/>
+ <ColorAlias name="latency button: fill" alias="widget:bg"/>
+ <ColorAlias name="latency button: fill active" alias="alert:ruddy"/>
+ <ColorAlias name="latency button: led active" alias="alert:ruddy"/>
+ <ColorAlias name="location arrangement marker" alias="theme:contrasting alt"/>
+ <ColorAlias name="location cd marker" alias="theme:contrasting less"/>
+ <ColorAlias name="location loop" alias="alert:blue"/>
+ <ColorAlias name="location marker" alias="theme:contrasting less"/>
+ <ColorAlias name="location punch" alias="widget:ruddy"/>
+ <ColorAlias name="location range" alias="theme:contrasting less"/>
+ <ColorAlias name="lock button: fill active" alias="widget:bg"/>
+ <ColorAlias name="lock button: led active" alias="alert:red"/>
+ <ColorAlias name="lua action button: fill" alias="widget:bg"/>
+ <ColorAlias name="mapping bar" alias="neutral:background2"/>
+ <ColorAlias name="marker bar" alias="neutral:background2"/>
+ <ColorAlias name="marker bar separator" alias="theme:bg2"/>
+ <ColorAlias name="marker drag line" alias="theme:contrasting clock"/>
+ <ColorAlias name="marker label" alias="neutral:backgroundest"/>
+ <ColorAlias name="marker track" alias="neutral:foreground2"/>
+ <ColorAlias name="master monitor section button active: fill" alias="widget:ruddy"/>
+ <ColorAlias name="master monitor section button active: fill active" alias="alert:yellow"/>
+ <ColorAlias name="master monitor section button normal: fill active" alias="widget:bg"/>
+ <ColorAlias name="measure line bar" alias="neutral:foregroundest"/>
+ <ColorAlias name="measure line beat" alias="widget:blue"/>
+ <ColorAlias name="meter background bottom" alias="neutral:background2"/>
+ <ColorAlias name="meter background top" alias="theme:bg"/>
+ <ColorAlias name="meter bar" alias="theme:bg1"/>
+ <ColorAlias name="meter color BBC" alias="alert:orange"/>
+ <ColorAlias name="meter marker" alias="widget:orange"/>
+ <ColorAlias name="meter marker music" alias="widget:orange"/>
+ <ColorAlias name="meter outline" alias="neutral:backgroundest"/>
+ <ColorAlias name="meterbridge label: fill" alias="theme:bg"/>
+ <ColorAlias name="meterbridge label: fill active" alias="neutral:background2"/>
+ <ColorAlias name="meterbridge label: led" alias="alert:red"/>
+ <ColorAlias name="meterbridge label: led active" alias="alert:red"/>
+ <ColorAlias name="meterbridge peakindicator: fill" alias="widget:bg"/>
+ <ColorAlias name="meterbridge peakindicator: fill active" alias="alert:red"/>
+ <ColorAlias name="meterbridge peakindicator: led" alias="alert:red"/>
+ <ColorAlias name="meterbridge peakindicator: led active" alias="alert:red"/>
+ <ColorAlias name="meterbridge peaklabel" alias="alert:red"/>
+ <ColorAlias name="meterstrip dpm bg" alias="theme:bg2"/>
+ <ColorAlias name="meterstrip dpm fg" alias="neutral:foreground2"/>
+ <ColorAlias name="meterstrip ppm bg" alias="theme:bg2"/>
+ <ColorAlias name="meterstrip ppm fg" alias="neutral:foreground2"/>
+ <ColorAlias name="meterstrip vu bg" alias="widget:yellow"/>
+ <ColorAlias name="meterstrip vu fg" alias="neutral:backgroundest"/>
+ <ColorAlias name="midi automation track fill" alias="widget:green darker"/>
+ <ColorAlias name="midi bus base" alias="neutral:backgroundest"/>
+ <ColorAlias name="midi device: fill" alias="widget:bg"/>
+ <ColorAlias name="midi device: fill active" alias="theme:bg"/>
+ <ColorAlias name="midi device: led active" alias="alert:green"/>
+ <ColorAlias name="midi input button: fill active" alias="alert:green"/>
+ <ColorAlias name="midi input button: led active" alias="alert:red"/>
+ <ColorAlias name="midi meter color0" alias="midi meter 52"/>
+ <ColorAlias name="midi meter color1" alias="midi meter 53"/>
+ <ColorAlias name="midi meter color2" alias="midi meter 53"/>
+ <ColorAlias name="midi meter color3" alias="midi meter 54"/>
+ <ColorAlias name="midi meter color4" alias="midi meter 54"/>
+ <ColorAlias name="midi meter color5" alias="midi meter 55"/>
+ <ColorAlias name="midi meter color6" alias="midi meter 55"/>
+ <ColorAlias name="midi meter color7" alias="midi meter 56"/>
+ <ColorAlias name="midi meter color8" alias="midi meter 56"/>
+ <ColorAlias name="midi meter color9" alias="midi meter 56"/>
+ <ColorAlias name="midi note inactive channel" alias="neutral:backgroundest"/>
+ <ColorAlias name="midi note max" alias="alert:green"/>
+ <ColorAlias name="midi note mid" alias="alert:yellow"/>
+ <ColorAlias name="midi note min" alias="alert:orange"/>
+ <ColorAlias name="midi note selected" alias="widget:ruddy"/>
+ <ColorAlias name="midi note selected outline" alias="alert:red"/>
+ <ColorAlias name="midi note velocity text" alias="theme:contrasting"/>
+ <ColorAlias name="midi patch change fill" alias="theme:contrasting selection"/>
+ <ColorAlias name="midi patch change outline" alias="neutral:foreground"/>
+ <ColorAlias name="midi select rect outline" alias="alert:red"/>
+ <ColorAlias name="midi sysex fill" alias="theme:contrasting"/>
+ <ColorAlias name="midi sysex outline" alias="theme:contrasting alt"/>
+ <ColorAlias name="midi track base" alias="widget:green darker"/>
+ <ColorAlias name="mixer strip button: fill" alias="widget:bg"/>
+ <ColorAlias name="mixer strip button: fill active" alias="alert:orange"/>
+ <ColorAlias name="mixer strip button: led active" alias="alert:green"/>
+ <ColorAlias name="mixer strip name button: fill active" alias="theme:bg2"/>
+ <ColorAlias name="mixer strip name button: led active" alias="alert:green"/>
+ <ColorAlias name="monitor button: fill" alias="widget:bg"/>
+ <ColorAlias name="monitor button: fill active" alias="alert:orange"/>
+ <ColorAlias name="monitor button: led active" alias="alert:ruddy"/>
+ <ColorAlias name="monitor section button: fill" alias="widget:bg"/>
+ <ColorAlias name="monitor section dim: fill" alias="widget:bg"/>
+ <ColorAlias name="monitor section dim: fill active" alias="alert:orange"/>
+ <ColorAlias name="monitor section dim: led active" alias="alert:green"/>
+ <ColorAlias name="monitor section knob" alias="widget:bg"/>
+ <ColorAlias name="monitor section knob: arc end" alias="widget:blue"/>
+ <ColorAlias name="monitor section knob: arc start" alias="widget:blue"/>
+ <ColorAlias name="monitor section mono: fill" alias="widget:bg"/>
+ <ColorAlias name="monitor section mono: fill active" alias="alert:blue"/>
+ <ColorAlias name="monitor section mono: led active" alias="alert:green"/>
+ <ColorAlias name="monitor section processors present: fill" alias="alert:orange"/>
+ <ColorAlias name="monitor section processors toggle: fill" alias="theme:bg"/>
+ <ColorAlias name="monitor section processors toggle: fill active" alias="theme:bg"/>
+ <ColorAlias name="monitor section solo model: fill" alias="widget:bg"/>
+ <ColorAlias name="monitor section solo model: fill active" alias="theme:bg"/>
+ <ColorAlias name="monitor section solo model: led active" alias="alert:green"/>
+ <ColorAlias name="monitor section solo model:punch button: fill active fill" alias="widget:bg"/>
+ <ColorAlias name="monitor section solo option: fill" alias="widget:bg"/>
+ <ColorAlias name="monitor section solo option: fill active" alias="theme:bg"/>
+ <ColorAlias name="monitor section solo option: led active" alias="alert:green"/>
+ <ColorAlias name="mono panner bg" alias="theme:bg2"/>
+ <ColorAlias name="mono panner fill" alias="widget:blue"/>
+ <ColorAlias name="mono panner outline" alias="theme:bg"/>
+ <ColorAlias name="mono panner position fill" alias="theme:contrasting less"/>
+ <ColorAlias name="mono panner position outline" alias="theme:bg"/>
+ <ColorAlias name="mono panner text" alias="neutral:backgroundest"/>
+ <ColorAlias name="mouse mode button: fill" alias="widget:bg"/>
+ <ColorAlias name="mouse mode button: fill active" alias="alert:greenish"/>
+ <ColorAlias name="mouse mode button: led active" alias="alert:green"/>
+ <ColorAlias name="mute button: fill" alias="widget:bg"/>
+ <ColorAlias name="mute button: fill active" alias="alert:yellow"/>
+ <ColorAlias name="mute button: led active" alias="alert:yellow"/>
+ <ColorAlias name="name highlight fill" alias="alert:blue"/>
+ <ColorAlias name="name highlight outline" alias="theme:bg1"/>
+ <ColorAlias name="nudge button: fill" alias="widget:bg"/>
+ <ColorAlias name="nudge button: fill active" alias="widget:bg"/>
+ <ColorAlias name="nudge button: led active" alias="alert:green"/>
+ <ColorAlias name="nudge clock: background" alias="theme:bg2"/>
+ <ColorAlias name="nudge clock: cursor" alias="theme:contrasting alt"/>
+ <ColorAlias name="nudge clock: edited text" alias="theme:contrasting alt"/>
+ <ColorAlias name="nudge clock: text" alias="theme:contrasting clock"/>
+ <ColorAlias name="page switch button: fill" alias="widget:bg"/>
+ <ColorAlias name="page switch button: fill active" alias="alert:green"/>
+ <ColorAlias name="pan knob" alias="widget:bg"/>
+ <ColorAlias name="pan knob: arc end" alias="widget:orange"/>
+ <ColorAlias name="pan knob: arc start" alias="widget:orange"/>
+ <ColorAlias name="patch change button unnamed: fill" alias="neutral:background2"/>
+ <ColorAlias name="patch change button unnamed: fill active" alias="widget:blue"/>
+ <ColorAlias name="patch change button: fill" alias="widget:bg"/>
+ <ColorAlias name="patch change button: fill acpunch button: fill activetive" alias="widget:blue"/>
+ <ColorAlias name="patch change button: fill active" alias="widget:blue"/>
+ <ColorAlias name="piano key black" alias="neutral:background2"/>
+ <ColorAlias name="piano key highlight" alias="alert:ruddy"/>
+ <ColorAlias name="piano key white" alias="neutral:foreground2"/>
+ <ColorAlias name="piano roll black" alias="theme:contrasting selection"/>
+ <ColorAlias name="piano roll black outline" alias="neutral:foreground2"/>
+ <ColorAlias name="piano roll white" alias="neutral:foreground2"/>
+ <ColorAlias name="pinrouting custom: led active" alias="alert:ruddy"/>
+ <ColorAlias name="pinrouting sidechain: led active" alias="alert:green"/>
+ <ColorAlias name="play head" alias="theme:contrasting"/>
+ <ColorAlias name="plugin automation state button: fill active" alias="alert:orange"/>
+ <ColorAlias name="plugin bypass button: led active" alias="alert:red"/>
+ <ColorAlias name="pluginlist filter button: fill active" alias="widget:bg"/>
+ <ColorAlias name="pluginlist hide button: led active" alias="alert:cyan"/>
+ <ColorAlias name="pluginlist radio button: led active" alias="alert:cyan"/>
+ <ColorAlias name="pluginui toggle: fill" alias="widget:bg"/>
+ <ColorAlias name="pluginui toggle: fill active" alias="widget:blue"/>
+ <ColorAlias name="preference highlight" alias="alert:yellow"/>
+ <ColorAlias name="processor automation line" alias="alert:green"/>
+ <ColorAlias name="processor auxfeedback: fill" alias="theme:contrasting alt"/>
+ <ColorAlias name="processor auxfeedback: led active" alias="alert:green"/>
+ <ColorAlias name="processor control button: fill" alias="neutral:background"/>
+ <ColorAlias name="processor control button: fill active" alias="neutral:background2"/>
+ <ColorAlias name="processor control button: led active" alias="widget:blue"/>
+ <ColorAlias name="processor control knob" alias="theme:bg"/>
+ <ColorAlias name="processor control knob: arc end" alias="widget:blue"/>
+ <ColorAlias name="processor control knob: arc start" alias="widget:blue"/>
+ <ColorAlias name="processor fader: fill" alias="widget:blue"/>
+ <ColorAlias name="processor fader: fill active" alias="widget:blue"/>
+ <ColorAlias name="processor fader: led active" alias="alert:green"/>
+ <ColorAlias name="processor postfader: fill" alias="widget:green"/>
+ <ColorAlias name="processor postfader: fill active" alias="widget:green"/>
+ <ColorAlias name="processor postfader: led active" alias="alert:green"/>
+ <ColorAlias name="processor prefader: fill" alias="widget:ruddy"/>
+ <ColorAlias name="processor prefader: fill active" alias="widget:ruddy"/>
+ <ColorAlias name="processor prefader: led active" alias="alert:green"/>
+ <ColorAlias name="processor sidechain: fill" alias="alert:orange"/>
+ <ColorAlias name="processor sidechain: led active" alias="alert:green"/>
+ <ColorAlias name="processor stub: fill" alias="neutral:background2"/>
+ <ColorAlias name="processor stub: fill active" alias="neutral:background2"/>
+ <ColorAlias name="punch button: fill" alias="widget:bg"/>
+ <ColorAlias name="punch button: fill active" alias="alert:ruddy"/>
+ <ColorAlias name="punch button: led active" alias="alert:red"/>
+ <ColorAlias name="punch clock: background" alias="theme:bg2"/>
+ <ColorAlias name="punch clock: cursor" alias="alert:ruddy"/>
+ <ColorAlias name="punch clock: edited text" alias="alert:ruddy"/>
+ <ColorAlias name="punch clock: text" alias="theme:contrasting clock"/>
+ <ColorAlias name="punch line" alias="alert:ruddy"/>
+ <ColorAlias name="range drag bar rect" alias="neutral:midground"/>
+ <ColorAlias name="range drag rect" alias="alert:ruddy"/>
+ <ColorAlias name="range marker bar" alias="neutral:background2"/>
+ <ColorAlias name="record enable button: fill active" alias="alert:ruddy"/>
+ <ColorAlias name="record enable button: led active" alias="alert:red"/>
+ <ColorAlias name="recording note" alias="neutral:foregroundest"/>
+ <ColorAlias name="recording rect" alias="alert:ruddy"/>
+ <ColorAlias name="recording waveform fill" alias="neutral:foregroundest"/>
+ <ColorAlias name="recording waveform outline" alias="neutral:background2"/>
+ <ColorAlias name="region automation line" alias="alert:blue"/>
+ <ColorAlias name="region list automatic" alias="theme:contrasting less"/>
+ <ColorAlias name="region list missing source" alias="alert:red"/>
+ <ColorAlias name="region list whole file" alias="neutral:foreground"/>
+ <ColorAlias name="region mark" alias="theme:contrasting alt"/>
+ <ColorAlias name="route button: fill" alias="widget:bg"/>
+ <ColorAlias name="route button: fill active" alias="theme:bg2"/>
+ <ColorAlias name="route button: led active" alias="alert:green"/>
+ <ColorAlias name="route rec button: led active" alias="alert:red"/>
+ <ColorAlias name="rubber band rect" alias="neutral:foreground2"/>
+ <ColorAlias name="rude audition: fill" alias="widget:bg"/>
+ <ColorAlias name="rude audition: fill active" alias="alert:ruddy"/>
+ <ColorAlias name="rude audition: led active" alias="alert:red"/>
+ <ColorAlias name="rude isolate: fill" alias="widget:bg"/>
+ <ColorAlias name="rude isolate: fill active" alias="theme:contrasting alt"/>
+ <ColorAlias name="rude isolate: led active" alias="alert:red"/>
+ <ColorAlias name="rude solo: fill" alias="widget:bg"/>
+ <ColorAlias name="rude solo: fill active" alias="alert:ruddy"/>
+ <ColorAlias name="rude solo: led active" alias="alert:red"/>
+ <ColorAlias name="ruler base" alias="theme:bg2"/>
+ <ColorAlias name="ruler text" alias="neutral:midground"/>
+ <ColorAlias name="scroomer" alias="alert:red"/>
+ <ColorAlias name="secondary clock: background" alias="theme:bg2"/>
+ <ColorAlias name="secondary clock: cursor" alias="theme:contrasting alt"/>
+ <ColorAlias name="secondary clock: edited text" alias="theme:contrasting alt"/>
+ <ColorAlias name="secondary clock: text" alias="theme:contrasting clock"/>
+ <ColorAlias name="secondary delta clock: background" alias="theme:bg2"/>
+ <ColorAlias name="secondary delta clock: cursor" alias="theme:contrasting alt"/>
+ <ColorAlias name="secondary delta clock: edited text" alias="theme:contrasting alt"/>
+ <ColorAlias name="secondary delta clock: text" alias="theme:contrasting alt"/>
+ <ColorAlias name="selected midi note frame" alias="alert:ruddy"/>
+ <ColorAlias name="selected region base" alias="alert:ruddy"/>
+ <ColorAlias name="selected time axis frame" alias="alert:ruddy"/>
+ <ColorAlias name="selected waveform fill" alias="alert:orange"/>
+ <ColorAlias name="selected waveform outline" alias="theme:bg2"/>
+ <ColorAlias name="selection" alias="alert:red"/>
+ <ColorAlias name="selection clock: background" alias="theme:bg2"/>
+ <ColorAlias name="selection clock: cursor" alias="alert:ruddy"/>
+ <ColorAlias name="selection clock: edited text" alias="alert:ruddy"/>
+ <ColorAlias name="selection clock: text" alias="theme:contrasting clock"/>
+ <ColorAlias name="selection rect" alias="alert:red"/>
+ <ColorAlias name="send alert button: fill" alias="widget:bg"/>
+ <ColorAlias name="send alert button: fill active" alias="alert:cyan"/>
+ <ColorAlias name="send alert button: led active" alias="alert:red"/>
+ <ColorAlias name="send bg" alias="neutral:backgroundest"/>
+ <ColorAlias name="send pan" alias="theme:contrasting alt"/>
+ <ColorAlias name="shuttle" alias="widget:bg"/>
+ <ColorAlias name="shuttle bg" alias="neutral:backgroundest"/>
+ <ColorAlias name="silence" alias="theme:contrasting alt"/>
+ <ColorAlias name="silence text" alias="neutral:foreground"/>
+ <ColorAlias name="solo button: fill" alias="widget:bg"/>
+ <ColorAlias name="solo button: fill active" alias="alert:green"/>
+ <ColorAlias name="solo button: led active" alias="alert:green"/>
+ <ColorAlias name="solo isolate: fill" alias="widget:bg"/>
+ <ColorAlias name="solo isolate: fill active" alias="widget:bg"/>
+ <ColorAlias name="solo isolate: led active" alias="alert:ruddy"/>
+ <ColorAlias name="solo safe: fill" alias="widget:bg"/>
+ <ColorAlias name="solo safe: fill active" alias="widget:bg"/>
+ <ColorAlias name="solo safe: led active" alias="alert:ruddy"/>
+ <ColorAlias name="stereo panner bg" alias="theme:bg2"/>
+ <ColorAlias name="stereo panner fill" alias="widget:blue"/>
+ <ColorAlias name="stereo panner inverted bg" alias="widget:blue darker"/>
+ <ColorAlias name="stereo panner inverted fill" alias="theme:contrasting less"/>
+ <ColorAlias name="stereo panner inverted outline" alias="alert:ruddy"/>
+ <ColorAlias name="stereo panner inverted text" alias="neutral:backgroundest"/>
+ <ColorAlias name="stereo panner mono bg" alias="theme:bg2"/>
+ <ColorAlias name="stereo panner mono fill" alias="theme:bg"/>
+ <ColorAlias name="stereo panner mono outline" alias="alert:orange"/>
+ <ColorAlias name="stereo panner mono text" alias="neutral:backgroundest"/>
+ <ColorAlias name="stereo panner outline" alias="theme:bg"/>
+ <ColorAlias name="stereo panner rule" alias="theme:bg"/>
+ <ColorAlias name="stereo panner text" alias="neutral:backgroundest"/>
+ <ColorAlias name="stretch clock: background" alias="theme:bg2"/>
+ <ColorAlias name="stretch clock: cursor" alias="theme:contrasting alt"/>
+ <ColorAlias name="stretch clock: edited text" alias="theme:contrasting alt"/>
+ <ColorAlias name="stretch clock: text" alias="theme:contrasting clock"/>
+ <ColorAlias name="sync mark" alias="theme:contrasting clock"/>
+ <ColorAlias name="tempo bar" alias="neutral:background2"/>
+ <ColorAlias name="tempo curve" alias="widget:blue"/>
+ <ColorAlias name="tempo marker" alias="widget:orange"/>
+ <ColorAlias name="tempo marker music" alias="widget:orange"/>
+ <ColorAlias name="time axis frame" alias="neutral:backgroundest"/>
+ <ColorAlias name="time axis view item base" alias="widget:gray"/>
+ <ColorAlias name="time stretch fill" alias="theme:contrasting less"/>
+ <ColorAlias name="time stretch outline" alias="widget:gray"/>
+ <ColorAlias name="tracknumber label: fill" alias="theme:bg"/>
+ <ColorAlias name="tracknumber label: fill active" alias="neutral:background2"/>
+ <ColorAlias name="tracknumber label: led active" alias="alert:red"/>
+ <ColorAlias name="transport active option button: fill" alias="widget:bg"/>
+ <ColorAlias name="transport active option button: fill active" alias="alert:green"/>
+ <ColorAlias name="transport active option button: led active" alias="alert:green"/>
+ <ColorAlias name="transport button: fill" alias="widget:bg"/>
+ <ColorAlias name="transport button: fill active" alias="alert:green"/>
+ <ColorAlias name="transport button: led active" alias="alert:green"/>
+ <ColorAlias name="transport clock: background" alias="theme:bg2"/>
+ <ColorAlias name="transport clock: cursor" alias="theme:contrasting alt"/>
+ <ColorAlias name="transport clock: edited text" alias="theme:contrasting alt"/>
+ <ColorAlias name="transport clock: text" alias="theme:contrasting clock"/>
+ <ColorAlias name="transport delta clock: background" alias="theme:bg2"/>
+ <ColorAlias name="transport delta clock: cursor" alias="theme:contrasting alt"/>
+ <ColorAlias name="transport delta clock: edited text" alias="theme:contrasting alt"/>
+ <ColorAlias name="transport delta clock: text" alias="theme:contrasting alt"/>
+ <ColorAlias name="transport drag rect" alias="neutral:midground"/>
+ <ColorAlias name="transport loop rect" alias="widget:blue"/>
+ <ColorAlias name="transport marker bar" alias="neutral:background2"/>
+ <ColorAlias name="transport option button: fill" alias="widget:bg"/>
+ <ColorAlias name="transport option button: fill active" alias="widget:bg"/>
+ <ColorAlias name="transport option button: led active" alias="alert:green"/>
+ <ColorAlias name="transport punch rect" alias="widget:ruddy"/>
+ <ColorAlias name="transport recenable button: fill" alias="widget:bg"/>
+ <ColorAlias name="transport recenable button: fill active" alias="alert:ruddy"/>
+ <ColorAlias name="transport recenable button: led active" alias="alert:red"/>
+ <ColorAlias name="trim handle" alias="alert:blue"/>
+ <ColorAlias name="trim handle locked" alias="alert:ruddy"/>
+ <ColorAlias name="trim knob" alias="widget:bg"/>
+ <ColorAlias name="trim knob: arc end" alias="widget:blue"/>
+ <ColorAlias name="trim knob: arc start" alias="widget:blue"/>
+ <ColorAlias name="vari button: fill" alias="widget:bg"/>
+ <ColorAlias name="vari button: fill active" alias="alert:ruddy"/>
+ <ColorAlias name="vca assign button: fill" alias="widget:bg"/>
+ <ColorAlias name="verbose canvas cursor" alias="theme:contrasting clock"/>
+ <ColorAlias name="video timeline bar" alias="neutral:background2"/>
+ <ColorAlias name="waveform fill" alias="neutral:background"/>
+ <ColorAlias name="waveform outline" alias="neutral:backgroundest"/>
+ <ColorAlias name="zero line" alias="neutral:background"/>
+ <ColorAlias name="zoom button: fill" alias="widget:bg"/>
+ <ColorAlias name="zoom button: fill active" alias="alert:green"/>
+ <ColorAlias name="zoom button: led active" alias="alert:green"/>
+ </ColorAliases>
+ <Modifiers>
+ <Modifier name="audio bus base" modifier="= alpha:0.29734219269102991"/>
+ <Modifier name="audio track base" modifier="= alpha:0.30066445182724255"/>
+ <Modifier name="automation line fill" modifier="= alpha:0.29999999999999999"/>
+ <Modifier name="automation track fill" modifier="= alpha:0.29999999999999999"/>
+ <Modifier name="covered region base" modifier="= alpha:0.69999999999999996"/>
+ <Modifier name="crossfade alpha" modifier="= alpha:0.18029999999999999"/>
+ <Modifier name="dragging region" modifier="= alpha:0.5"/>
+ <Modifier name="editable region" modifier="= alpha:0.25"/>
+ <Modifier name="gain line inactive" modifier="= alpha:0.77249999999999996"/>
+ <Modifier name="ghost track base" modifier="= alpha:0.64078199999999996"/>
+ <Modifier name="ghost track midi fill" modifier="= alpha:0.29999999999999999"/>
+ <Modifier name="grid line" modifier="= alpha:1"/>
+ <Modifier name="inactive crossfade" modifier="= alpha:0.46660000000000001"/>
+ <Modifier name="loop rectangle" modifier="= alpha:0.5"/>
+ <Modifier name="marker bar" modifier="= alpha:0.5"/>
+ <Modifier name="midi note" modifier="= alpha:0.80000000000000004"/>
+ <Modifier name="midi note velocity text" modifier="= alpha:0.46660000000000001"/>
+ <Modifier name="midi patch change fill" modifier="= alpha:0.62739999999999996"/>
+ <Modifier name="midi sysex fill" modifier="= alpha:0.46660000000000001"/>
+ <Modifier name="midi track base" modifier="= alpha:0.29999999999999999"/>
+ <Modifier name="mono panner position fill" modifier="= alpha:0.80000000000000004"/>
+ <Modifier name="panner fill" modifier="= alpha:0.78405315614617943"/>
+ <Modifier name="piano roll black" modifier="= alpha:0.20000000000000001"/>
+ <Modifier name="piano roll white" modifier="= alpha:0.20000000000000001"/>
+ <Modifier name="recording rect" modifier="= alpha:0.25538971807628524"/>
+ <Modifier name="region alpha" modifier="= alpha:1"/>
+ <Modifier name="region mark" modifier="= alpha:1"/>
+ <Modifier name="scroomer alpha" modifier="= alpha:0.25"/>
+ <Modifier name="selected midi note" modifier="= alpha:0.75290000000000001"/>
+ <Modifier name="selection rect" modifier="= alpha:0.1111111111111111"/>
+ <Modifier name="silence" modifier="= alpha:0.47839999999999999"/>
+ <Modifier name="stereo panner inverted" modifier="= alpha:0.78820000000000001"/>
+ <Modifier name="stereo panner inverted bg" modifier="= alpha:0.75290000000000001"/>
+ <Modifier name="time axis view item base" modifier="= alpha:0.69999999999999996"/>
+ <Modifier name="time stretch fill" modifier="= alpha:0.5"/>
+ <Modifier name="transparent region base" modifier="= alpha:0.81727574750830567"/>
+ <Modifier name="verbose canvas cursor" modifier="= alpha:0.46660000000000001"/>
+ </Modifiers>
+</Ardour>
diff --git a/.config/cmus/rc b/.config/cmus/rc
new file mode 100644
index 0000000..b7dcde5
--- /dev/null
+++ b/.config/cmus/rc
@@ -0,0 +1,71 @@
+bind -f common > player-next
+bind -f common B player-next-album
+bind -f common space player-pause
+bind -f common < player-prev
+bind -f common Z player-prev-album
+bind -f common backspace player-stop
+
+bind -f common b seek -5
+bind -f common f seek +5
+bind -f common h seek -5
+bind -f common l seek +5
+bind -f common J seek -1m
+bind -f common K seek +1m
+
+bind -f common 9 vol -5%
+bind -f common 0 vol +5%
+bind -f common - vol -5%
+bind -f common + vol +5%
+bind -f common = vol +5%
+
+bind -f common x win-remove
+bind -f common D win-remove
+bind -f common d win-remove
+bind -f common delete win-remove
+
+bind -f common A win-add-Q
+bind -f common a win-add-q
+bind -f common e win-add-l
+
+bind -f common v win-toggle
+bind -f common enter win-toggle
+
+fset grunge=genre="Grunge"
+
+set set_term_title=false
+set stop_after_queue=true
+set status_display_program=/usr/local/bin/cmus-notify
+
+set color_error=red
+set color_info=default
+set color_separator=black
+set color_statusline_bg=black
+set color_statusline_fg=yellow
+set color_statusline_progress_bg=black
+set color_statusline_progress_fg=yellow
+set color_titleline_attr=bold
+set color_titleline_bg=black
+set color_titleline_fg=yellow
+set color_trackwin_album_attr=bold
+set color_trackwin_album_bg=default
+set color_trackwin_album_fg=default
+set color_win_bg=default
+set color_win_cur_attr=bold
+set color_win_cur=red
+set color_win_cur_sel_attr=bold
+set color_win_cur_sel_bg=black
+set color_win_cur_sel_fg=red
+set color_win_sel_attr=default
+set color_win_sel_bg=black
+set color_win_sel_fg=default
+set color_win_dir=lightblue
+set color_win_fg=gray
+set color_win_inactive_cur_sel_attr=default
+set color_win_inactive_cur_sel_bg=darkgray
+set color_win_inactive_cur_sel_fg=default
+set color_win_inactive_sel_attr=default
+set color_win_inactive_sel_bg=black
+set color_win_inactive_sel_fg=gray
+set color_win_title_attr=bold
+set color_win_title_bg=black
+set color_win_title_fg=yellow
diff --git a/.config/dunst/dunstrc b/.config/dunst/dunstrc
index 5171744..8fce8b8 100644
--- a/.config/dunst/dunstrc
+++ b/.config/dunst/dunstrc
@@ -1,16 +1,16 @@
[global]
- monitor = 1
+ monitor = 0
follow = none
width = (200, 800)
origin = top-right
- offset = 50x50
+ offset = (0, 0)
indicate_hidden = yes
shrink = yes
transparency = 0
separator_height = 4
- padding = 2
+ padding = 6
horizontal_padding = 10
- frame_width = 2
+ frame_width = 2
close = ctrl+space
history = ctrl+grave
context = ctrl+shift+period
@@ -27,7 +27,7 @@
sort = yes
idle_threshold = 0
- font = "BigBlueTermPlus Nerd Font 16"
+ font = "BlexMono Nerd Font Medium 18"
# font = "NotoSans Nerd Font 17"
line_height = 0
markup = full
@@ -75,23 +75,29 @@
[urgency_low]
# IMPORTANT: colors have to be defined in quotation marks.
# Otherwise the "#" and following would be interpreted as a comment.
- background = "#32302f"
- foreground = "#b8a994"
- frame_color = "#887964"
+ background = "#1d2021"
+ foreground = "#a89984"
+ frame_color = "#a89984"
+ highlight = "#458588"
timeout = 10
# Icon for notifications with low urgency, uncomment to enable
#icon = /path/to/icon
[urgency_normal]
- background = "#cc241d"
- foreground = "#ebdbb2"
- frame_color = "#ebdbb2"
+ background = "#1d2021"
+ foreground = "#d79921"
+ frame_color = "#d79921"
+ #foreground = "#fb4934"
+ #frame_color = "#fb4934"
timeout = 10
[urgency_critical]
- background = "#cc241d"
- foreground = "#ebdbb2"
- frame_color = "#b77901"
+ background = "#1d2021"
+ foreground = "#cc241d"
+ frame_color = "#cc241d"
+ #background = "#cc241d"
+ #foreground = "#1d2021"
+ #frame_color = "#1d2021"
timeout = 20
# Every section that isn't one of the above is interpreted as a rules to
diff --git a/.config/env b/.config/env
index afc6d1d..83b78ac 100644
--- a/.config/env
+++ b/.config/env
@@ -12,6 +12,7 @@
# ========================
unset MAILCHECK
+
# xdg
export XDG_DATA_HOME="$HOME"/.local/share
export XDG_CONFIG_HOME="$HOME"/.config
@@ -25,6 +26,7 @@ export XDG_MUSIC_DIR="$HOME"/mu
export XDG_PICTURES_DIR="$HOME"/pics
export XDG_VIDEOS_DIR="$HOME"/vids
export XDG_RUNTIME_DIR=/var/run/"$USER"
+
# Apps
export EDITOR='nvim'
export VISUAL="${EDITOR}"
@@ -37,10 +39,10 @@ export FILE='lf'
# UTF-8
export CHARSET='UTF-8'
-export LANG='en_US.UTF-8'
-# export LANG='C'
+export LC_ALL=en_US.UTF-8
export LC_COLLATE='C'
-export LC_ALL=''
+export LC_CTYPE=en_US.UTF-8
+export LANG=en_US.UTF-8
# Cleanup
export ANDROID_SDK_HOME="$XDG_CONFIG_HOME"/android
@@ -79,6 +81,7 @@ export WGETRC="$XDG_CONFIG_HOME"/wgetrc
export WINEPREFIX="$XDG_DATA_HOME"/wineprefixes/default
export W3M_DIR="$XDG_STATE_HOME"/w3m
+# Xorg
export XINITRC="$XDG_CONFIG_HOME"/x11/xinitrc
export XSERVERRC="$XDG_CONFIG_HOME"/x11/xserverrc
export _Z_DATA="$XDG_DATA_HOME"/z
@@ -96,10 +99,21 @@ export FZF_DEFAULT_COMMAND='fd -i -H -c never -j9 -E .git -E dotfiles-bsd -E .cc
export FZF_DEFAULT_OPTS='--height 60% --layout=reverse --border=left --tabstop=4'
export LESS='-R -c -S'
export MPD_HOST="$XDG_DATA_HOME"/mpd/socket
+export NNN_OPTS='aAdcrRQx'
+export NNN_COLORS='4132'
+export NNN_FCOLORS='030304020005060801ac0507'
+export NNN_ARCHIVE="\\.(7z|a|ace|alz|arc|arj|bz|bz2|cab|cpio|deb|gz|jar|lha|lz|lzh|lzma|lzo|rar|rpm|rz|t7z|tar|tbz|tbz2|tgz|tlz|txz|tZ|tzo|war|xpi|xz|Z|zip)$"
+export NNN_TERMINAL=$TERMINAL
+export NNN_PAGER='less'
+export NNN_BATTHEME='gruvbox-dark'
+export NNN_BATSTYLE='plain'
+export NNN_PREVIEWIMGPROG='icat'
+export NNN_PREVIEWVIDEO='tct'
+export NNN_ICONLOOKUP=0
+export NNN_PLUG='t:joe_fzfcd;p:-preview-tui;s:-!gdu -s;f:-fzopen;c:-joe_clipper;d:-joe_dragdrop'
export RUSTFLAGS='-L /usr/local/lib'
export WWW_HOME='https://start.duckduckgo.com/'
export YTFZF_HIST='0'
-export WLR_DRM_NO_ATOMIC=1
# PATH
export PATH="$HOME"/.local/bin:"$HOME"/.local/bin/status:/usr/local/llvm13/bin:"$HOME"/.pyenv/bin:"$PATH"
diff --git a/.config/fontconfig/fonts.conf b/.config/fontconfig/fonts.conf
index 3c11d8e..dbced38 100644
--- a/.config/fontconfig/fonts.conf
+++ b/.config/fontconfig/fonts.conf
@@ -4,19 +4,19 @@
<alias>
<family>serif</family>
<prefer>
- <family>DejaVu Serif</family>
+ <family>BlexMono Nerd Font Text</family>
</prefer>
</alias>
<alias>
<family>sans-serif</family>
<prefer>
- <family>DejaVu Sans</family>
+ <family>BlexMono Nerd Font Text</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
- <family>Terminess Nerd Font</family>
+ <family>BlexMono Nerd Font</family>
</prefer>
</alias>
</fontconfig>
diff --git a/.config/go2work/go2work.toml b/.config/go2work/go2work.toml
index d0ea976..16405b7 100644
--- a/.config/go2work/go2work.toml
+++ b/.config/go2work/go2work.toml
@@ -3,25 +3,25 @@
# is set to 'true'
files = [
# '/home/jozan/mu/rock/grunge/alice_in_chains/1992_dirt/01_them_bones.flac',
- # '/var/hdd/files/mu/rock/grunge/pearl_jam/2020_mtv_unplugged_live/02_state_of_love_and_trust.flac',
- # '/home/jozan/mu/rock/stoner_rock/slo_burn/1997_amusing_the_amazing_ep/02_muezli.flac'
+ # '/home/jozan/mu/rock/grunge/pearl_jam/2020_mtv_unplugged_live/02_state_of_love_and_trust.flac',
+ # '/home/jozan/mu/rock/stoner_rock/slo_burn/1997_amusing_the_amazing_ep/02_muezli.flac'
# '/home/jozan/mu/rock/stoner_rock/slo_burn/1997_amusing_the_amazing_ep/03_pilot_the_dune.flac'
- # '/usr/local/hdd/jozan/dl/Songs Of Anarchy/2015 Songs of Anarchy:Vol. 4 (US, 88875 06146 2)/05 Billy Valentine & The Forest Rangers - All Along The Watchtower.flac',
- # 'dl/Songs Of Anarchy/2011 Songs of Anarchy:Music From Sons of Anarchy Seasons 1-4 (US, 88691 91432 2)/09 Paul Brady & The Forest Rangers - Gimme Shelter.flac',
# '/home/jozan/mu/ost/mick_gordon/2020_doom_eternal_original_game_soundtrack/54_meathook.flac',
+ '/home/jozan/mu/ost/mick_gordon/2020_doom_eternal_original_game_soundtrack/02_cultist_base.flac',
# '/home/jozan/mu/rock/punk/guerilla_poubelle/2007_punk_existentialisme/10_dans_la_diagonale.flac',
- # '/var/hdd/files/mu/rock/punk/guerilla_poubelle/2005_il_faut_repeindre_le_monde_en_noir/15_exception_culturelle_trafic_darmes.flac',
+ # '/home/jozan/mu/rock/punk/guerilla_poubelle/2005_il_faut_repeindre_le_monde_en_noir/15_exception_culturelle_trafic_darmes.flac',
# '/home/jozan/mu/ost/mick_gordon/2020_doom_eternal_original_game_soundtrack/21_the_super_gore_nest.flac',
# '/home/jozan/16-441/06_conflagration.wav',
# '/home/jozan/mu/progressive/progressive_black_metal/deathspell_omega/2010_paracletus/02_wings_of_predation.flac',
# '/home/jozan/mu/metal/technical_death_metal/gojira/2016_magma/04_stranded.flac',
- '/home/jozan/mu/metal/technical_death_metal/gojira/2005_form_mars_to_sirius/02_backbone.flac',
+ # '/home/jozan/mu/metal/technical_death_metal/gojira/2005_form_mars_to_sirius/02_backbone.flac',
# '/usr/home/jozan/mu/metal/technical_death_metal/ulcerate/2011_the_destroyers_of_all/07_the_destroyers_of_all.flac',
- #'/home/jozan/mu/rock/grunge/nirvana/2011_nevermind_20th_anniversary_deluxe_edition/cd_1/04_breed.flac',
+ # '/home/jozan/mu/rock/grunge/nirvana/2011_nevermind_20th_anniversary_deluxe_edition/cd_1/04_breed.flac',
# '/home/jozan/mu/rock/grunge/alice_in_chains/1990_facelift/02_man_in_the_box.flac',
- # '/var/hdd/files/mu/rock/grunge/alice_in_chains/1992_dirt/11_angry_chair.flac',
- # '/var/hdd/files/mu/rock/grunge/soundgarden/1994_superunknown/04_mailman.flac',
- # '/var/hdd/files/mu/rock/grunge/nirvana/2005_sliver_the_best_of_the_box_compilation/03_mrs._butterworth_rehearsal_demo.flac',
+ # '/home/jozan/mu/rock/grunge/alice_in_chains/1992_dirt/11_angry_chair.flac',
+ # '/home/jozan/mu/rock/grunge/alice_in_chains/1995_alice_in_chains/08_god_am.flac',
+ # '/home/jozan/mu/rock/grunge/soundgarden/1994_superunknown/04_mailman.flac',
+ # '/home/jozan/mu/rock/grunge/nirvana/2005_sliver_the_best_of_the_box_compilation/03_mrs._butterworth_rehearsal_demo.flac',
# '/home/jozan/mu/rock/grunge/nirvana/2009_bleach_20th_anniversary_deluxe_edition/04_school.flac',
]
# The program used to play the music files
diff --git a/.config/gtk-2.0/gtkrc b/.config/gtk-2.0/gtkrc
index cd86bd6..a351cdd 100644
--- a/.config/gtk-2.0/gtkrc
+++ b/.config/gtk-2.0/gtkrc
@@ -1,11 +1,11 @@
# DO NOT EDIT! This file will be overwritten by LXAppearance.
# Any customization should be done in ~/.gtkrc-2.0.mine instead.
-include "/home/r_bousset/.gtkrc-2.0.mine"
+include "/home/jozan/.gtkrc-2.0.mine"
gtk-theme-name="Gruvbox-Dark-B"
-gtk-icon-theme-name="Gruvbox_Dark"
+gtk-icon-theme-name="gruvbox_dark"
gtk-font-name="sans-serif 12"
-gtk-cursor-theme-name="Adwaita"
+gtk-cursor-theme-name="Simp1e-Gruvbox-Dark"
gtk-cursor-theme-size=0
gtk-toolbar-style=GTK_TOOLBAR_ICONS
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
diff --git a/.config/gtk-3.0/bookmarks b/.config/gtk-3.0/bookmarks
index 890783e..250526a 100644
--- a/.config/gtk-3.0/bookmarks
+++ b/.config/gtk-3.0/bookmarks
@@ -6,3 +6,4 @@ file:///mnt mnt
file:///home/jozan/docs/nextcloud
file:///home/jozan/hdd/zhinu
file:///home/jozan/hdd/files/zhinu
+file:///var/dev/fat/zhinu/
diff --git a/.config/gtk-3.0/settings.ini b/.config/gtk-3.0/settings.ini
index 6f157b0..80c2700 100644
--- a/.config/gtk-3.0/settings.ini
+++ b/.config/gtk-3.0/settings.ini
@@ -1,14 +1,14 @@
[Settings]
gtk-application-prefer-dark-theme=false
gtk-button-images=0
-gtk-cursor-theme-name=Adwaita
+gtk-cursor-theme-name=Simp1e-Gruvbox-Dark
gtk-cursor-theme-size=0
gtk-decoration-layout=icon:minimize,maximize,close
gtk-enable-animations=true
gtk-enable-event-sounds=1
gtk-enable-input-feedback-sounds=1
gtk-font-name=sans-serif 12
-gtk-icon-theme-name=Gruvbox_Dark
+gtk-icon-theme-name=gruvbox_dark
gtk-menu-images=0
gtk-primary-button-warps-slider=false
gtk-theme-name=Gruvbox-Dark-B
diff --git a/.config/lazygit/config.yml b/.config/lazygit/config.yml
new file mode 100644
index 0000000..9c9e8a9
--- /dev/null
+++ b/.config/lazygit/config.yml
@@ -0,0 +1,8 @@
+gui:
+ border: single
+ theme:
+ activeBorderColor:
+ - red
+ - bold
+ selectedLineBgColor:
+ - black
diff --git a/.config/lf/colors b/.config/lf/colors
new file mode 100644
index 0000000..1f1d4a8
--- /dev/null
+++ b/.config/lf/colors
@@ -0,0 +1,174 @@
+# vim:ft=dircolors
+# (This is not a dircolors file but it helps to highlight colors and comments)
+
+# default values from dircolors
+# (entries with a leading # are not implemented in lf)
+# #no 00 # NORMAL
+# fi 00 # FILE
+# #rs 0 # RESET
+# di 01;34 # DIR
+# ln 01;36 # LINK
+# #mh 00 # MULTIHARDLINK
+# pi 40;33 # FIFO
+# so 01;35 # SOCK
+# #do 01;35 # DOOR
+# bd 40;33;01 # BLK
+# cd 40;33;01 # CHR
+# or 40;31;01 # ORPHAN
+# #mi 00 # MISSING
+# su 37;41 # SETUID
+# sg 30;43 # SETGID
+# #ca 30;41 # CAPABILITY
+# tw 30;42 # STICKY_OTHER_WRITABLE
+# ow 34;42 # OTHER_WRITABLE
+# st 37;44 # STICKY
+# ex 01;32 # EXEC
+
+# default values from lf (with matching order)
+# ln 01;36 # LINK
+# or 31;01 # ORPHAN
+# tw 01;34 # STICKY_OTHER_WRITABLE
+# ow 01;34 # OTHER_WRITABLE
+# st 01;34 # STICKY
+# di 01;34 # DIR
+# pi 33 # FIFO
+# so 01;35 # SOCK
+# bd 33;01 # BLK
+# cd 33;01 # CHR
+# su 01;32 # SETUID
+# sg 01;32 # SETGID
+# ex 01;32 # EXEC
+# fi 00 # FILE
+
+# file types (with matching order)
+ln 01;36 # LINK
+or 31;01 # ORPHAN
+tw 34 # STICKY_OTHER_WRITABLE
+ow 34 # OTHER_WRITABLE
+st 01;34 # STICKY
+di 01;34 # DIR
+pi 33 # FIFO
+so 01;35 # SOCK
+bd 33;01 # BLK
+cd 33;01 # CHR
+su 01;32 # SETUID
+sg 01;32 # SETGID
+ex 01;32 # EXEC
+fi 00 # FILE
+
+# archives or compressed (dircolors defaults)
+*.tar 00;31
+*.tgz 00;31
+*.arc 00;31
+*.arj 00;31
+*.taz 00;31
+*.lha 00;31
+*.lz4 00;31
+*.lzh 00;31
+*.lzma 00;31
+*.tlz 00;31
+*.txz 00;31
+*.tzo 00;31
+*.t7z 00;31
+*.zip 00;31
+*.z 00;31
+*.dz 00;31
+*.gz 00;31
+*.lrz 00;31
+*.lz 00;31
+*.lzo 00;31
+*.xz 00;31
+*.zst 00;31
+*.tzst 00;31
+*.bz2 00;31
+*.bz 00;31
+*.tbz 00;31
+*.tbz2 00;31
+*.tz 00;31
+*.deb 00;31
+*.rpm 00;31
+*.jar 00;31
+*.war 00;31
+*.ear 00;31
+*.sar 00;31
+*.rar 00;31
+*.alz 00;31
+*.ace 00;31
+*.zoo 00;31
+*.cpio 00;31
+*.7z 00;31
+*.rz 00;31
+*.cab 00;31
+*.wim 00;31
+*.swm 00;31
+*.dwm 00;31
+*.esd 00;31
+
+# image formats (dircolors defaults)
+*.jpg 00;35
+*.jpeg 00;35
+*.mjpg 00;35
+*.mjpeg 00;35
+*.gif 00;35
+*.bmp 00;35
+*.pbm 00;35
+*.pgm 00;35
+*.ppm 00;35
+*.tga 00;35
+*.xbm 00;35
+*.xpm 00;35
+*.tif 00;35
+*.tiff 00;35
+*.png 00;35
+*.svg 00;35
+*.svgz 00;35
+*.mng 00;35
+*.pcx 00;35
+*.mov 00;35
+*.mpg 00;35
+*.mpeg 00;35
+*.m2v 00;35
+*.mkv 00;35
+*.webm 00;35
+*.ogm 00;35
+*.mp4 00;35
+*.m4v 00;35
+*.mp4v 00;35
+*.vob 00;35
+*.qt 00;35
+*.nuv 00;35
+*.wmv 00;35
+*.asf 00;35
+*.rm 00;35
+*.rmvb 00;35
+*.flc 00;35
+*.avi 00;35
+*.fli 00;35
+*.flv 00;35
+*.gl 00;35
+*.dl 00;35
+*.xcf 00;35
+*.xwd 00;35
+*.yuv 00;35
+*.cgm 00;35
+*.emf 00;35
+*.ogv 00;35
+*.ogx 00;35
+
+# audio formats (dircolors defaults)
+*.aac 00;36
+*.au 00;36
+*.flac 00;36
+*.m4a 00;36
+*.mid 00;36
+*.midi 00;36
+*.mka 00;36
+*.mp3 00;36
+*.mpc 00;36
+*.ogg 00;36
+*.ra 00;36
+*.wav 00;36
+*.oga 00;36
+*.opus 00;36
+*.spx 00;36
+*.xspf 00;36
diff --git a/.config/lf/lfrc b/.config/lf/lfrc
index 19653c1..5565b0b 100644
--- a/.config/lf/lfrc
+++ b/.config/lf/lfrc
@@ -14,11 +14,6 @@ set previewer '~/.config/lf/scope'
# cmds/functions
cmd open ${{
- if [ -n "$WAYLAND_DISPLAY" ]; then
- IMAGER=imv
- else
- IMAGER="nsxiv -aibo"
- fi
case $(file --mime-type "$(readlink -f $f)" -b) in
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet) localc $fx ;;
application/vnd.openxmlformats-officedocument.wordprocessingml.document) docx2txt $f | $PAGER ;;
@@ -30,7 +25,7 @@ cmd open ${{
image/svg+xml) display -- $f ;;
image/*)
rotdir $f | grep -i "\.\(png\|jpg\|jpeg\|gif\|webp\|tif\|ico\)\(_large\)*$" |
- $IMAGER 2>/dev/null | while read -r file; do
+ nsxiv -aibof 2>/dev/null | while read -r file; do
[ -z "$file" ] && continue
lf -remote "send select \"$file\""
lf -remote "send toggle"
@@ -73,6 +68,7 @@ map <c-s> $$SHELL
map <c-n> push :mkdir<space>
map <f-7> push :mkdir<space>
map <c-r> reload
+map <c-g> clear
cmap <c-g> cmd-escape
map x !$f
map X $$f
diff --git a/.config/mimeapps.list b/.config/mimeapps.list
index af1787d..63e0cbf 100644
--- a/.config/mimeapps.list
+++ b/.config/mimeapps.list
@@ -1,8 +1,7 @@
[Default Applications]
x-scheme-handler/http=userapp-Firefox-SWW0Y1.desktop
x-scheme-handler/https=userapp-Firefox-SWW0Y1.desktop
-x-scheme-handler/ftp=librewolf.desktop
-image/png=sxiv.desktop
+x-scheme-handler/ftp=userapp-Firefox-SWW0Y1.desktop
x-scheme-handler/chrome=userapp-Firefox-SWW0Y1.desktop
text/html=userapp-Firefox-SWW0Y1.desktop
application/x-extension-htm=userapp-Firefox-SWW0Y1.desktop
@@ -11,9 +10,11 @@ application/x-extension-shtml=userapp-Firefox-SWW0Y1.desktop
application/xhtml+xml=userapp-Firefox-SWW0Y1.desktop
application/x-extension-xhtml=userapp-Firefox-SWW0Y1.desktop
application/x-extension-xht=userapp-Firefox-SWW0Y1.desktop
-application/pdf=org.pwmt.zathura-pdf-poppler.desktop
-image/jpeg=sxiv.desktop
-image/gif=nsxiv.desktop
+application/pdf=org.pwmt.zathura.desktop
+image/png=nsxiv-joe.desktop
+image/jpeg=nsxiv-joe.desktop
+image/gif=nsxiv-joe.desktop
+image/webp=nsxiv-joe.desktop
audio/mpeg=mpv.desktop
audio/flac=mpv.desktop
audio/wav=mpv.desktop
@@ -27,18 +28,19 @@ video/ogg=mpv.desktop
video/webm=mpv.desktop
inode/directory=pcmanfm.desktop
text/plain=nvim.desktop
-application/x-shellscript=emacs.desktop
-text/english=emacs.desktop
-text/x-c=emacs.desktop
-text/x-c++=emacs.desktop
-text/x-c++hdr=emacs.desktop
-text/x-c++src=emacs.desktop
-text/x-chdr=emacs.desktop
-text/x-csrc=emacs.desktop
-text/x-java=emacs.desktop
-text/x-makefile=emacs.desktop
-text/x-readme=emacs.desktop
-text/x-tcl=emacs.desktop
+application/x-shellscript=nvim.desktop
+text/english=nvim.desktop
+text/x-c=nvim.desktop
+text/x-c++=nvim.desktop
+text/x-c++hdr=nvim.desktop
+text/x-c++src=nvim.desktop
+text/x-chdr=nvim.desktop
+text/x-csrc=nvim.desktop
+text/x-java=nvim.desktop
+text/x-makefile=nvim.desktop
+text/x-readme=nvim.desktop
+text/x-tcl=nvim.desktop
+text/x-perl=bat-joe.desktop
x-scheme-handler/msteams=teams.desktop
video/mp4=mpv.desktop
application/zip=xarchiver.desktop
@@ -54,35 +56,4 @@ video/quicktime=mpv.desktop
x-scheme-handler/forticlient=FortiClient.desktop
x-scheme-handler/discord-460807638964371468=discord-460807638964371468.desktop
x-scheme-handler/discord=vesktop.desktop
-
-[Added Associations]
-x-scheme-handler/https=userapp-Firefox-NVLWI0.desktop;librewolf.desktop;firefox.desktop;userapp-Firefox-SWW0Y1.desktop;
-x-scheme-handler/ftp=userapp-Firefox-NVLWI0.desktop;
-x-scheme-handler/chrome=userapp-Firefox-NVLWI0.desktop;firefox.desktop;userapp-Firefox-SWW0Y1.desktop;
-text/html=emacs.desktop;userapp-Firefox-NVLWI0.desktop;firefox.desktop;userapp-Firefox-SWW0Y1.desktop;
-application/x-extension-htm=userapp-Firefox-NVLWI0.desktop;firefox.desktop;userapp-Firefox-SWW0Y1.desktop;
-application/x-extension-html=userapp-Firefox-NVLWI0.desktop;firefox.desktop;userapp-Firefox-SWW0Y1.desktop;
-application/x-extension-shtml=userapp-Firefox-NVLWI0.desktop;firefox.desktop;userapp-Firefox-SWW0Y1.desktop;
-application/xhtml+xml=userapp-Firefox-NVLWI0.desktop;firefox.desktop;userapp-Firefox-SWW0Y1.desktop;
-application/x-extension-xhtml=userapp-Firefox-NVLWI0.desktop;firefox.desktop;userapp-Firefox-SWW0Y1.desktop;
-application/x-extension-xht=userapp-Firefox-NVLWI0.desktop;firefox.desktop;userapp-Firefox-SWW0Y1.desktop;
-application/pdf=org.pwmt.zathura-pdf-mupdf.desktop;org.pwmt.zathura-pdf-poppler.desktop;
-video/webm=mpv.desktop;
-text/plain=nvim.desktop;vim.desktop;org.gnome.gedit.desktop;
-video/mp4=mpv.desktop;
-application/zip=xarchiver.desktop;org.gnome.Nautilus.desktop;
-video/x-matroska=mpv.desktop;
-application/x-partial-download=mpv.desktop;
-video/x-ms-wmv=mpv.desktop;
-image/png=userapp-nsxiv -b -a-NUYH01.desktop;userapp-nsxiv -b -a-8PYC01.desktop;sxiv.desktop;userapp-nsxiv -b -a-25V8Z1.desktop;nsxiv.desktop;
-application/x-ms-dos-executable=wine.desktop;
-application/octet-stream=nvim.desktop;
-x-scheme-handler/mailto=userapp-Thunderbird-SJ2821.desktop;userapp-Thunderbird-BXARX2.desktop;
-x-scheme-handler/mid=userapp-Thunderbird-SJ2821.desktop;userapp-Thunderbird-BXARX2.desktop;
-video/x-msvideo=mpv.desktop;
-x-scheme-handler/http=firefox.desktop;userapp-Firefox-SWW0Y1.desktop;
-video/quicktime=mpv.desktop;
-image/jpeg=sxiv.desktop;
-
-[Removed Associations]
-x-scheme-handler/http=librewolf.desktop;
+application/octet-stream=nvim.desktop
diff --git a/.config/mpv/mpv.conf b/.config/mpv/mpv.conf
index fbb1019..749a32a 100644
--- a/.config/mpv/mpv.conf
+++ b/.config/mpv/mpv.conf
@@ -1,4 +1,9 @@
-video-sync=display-resample
+# video-sync=display-resample
+vo=gpu
osc=yes
-demuxer-max-bytes=1GiB
+cache=yes
+demuxer-max-bytes=4GiB
+demuxer-max-back-bytes=4GiB
+ytdl=yes
script-opts=ytdl_hook-ytdl_path=yt-dlp,ytdl_hook-try_ytdl_first=yes,ytdl_hook-exclude="%.webm$|%.ts$|%.mp3$|%.m3u8$|%.m3u$|%.mkv$|%.mp4$|%.VOB$"
+term-osd-bar=yes
diff --git a/.config/mpv/scripts/mpv_thumbnail_script_server-1.lua b/.config/mpv/scripts/mpv_thumbnail_script_server-1.lua
deleted file mode 100644
index a91db76..0000000
--- a/.config/mpv/scripts/mpv_thumbnail_script_server-1.lua
+++ /dev/null
@@ -1,815 +0,0 @@
---[[
- Copyright (C) 2017 AMM
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-]]--
---[[
- mpv_thumbnail_script.lua 0.5.3 - commit 6b42232 (branch master)
- https://github.com/TheAMM/mpv_thumbnail_script
- Built on 2023-10-19 11:12:04
-]]--
-local assdraw = require 'mp.assdraw'
-local msg = require 'mp.msg'
-local opt = require 'mp.options'
-local utils = require 'mp.utils'
-
--- Determine if the platform is Windows --
-ON_WINDOWS = (package.config:sub(1,1) ~= '/')
-
--- Determine if the platform is MacOS --
-local uname = io.popen("uname -s"):read("*l")
-ON_MAC = not ON_WINDOWS and (uname == "Mac" or uname == "Darwin")
-
--- Some helper functions needed to parse the options --
-function isempty(v) return not v or (v == "") or (v == 0) or (type(v) == "table" and not next(v)) end
-
-function divmod (a, b)
- return math.floor(a / b), a % b
-end
-
--- Better modulo
-function bmod( i, N )
- return (i % N + N) % N
-end
-
-function join_paths(...)
- local sep = ON_WINDOWS and "\\" or "/"
- local result = "";
- for i, p in pairs({...}) do
- if p ~= "" then
- if is_absolute_path(p) then
- result = p
- else
- result = (result ~= "") and (result:gsub("[\\"..sep.."]*$", "") .. sep .. p) or p
- end
- end
- end
- return result:gsub("[\\"..sep.."]*$", "")
-end
-
--- /some/path/file.ext -> /some/path, file.ext
-function split_path( path )
- local sep = ON_WINDOWS and "\\" or "/"
- local first_index, last_index = path:find('^.*' .. sep)
-
- if not last_index then
- return "", path
- else
- local dir = path:sub(0, last_index-1)
- local file = path:sub(last_index+1, -1)
-
- return dir, file
- end
-end
-
-function is_absolute_path( path )
- local tmp, is_win = path:gsub("^[A-Z]:\\", "")
- local tmp, is_unix = path:gsub("^/", "")
- return (is_win > 0) or (is_unix > 0)
-end
-
-function Set(source)
- local set = {}
- for _, l in ipairs(source) do set[l] = true end
- return set
-end
-
----------------------------
--- More helper functions --
----------------------------
-
--- Removes all keys from a table, without destroying the reference to it
-function clear_table(target)
- for key, value in pairs(target) do
- target[key] = nil
- end
-end
-function shallow_copy(target)
- local copy = {}
- for k, v in pairs(target) do
- copy[k] = v
- end
- return copy
-end
-
--- Rounds to given decimals. eg. round_dec(3.145, 0) => 3
-function round_dec(num, idp)
- local mult = 10^(idp or 0)
- return math.floor(num * mult + 0.5) / mult
-end
-
-function file_exists(name)
- local f = io.open(name, "rb")
- if f then
- local ok, err, code = f:read(1)
- io.close(f)
- return not code
- else
- return false
- end
-end
-
-function path_exists(name)
- local f = io.open(name, "rb")
- if f then
- io.close(f)
- return true
- else
- return false
- end
-end
-
-function create_directories(path)
- local cmd
- if ON_WINDOWS then
- cmd = { args = {"cmd", "/c", "mkdir", path} }
- else
- cmd = { args = {"mkdir", "-p", path} }
- end
- utils.subprocess(cmd)
-end
-
--- Find an executable in PATH or CWD with the given name
-function find_executable(name)
- local delim = ON_WINDOWS and ";" or ":"
-
- local pwd = os.getenv("PWD") or utils.getcwd()
- local path = os.getenv("PATH")
-
- local env_path = pwd .. delim .. path -- Check CWD first
-
- local result, filename
- for path_dir in env_path:gmatch("[^"..delim.."]+") do
- filename = join_paths(path_dir, name)
- if file_exists(filename) then
- result = filename
- break
- end
- end
-
- return result
-end
-
-local ExecutableFinder = { path_cache = {} }
--- Searches for an executable and caches the result if any
-function ExecutableFinder:get_executable_path( name, raw_name )
- name = ON_WINDOWS and not raw_name and (name .. ".exe") or name
-
- if not self.path_cache[name] then
- self.path_cache[name] = find_executable(name) or false
- end
- return self.path_cache[name]
-end
-
--- Format seconds to HH.MM.SS.sss
-function format_time(seconds, sep, decimals)
- decimals = decimals or 3
- sep = sep or "."
- local s = seconds
- local h, s = divmod(s, 60*60)
- local m, s = divmod(s, 60)
-
- local second_format = string.format("%%0%d.%df", 2+(decimals > 0 and decimals+1 or 0), decimals)
-
- return string.format("%02d"..sep.."%02d"..sep..second_format, h, m, s)
-end
-
--- Format seconds to 1h 2m 3.4s
-function format_time_hms(seconds, sep, decimals, force_full)
- decimals = decimals or 1
- sep = sep or " "
-
- local s = seconds
- local h, s = divmod(s, 60*60)
- local m, s = divmod(s, 60)
-
- if force_full or h > 0 then
- return string.format("%dh"..sep.."%dm"..sep.."%." .. tostring(decimals) .. "fs", h, m, s)
- elseif m > 0 then
- return string.format("%dm"..sep.."%." .. tostring(decimals) .. "fs", m, s)
- else
- return string.format("%." .. tostring(decimals) .. "fs", s)
- end
-end
-
--- Writes text on OSD and console
-function log_info(txt, timeout)
- timeout = timeout or 1.5
- msg.info(txt)
- mp.osd_message(txt, timeout)
-end
-
--- Join table items, ala ({"a", "b", "c"}, "=", "-", ", ") => "=a-, =b-, =c-"
-function join_table(source, before, after, sep)
- before = before or ""
- after = after or ""
- sep = sep or ", "
- local result = ""
- for i, v in pairs(source) do
- if not isempty(v) then
- local part = before .. v .. after
- if i == 1 then
- result = part
- else
- result = result .. sep .. part
- end
- end
- end
- return result
-end
-
-function wrap(s, char)
- char = char or "'"
- return char .. s .. char
-end
--- Wraps given string into 'string' and escapes any 's in it
-function escape_and_wrap(s, char, replacement)
- char = char or "'"
- replacement = replacement or "\\" .. char
- return wrap(string.gsub(s, char, replacement), char)
-end
--- Escapes single quotes in a string and wraps the input in single quotes
-function escape_single_bash(s)
- return escape_and_wrap(s, "'", "'\\''")
-end
-
--- Returns (a .. b) if b is not empty or nil
-function joined_or_nil(a, b)
- return not isempty(b) and (a .. b) or nil
-end
-
--- Put items from one table into another
-function extend_table(target, source)
- for i, v in pairs(source) do
- table.insert(target, v)
- end
-end
-
--- Creates a handle and filename for a temporary random file (in current directory)
-function create_temporary_file(base, mode, suffix)
- local handle, filename
- suffix = suffix or ""
- while true do
- filename = base .. tostring(math.random(1, 5000)) .. suffix
- handle = io.open(filename, "r")
- if not handle then
- handle = io.open(filename, mode)
- break
- end
- io.close(handle)
- end
- return handle, filename
-end
-
-
-function get_processor_count()
- local proc_count
-
- if ON_WINDOWS then
- proc_count = tonumber(os.getenv("NUMBER_OF_PROCESSORS"))
- else
- local cpuinfo_handle = io.open("/proc/cpuinfo")
- if cpuinfo_handle then
- local cpuinfo_contents = cpuinfo_handle:read("*a")
- local _, replace_count = cpuinfo_contents:gsub('processor', '')
- proc_count = replace_count
- end
- end
-
- if proc_count and proc_count > 0 then
- return proc_count
- end
-end
-
-function substitute_values(string, values)
- local substitutor = function(match)
- if match == "%" then
- return "%"
- else
- -- nil is discarded by gsub
- return values[match]
- end
- end
-
- local substituted = string:gsub('%%(.)', substitutor)
- return substituted
-end
-
--- ASS HELPERS --
-function round_rect_top( ass, x0, y0, x1, y1, r )
- local c = 0.551915024494 * r -- circle approximation
- ass:move_to(x0 + r, y0)
- ass:line_to(x1 - r, y0) -- top line
- if r > 0 then
- ass:bezier_curve(x1 - r + c, y0, x1, y0 + r - c, x1, y0 + r) -- top right corner
- end
- ass:line_to(x1, y1) -- right line
- ass:line_to(x0, y1) -- bottom line
- ass:line_to(x0, y0 + r) -- left line
- if r > 0 then
- ass:bezier_curve(x0, y0 + r - c, x0 + r - c, y0, x0 + r, y0) -- top left corner
- end
-end
-
-function round_rect(ass, x0, y0, x1, y1, rtl, rtr, rbr, rbl)
- local c = 0.551915024494
- ass:move_to(x0 + rtl, y0)
- ass:line_to(x1 - rtr, y0) -- top line
- if rtr > 0 then
- ass:bezier_curve(x1 - rtr + rtr*c, y0, x1, y0 + rtr - rtr*c, x1, y0 + rtr) -- top right corner
- end
- ass:line_to(x1, y1 - rbr) -- right line
- if rbr > 0 then
- ass:bezier_curve(x1, y1 - rbr + rbr*c, x1 - rbr + rbr*c, y1, x1 - rbr, y1) -- bottom right corner
- end
- ass:line_to(x0 + rbl, y1) -- bottom line
- if rbl > 0 then
- ass:bezier_curve(x0 + rbl - rbl*c, y1, x0, y1 - rbl + rbl*c, x0, y1 - rbl) -- bottom left corner
- end
- ass:line_to(x0, y0 + rtl) -- left line
- if rtl > 0 then
- ass:bezier_curve(x0, y0 + rtl - rtl*c, x0 + rtl - rtl*c, y0, x0 + rtl, y0) -- top left corner
- end
-end
-local SCRIPT_NAME = "mpv_thumbnail_script"
-
-local default_cache_base = ON_WINDOWS and os.getenv("TEMP") or (os.getenv("XDG_CACHE_HOME") or "/tmp/")
-
-local thumbnailer_options = {
- -- The thumbnail directory
- cache_directory = join_paths(default_cache_base, "mpv_thumbs_cache"),
-
- ------------------------
- -- Generation options --
- ------------------------
-
- -- Automatically generate the thumbnails on video load, without a keypress
- autogenerate = true,
-
- -- Only automatically thumbnail videos shorter than this (seconds)
- autogenerate_max_duration = 3600, -- 1 hour
-
- -- SHA1-sum filenames over this length
- -- It's nice to know what files the thumbnails are (hence directory names)
- -- but long URLs may approach filesystem limits.
- hash_filename_length = 128,
-
- -- Use mpv to generate thumbnail even if ffmpeg is found in PATH
- -- ffmpeg does not handle ordered chapters (MKVs which rely on other MKVs)!
- -- mpv is a bit slower, but has better support overall (eg. subtitles in the previews)
- prefer_mpv = true,
-
- -- Explicitly disable subtitles on the mpv sub-calls
- mpv_no_sub = false,
- -- Add a "--no-config" to the mpv sub-call arguments
- mpv_no_config = false,
- -- Add a "--profile=<mpv_profile>" to the mpv sub-call arguments
- -- Use "" to disable
- mpv_profile = "",
- -- Hardware decoding
- mpv_hwdec = "no",
- -- High precision seek
- mpv_hr_seek = "yes",
- -- Output debug logs to <thumbnail_path>.log, ala <cache_directory>/<video_filename>/000000.bgra.log
- -- The logs are removed after successful encodes, unless you set mpv_keep_logs below
- mpv_logs = true,
- -- Keep all mpv logs, even the succesfull ones
- mpv_keep_logs = false,
-
- -- Disable the built-in keybind ("T") to add your own
- disable_keybinds = false,
-
- ---------------------
- -- Display options --
- ---------------------
-
- -- Move the thumbnail up or down
- -- For example:
- -- topbar/bottombar: 24
- -- rest: 0
- vertical_offset = 24,
-
- -- Adjust background padding
- -- Examples:
- -- topbar: 0, 10, 10, 10
- -- bottombar: 10, 0, 10, 10
- -- slimbox/box: 10, 10, 10, 10
- pad_top = 10,
- pad_bot = 0,
- pad_left = 10,
- pad_right = 10,
-
- -- If true, pad values are screen-pixels. If false, video-pixels.
- pad_in_screenspace = true,
- -- Calculate pad into the offset
- offset_by_pad = true,
-
- -- Background color in BBGGRR
- background_color = "000000",
- -- Alpha: 0 - fully opaque, 255 - transparent
- background_alpha = 80,
-
- -- Keep thumbnail on the screen near left or right side
- constrain_to_screen = true,
-
- -- Do not display the thumbnailing progress
- hide_progress = false,
-
- -----------------------
- -- Thumbnail options --
- -----------------------
-
- -- The maximum dimensions of the thumbnails (pixels)
- thumbnail_width = 200,
- thumbnail_height = 200,
-
- -- The thumbnail count target
- -- (This will result in a thumbnail every ~10 seconds for a 25 minute video)
- thumbnail_count = 150,
-
- -- The above target count will be adjusted by the minimum and
- -- maximum time difference between thumbnails.
- -- The thumbnail_count will be used to calculate a target separation,
- -- and min/max_delta will be used to constrict it.
-
- -- In other words, thumbnails will be:
- -- at least min_delta seconds apart (limiting the amount)
- -- at most max_delta seconds apart (raising the amount if needed)
- min_delta = 5,
- -- 120 seconds aka 2 minutes will add more thumbnails when the video is over 5 hours!
- max_delta = 90,
-
-
- -- Overrides for remote urls (you generally want less thumbnails!)
- -- Thumbnailing network paths will be done with mpv
-
- -- Allow thumbnailing network paths (naive check for "://")
- thumbnail_network = false,
- -- Same as autogenerate_max_duration but for remote videos
- remote_autogenerate_max_duration = 1200, -- 20 min
- -- Override thumbnail count, min/max delta
- remote_thumbnail_count = 60,
- remote_min_delta = 15,
- remote_max_delta = 120,
-
- -- Try to grab the raw stream and disable ytdl for the mpv subcalls
- -- Much faster than passing the url to ytdl again, but may cause problems with some sites
- remote_direct_stream = true,
-
- -- Enable storyboards (requires yt-dlp in PATH). Currently only supports YouTube and Twitch VoDs
- storyboard_enable = true,
- -- Max thumbnails for storyboards. It only skips processing some of the downloaded thumbnails and doesn't make it much faster
- storyboard_max_thumbnail_count = 800,
- -- Most storyboard thumbnails are 160x90. Enabling this allows upscaling them up to thumbnail_height
- storyboard_upscale = false,
-}
-
-read_options(thumbnailer_options, SCRIPT_NAME)
-function skip_nil(tbl)
- local n = {}
- for k, v in pairs(tbl) do
- table.insert(n, v)
- end
- return n
-end
-
-function create_thumbnail_mpv(file_path, timestamp, size, output_path, options)
- options = options or {}
-
- local ytdl_disabled = not options.enable_ytdl and (mp.get_property_native("ytdl") == false
- or thumbnailer_options.remote_direct_stream)
-
- local header_fields_arg = nil
- local header_fields = mp.get_property_native("http-header-fields")
- if #header_fields > 0 then
- -- We can't escape the headers, mpv won't parse "--http-header-fields='Name: value'" properly
- header_fields_arg = "--http-header-fields=" .. table.concat(header_fields, ",")
- end
-
- local profile_arg = nil
- if thumbnailer_options.mpv_profile ~= "" then
- profile_arg = "--profile=" .. thumbnailer_options.mpv_profile
- end
-
- local log_arg = "--log-file=" .. output_path .. ".log"
-
- local mpv_path = ON_MAC and "/opt/homebrew/bin/mpv" or "mpv"
-
- local mpv_command = skip_nil{
- mpv_path,
- -- Hide console output
- "--msg-level=all=no",
-
- -- Disable ytdl
- (ytdl_disabled and "--no-ytdl" or nil),
- -- Pass HTTP headers from current instance
- header_fields_arg,
- -- Pass User-Agent and Referer - should do no harm even with ytdl active
- "--user-agent=" .. mp.get_property_native("user-agent"),
- "--referrer=" .. mp.get_property_native("referrer"),
- -- User set hardware decoding
- "--hwdec=" .. thumbnailer_options.mpv_hwdec,
-
- -- Insert --no-config, --profile=... and --log-file if enabled
- (thumbnailer_options.mpv_no_config and "--no-config" or nil),
- profile_arg,
- (thumbnailer_options.mpv_logs and log_arg or nil),
-
- "--start=" .. tostring(timestamp),
- "--frames=1",
- "--hr-seek=" .. thumbnailer_options.mpv_hr_seek,
- "--no-audio",
- -- Optionally disable subtitles
- (thumbnailer_options.mpv_no_sub and "--no-sub" or nil),
-
- (options.relative_scale
- and ("--vf=scale=iw*%d:ih*%d"):format(size.w, size.h)
- or ("--vf=scale=%d:%d"):format(size.w, size.h)),
-
- "--vf-add=format=bgra",
- "--of=rawvideo",
- "--ovc=rawvideo",
- ("--o=%s"):format(output_path),
-
- "--",
-
- file_path,
- }
- return mp.command_native{name="subprocess", args=mpv_command}
-end
-
-
-function create_thumbnail_ffmpeg(file_path, timestamp, size, output_path, options)
- options = options or {}
-
- local ffmpeg_path = ON_MAC and "/opt/homebrew/bin/ffmpeg" or "ffmpeg"
-
- local ffmpeg_command = {
- ffmpeg_path,
- "-loglevel", "quiet",
- "-noaccurate_seek",
- "-ss", format_time(timestamp, ":"),
- "-i", file_path,
-
- "-frames:v", "1",
- "-an",
-
- "-vf",
- (options.relative_scale
- and ("scale=iw*%d:ih*%d"):format(size.w, size.h)
- or ("scale=%d:%d"):format(size.w, size.h)),
-
- "-c:v", "rawvideo",
- "-pix_fmt", "bgra",
- "-f", "rawvideo",
-
- "-y", output_path,
- }
- return mp.command_native{name="subprocess", args=ffmpeg_command}
-end
-
-
-function check_output(ret, output_path, is_mpv)
- local log_path = output_path .. ".log"
- local success = true
-
- if ret.killed_by_us then
- return nil
- else
- if ret.error or ret.status ~= 0 then
- msg.error("Thumbnailing command failed!")
- msg.error("mpv process error:", ret.error)
- msg.error("Process stdout:", ret.stdout)
- if is_mpv then
- msg.error("Debug log:", log_path)
- end
-
- success = false
- end
-
- if not file_exists(output_path) then
- msg.error("Output file missing!", output_path)
- success = false
- end
- end
-
- if is_mpv and not thumbnailer_options.mpv_keep_logs then
- -- Remove successful debug logs
- if success and file_exists(log_path) then
- os.remove(log_path)
- end
- end
-
- return success
-end
-
--- split cols x N atlas in BGRA format into many thumbnail files
-function split_atlas(atlas_path, cols, thumbnail_size, output_name)
- local atlas = io.open(atlas_path, "rb")
- local atlas_filesize = atlas:seek("end")
- local atlas_pictures = math.floor(atlas_filesize / (4 * thumbnail_size.w * thumbnail_size.h))
- local stride = 4 * thumbnail_size.w * math.min(cols, atlas_pictures)
- for pic = 0, atlas_pictures-1 do
- local x_start = (pic % cols) * thumbnail_size.w
- local y_start = math.floor(pic / cols) * thumbnail_size.h
- local filename = output_name(pic)
- if filename then
- local thumb_file = io.open(filename, "wb")
- for line = 0, thumbnail_size.h - 1 do
- atlas:seek("set", 4 * x_start + (y_start + line) * stride)
- local data = atlas:read(thumbnail_size.w * 4)
- if data then
- thumb_file:write(data)
- end
- end
- thumb_file:close()
- end
- end
- atlas:close()
-end
-
-function do_worker_job(state_json_string, frames_json_string)
- msg.debug("Handling given job")
- local thumb_state, err = utils.parse_json(state_json_string)
- if err then
- msg.error("Failed to parse state JSON")
- return
- end
-
- local thumbnail_indexes, err = utils.parse_json(frames_json_string)
- if err then
- msg.error("Failed to parse thumbnail frame indexes")
- return
- end
-
- local thumbnail_func = create_thumbnail_mpv
- if not thumbnailer_options.prefer_mpv then
- if ExecutableFinder:get_executable_path("ffmpeg") then
- thumbnail_func = create_thumbnail_ffmpeg
- else
- msg.warn("Could not find ffmpeg in PATH! Falling back on mpv.")
- end
- end
-
- local file_duration = mp.get_property_native("duration")
- local file_path = thumb_state.worker_input_path
-
- if thumb_state.is_remote and not thumb_state.storyboard then
- if (thumbnail_func == create_thumbnail_ffmpeg) then
- msg.warn("Thumbnailing remote path, falling back on mpv.")
- end
- thumbnail_func = create_thumbnail_mpv
- end
-
- local generate_thumbnail_for_index = function(thumbnail_index)
- -- Given a 1-based thumbnail index, generate a thumbnail for it based on the thumbnailer state
- local thumb_idx = thumbnail_index - 1
- msg.debug("Starting work on thumbnail", thumb_idx)
-
- local thumbnail_path = thumb_state.thumbnail_template:format(thumb_idx)
- -- Grab the "middle" of the thumbnail duration instead of the very start, and leave some margin in the end
- local timestamp = math.min(file_duration - 0.25, (thumb_idx + 0.5) * thumb_state.thumbnail_delta)
-
- mp.commandv("script-message", "mpv_thumbnail_script-progress", tostring(thumbnail_index))
-
- -- The expected size (raw BGRA image)
- local thumbnail_raw_size = (thumb_state.thumbnail_size.w * thumb_state.thumbnail_size.h * 4)
-
- local need_thumbnail_generation = false
-
- -- Check if the thumbnail already exists and is the correct size
- local thumbnail_file = io.open(thumbnail_path, "rb")
- if not thumbnail_file then
- need_thumbnail_generation = true
- else
- local existing_thumbnail_filesize = thumbnail_file:seek("end")
- if existing_thumbnail_filesize ~= thumbnail_raw_size then
- -- Size doesn't match, so (re)generate
- msg.warn("Thumbnail", thumb_idx, "did not match expected size, regenerating")
- need_thumbnail_generation = true
- end
- thumbnail_file:close()
- end
-
- if need_thumbnail_generation then
- local success
- if thumb_state.storyboard then
- -- get atlas and then split it into thumbnails
- local rows = thumb_state.storyboard.rows
- local cols = thumb_state.storyboard.cols
- local div = thumb_state.storyboard.divisor
- local atlas_idx = math.floor(thumb_idx * div /(cols*rows))
- local atlas_path = thumb_state.thumbnail_template:format(atlas_idx) .. ".atlas"
- local url = thumb_state.storyboard.fragments[atlas_idx+1].url
- if not url then
- url = thumb_state.storyboard.fragment_base_url .. "/" .. thumb_state.storyboard.fragments[atlas_idx+1].path
- end
- local ret = thumbnail_func(url, 0, { w=thumb_state.storyboard.scale, h=thumb_state.storyboard.scale }, atlas_path, { relative_scale=true })
- success = check_output(ret, atlas_path, thumbnail_func == create_thumbnail_mpv)
- if success then
- split_atlas(atlas_path, cols, thumb_state.thumbnail_size, function(idx)
- if (atlas_idx * cols * rows + idx) % div ~= 0 then
- return nil
- end
- return thumb_state.thumbnail_template:format(math.floor((atlas_idx * cols * rows + idx) / div))
- end)
- os.remove(atlas_path)
- end
- else
- local ret = thumbnail_func(file_path, timestamp, thumb_state.thumbnail_size, thumbnail_path, thumb_state.worker_extra)
- success = check_output(ret, thumbnail_path, thumbnail_func == create_thumbnail_mpv)
- end
-
- if not success then
- -- Killed by us, changing files, ignore
- msg.debug("Changing files, subprocess killed")
- return true
- elseif not success then
- -- Real failure
- mp.osd_message("Thumbnailing failed, check console for details", 3.5)
- return true
- end
- else
- msg.debug("Thumbnail", thumb_idx, "already done!")
- end
-
- -- Verify thumbnail size
- -- Sometimes ffmpeg will output an empty file when seeking to a "bad" section (usually the end)
- thumbnail_file = io.open(thumbnail_path, "rb")
-
- -- Bail if we can't read the file (it should really exist by now, we checked this in check_output!)
- if not thumbnail_file then
- msg.error("Thumbnail suddenly disappeared!")
- return true
- end
-
- -- Check the size of the generated file
- local thumbnail_file_size = thumbnail_file:seek("end")
- thumbnail_file:close()
-
- -- Check if the file is big enough
- local missing_bytes = math.max(0, thumbnail_raw_size - thumbnail_file_size)
- if missing_bytes > 0 then
- msg.warn(("Thumbnail missing %d bytes (expected %d, had %d), padding %s"):format(
- missing_bytes, thumbnail_raw_size, thumbnail_file_size, thumbnail_path
- ))
- -- Pad the file if it's missing content (eg. ffmpeg seek to file end)
- thumbnail_file = io.open(thumbnail_path, "ab")
- thumbnail_file:write(string.rep(string.char(0), missing_bytes))
- thumbnail_file:close()
- end
-
- msg.debug("Finished work on thumbnail", thumb_idx)
- mp.commandv("script-message", "mpv_thumbnail_script-ready", tostring(thumbnail_index), thumbnail_path)
- end
-
- msg.debug(("Generating %d thumbnails @ %dx%d for %q"):format(
- #thumbnail_indexes,
- thumb_state.thumbnail_size.w,
- thumb_state.thumbnail_size.h,
- file_path))
-
- for i, thumbnail_index in ipairs(thumbnail_indexes) do
- local bail = generate_thumbnail_for_index(thumbnail_index)
- if bail then return end
- end
-
-end
-
--- Set up listeners and keybinds
-
--- Job listener
-mp.register_script_message("mpv_thumbnail_script-job", do_worker_job)
-
-
--- Register this worker with the master script
-local register_timer = nil
-local register_timeout = mp.get_time() + 1.5
-
-local register_function = function()
- if mp.get_time() > register_timeout and register_timer then
- msg.error("Thumbnail worker registering timed out")
- register_timer:stop()
- else
- msg.debug("Announcing self to master...")
- mp.commandv("script-message", "mpv_thumbnail_script-worker", mp.get_script_name())
- end
-end
-
-register_timer = mp.add_periodic_timer(0.1, register_function)
-
-mp.register_script_message("mpv_thumbnail_script-slaved", function()
- msg.debug("Successfully registered with master")
- register_timer:stop()
-end)
diff --git a/.config/newsboat/config b/.config/newsboat/config
index 1a043b7..8b2d113 100644
--- a/.config/newsboat/config
+++ b/.config/newsboat/config
@@ -1,8 +1,18 @@
-#how-read-feeds no
-auto-reload no
+auto-reload yes
+refresh-on-startup yes
+reload-time 30
confirm-mark-all-feeds-read yes
confirm-mark-feed-read no
-reload-threads 4
+reload-threads 100
+text-width 80
+show-keymap-hint no
+show-title-bar yes
+swap-title-and-hints yes
+history-limit 0
+ignore-mode download
+notify-program ~/.local/bin/newsboat-notif
+notify-always yes
+notify-format "%d"
external-url-viewer "urlview"
@@ -31,22 +41,32 @@ bind-key v show-urls
bind-key x pb-delete
bind-key ^t next-unread
-color listnormal white default
-color listfocus black white standout
-color listnormal_unread red default bold
-color listfocus_unread red black bold
-color info yellow black bold
-color article default default
+ignore-article "*" "title =~ \"#shorts$\""
+ignore-article "*" "link =~ \"youtube.com/shorts/\""
-browser "linkview %u >/dev/null 2>&1 &"
+color background default default
+color listnormal white default
+color listnormal_unread default default bold
+color listfocus default black
+color listfocus_unread default black bold
+color info yellow black bold
+color article default default
+
+search-highlight-colors yellow black bold
+
+browser "linkview %u %T"
macro , open-in-browser
macro t set browser "youtube-dl --add-metadata -ic"; open-in-browser ; set browser linkhandler
macro a set browser "youtube-dl --add-metadata -xic -f bestaudio/best"; open-in-browser ; set browser linkhandler
macro v set browser "linkview"; open-in-browser ; set browser linkhandler
macro w set browser "linkview"; open-in-browser ; set browser linkhandler
-highlight all "---.*---" yellow
-highlight feedlist ".*(0/0))" black
+feedlist-title-format "feeds (%u/%t)%?T? - tag '%T'&?"
+articlelist-title-format "'%T' (%u/%t)"
+datetime-format "%y-%m-%d %H:%M"
+articlelist-format "%D - %t"
+feedlist-format "%?T?%n%8u %t [%T]&#%-8t----------------------------------------------------------?"
+
highlight article "(^Feed:.*|^Title:.*|^Author:.*)" cyan default bold
highlight article "(^Link:.*|^Date:.*)" default default
highlight article "https?://[^ ]+" green default
@@ -57,3 +77,22 @@ highlight article "\\[embedded flash: [0-9][0-9]*\\]" green default bold
highlight article ":.*\\(link\\)$" cyan default
highlight article ":.*\\(image\\)$" blue default
highlight article ":.*\\(embedded flash\\)$" magenta default
+
+highlight feedlist ".*(0/0))" black
+highlight feedlist ".* \\[(news|tech|normies|gaming|space|skate|music)\\]$" white default
+highlight feedlist "^N.* \\[tech\\]$" cyan default bold
+highlight feedlist "^N.* \\[normies\\]$" red default bold
+highlight feedlist "^N.* \\[news\\]$" green default bold
+highlight feedlist "^N.* \\[gaming\\]$" yellow default bold
+highlight feedlist "^N.* \\[space\\]$" blue default bold
+highlight feedlist "^N.* \\[skate\\]$" magenta default bold
+highlight feedlist "^N.* \\[music\\]$" white default bold
+highlight feedlist "^#tech .*" cyan default bold
+highlight feedlist "^#normies .*" red default bold
+highlight feedlist "^#news .*" green default bold
+highlight feedlist "^#gaming .*" yellow default bold
+highlight feedlist "^#space .*" blue default bold
+highlight feedlist "^#skate .*" magenta default bold
+highlight feedlist "^#music .*" white default bold
+highlight feedlist "^N" default default invis
+highlight feedlist "\\[(news|tech|normies|gaming|space|skate|music)\\]$" default default invis
diff --git a/.config/nnn/plugins/joe_clipper b/.config/nnn/plugins/joe_clipper
new file mode 100755
index 0000000..54d8095
--- /dev/null
+++ b/.config/nnn/plugins/joe_clipper
@@ -0,0 +1,79 @@
+#!/usr/bin/env perl
+
+
+use strict;
+use warnings;
+use Cwd qw(cwd);
+
+use constant XCLIP => 'xclip -selection clipboard ';
+
+sub close_io
+{
+ open STDIN, '<', '/dev/null' or die $!;
+ open STDOUT, '>', '/dev/null' or die $!;
+ open STDERR, '>', '/dev/null' or die $!;
+ return;
+}
+
+sub clip_img
+{
+ my ($file) = @_;
+ my $pid;
+
+ $pid = fork();
+ if ($pid == 0) {
+ system("magick '$file' png:- | " . XCLIP . "-t image/png");
+ exec(
+ 'notify-send',
+ '-t', '2000',
+ 'clipped image',
+ ' clipped image'
+ );
+ }
+ return;
+}
+
+sub clip_raw
+{
+ my ($file) = @_;
+
+ my $pid;
+
+ $pid = fork();
+ if ($pid == 0) {
+ system( "xclip -selection clipboard '$file'");
+ exec(
+ 'notify-send',
+ '-t', '2000',
+ 'clipped file',
+ ' clipped file'
+ );
+ }
+ return;
+}
+
+sub clip
+{
+ my ($file, $mimetype) = @_;
+
+ return clip_img($file) if $mimetype =~ /^image\//;
+ clip_raw($file);
+ return;
+}
+
+sub joe_clipper
+{
+ my $file = cwd() . '/' . $ARGV[0];
+ my $mimetype;
+
+ if (-d $file) {
+ return;
+ }
+ $mimetype=`file -bL --mime-type -- "$file"`;
+ clip($file, $mimetype);
+ return;
+}
+
+joe_clipper();
+
+__END__
diff --git a/.config/nnn/plugins/joe_dragdrop b/.config/nnn/plugins/joe_dragdrop
new file mode 100755
index 0000000..2623c47
--- /dev/null
+++ b/.config/nnn/plugins/joe_dragdrop
@@ -0,0 +1,47 @@
+#!/usr/bin/env sh
+
+# Description: Open a Drag and drop window, to drop files onto other programs.
+# Also provides drag and drop window for files.
+#
+# Dependencies: dragon - https://github.com/mwh/dragon
+#
+# Notes:
+# 1. Files that are dropped will be added to nnn's selection
+# Some web-based files will be downloaded to current dir
+# with curl and it may overwrite some existing files
+# 2. The user has to mm to clear nnn's selection first
+#
+# Shell: POSIX compliant
+# Author: 0xACE
+
+selection=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection}
+resp=f
+all=
+if type dragon-drag-and-drop >/dev/null 2>&1; then
+ dnd="dragon-drag-and-drop"
+elif type dragon-drop >/dev/null 2>&1; then
+ dnd="dragon-drop"
+else
+ dnd="dragon"
+fi
+
+add_file ()
+{
+ printf '%s\0' "$@" >> "$selection"
+}
+
+if [ -s "$selection" ]; then
+ printf "Drag selection (s) or drag current file (f) [default=f]: "
+ read -r resp
+else
+ resp=f
+fi
+
+if [ "$resp" = "s" ]; then
+ all="--all"
+ sed -z 's|'"$PWD/"'||g' < "$selection" | xargs -0 "$dnd" --and-exit "$all" &
+else
+ if [ -n "$1" ] && [ -e "$1" ]; then
+ "$dnd" --and-exit "$1" &
+ fi
+fi
diff --git a/.config/nnn/plugins/joe_fzfcd b/.config/nnn/plugins/joe_fzfcd
new file mode 100755
index 0000000..13ac1a5
--- /dev/null
+++ b/.config/nnn/plugins/joe_fzfcd
@@ -0,0 +1,21 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+use Env qw(NNN_PIPE PWD);
+
+sub main {
+ my $dir;
+
+ $dir = `fd -t d -L | fzf --preview ' eza --color=always --icons -T -L1 {} |
+ head -n 200'`;
+ chomp($dir);
+ open(FH, '>>', $NNN_PIPE) or die $!;
+ print FH '0c' . $PWD . '/' . $dir;
+ close(FH);
+ return;
+}
+
+main();
+
+__END__
diff --git a/.config/nnn/plugins/preview-tui b/.config/nnn/plugins/preview-tui
new file mode 100755
index 0000000..7bd1c7d
--- /dev/null
+++ b/.config/nnn/plugins/preview-tui
@@ -0,0 +1,538 @@
+#!/usr/bin/env bash
+
+# Description: Terminal based file previewer
+#
+# Note: This plugin needs a "NNN_FIFO" to work. See man.
+#
+# Dependencies:
+# - Supports 6 independent methods to preview with:
+# - tmux (>=3.0), or
+# - kitty with allow_remote_control and listen_on set in kitty.conf, or
+# - wezterm (https://wezfurlong.org/wezterm), or
+# - QuickLook on WSL (https://github.com/QL-Win/QuickLook), or
+# - Windows Terminal (https://github.com/Microsoft/Terminal | https://aka.ms/terminal) with WSL, or
+# - $NNN_TERMINAL set to a terminal (it's xterm by default).
+# - less or $NNN_PAGER
+# - tree or exa/eza or (GNU) ls
+# - mediainfo or file
+# - mktemp
+# - unzip
+# - tar
+# - man
+# - optional: bsdtar or atool for additional archive preview
+# - optional: bat for code syntax highlighting
+# - optional: ueberzug, kitty terminal, wezterm terminal, img2sixel, viu, catimg, timg or chafa for images
+# - optional: convert(ImageMagick) for playing gif preview (mandatory for kitty image previews)
+# - optional: mpv for gif and video
+# Also requires a terminal supporting the sixel (https://www.arewesixelyet.com/)
+# or kitty (https://sw.kovidgoyal.net/kitty/graphics-protocol) video_output backends.
+# Requires tmux compiled with `./configure --enable-sixel` if used.
+# - optional: ffmpegthumbnailer for video thumbnails (https://github.com/dirkvdb/ffmpegthumbnailer)
+# - optional: ffmpeg for audio thumbnails
+# - optional: libreoffce for opendocument/officedocument preview
+# - optional: pdftoppm(poppler) for pdf thumbnails
+# - optional: gnome-epub-thumbnailer for epub thumbnails (https://gitlab.gnome.org/GNOME/gnome-epub-thumbnailer)
+# - optional: fontpreview for font preview (https://github.com/sdushantha/fontpreview)
+# - optional: djvulibre for djvu
+# - optional: glow or lowdown for markdown
+# - optional: w3m or lynx or elinks for html
+# - optional: set/export NNN_ICONLOOKUP as 1 to enable file icons in front of directory previews with .iconlookup
+# Icons and colors are configurable in .iconlookup
+# - optional: scope.sh file viewer from ranger.
+# 1. drop scope.sh executable in $PATH
+# 2. set/export $NNN_SCOPE as 1
+# - optional: pistol file viewer (https://github.com/doronbehar/pistol).
+# 1. install pistol
+# 2. set/export $NNN_PISTOL as 1
+# - optional: librsvg for rsvg-convert
+#
+# Usage:
+# You need to set a NNN_FIFO path and a key for the plugin with NNN_PLUG,
+# then start `nnn`:
+#
+# $ nnn -a
+#
+# or
+#
+# $ NNN_FIFO=/tmp/nnn.fifo nnn
+#
+# Then launch the `preview-tui` plugin in `nnn`.
+#
+# If you provide the same NNN_FIFO to all nnn instances, there will be a
+# single common preview window. If you provide different FIFO path (e.g.
+# with -a), they will be independent.
+#
+# The previews will be shown in a tmux split. If that isn't possible, it
+# will try to use a kitty terminal split. And as a final fallback, a
+# different terminal window will be used ($NNN_TERMINAL).
+#
+# Kitty users need something similar to the following in their kitty.conf:
+# - `allow_remote_control yes`
+# - `listen_on unix:$TMPDIR/kitty`
+# - `enabled_layouts splits` (optional)
+# With ImageMagick installed, this terminal can use the icat kitten to display images.
+# Refer to kitty documentation for further details.
+#
+# Users with both tmux and kitty can leverage image previews inside tmux with kitty's icat kitten
+# - setup kitty as stated above
+# - tmux >= v3.3a required
+# - add the following to your tmux.conf:
+# - `set -g allow-passthrough on`
+#
+# Wezterm should work out of the box. If `NNN_PREVIEWIMGPROG` is not specified it will use
+# built in iTerm2 image protocol.
+#
+# Note that GNU ls is used for its `--group-directories-first` flag.
+# On MacOS this may be installed with `brew install coreutils`, or the flag can be removed.
+# iTerm2 users are recommended to use viu to view images without getting pixelated.
+#
+# Windows Terminal users can set "Profile termination behavior" under "Profile > Advanced" settings
+# to automatically close pane on quit when exit code is 0.
+#
+# When specifying a different terminal, additional arguments are supported. In particular, you can
+# append a specific title to the terminal and set it to "nofocus" in your WM config.
+# E.g for alacritty and i3, you can set $NNN_TERMINAL to 'alacritty --title preview-tui' and add
+# 'no_focus [title="preview-tui"]' to your i3 config file.
+#
+# Shell: Bash (for environment manipulation through arrays)
+# Authors: Todd Yamakawa, Léo Villeveygoux, @Recidiviste, Mario Ortiz Manero, Luuk van Baal, @WanderLanz, @flipflop133
+
+# Configurable environment variables:
+NNN_SPLIT=${NNN_SPLIT:-} # permanent split direction
+NNN_TERMINAL=${NNN_TERMINAL:-} # external terminal to be used
+NNN_SPLITSIZE=${NNN_SPLITSIZE:-50} # previewer split size percentage
+TMPDIR=${TMPDIR:-/tmp} # location of temporary files
+ENVVARS=(
+ "NNN_SCOPE=${NNN_SCOPE:-0}" # use scope
+ "NNN_PISTOL=${NNN_PISTOL:-0}" # use pistol
+ "NNN_ICONLOOKUP=${NNN_ICONLOOKUP:-0}" # use .iconlookup
+ "NNN_PAGER=${NNN_PAGER:-less -P?n -R -C}" # pager options
+ "NNN_BATTHEME=${NNN_BATTHEME:-ansi}" # bat theme
+ "NNN_BATSTYLE=${NNN_BATSTYLE:-numbers}" # bat style
+ "NNN_PREVIEWWIDTH=${NNN_PREVIEWWIDTH:-1920}" # width of generated preview images
+ "NNN_PREVIEWHEIGHT=${NNN_PREVIEWHEIGHT:-1080}" # height of generated preview images
+ "NNN_PREVIEWDIR=${NNN_PREVIEWDIR:-$TMPDIR/nnn/previews}" # location of generated preview images
+ "NNN_PREVIEWIMGPROG=${NNN_PREVIEWIMGPROG:-}" # command used to preview images
+ "NNN_PREVIEWVIDEO=${NNN_PREVIEWVIDEO:-}" # mpv backend used to preview video
+)
+# Non-configurable environment variables
+NNN_PARENT=${NNN_FIFO#*.}
+[ "$NNN_PARENT" -eq "$NNN_PARENT" ] 2>/dev/null || NNN_PARENT="" # Make empty if non-numeric
+ENVVARS+=(
+ "PWD=$PWD"
+ "PATH=$PATH"
+ "NNN_FIFO=$NNN_FIFO"
+ "FIFOPID=$TMPDIR/nnn-preview-tui-fifopid.$NNN_PARENT"
+ "FIFOPATH=$TMPDIR/nnn-preview-tui-fifo.$NNN_PARENT"
+ "PREVIEWPID=$TMPDIR/nnn-preview-tui-previewpid.$NNN_PARENT"
+ "CURSEL=$TMPDIR/nnn-preview-tui-selection.$NNN_PARENT"
+ "FIFO_UEBERZUG=$TMPDIR/nnn-preview-tui-ueberzug-fifo.$NNN_PARENT"
+ "POSOFFSET=$TMPDIR/nnn-preview-tui-posoffset"
+)
+
+trap '' PIPE
+exists() { type "$1" >/dev/null 2>&1 ;}
+pkill() { command pkill "$@" >/dev/null 2>&1 ;}
+prompt() { clear; printf "%b" "$@"; cfg=$(stty -g); stty raw -echo; head -c 1; stty "$cfg" ;}
+pidkill() {
+ if [ -f "$1" ]; then
+ PID="$(cat "$1" 2>/dev/null)" || return 1
+ kill "$PID" >/dev/null 2>&1
+ RET=$?
+ wait "$PID" 2>/dev/null
+ return $RET
+ fi
+ return 1
+}
+
+start_preview() {
+ if [ -e "${TMUX%%,*}" ] && tmux -V | grep -q '[ -][3456789]\.'; then
+ NNN_TERMINAL=tmux
+ exists mpv && tmux display -p '#{client_termfeatures}' | grep -q 'sixel' && ENVVARS+=("NNN_PREVIEWVIDEO=sixel")
+ elif [ -n "$KITTY_LISTEN_ON" ]; then
+ NNN_TERMINAL=kitty
+ exists mpv && ENVVARS+=("NNN_PREVIEWVIDEO=kitty")
+ elif [ -n "$WEZTERM_PANE" ]; then
+ NNN_TERMINAL=wezterm
+ exists mpv && ENVVARS+=("NNN_PREVIEWVIDEO=kitty")
+ elif [ -z "$NNN_TERMINAL" ] && [ "$TERM_PROGRAM" = "iTerm.app" ]; then
+ NNN_TERMINAL=iterm
+ exists mpv && ENVVARS+=("NNN_PREVIEWVIDEO=sixel")
+ elif [ -n "$WT_SESSION" ]; then
+ NNN_TERMINAL=winterm
+ else
+ NNN_TERMINAL="${NNN_TERMINAL:-xterm}"
+ fi
+
+ if [ -z "$NNN_SPLIT" ] && [ $(($(tput lines) * 2)) -gt "$(tput cols)" ]; then
+ NNN_SPLIT='h'
+ elif [ "$NNN_SPLIT" != 'h' ]; then
+ NNN_SPLIT='v'
+ fi
+
+ ENVVARS+=("NNN_TERMINAL=$NNN_TERMINAL" "NNN_SPLIT=$NNN_SPLIT" "QLPATH=$2" "PREVIEW_MODE=1")
+ case "$NNN_TERMINAL" in
+ iterm|winterm) # has to run in separate shell command: escape
+ ENVVARS=("${ENVVARS[@]/#/\\\"}")
+ ENVVARS=("${ENVVARS[@]/%/\\\"}")
+ command="$SHELL -c 'env ${ENVVARS[*]} \\\"$0\\\" \\\"$1\\\"'" ;;
+ esac
+
+ case "$NNN_TERMINAL" in
+ tmux) # tmux splits are inverted
+ ENVVARS=("${ENVVARS[@]/#/-e}")
+ if [ "$NNN_SPLIT" = "v" ]; then split="h"; else split="v"; fi
+ tmux split-window -l"$NNN_SPLITSIZE"% "${ENVVARS[@]}" -d"$split" -p"$NNN_SPLITSIZE" "$0" "$1" ;;
+ kitty) # Setting the layout for the new window. It will be restored after the script ends.
+ ENVVARS=("${ENVVARS[@]/#/--env=}")
+ kitty @ goto-layout splits
+ # Trying to use kitty's integrated window management as the split window.
+ kitty @ launch --no-response --title "preview-tui" --keep-focus \
+ --cwd "$PWD" "${ENVVARS[@]}" --location "${NNN_SPLIT}split" "$0" "$1" ;;
+ wezterm)
+ export "${ENVVARS[@]}"
+ if [ "$NNN_SPLIT" = "v" ]; then split="--horizontal"; else split="--bottom"; fi
+ wezterm cli split-pane --cwd "$PWD" $split --percent "$NNN_SPLITSIZE" "$0" "$1" >/dev/null
+ wezterm cli activate-pane-direction Prev ;;
+ iterm)
+ if [ "$NNN_SPLIT" = "h" ]; then split="horizontally"; else split="vertically"; fi
+ osascript <<-EOF
+ tell application "iTerm"
+ tell current session of current window
+ split $split with default profile command "$command"
+ end tell
+ end tell
+EOF
+ ;;
+ winterm)
+ if [ "$NNN_SPLIT" = "h" ]; then split="H"; else split="V"; fi
+ wt -w 0 sp -$split -s"0.$NNN_SPLITSIZE" "$command" \; -w 0 mf previous 2>/dev/null ;;
+ *) if [ -n "$2" ]; then
+ env "${ENVVARS[@]}" QUICKLOOK=1 "$0" "$1" &
+ else
+ # shellcheck disable=SC2086 # (allow arguments)
+ env "${ENVVARS[@]}" $NNN_TERMINAL -e "$0" "$1" &
+ fi ;;
+ esac
+}
+
+toggle_preview() {
+ export "${ENVVARS[@]}"
+ if exists QuickLook.exe; then
+ QLPATH="QuickLook.exe"
+ elif exists Bridge.exe; then
+ QLPATH="Bridge.exe"
+ fi
+ if pidkill "$FIFOPID"; then
+ [ -p "$NNN_PPIPE" ] && printf "0" > "$NNN_PPIPE"
+ pidkill "$PREVIEWPID"
+ pkill -f "tail --follow $FIFO_UEBERZUG"
+ if [ -n "$QLPATH" ] && stat "$1"; then
+ f="$(wslpath -w "$1")" && "$QLPATH" "$f" &
+ fi
+ else
+ [ -p "$NNN_PPIPE" ] && printf "1" > "$NNN_PPIPE"
+ start_preview "$1" "$QLPATH"
+ fi
+}
+
+fifo_pager() {
+ cmd="$1"
+ shift
+
+ # We use a FIFO to access $NNN_PAGER PID in jobs control
+ mkfifo "$FIFOPATH" || return
+
+ $NNN_PAGER < "$FIFOPATH" &
+ printf "%s" "$!" > "$PREVIEWPID"
+
+ (
+ exec > "$FIFOPATH"
+ if [ "$cmd" = "pager" ]; then
+ if exists bat; then
+ bat --terminal-width="$cols" --decorations=always --color=always \
+ --paging=never --style="$NNN_BATSTYLE" --theme="$NNN_BATTHEME" "$@" &
+ else
+ $NNN_PAGER "$@" &
+ fi
+ else
+ "$cmd" "$@" &
+ fi
+ )
+
+ rm -- "$FIFOPATH"
+}
+
+# Binary file: show file info inside the pager
+print_bin_info() {
+ printf -- "-------- \033[1;31mBinary file\033[0m --------\n"
+ if exists mediainfo; then
+ mediainfo "$1"
+ else
+ file -b "$1"
+ fi
+}
+
+handle_mime() {
+ case "$2" in
+ image/jpeg) image_preview "$cols" "$lines" "$1" ;;
+ image/gif) generate_preview "$cols" "$lines" "$1" "gif" ;;
+ image/vnd.djvu) generate_preview "$cols" "$lines" "$1" "djvu" ;;
+ image/*) generate_preview "$cols" "$lines" "$1" "image" ;;
+ video/*) generate_preview "$cols" "$lines" "$1" "video" ;;
+ audio/*) generate_preview "$cols" "$lines" "$1" "audio" ;;
+ application/font*|application/*opentype|font/*) generate_preview "$cols" "$lines" "$1" "font" ;;
+ */*office*|*/*document*|*/*msword|*/*ms-excel) generate_preview "$cols" "$lines" "$1" "office" ;;
+ application/zip) fifo_pager unzip -l "$1" ;;
+ text/troff)
+ if exists man; then
+ fifo_pager man -Pcat -l "$1"
+ else
+ fifo_pager pager "$1"
+ fi ;;
+ *) handle_ext "$1" "$3" "$4" ;;
+ esac
+}
+
+handle_ext() {
+ case "$2" in
+ epub) generate_preview "$cols" "$lines" "$1" "epub" ;;
+ pdf) generate_preview "$cols" "$lines" "$1" "pdf" ;;
+ gz|bz2) fifo_pager tar -tvf "$1" ;;
+ md) if exists glow; then
+ fifo_pager glow -s dark "$1"
+ elif exists lowdown; then
+ fifo_pager lowdown -Tterm --term-width="$cols" --term-column="$cols" "$1"
+ else
+ fifo_pager pager "$1"
+ fi ;;
+ htm|html|xhtml)
+ if exists w3m; then
+ fifo_pager w3m "$1"
+ elif exists lynx; then
+ fifo_pager lynx "$1"
+ elif exists elinks; then
+ fifo_pager elinks "$1"
+ else
+ fifo_pager pager "$1"
+ fi ;;
+ 7z|a|ace|alz|arc|arj|bz|cab|cpio|deb|jar|lha|lz|lzh|lzma|lzo\
+ |rar|rpm|rz|t7z|tar|tbz|tbz2|tgz|tlz|txz|tZ|tzo|war|xpi|xz|zst|Z)
+ if exists atool; then
+ fifo_pager atool -l "$1"
+ elif exists bsdtar; then
+ fifo_pager bsdtar -tvf "$1"
+ fi ;;
+ json)
+ if exists jq; then
+ fifo_pager jq --color-output '.' "$1"
+ else
+ fifo_pager pager "$1"
+ fi ;;
+ *) if [ "$3" = "bin" ]; then
+ fifo_pager print_bin_info "$1"
+ else
+ fifo_pager pager "$1"
+ fi ;;
+ esac
+}
+
+preview_file() {
+ clear
+ # Trying to use pistol if it's available.
+ if [ "$NNN_PISTOL" -ne 0 ] && exists pistol; then
+ fifo_pager pistol "$1"
+ return
+ fi
+
+ # Trying to use scope.sh if it's available.
+ if [ "$NNN_SCOPE" -ne 0 ] && exists scope.sh; then
+ fifo_pager scope.sh "$1" "$cols" "$lines" "$(mktemp -d)" "True"
+ return
+ fi
+
+ # Use QuickLook if it's available.
+ if [ -n "$QUICKLOOK" ]; then
+ stat "$1" && f="$(wslpath -w "$1")" && "$QLPATH" "$f" &
+ return
+ fi
+
+ # Detecting the exact type of the file: the encoding, mime type, and extension in lowercase.
+ encoding="$(file -bL --mime-encoding -- "$1")"
+ mimetype="$(file -bL --mime-type -- "$1")"
+ ext="${1##*.}"
+ [ -n "$ext" ] && ext="$(printf "%s" "${ext}" | tr '[:upper:]' '[:lower:]')"
+ lines=$(tput lines)
+ cols=$(tput cols)
+
+ # Otherwise, falling back to the defaults.
+ if [ -d "$1" ]; then
+ cd "$1" || return
+ if [ "$NNN_ICONLOOKUP" -ne 0 ] && [ -f "$(dirname "$0")"/.iconlookup ]; then
+ [ "$NNN_SPLIT" = v ] && BSTR="\n"
+ # shellcheck disable=SC2012
+ ls -F --group-directories-first | head -n "$((lines - 3))" | "$(dirname "$0")"/.iconlookup -l "$cols" -B "$BSTR" -b " "
+ elif exists tree; then
+ fifo_pager tree --filelimit "$(find . -maxdepth 1 | wc -l)" -L 3 -C -F --dirsfirst --noreport
+ elif exists exa; then
+ fifo_pager exa -T --group-directories-first --colour=always -L 3
+ elif exists eza; then # eza is a community fork of exa (exa is unmaintained)
+ fifo_pager eza -T --group-directories-first --colour=always -L 3
+ else
+ fifo_pager ls -F --group-directories-first --color=always
+ fi
+ cd ..
+ elif [ "${encoding#*)}" = "binary" ]; then
+ handle_mime "$1" "$mimetype" "$ext" "bin"
+ else
+ handle_mime "$1" "$mimetype" "$ext"
+ fi
+}
+
+generate_preview() {
+ if [ -n "$QLPATH" ] && stat "$3"; then
+ f="$(wslpath -w "$3")" && "$QLPATH" "$f" &
+ elif [ -n "$NNN_PREVIEWVIDEO" ] && [[ "$4" == +(gif|video) ]]; then
+ [ "$4" = "video" ] && args=(--start=10% --length=4) || args=()
+ video_preview "$1" "$2" "$3" "${args[@]}" && return
+ elif [ ! -f "$NNN_PREVIEWDIR/$3.jpg" ] || [ -n "$(find -L "$3" -newer "$NNN_PREVIEWDIR/$3.jpg")" ]; then
+ mkdir -p "$NNN_PREVIEWDIR/${3%/*}"
+ case $4 in
+ audio) ffmpeg -i "$3" -filter_complex "scale=iw*min(1\,min($NNN_PREVIEWWIDTH/iw\,ih)):-1" "$NNN_PREVIEWDIR/$3.jpg" -y ;;
+ epub) gnome-epub-thumbnailer "$3" "$NNN_PREVIEWDIR/$3.jpg" ;;
+ font) fontpreview -i "$3" -o "$NNN_PREVIEWDIR/$3.jpg" ;;
+ gif) if [ -p "$FIFO_UEBERZUG" ] && exists convert; then
+ frameprefix="$NNN_PREVIEWDIR/$3/${3##*/}"
+ if [ ! -d "$NNN_PREVIEWDIR/$3" ]; then
+ mkdir -p "$NNN_PREVIEWDIR/$3"
+ convert -coalesce -resize "$NNN_PREVIEWWIDTH"x"$NNN_PREVIEWHEIGHT"\> "$3" "$frameprefix.jpg" ||
+ MAGICK_TMPDIR="/tmp" convert -coalesce -resize "$NNN_PREVIEWWIDTH"x"$NNN_PREVIEWHEIGHT"\> "$3" "$frameprefix.jpg"
+ fi
+ frames=$(($(find "$NNN_PREVIEWDIR/$3" | wc -l) - 2))
+ [ $frames -lt 0 ] && return
+ while true; do
+ for i in $(seq 0 $frames); do
+ image_preview "$1" "$2" "$frameprefix-$i.jpg"
+ sleep 0.1
+ done
+ done &
+ printf "%s" "$!" > "$PREVIEWPID"
+ return
+ elif [ -n "$NNN_PREVIEWVIDEO" ]; then
+ video_preview "$1" "$2" "$3" && return
+ else
+ image_preview "$1" "$2" "$3" && return
+ fi ;;
+ image) if exists rsvg-convert && [[ "${3##*.}" == "svg" ]]; then
+ rsvg-convert -a -w "$NNN_PREVIEWWIDTH" -h "$NNN_PREVIEWHEIGHT" -f png -o "$NNN_PREVIEWDIR/$3.png" "$3"
+ elif exists convert; then
+ convert "$3" -flatten -resize "$NNN_PREVIEWWIDTH"x"$NNN_PREVIEWHEIGHT"\> "$NNN_PREVIEWDIR/$3.jpg"
+ else
+ image_preview "$1" "$2" "$3" && return
+ fi ;;
+ office) libreoffice --convert-to jpg "$3" --outdir "$NNN_PREVIEWDIR/${3%/*}"
+ filename="$(printf "%s" "${3##*/}" | cut -d. -f1)"
+ mv -- "$NNN_PREVIEWDIR/${3%/*}/$filename.jpg" "$NNN_PREVIEWDIR/$3.jpg" ;;
+ pdf) pdftoppm -jpeg -f 1 -singlefile "$3" "$NNN_PREVIEWDIR/$3" ;;
+ djvu) ddjvu -format=ppm -page=1 "$3" "$NNN_PREVIEWDIR/$3.jpg" ;;
+ video) video_preview "$1" "$2" "$3" && return ;;
+ esac
+ fi
+ if [ -f "$NNN_PREVIEWDIR/$3.jpg" ]; then
+ image_preview "$1" "$2" "$NNN_PREVIEWDIR/$3.jpg"
+ elif [[ "${3##*.}" == "svg" ]] && [ -f "$NNN_PREVIEWDIR/$3.png" ]; then
+ image_preview "$1" "$2" "$NNN_PREVIEWDIR/$3.png"
+ else
+ fifo_pager print_bin_info "$3"
+ fi
+} >/dev/null 2>&1
+
+image_preview() {
+ clear
+ exec >/dev/tty
+ if [ "$NNN_TERMINAL" = "kitty" ] && [[ "$NNN_PREVIEWIMGPROG" == +(|icat) ]]; then
+ kitty +kitten icat --silent --scale-up --place "$1"x"$2"@0x0 --transfer-mode=stream --stdin=no "$3" &
+ elif [ "$NNN_TERMINAL" = "tmux" ] && [[ -n "$KITTY_LISTEN_ON" ]] && [[ "$NNN_PREVIEWIMGPROG" == +(|icat) ]]; then
+ kitty +kitten icat --silent --scale-up --place "$(($1 - 1))x$(($2 - 1))"@0x0 --transfer-mode=memory --stdin=no "$3" &
+ elif [ "$NNN_TERMINAL" = "wezterm" ] && [[ "$NNN_PREVIEWIMGPROG" == +(|imgcat) ]]; then
+ wezterm imgcat "$3" &
+ elif exists ueberzug && [[ "$NNN_PREVIEWIMGPROG" == +(|ueberzug) ]]; then
+ ueberzug_layer "$1" "$2" "$3" && return
+ elif exists "${NNN_PREVIEWIMGPROG%% *}"; then # can include command flags; only check first word
+ $NNN_PREVIEWIMGPROG -w "$1" "$3" &
+ else
+ fifo_pager print_bin_info "$3" && return
+ fi
+ printf "%s" "$!" > "$PREVIEWPID"
+}
+
+video_preview() {
+ clear
+ exec >/dev/tty
+ if [ -n "$NNN_PREVIEWVIDEO" ]; then
+ mpv --no-config --really-quiet --vo="$NNN_PREVIEWVIDEO" --profile=sw-fast --loop-file --no-audio "$4" "$3" &
+ else
+ ffmpegthumbnailer -m -s0 -i "$3" -o "$NNN_PREVIEWDIR/$3.jpg" || rm -- "$NNN_PREVIEWDIR/$3.jpg" &
+ fi
+ printf "%s" "$!" > "$PREVIEWPID"
+}
+
+ueberzug_layer() {
+ [ -f "$POSOFFSET" ] && read -r x y < "$POSOFFSET"
+ printf '{"action": "add", "identifier": "nnn_ueberzug", "x": %d, "y": %d, "width": "%d", "height": "%d", "scaler": "fit_contain", "path": "%s"}\n'\
+ "${x:-0}" "${y:-0}" "$1" "$2" "$3" > "$FIFO_UEBERZUG"
+}
+
+ueberzug_remove() {
+ printf '{"action": "remove", "identifier": "nnn_ueberzug"}\n' > "$FIFO_UEBERZUG"
+}
+
+winch_handler() {
+ clear
+ pidkill "$PREVIEWPID"
+ if [ -p "$FIFO_UEBERZUG" ]; then
+ pkill -f "tail --follow $FIFO_UEBERZUG"
+ tail --follow "$FIFO_UEBERZUG" | ueberzug layer --silent --parser json &
+ fi
+ preview_file "$(cat "$CURSEL")"
+}
+
+preview_fifo() {
+ while read -r selection; do
+ if [ -n "$selection" ]; then
+ pidkill "$PREVIEWPID"
+ [ -p "$FIFO_UEBERZUG" ] && ueberzug_remove
+ [ "$selection" = "close" ] && break
+ preview_file "$selection"
+ printf "%s" "$selection" > "$CURSEL"
+ fi
+ done < "$NNN_FIFO"
+ sleep 0.1 # make sure potential preview by winch_handler is killed
+ pkill -P "$$"
+}
+
+if [ "$PREVIEW_MODE" -eq 1 ] 2>/dev/null; then
+ if exists ueberzug && [ "$NNN_TERMINAL" != "kitty" ] && [[ "$NNN_PREVIEWIMGPROG" == +(|ueberzug) ]]; then
+ mkfifo "$FIFO_UEBERZUG"
+ tail --follow "$FIFO_UEBERZUG" | ueberzug layer --silent --parser json &
+ fi
+
+ preview_file "$PWD/$1"
+ preview_fifo & WAITPID=$!
+ printf "%s" "$!" > "$FIFOPID"
+ printf "%s" "$PWD/$1" > "$CURSEL"
+ trap 'winch_handler' WINCH
+ trap 'rm -- "$PREVIEWPID" "$CURSEL" "$FIFO_UEBERZUG" "$FIFOPID" "$POSOFFSET" 2>/dev/null' INT HUP EXIT
+ while kill -s 0 $WAITPID; do
+ wait $WAITPID 2>/dev/null
+ done
+ exit 0
+else
+ if [ ! -r "$NNN_FIFO" ]; then
+ prompt "No FIFO available! (\$NNN_FIFO='$NNN_FIFO')\nPlease read Usage in '$0'."
+ elif [ "$KITTY_WINDOW_ID" ] && [ -z "$TMUX" ] && [ -z "$KITTY_LISTEN_ON" ]; then
+ prompt "\$KITTY_LISTEN_ON not set!\nPlease read Usage in '$0'."
+ else
+ toggle_preview "$1" &
+ fi
+fi
diff --git a/.config/nvim/after/plugin/gitsigns.lua b/.config/nvim/after/plugin/gitsigns.lua
deleted file mode 100644
index 8070d1a..0000000
--- a/.config/nvim/after/plugin/gitsigns.lua
+++ /dev/null
@@ -1,42 +0,0 @@
-require('gitsigns').setup {
- signs = {
- add = { text = '│' },
- change = { text = '┆' },
- delete = { text = '_' },
- topdelete = { text = '‾' },
- changedelete = { text = '~' },
- untracked = { text = '┆' },
- },
- signcolumn = true, -- Toggle with `:Gitsigns toggle_signs`
- numhl = false, -- Toggle with `:Gitsigns toggle_numhl`
- linehl = false, -- Toggle with `:Gitsigns toggle_linehl`
- word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff`
- watch_gitdir = {
- follow_files = true
- },
- attach_to_untracked = true,
- current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame`
- current_line_blame_opts = {
- virt_text = true,
- virt_text_pos = 'eol', -- 'eol' | 'overlay' | 'right_align'
- delay = 1000,
- ignore_whitespace = false,
- virt_text_priority = 100,
- },
- current_line_blame_formatter = '<author>, <author_time:%Y-%m-%d> - <summary>',
- sign_priority = 6,
- update_debounce = 100,
- status_formatter = nil, -- Use default
- max_file_length = 40000, -- Disable if file is longer than this (in lines)
- preview_config = {
- -- Options passed to nvim_open_win
- border = 'single',
- style = 'minimal',
- relative = 'cursor',
- row = 0,
- col = 1
- },
- yadm = {
- enable = false
- },
-}
diff --git a/.config/nvim/after/plugin/gruvbox.lua b/.config/nvim/after/plugin/gruvbox.lua
deleted file mode 100644
index 7ea4f3e..0000000
--- a/.config/nvim/after/plugin/gruvbox.lua
+++ /dev/null
@@ -1,29 +0,0 @@
-require("gruvbox").setup({
- priority = 1000,
- terminal_colors = false, -- add neovim terminal colors
- undercurl = true,
- underline = true,
- bold = false,
- italic = {
- strings = false,
- emphasis = true,
- comments = true,
- operators = false,
- folds = true,
- },
- strikethrough = true,
- invert_selection = false,
- invert_signs = false,
- invert_tabline = false,
- invert_intend_guides = false,
- inverse = true, -- invert background for search, diffs, statuslines and errors
- contrast = "", -- can be "hard", "soft" or empty string
- palette_overrides = {},
- overrides = {
- ["@punctuation.delimiter"] = { fg = "#928374" },
- ["@string"] = { fg = "#8ec07c" },
- },
- dim_inactive = false,
- transparent_mode = true,
-})
-vim.cmd("colorscheme gruvbox")
diff --git a/.config/nvim/after/plugin/kanagawa.lua b/.config/nvim/after/plugin/kanagawa.lua
deleted file mode 100644
index 4eb498f..0000000
--- a/.config/nvim/after/plugin/kanagawa.lua
+++ /dev/null
@@ -1,27 +0,0 @@
--- require('kanagawa').setup({
--- compile = true, -- enable compiling the colorscheme
--- undercurl = true, -- enable undercurls
--- commentStyle = { italic = true },
--- functionStyle = {},
--- keywordStyle = { italic = true, bold = false },
--- statementStyle = { bold = false },
--- typeStyle = {},
--- transparent = true, -- do not set background color
--- dimInactive = false, -- dim inactive window `:h hl-NormalNC`
--- terminalColors = false, -- define vim.g.terminal_color_{0,17}
--- colors = { -- add/modify theme and palette colors
--- palette = {},
--- theme = { wave = {}, lotus = {}, dragon = {}, all = {} },
--- },
--- overrides = function(colors) -- add/modify highlights
--- return {}
--- end,
--- theme = "dragon", -- Load "wave" theme when 'background' option is not set
--- background = { -- map the value of 'background' option to a theme
--- dark = "dragon", -- try "dragon" !
--- light = "lotus"
--- },
--- })
-
--- setup must be called before loading
--- vim.cmd("colorscheme kanagawa")
diff --git a/.config/nvim/after/plugin/lsp.lua b/.config/nvim/after/plugin/lsp.lua
deleted file mode 100644
index a0e2316..0000000
--- a/.config/nvim/after/plugin/lsp.lua
+++ /dev/null
@@ -1,229 +0,0 @@
-local lsp = require('lsp-zero')
-
-lsp.preset('recommended')
-
-lsp.on_attach(function(client, bufnr)
- local opts = { buffer = bufnr, remap = false }
-
- vim.keymap.set('n', 'gd', function() vim.lsp.buf.definition() end, opts)
- vim.keymap.set('n', 'K', function() vim.lsp.buf.hover() end, opts)
- vim.keymap.set('n', '<leader>vws', function() vim.lsp.buf.workspace_symbol() end, opts)
- vim.keymap.set('n', '<leader>vd', function() vim.diagnostic.open_float() end, opts)
- vim.keymap.set('n', '[d', function() vim.diagnostic.goto_prev() end, opts)
- vim.keymap.set('n', ']d', function() vim.diagnostic.goto_next() end, opts)
- vim.keymap.set('n', '<leader>vca', function() vim.lsp.buf.code_actions() end, opts)
- vim.keymap.set('n', '<leader>vrr', function() vim.lsp.buf.references() end, opts)
- vim.keymap.set('n', '<leader>vrn', function() vim.lsp.buf.rename() end, opts)
- vim.keymap.set('i', '<C-h>', function() vim.lsp.buf.signature_help() end, opts)
-end)
-
-require('mason').setup({
- servers = {
- 'clangd',
- },
-})
-
-
-require('mason-lspconfig').setup({
- ensure_installed = {
- 'eslint',
- 'rust_analyzer',
- 'lua_ls',
- 'gopls',
- 'arduino_language_server',
- 'bashls',
- 'perlnavigator',
- 'clangd',
- 'yamlls',
- },
- handlers = {
- lsp.default_setup,
- },
-})
-
--- langs
-
-require('lspconfig').gopls.setup({
- settings = {
- gopls = {
- analyses = {
- unreachable = true,
- unusedparams = true,
- },
- codelenses = {
- generate = true,
- gc_details = true,
- },
- annotations = {
- bounds = true,
- escape = true,
- inline = true,
- },
- gofumpt = true,
- },
- },
-})
-
-require('lspconfig').clangd.setup({
- settings = {
- clangd = {
- mason = false,
- },
- },
-})
-
-require'lspconfig'.perlnavigator.setup{
- cmd = { "perlnavigator" },
- settings = {
- perlnavigator = {
- perlPath = 'perl',
- enableWarnings = true,
- perltidyProfile = '',
- perlcriticProfile = '',
- perlcriticEnabled = true,
- }
- }
-}
-
-require('lspconfig').arduino_language_server.setup({
- cmd = {
- "arduino-language-server",
- "-cli-config", "/home/jozan/.arduino15/arduino-cli.yaml",
- "-cli", "arduino-cli",
- "-clangd", "clangd",
- "-fqbn", "esp32:esp32:esp32",
- }
-})
-
-require'lspconfig'.terraformls.setup{}
-vim.api.nvim_create_autocmd({"BufWritePre"}, {
- pattern = {"*.tf", "*.tfvars"},
- callback = function()
- vim.lsp.buf.format()
- end,
-})
-
--- cmp
-
-local cmp = require('cmp')
-local cmp_select = { behavior = cmp.SelectBehavior.Select }
-cmp.setup({
- window = {
- -- completion = cmp.config.window.bordered(),
- -- documentation = cmp.config.window.bordered(),
- },
- mapping = cmp.mapping.preset.insert({
- ['<C-j>'] = cmp.mapping.select_next_item(cmp_select),
- ['<C-k>'] = cmp.mapping.select_prev_item(cmp_select),
- ['<C-b>'] = cmp.mapping.scroll_docs(-4),
- ['<C-f>'] = cmp.mapping.scroll_docs(4),
- ['<C-Space>'] = cmp.mapping.complete(),
- ['<C-e>'] = cmp.mapping.abort(),
- ['<CR>'] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
- ['<C-i>'] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
- }),
- sources = cmp.config.sources({
- { name = 'nvim_lsp' },
- { name = 'vsnip' }, -- For vsnip users.
- -- { name = 'luasnip' }, -- For luasnip users.
- -- { name = 'ultisnips' }, -- For ultisnips users.
- -- { name = 'snippy' }, -- For snippy users.
- }, {
- { name = 'buffer' },
- })
-})
-
- -- Set configuration for specific filetype.
- cmp.setup.filetype('gitcommit', {
- sources = cmp.config.sources({
- { name = 'git' }, -- You can specify the `git` source if [you were installed it](https://github.com/petertriho/cmp-git).
- }, {
- { name = 'buffer' },
- })
- })
-
- -- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore).
- cmp.setup.cmdline({ '/', '?' }, {
- mapping = cmp.mapping.preset.cmdline(),
- sources = {
- { name = 'buffer' }
- }
- })
-
- -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore).
- cmp.setup.cmdline(':', {
- mapping = cmp.mapping.preset.cmdline(),
- sources = cmp.config.sources({
- { name = 'path' }
- }, {
- { name = 'cmdline' }
- })
- })
-
-local cmp_mappings = lsp.defaults.cmp_mappings({
-})
-
-
-lsp.set_preferences({
--- sign_icons = { }
- sign_icons = {
- Text = "󰉿",
- Method = "󰆧",
- Function = "󰊕",
- Constructor = "",
- Field = "󰜢",
- Variable = "󰀫",
- Class = "󰠱",
- Interface = "",
- Module = "",
- Property = "󰜢",
- Unit = "󰑭",
- Value = "󰎠",
- Enum = "",
- Keyword = "󰌋",
- Snippet = "",
- Color = "󰏘",
- File = "󰈙",
- Reference = "󰈇",
- Folder = "󰉋",
- EnumMember = "",
- Constant = "󰏿",
- Struct = "󰙅",
- Event = "",
- Operator = "󰆕",
- TypeParameter = "",
- },
-})
-
-local lspkind = require('lspkind')
-cmp.setup {
-
- formatting = {
- format = lspkind.cmp_format({
- mode = 'symbol', -- show only symbol annotations
- maxwidth = 50, -- prevent the popup from showing more than provided characters (e.g 50 will not show more than 50 characters)
- ellipsis_char = '...', -- when popup menu exceed maxwidth, the truncated part would show ellipsis_char instead (must define maxwidth first)
-
- -- The function below will be called before any actual modifications from lspkind
- -- so that you can provide more controls on popup customization. (See [#30](https://github.com/onsails/lspkind-nvim/pull/30))
- before = function (entry, vim_item)
- return vim_item
- end
- })
- }
-}
-
--- local lspconfig = require'lspconfig'
--- lspconfig.ccls.setup {
--- init_options = {
--- compilationDatabaseDirectory = "build";
--- index = {
--- threads = 0;
--- };
--- clang = {
--- excludeArgs = { "-frounding-math" };
--- };
--- }
--- }
-
-lsp.setup()
diff --git a/.config/nvim/after/plugin/lualine.lua b/.config/nvim/after/plugin/lualine.lua
deleted file mode 100644
index b266af3..0000000
--- a/.config/nvim/after/plugin/lualine.lua
+++ /dev/null
@@ -1,349 +0,0 @@
--- Eviline config for lualine
--- Author: shadmansaleh
--- Credit: glepnir
-local lualine = require('lualine')
-
--- Color table for highlights
--- stylua: ignore
-local colors = {
- bg = '#202328',
- fg = '#a89984',
- yellow = '#ecbe7b',
- cyan = '#008080',
- darkblue = '#081633',
- green = '#98be65',
- orange = '#ff8800',
- violet = '#a9a1e1',
- magenta = '#c678dd',
- blue = '#51afef',
- red = '#ec5f67',
-}
-
-local conditions = {
- buffer_not_empty = function()
- return vim.fn.empty(vim.fn.expand('%:t')) ~= 1
- end,
- hide_in_width = function()
- return vim.fn.winwidth(0) > 80
- end,
- check_git_workspace = function()
- local filepath = vim.fn.expand('%:p:h')
- local gitdir = vim.fn.finddir('.git', filepath .. ';')
- return gitdir and #gitdir > 0 and #gitdir < #filepath
- end,
-}
-
--- Config
-local config = {
- options = {
- -- Disable sections and component separators
- component_separators = '',
- section_separators = '',
- theme = {
- -- We are going to use lualine_c an lualine_x as left and
- -- right section. Both are highlighted by c theme . So we
- -- are just setting default looks o statusline
- normal = { c = { fg = colors.fg, bg = colors.bg } },
- inactive = { c = { fg = colors.fg, bg = colors.bg } },
- },
- },
- sections = {
- -- these are to remove the defaults
- lualine_a = {},
- lualine_b = {},
- lualine_y = {},
- lualine_z = {},
- -- These will be filled later
- lualine_c = {},
- lualine_x = {},
- },
- inactive_sections = {
- -- these are to remove the defaults
- lualine_a = {},
- lualine_b = {},
- lualine_y = {},
- lualine_z = {},
- lualine_c = {},
- lualine_x = {},
- },
-}
-
--- Inserts a component in lualine_c at left section
-local function ins_left(component)
- table.insert(config.sections.lualine_c, component)
-end
-
--- Inserts a component in lualine_x at right section
-local function ins_right(component)
- table.insert(config.sections.lualine_x, component)
-end
-
-ins_left {
- function()
- return '▊'
- end,
- -- color = { fg = colors.green }, -- Sets highlighting of component
- color = function()
- -- auto change color according to neovims mode
- local mode_color = {
- n = colors.green,
- i = colors.blue,
- v = colors.magenta,
- [''] = colors.magenta,
- V = colors.magenta,
- c = colors.yellow,
- no = colors.red,
- s = colors.orange,
- S = colors.orange,
- [''] = colors.orange,
- ic = colors.yellow,
- R = colors.red,
- Rv = colors.violet,
- cv = colors.red,
- ce = colors.red,
- r = colors.cyan,
- rm = colors.cyan,
- ['r?'] = colors.cyan,
- ['!'] = colors.red,
- t = colors.red,
- }
- return { fg = mode_color[vim.fn.mode()] }
- end,
- padding = { left = 0, right = 1 }, -- We don't need space before this
-}
-
-ins_left {
- -- mode component
- function()
- return ''
- end,
- color = function()
- -- auto change color according to neovims mode
- local mode_color = {
- n = colors.green,
- i = colors.blue,
- v = colors.magenta,
- [''] = colors.magenta,
- V = colors.magenta,
- c = colors.yellow,
- no = colors.red,
- s = colors.orange,
- S = colors.orange,
- [''] = colors.orange,
- ic = colors.yellow,
- R = colors.red,
- Rv = colors.violet,
- cv = colors.red,
- ce = colors.red,
- r = colors.cyan,
- rm = colors.cyan,
- ['r?'] = colors.cyan,
- ['!'] = colors.red,
- t = colors.red,
- }
- return { fg = mode_color[vim.fn.mode()] }
- end,
- padding = { right = 1 },
-}
-
--- ins_left {
--- 'filename',
--- cond = conditions.buffer_not_empty,
--- color = { fg = colors.magenta, gui = 'bold' },
--- }
-
-ins_left {
- 'buffers',
- show_filename_only = false,
- hide_filename_extension = false,
- show_modified_status = true,
- icons_enabled = true,
- symbols = {
- modified = ' ●', -- Text to show when the buffer is modified
- alternate_file = '', -- Text to show to identify the alternate file
- directory = '', -- Text to show when the buffer is a directory
- },
- buffers_color = {
- -- Same values as the general color option can be used here.
- active = function()
- -- auto change color according to neovims mode
- local mode_color = {
- n = colors.green,
- i = colors.blue,
- v = colors.magenta,
- [''] = colors.magenta,
- V = colors.magenta,
- c = colors.yellow,
- no = colors.red,
- s = colors.orange,
- S = colors.orange,
- [''] = colors.orange,
- ic = colors.yellow,
- R = colors.red,
- Rv = colors.violet,
- cv = colors.red,
- ce = colors.red,
- r = colors.cyan,
- rm = colors.cyan,
- ['r?'] = colors.cyan,
- ['!'] = colors.red,
- t = colors.red,
- }
- return { fg = mode_color[vim.fn.mode()], gui = 'bold' }
- end,
- },
-}
-
-ins_left {
- 'diagnostics',
- sources = { 'nvim_diagnostic' },
- symbols = { error = ' ', warn = ' ', info = ' ' },
- diagnostics_color = {
- color_error = { fg = colors.red },
- color_warn = { fg = colors.yellow },
- color_info = { fg = colors.cyan },
- },
-}
-
--- Insert mid section. You can make any number of sections in neovim :)
--- for lualine it's any number greater then 2
--- ins_left {
--- function()
--- return '%='
--- end,
--- }
-
-ins_right {
- 'filetype',
- icons_enabled = true, -- I think icons are cool but Eviline doesn't have them. sigh
- color = { fg = colors.blue },
-}
-
-ins_right {
- -- Lsp server name .
- function()
- local msg = 'no lsp'
- local buf_ft = vim.api.nvim_buf_get_option(0, 'filetype')
- local clients = vim.lsp.get_active_clients()
- if next(clients) == nil then
- icon = ''
- return ''
- end
- for _, client in ipairs(clients) do
- local filetypes = client.config.filetypes
- if filetypes and vim.fn.index(filetypes, buf_ft) ~= -1 then
- return client.name
- end
- end
- return msg
- end,
- icon = ' ',
- color = { fg = colors.cyan },
-}
-
-ins_right {
- 'branch',
- icon = '',
- color = { fg = colors.violet, gui = 'bold' },
-}
-
-ins_right {
- -- filesize component
- 'filesize',
- cond = conditions.buffer_not_empty,
-}
-
-ins_right {
- 'diff',
- -- Is it me or the symbol for modified us really weird
- symbols = { added = ' ', modified = '󰝤 ', removed = ' ' },
- diff_color = {
- added = { fg = colors.green },
- modified = { fg = colors.orange },
- removed = { fg = colors.red },
- },
- cond = conditions.hide_in_width,
-}
-
-ins_right { 'location' }
-
-ins_right {
- function()
- return '▊'
- end,
- -- color = { fg = colors.green },
- color = function()
- -- auto change color according to neovims mode
- local mode_color = {
- n = colors.green,
- i = colors.blue,
- v = colors.magenta,
- [''] = colors.magenta,
- V = colors.magenta,
- c = colors.yellow,
- no = colors.red,
- s = colors.orange,
- S = colors.orange,
- [''] = colors.orange,
- ic = colors.yellow,
- R = colors.red,
- Rv = colors.violet,
- cv = colors.red,
- ce = colors.red,
- r = colors.cyan,
- rm = colors.cyan,
- ['r?'] = colors.cyan,
- ['!'] = colors.red,
- t = colors.red,
- }
- return { fg = mode_color[vim.fn.mode()] }
- end,
- padding = { left = 1 },
-}
-
--- Now don't forget to initialize lualine
-lualine.setup(config)
-
-
-
-
--- require('lualine').setup {
--- options = {
--- icons_enabled = true,
--- theme = 'gruvbox',
--- section_separators = { left = '', right = '' },
--- component_separators = { left = '', right = '' },
--- disabled_filetypes = {
--- statusline = {},
--- winbar = {},
--- },
--- ignore_focus = {},
--- always_divide_middle = true,
--- globalstatus = false,
--- refresh = {
--- statusline = 1000,
--- tabline = 1000,
--- winbar = 1000,
--- }
--- },
--- sections = {
--- lualine_a = { 'mode' },
--- lualine_b = { 'branch', 'diff', 'diagnostics' },
--- lualine_c = { 'filename' },
--- lualine_x = { 'buffers' },
--- lualine_y = { 'filetype' },
--- lualine_z = { 'location' }
--- },
--- inactive_sections = {
--- lualine_a = {},
--- lualine_b = {},
--- lualine_c = { 'filename' },
--- lualine_x = {},
--- lualine_y = {},
--- lualine_z = {}
--- },
--- tabline = {},
--- winbar = {},
--- inactive_winbar = {},
--- extensions = {},
--- }
diff --git a/.config/nvim/after/plugin/rainbow.lua b/.config/nvim/after/plugin/rainbow.lua
deleted file mode 100644
index e0951b8..0000000
--- a/.config/nvim/after/plugin/rainbow.lua
+++ /dev/null
@@ -1,23 +0,0 @@
--- Rainbow
--- This module contains a number of default definitions
-local rainbow_delimiters = require 'rainbow-delimiters'
-
-vim.g.rainbow_delimiters = {
- strategy = {
- [''] = rainbow_delimiters.strategy['global'],
- vim = rainbow_delimiters.strategy['local'],
- },
- query = {
- [''] = 'rainbow-delimiters',
- lua = 'rainbow-blocks',
- },
- highlight = {
- 'RainbowDelimiterOrange',
- 'RainbowDelimiterRed',
- 'RainbowDelimiterYellow',
- 'RainbowDelimiterBlue',
- 'RainbowDelimiterGreen',
- 'RainbowDelimiterViolet',
- 'RainbowDelimiterCyan',
- },
-}
diff --git a/.config/nvim/after/plugin/telescope.lua b/.config/nvim/after/plugin/telescope.lua
deleted file mode 100644
index 2926204..0000000
--- a/.config/nvim/after/plugin/telescope.lua
+++ /dev/null
@@ -1,16 +0,0 @@
-local tele = require('telescope')
-
-tele.setup {
- defaults = {
- mappings = {
- i = {
- ['<C-u>'] = false,
- ['<C-d>'] = require('telescope.actions').delete_buffer,
- ["<C-j>"] = require('telescope.actions').move_selection_next,
- ["<C-k>"] = require('telescope.actions').move_selection_previous,
- },
- },
- },
-}
-
-pcall(tele.load_extension, 'fzf')
diff --git a/.config/nvim/after/plugin/treesitter.lua b/.config/nvim/after/plugin/treesitter.lua
deleted file mode 100644
index 0bc651b..0000000
--- a/.config/nvim/after/plugin/treesitter.lua
+++ /dev/null
@@ -1,42 +0,0 @@
-require'nvim-treesitter.configs'.setup {
- -- A list of parser names, or "all" (the five listed parsers should always be installed)
- ensure_installed = {
- 'c',
- 'cpp',
- 'lua',
- 'vim',
- 'vimdoc',
- 'query',
- 'go',
- 'rust',
- 'yaml',
- 'regex',
- 'markdown',
- 'markdown_inline',
- 'terraform',
- 'comment',
- },
-
- -- Install parsers synchronously (only applied to `ensure_installed`)
- sync_install = false,
-
- -- Automatically install missing parsers when entering buffer
- -- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally
- auto_install = true,
-
- highlight = {
- enable = true,
-
- -- Setting this to true will run `:h syntax` and tree-sitter at the same time.
- -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation).
- -- Using this option may slow down your editor, and you may see some duplicate highlights.
- -- Instead of true it can also be a list of languages
- additional_vim_regex_highlighting = false,
- },
- incremental_selection = {
- enable = true,
- },
- indent = {
- enable = true,
- },
-}
diff --git a/.config/nvim/after/plugin/trouble.lua b/.config/nvim/after/plugin/trouble.lua
deleted file mode 100644
index c18491c..0000000
--- a/.config/nvim/after/plugin/trouble.lua
+++ /dev/null
@@ -1,17 +0,0 @@
-require('trouble').setup {
- -- icons = true,
-}
-
--- Diagnostic signs
--- https://github.com/folke/trouble.nvim/issues/52
-local signs = {
- Error = " ",
- Warn = " ",
- Hint = " ",
- Info = " "
-}
-
-for type, icon in pairs(signs) do
- local hl = "DiagnosticSign" .. type
- vim.fn.sign_define(hl, {text = icon, texthl = hl, numhl = hl})
-end
diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua
index 7ae4e52..742d23c 100644
--- a/.config/nvim/init.lua
+++ b/.config/nvim/init.lua
@@ -15,8 +15,14 @@ Confdir = os.getenv('XDG_CONFIG_HOME')
vim.cmd('set runtimepath^=/home/r_bousset/.config/nvim runtimepath+=/home/jozan/.config/nvim/after')
vim.cmd('let &packpath = &runtimepath')
-require('packs')
-require('settings')
-require('bindings')
-require('langs')
-require('hooks')
+require('config.lazy')
+require('config.settings')
+require('config.bindings')
+require('config.langs')
+require('config.hooks')
+require('lsp.arduino')
+require('lsp.bashls')
+require('lsp.clangd')
+require('lsp.gopls')
+require('lsp.luals')
+require('lsp.perlls')
diff --git a/.config/nvim/lua/bindings.lua b/.config/nvim/lua/config/bindings.lua
index 2b4013c..73dc669 100644
--- a/.config/nvim/lua/bindings.lua
+++ b/.config/nvim/lua/config/bindings.lua
@@ -28,8 +28,7 @@ vim.keymap.set('x', '<leader>p', "\"_dP")
vim.keymap.set('n', 'Q', '<nop>')
vim.keymap.set('n', '<leader><space>', vim.cmd.nohlsearch, { noremap = true, silent = true })
-local ts = require('telescope.builtin')
-require('telescope').load_extension('harpoon')
+local fzf = require('fzf-lua')
local harpoon = require('harpoon')
harpoon:setup()
@@ -46,8 +45,7 @@ vim.keymap.set('n', '<leader>u', vim.cmd.UndotreeToggle, { noremap = true, sile
vim.keymap.set('n', '<leader>u', ':w<CR>', { noremap = true, silent = true })
-- harpoon
vim.keymap.set('n', '<leader>aa', function() harpoon:list():add() end, { noremap = true, silent = true })
-vim.keymap.set('n', '<leader>ae', function() harpoon.ui:toggle_quick_menu(harpoon:list()) end, { noremap = true, silent = true })
-vim.keymap.set('n', '<leader>af', ':Telescope harpoon marks<CR>', { noremap = true, silent = true })
+vim.keymap.set('n', '<leader>af', function() harpoon.ui:toggle_quick_menu(harpoon:list()) end, { noremap = true, silent = true })
-- trouble
vim.keymap.set('n', '<leader>xx', ':Trouble diagnostics toggle focus=true<CR>', { noremap = true, silent = true })
vim.keymap.set('n', '<leader>xw', ':Trouble diagnostics toggle focus=true<CR>', { noremap = true, silent = true })
@@ -55,14 +53,21 @@ vim.keymap.set('n', '<leader>xd', ':Trouble diagnostics toggle focus=true filter
vim.keymap.set('n', '<leader>xl', ':Trouble loclist toggle focus=true<CR>', { noremap = true, silent = true })
vim.keymap.set('n', '<leader>xq', ':Trouble qflist toggle focus=true<CR>', { noremap = true, silent = true })
vim.keymap.set('n', '<leader>xs', ':Trouble lsp toggle focus=true win.position=right<CR>', { noremap = true, silent = true })
--- telescope
-vim.keymap.set('n', '<leader>fb', ts.buffers, { noremap = true, silent = true })
-vim.keymap.set('n', '<leader>fd', ts.diagnostics, { noremap = true, silent = true })
-vim.keymap.set('n', '<leader>fe', ':Telescope harpoon marks<CR>', { noremap = true, silent = true })
-vim.keymap.set('n', '<leader>ff', ts.find_files, { noremap = true, silent = true })
-vim.keymap.set('n', '<leader>fs', ts.live_grep, { noremap = true, silent = true })
-vim.keymap.set('n', '<leader>fg', function() ts.grep_string({ search = vim.fn.input("Grep > ") }) end, { noremap = true, silent = true })
-vim.keymap.set('n', '<leader>ft', ':TodoTelescope keywords=TODO,HACK,WARN,PERF,NOTE,TEST,FIX<CR>', { noremap = true, silent = true })
+-- fzf
+vim.keymap.set('n', '<leader>fb', fzf.buffers, { noremap = true, silent = true })
+vim.keymap.set('n', '<leader>fd', fzf.diagnostics_workspace, { noremap = true, silent = true })
+vim.keymap.set('n', '<leader>ff', fzf.files, { noremap = true, silent = true })
+vim.keymap.set('n', '<leader>fs', fzf.live_grep_native, { noremap = true, silent = true })
+vim.keymap.set('n', '<leader>fr', function() fzf.live_grep_native({resume = true}) end, { noremap = true, silent = true })
+vim.keymap.set('n', '<leader>ft', ':TodoFzfLua keywords=TODO,HACK,WARN,PERF,NOTE,TEST,FIX<CR>', { noremap = true, silent = true })
-- neovim
-vim.keymap.set('n', '<leader>vu', vim.cmd.PackerSync, { noremap = true, silent = true })
+vim.keymap.set('n', '<leader>vu', ':Lazy sync<CR>', { noremap = true, silent = true })
vim.keymap.set('n', '<leader>vv', vim.cmd.Ex, { noremap = true, silent = true })
+-- lsp
+vim.keymap.set('n', '<leader>rr', fzf.lsp_references, { noremap = true, silent = true })
+vim.keymap.set('n', '<leader>rw', fzf.lsp_definitions, { noremap = true, silent = true })
+vim.keymap.set('n', '<leader>ri', fzf.lsp_implementations, { noremap = true, silent = true })
+vim.keymap.set('n', '<leader>rt', fzf.lsp_typedefs, { noremap = true, silent = true })
+vim.keymap.set('n', '<leader>re', fzf.lsp_document_symbols, { noremap = true, silent = true })
+vim.keymap.set('n', '<leader>s', '<Plug>(leap-anywhere)', { noremap = true, silent = true })
+vim.keymap.set('n', '<leader>S', '<Plug>(leap-backward)', { noremap = true, silent = true })
diff --git a/.config/nvim/lua/hooks.lua b/.config/nvim/lua/config/hooks.lua
index eaf0687..da0df5d 100644
--- a/.config/nvim/lua/hooks.lua
+++ b/.config/nvim/lua/config/hooks.lua
@@ -6,3 +6,12 @@ vim.api.nvim_create_autocmd({"BufWritePre"}, {
vim.fn.setpos(".", save_cursor)
end,
})
+
+vim.api.nvim_create_autocmd("FileType", {
+ pattern = "arduino",
+ callback = function()
+ vim.opt_local.tabstop = 4
+ vim.opt_local.softtabstop = 4
+ vim.opt_local.shiftwidth = 4
+ end,
+})
diff --git a/.config/nvim/lua/langs.lua b/.config/nvim/lua/config/langs.lua
index 64fe7ea..64fe7ea 100644
--- a/.config/nvim/lua/langs.lua
+++ b/.config/nvim/lua/config/langs.lua
diff --git a/.config/nvim/lua/config/lazy.lua b/.config/nvim/lua/config/lazy.lua
new file mode 100644
index 0000000..2b8d66d
--- /dev/null
+++ b/.config/nvim/lua/config/lazy.lua
@@ -0,0 +1,146 @@
+local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
+if not (vim.uv or vim.loop).fs_stat(lazypath) then
+ local lazyrepo = "https://github.com/folke/lazy.nvim.git"
+ local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
+ if vim.v.shell_error ~= 0 then
+ vim.api.nvim_echo({
+ { "Failed to clone lazy.nvim:\n", "ErrorMsg" },
+ { out, "WarningMsg" },
+ { "\nPress any key to exit..." },
+ }, true, {})
+ vim.fn.getchar()
+ os.exit(1)
+ end
+end
+
+vim.opt.rtp:prepend(lazypath)
+
+-- Make sure to setup `mapleader` and `maplocalleader` before
+-- loading lazy.nvim so that mappings are correct.
+-- This is also a good place to setup other settings (vim.opt)
+vim.g.mapleader = "\\"
+vim.g.maplocalleader = "\\"
+
+require('lazy').setup({
+ spec = {
+ {
+ 'windwp/nvim-autopairs',
+ config = function() require('nvim-autopairs').setup {} end
+ },
+ {
+ 'lewis6991/gitsigns.nvim',
+ config = function() require('gitsigns').setup {} end
+ },
+ {
+ 'numToStr/Comment.nvim',
+ dependencies = { 'JoosepAlviste/nvim-ts-context-commentstring' },
+ config = function() require('Comment').setup {} end
+ },
+ { 'mbbill/undotree' },
+ { 'chrisbra/csv.vim' },
+ {
+ 'ThePrimeagen/harpoon',
+ branch = 'harpoon2',
+ dependencies = { 'nvim-lua/plenary.nvim' }
+ },
+ {
+ 'lukas-reineke/indent-blankline.nvim',
+ config = function()
+ local highlight = {
+ "Whitespace",
+ }
+ require('ibl').setup {
+ debounce = 100,
+ indent = { highlight = highlight, char = '┊', },
+ scope = { show_start = false, show_end = false },
+ }
+ end,
+ },
+ {
+ 'folke/todo-comments.nvim',
+ dependencies = { 'nvim-lua/plenary.nvim' },
+ config = function()
+ require('todo-comments.config').setup{
+ highlight = {
+ multiline = false,
+ },
+ }
+ require('todo-comments')
+ end
+ },
+ {
+ 'lcheylus/overlength.nvim',
+ config = function()
+ require('overlength').setup{
+ enabled = true,
+ colors = {
+ ctermfg = nil,
+ ctermbg = 'darkgrey',
+ fg = nil,
+ bg = '#8B0000',
+ },
+ textwidth_mode = 0,
+ default_overlength = 80,
+ grace_length = 1,
+ highlight_to_eol = true,
+ disable_ft = { 'qf', 'help', 'man', 'checkhealth', 'lazy', 'packer', 'NvimTree', 'Telescope', 'WhichKey', 'text', 'csv', 'lua', 'gosum', 'sh', '' }
+ }
+ end
+ },
+ {
+ 'kylechui/nvim-surround',
+ version = "^3.0.0",
+ event = "VeryLazy",
+ config = function() require('nvim-surround').setup {} end
+ },
+ {
+ 'ggandor/leap.nvim',
+ dependencies = { 'tpope/vim-repeat' },
+ config = function()
+ require('leap').opts.preview_filter =
+ function (ch0, ch1, ch2)
+ return not (
+ ch1:match('%s') or
+ ch0:match('%a') and ch1:match('%a') and ch2:match('%a')
+ )
+ end
+ require('leap').setup({})
+ end
+ },
+ {
+ 'ibhagwan/fzf-lua',
+ dependencies = { 'nvim-tree/nvim-web-devicons' },
+ opts = {
+ defaults = {
+ file_icons = false,
+ no_header = true,
+ no_header_i = true,
+ },
+ winopts = {
+ width = 1,
+ height = 0.35,
+ row = 1,
+ border = 'none',
+ preview = {
+ border = 'none',
+ title = false,
+ layout = "horizontal",
+ winopts = {
+ number = false,
+ },
+ },
+ previewers = {
+ builtin = {
+ syntax_limit_b = 1024 * 100,
+ },
+ }
+ }
+ }
+ },
+ { import = "plugins" },
+ },
+})
+
+-- use 'preservim/tagbar'
+-- use 'sainnhe/gruvbox-material'
+-- use 'savq/melange-nvim'
diff --git a/.config/nvim/lua/settings.lua b/.config/nvim/lua/config/settings.lua
index e578062..2fceccc 100644
--- a/.config/nvim/lua/settings.lua
+++ b/.config/nvim/lua/config/settings.lua
@@ -38,6 +38,7 @@ vim.opt.fillchars = {eob = " "}
vim.opt.wrap = true
vim.opt.termguicolors = true
vim.opt.bg = 'dark'
+vim.opt.guicursor:remove { 't:block-blinkon500-blinkoff500-TermCursor' }
vim.g.gruvbox_material_background = 'medium'
vim.g.gruvbox_material_foreground = 'original'
diff --git a/.config/nvim/lua/lsp/arduino.lua b/.config/nvim/lua/lsp/arduino.lua
new file mode 100644
index 0000000..f0df170
--- /dev/null
+++ b/.config/nvim/lua/lsp/arduino.lua
@@ -0,0 +1,14 @@
+vim.lsp.config('arduino-language-server', {
+ cmd = {
+ 'arduino-language-server',
+ '-cli-config', '/home/jozan/.arduino15/arduino-cli.yaml',
+ '-cli', 'arduino-cli',
+ '-clangd', 'clangd',
+ '-fqbn', 'esp8266:esp8266:d1_mini',
+ '-jobs', '3',
+ },
+ filetypes = {'arduino'},
+ root_markers = {'.git'},
+})
+
+vim.lsp.enable('arduino-language-server')
diff --git a/.config/nvim/lua/lsp/bashls.lua b/.config/nvim/lua/lsp/bashls.lua
new file mode 100644
index 0000000..54d562f
--- /dev/null
+++ b/.config/nvim/lua/lsp/bashls.lua
@@ -0,0 +1,12 @@
+vim.lsp.config('bashls', {
+ cmd = { 'bash-language-server', 'start' },
+ settings = {
+ bashIde = {
+ globPattern = vim.env.GLOB_PATTERN or '*@(.sh|.inc|.bash|.command)',
+ },
+ },
+ filetypes = { 'bash', 'sh', 'zsh' },
+ root_markers = { '.git' },
+})
+
+vim.lsp.enable('bashls')
diff --git a/.config/nvim/lua/lsp/clangd.lua b/.config/nvim/lua/lsp/clangd.lua
new file mode 100644
index 0000000..2933b02
--- /dev/null
+++ b/.config/nvim/lua/lsp/clangd.lua
@@ -0,0 +1,11 @@
+vim.lsp.config('clangd', {
+ cmd = { 'clangd', '--background-index', '--clang-tidy', '--completion-style=detailed' },
+ filetypes = { 'c', 'cpp', 'objc', 'objcpp' },
+ root_markers = { '.clangd', 'compile_commands.json', 'compile_flags.txt', '.git' },
+ init_options = {
+ fallbackFlags = { '-std=c17' },
+ offsetEncoding = { 'utf-16' },
+ },
+})
+
+vim.lsp.enable('clangd')
diff --git a/.config/nvim/lua/lsp/gopls.lua b/.config/nvim/lua/lsp/gopls.lua
new file mode 100644
index 0000000..c37da39
--- /dev/null
+++ b/.config/nvim/lua/lsp/gopls.lua
@@ -0,0 +1,25 @@
+vim.lsp.config('gopls', {
+ cmd = {'gopls'},
+ filetypes = { 'go', 'gomod', 'gowork', 'gotmpl' },
+ root_markers = {'go.mod', 'go.sum', '.git'},
+ settings = {
+ gopls = {
+ analyses = {
+ unreachable = true,
+ unusedparams = true,
+ },
+ codelenses = {
+ generate = true,
+ gc_details = true,
+ },
+ annotations = {
+ bounds = true,
+ escape = true,
+ inline = true,
+ },
+ gofumpt = true,
+ }
+ }
+})
+
+vim.lsp.enable('gopls')
diff --git a/.config/nvim/lua/lsp/luals.lua b/.config/nvim/lua/lsp/luals.lua
new file mode 100644
index 0000000..40d4c3d
--- /dev/null
+++ b/.config/nvim/lua/lsp/luals.lua
@@ -0,0 +1,14 @@
+vim.lsp.config('luals', {
+ cmd = {'lua-language-server'},
+ filetypes = {'lua'},
+ root_markers = {'.luarc.json', '.luarc.jsonc'},
+ settings = {
+ Lua = {
+ diagnostics = {
+ globals = { "vim" }
+ }
+ }
+ }
+})
+
+vim.lsp.enable('luals')
diff --git a/.config/nvim/lua/lsp/perlls.lua b/.config/nvim/lua/lsp/perlls.lua
new file mode 100644
index 0000000..b995cd2
--- /dev/null
+++ b/.config/nvim/lua/lsp/perlls.lua
@@ -0,0 +1,23 @@
+vim.lsp.config('perlls', {
+ cmd = {
+ 'perl',
+ '-MPerl::LanguageServer',
+ '-e',
+ 'Perl::LanguageServer::run',
+ '--',
+ '--port 13603',
+ '--nostdio 0',
+ },
+ settings = {
+ perl = {
+ perlCmd = 'perl',
+ perlInc = ' ',
+ fileFilter = { '.pm', '.pl' },
+ ignoreDirs = '.git',
+ },
+ },
+ filetypes = { 'perl' },
+ root_markers = { '.git' },
+})
+
+vim.lsp.enable('perlls')
diff --git a/.config/nvim/lua/packs.lua b/.config/nvim/lua/packs.lua
deleted file mode 100644
index dbf3e19..0000000
--- a/.config/nvim/lua/packs.lua
+++ /dev/null
@@ -1,171 +0,0 @@
-vim.cmd.packadd('packer.nvim')
-
-return require('packer').startup({function(use)
- -- Packer can manage itself
- use 'wbthomason/packer.nvim'
- use {
- 'nvim-telescope/telescope.nvim',
- branch = '0.1.x',
- requires = { {'nvim-lua/plenary.nvim'} }
- }
- use {
- 'windwp/nvim-autopairs',
- config = function() require('nvim-autopairs').setup {} end
- }
- -- use 'jiangmiao/auto-pairs'
- -- use 'folke/which-key.nvim'
- use 'lewis6991/gitsigns.nvim'
- -- use 'mhinz/vim-startify'
- -- use 'mg979/vim-visual-multi'
- use 'preservim/tagbar'
- -- use 'preservim/nerdcommenter'
- use {
- 'numToStr/Comment.nvim',
- requires = { {'JoosepAlviste/nvim-ts-context-commentstring'} },
- config = function()
- require('Comment').setup()
- end
- }
- -- use {
- -- 'nvim-tree/nvim-tree.lua',
- -- requires = {'nvim-tree/nvim-web-devicons'}
- -- }
- use 'mbbill/undotree'
- -- use 'brglng/vim-sidebar-manager'
- use 'ellisonleao/gruvbox.nvim'
- use 'sainnhe/gruvbox-material'
- use 'navarasu/onedark.nvim'
- use 'rebelot/kanagawa.nvim'
- use 'theniceboy/nvim-deus'
- use 'savq/melange-nvim'
- use 'tpope/vim-fugitive'
- -- use 'tpope/vim-surround'
- use 'nvim-lualine/lualine.nvim'
- -- use 'voldikss/vim-floaterm'
- -- use 'akinsho/toggleterm.nvim'
- use 'chrisbra/csv.vim'
- use {
- 'ThePrimeagen/harpoon',
- branch = 'harpoon2',
- requires = { {'nvim-lua/plenary.nvim'} }
- }
- use 'HiPhish/rainbow-delimiters.nvim'
- use {
- 'nvim-treesitter/nvim-treesitter-textobjects',
- requires = { {'nvim-treesitter/nvim-treesitter'} },
- run = function()
- local ts_update = require('nvim-treesitter.install').update({ with_sync = true })
- ts_update()
- end,
- }
- use {
- 'VonHeikemen/lsp-zero.nvim',
- branch = 'v3.x',
- requires = {
- -- LSP Support
- {'neovim/nvim-lspconfig'},
- {'williamboman/mason.nvim'},
- {'williamboman/mason-lspconfig.nvim'},
-
- -- Autocompletion
- {'hrsh7th/nvim-cmp'},
- {'hrsh7th/cmp-buffer'},
- {'hrsh7th/cmp-path'},
- {'saadparwaiz1/cmp_luasnip'},
- {'hrsh7th/cmp-nvim-lsp'},
- {'hrsh7th/cmp-nvim-lua'},
-
- -- Snippets
- {'L3MON4D3/LuaSnip'},
- {'rafamadriz/friendly-snippets'},
- }
- }
- use{
- 'folke/trouble.nvim',
- requires = {
- {'nvim-tree/nvim-web-devicons'},
- },
- }
- use {
- 'lukas-reineke/indent-blankline.nvim',
- config = function()
- local highlight = {
- "Whitespace",
- }
- require('ibl').setup {
- debounce = 100,
- indent = { highlight = highlight, char = '┊', },
- scope = { show_start = false, show_end = false },
- }
- end,
- }
- use ({
- 'folke/todo-comments.nvim',
- requires = { {'nvim-lua/plenary.nvim'} },
- config = function()
- require('todo-comments.config').setup{
- highlight = {
- multiline = false,
- },
- }
- require('todo-comments')
- end
- })
- use 'onsails/lspkind.nvim'
- use ({
- 'lcheylus/overlength.nvim',
- config = function()
- require('overlength').setup({
- enabled = true,
- colors = {
- ctermfg = nil,
- ctermbg = 'darkgrey',
- fg = nil,
- bg = '#8B0000',
- },
- textwidth_mode = 0,
- default_overlength = 80,
- grace_length = 1,
- highlight_to_eol = true,
- disable_ft = { 'qf', 'help', 'man', 'checkhealth', 'lazy', 'packer', 'NvimTree', 'Telescope', 'WhichKey', 'text' },
- })
- end
- })
--- use({
--- "tadmccorkle/markdown.nvim",
--- config = function()
--- require("markdown").setup({
--- -- configuration here or empty for defaults
--- })
--- end,
--- })
- use({
- "kylechui/nvim-surround",
- requires = {
- {'nvim-treesitter/nvim-treesitter'},
- {'nvim-treesitter/nvim-treesitter-textobjects'},
- },
- tag = "*", -- Use for stability; omit to use `main` branch for the latest features
- config = function()
- require("nvim-surround").setup({
- -- Configuration here, or leave empty to use defaults
- })
- end
- })
- use({
- 'ggandor/leap.nvim',
- requires = {'tpope/vim-repeat'},
- config = function()
- require('leap').setup({})
- vim.keymap.set({'n', 'x', 'o'}, '<leader>s', '<Plug>(leap-forward-to)')
- vim.keymap.set({'n', 'x', 'o'}, '<leader>S', '<Plug>(leap-backward-to)')
- vim.keymap.set({'n', 'x', 'o'}, '<C-s>', '<Plug>(leap-forward-till)')
- vim.keymap.set({'n', 'x', 'o'}, '<C-S-s>', '<Plug>(leap-backward-till)')
- end
- })
-end,
- config = {
- display = {
- open_fn = require('packer.util').float,
- }
-}})
diff --git a/.config/nvim/lua/plugins/gruvbox.lua b/.config/nvim/lua/plugins/gruvbox.lua
new file mode 100644
index 0000000..bf99776
--- /dev/null
+++ b/.config/nvim/lua/plugins/gruvbox.lua
@@ -0,0 +1,38 @@
+return {
+ {
+ 'ellisonleao/gruvbox.nvim',
+ lazy = false,
+ priority = 1000,
+ opts = {
+ terminal_colors = false,
+ undercurl = true,
+ underline = true,
+ bold = false,
+ italic = {
+ strings = false,
+ emphasis = true,
+ comments = true,
+ operators = false,
+ folds = true,
+ },
+ strikethrough = true,
+ invert_selection = false,
+ invert_signs = false,
+ invert_tabline = false,
+ invert_intend_guides = false,
+ inverse = true, -- invert background for search, diffs, statuslines and errors
+ contrast = "hard", -- can be "hard", "soft" or empty string
+ palette_overrides = {},
+ overrides = {
+ ["@punctuation.delimiter"] = { fg = "#928374" },
+ String = { fg = "#8ec07c" },
+ },
+ dim_inactive = false,
+ transparent_mode = true,
+ },
+ config = function(_, opts)
+ require('gruvbox').setup(opts)
+ vim.cmd([[colorscheme gruvbox]])
+ end
+ }
+}
diff --git a/.config/nvim/lua/plugins/lspkind.lua b/.config/nvim/lua/plugins/lspkind.lua
new file mode 100644
index 0000000..e838f56
--- /dev/null
+++ b/.config/nvim/lua/plugins/lspkind.lua
@@ -0,0 +1,110 @@
+return {
+ {
+ 'onsails/lspkind.nvim',
+ config = function()
+ require('lspkind').setup({
+ mode = 'symbol_text',
+ preset = 'codicons',
+ symbol_map = {
+ Text = "󰉿",
+ Method = "󰆧",
+ Function = "󰊕",
+ Constructor = "",
+ Field = "󰜢",
+ Variable = "󰀫",
+ Class = "󰠱",
+ Interface = "",
+ Module = "",
+ Property = "󰜢",
+ Unit = "󰑭",
+ Value = "󰎠",
+ Enum = "",
+ Keyword = "󰌋",
+ Snippet = "",
+ Color = "󰏘",
+ File = "󰈙",
+ Reference = "󰈇",
+ Folder = "󰉋",
+ EnumMember = "",
+ Constant = "󰏿",
+ Struct = "󰙅",
+ Event = "",
+ Operator = "󰆕",
+ TypeParameter = "",
+ },
+ })
+ end
+ },
+ {
+ "hrsh7th/nvim-cmp",
+ dependencies = {
+ "onsails/lspkind.nvim",
+ "hrsh7th/cmp-nvim-lsp",
+ "hrsh7th/cmp-buffer",
+ "hrsh7th/cmp-path",
+ "L3MON4D3/LuaSnip",
+ },
+ event = "InsertEnter",
+ config = function()
+ vim.api.nvim_set_hl(0, "CmpNormal", { bg = "#32302f" })
+ vim.api.nvim_set_hl(0, "PmenuSel", { bg = "#504945" })
+ local cmp = require('cmp')
+ local lspkind = require('lspkind')
+
+ cmp.setup({
+ snippet = {
+ expand = function(args)
+ require('luasnip').lsp_expand(args.body)
+ end,
+ },
+ formatting = {
+ format = lspkind.cmp_format({
+ mode = 'symbol_text',
+ maxwidth = {
+ menu = 50,
+ abbr = 50,
+ },
+ ellipsis_char = '...',
+ show_labelDetails = true,
+ before = function(entry, vim_item)
+ -- Add source name to menu
+ vim_item.menu = ({
+ nvim_lsp = "[LSP]",
+ luasnip = "[LuaSnip]",
+ buffer = "[Buffer]",
+ path = "[Path]",
+ })[entry.source.name]
+ return vim_item
+ end
+ })
+ },
+ mapping = cmp.mapping.preset.insert({
+ ['<C-j>'] = cmp.mapping.select_next_item(cmp_select),
+ ['<C-k>'] = cmp.mapping.select_prev_item(cmp_select),
+ ['<C-b>'] = cmp.mapping.scroll_docs(-4),
+ ['<C-f>'] = cmp.mapping.scroll_docs(4),
+ ['<C-Space>'] = cmp.mapping.complete(),
+ ['<C-e>'] = cmp.mapping.abort(),
+ ['<CR>'] = cmp.mapping.confirm({ select = true }),
+ }),
+ sources = cmp.config.sources({
+ { name = 'nvim_lsp' },
+ { name = 'luasnip' },
+ }, {
+ { name = 'buffer' },
+ { name = 'path' },
+ }),
+ window = {
+ completion = cmp.config.window.bordered({
+ border = 'none',
+ winhighlight = "Normal:CmpNormal,FloatBorder:CmpNormal,CursorLine:PmenuSel,Search:None",
+ }),
+ documentation = cmp.config.window.bordered({
+ border = 'none',
+ winhighlight = "Normal:CmpNormal,FloatBorder:CmpNormal,CursorLine:PmenuSel,Search:None",
+ }),
+ },
+ })
+ end,
+ },
+}
diff --git a/.config/nvim/lua/plugins/lualine.lua b/.config/nvim/lua/plugins/lualine.lua
new file mode 100644
index 0000000..53d22ff
--- /dev/null
+++ b/.config/nvim/lua/plugins/lualine.lua
@@ -0,0 +1,239 @@
+return {
+ {
+ 'nvim-lualine/lualine.nvim',
+ dependencies = { 'nvim-tree/nvim-web-devicons' },
+ config = function()
+ local colors = {
+ bg = '#32302f',
+ fg = '#a89984',
+ orange = '#fe8019',
+ red = '#cc241d',
+ green = '#98971a',
+ yellow = '#d79921',
+ blue = '#458588',
+ magenta = '#b16286',
+ cyan = '#689d6a',
+ white = '#ebdbb2',
+ bright_red = '#fb4934',
+ bright_green = '#b8bb26',
+ bright_yellow = '#fabd2f',
+ bright_blue = '#83a598',
+ bright_magenta = '#d3869b',
+ bright_cyan = '#8ec07c',
+ bright_white = '#ebdbb2',
+ }
+
+ local mode_color = {
+ n = colors.bright_cyan,
+ i = colors.bright_blue,
+ v = colors.bright_magenta,
+ [''] = colors.bright_magenta,
+ V = colors.bright_magenta,
+ c = colors.yellow,
+ no = colors.red,
+ s = colors.orange,
+ S = colors.orange,
+ [''] = colors.orange,
+ ic = colors.yellow,
+ R = colors.bright_red,
+ Rv = colors.bright_magenta,
+ cv = colors.red,
+ ce = colors.red,
+ r = colors.cyan,
+ rm = colors.cyan,
+ ['r?'] = colors.cyan,
+ ['!'] = colors.red,
+ t = colors.red,
+ }
+
+ local conditions = {
+ buffer_not_empty = function()
+ return vim.fn.empty(vim.fn.expand('%:t')) ~= 1
+ end,
+ hide_in_width = function()
+ return vim.fn.winwidth(0) > 80
+ end,
+ check_git_workspace = function()
+ local filepath = vim.fn.expand('%:p:h')
+ local gitdir = vim.fn.finddir('.git', filepath .. ';')
+ return gitdir and #gitdir > 0 and #gitdir < #filepath
+ end,
+ }
+
+ local config = {
+ options = {
+ -- Disable sections and component separators
+ component_separators = '',
+ section_separators = '',
+ theme = {
+ -- We are going to use lualine_c an lualine_x as left and
+ -- right section. Both are highlighted by c theme . So we
+ -- are just setting default looks o statusline
+ normal = { c = { fg = colors.fg, bg = colors.bg } },
+ inactive = { c = { fg = colors.fg, bg = colors.bg } },
+ },
+ },
+ sections = {
+ -- these are to remove the defaults
+ lualine_a = {},
+ lualine_b = {},
+ lualine_y = {},
+ lualine_z = {},
+ -- These will be filled later
+ lualine_c = {},
+ lualine_x = {},
+ },
+ inactive_sections = {
+ -- these are to remove the defaults
+ lualine_a = {},
+ lualine_b = {},
+ lualine_y = {},
+ lualine_z = {},
+ lualine_c = {},
+ lualine_x = {},
+ },
+ }
+
+ -- Inserts a component in lualine_c at left section
+ local function ins_left(component)
+ table.insert(config.sections.lualine_c, component)
+ end
+
+ -- Inserts a component in lualine_x at right section
+ local function ins_right(component)
+ table.insert(config.sections.lualine_x, component)
+ end
+
+ ins_left {
+ function()
+ return '▊'
+ end,
+ -- color = { fg = colors.green }, -- Sets highlighting of component
+ color = function()
+ -- auto change color according to neovims mode
+ return { fg = mode_color[vim.fn.mode()] }
+ end,
+ padding = { left = 0, right = 1 }, -- We don't need space before this
+ }
+
+ ins_left {
+ -- mode component
+ function()
+ return ''
+ end,
+ color = function()
+ -- auto change color according to neovims mode
+ return { fg = mode_color[vim.fn.mode()] }
+ end,
+ padding = { right = 1 },
+ }
+
+ ins_left {
+ 'buffers',
+ show_filename_only = false,
+ hide_filename_extension = false,
+ show_modified_status = true,
+ icons_enabled = true,
+ symbols = {
+ modified = ' ●', -- Text to show when the buffer is modified
+ alternate_file = '', -- Text to show to identify the alternate file
+ directory = '', -- Text to show when the buffer is a directory
+ },
+ buffers_color = {
+ -- Same values as the general color option can be used here.
+ active = function()
+ -- auto change color according to neovims mode
+ return { fg = mode_color[vim.fn.mode()], gui = 'bold' }
+ end,
+ },
+ }
+
+ ins_left {
+ 'diagnostics',
+ sources = { 'nvim_diagnostic' },
+ symbols = { error = ' ', warn = ' ', info = ' ' },
+ diagnostics_color = {
+ color_error = { fg = colors.red },
+ color_warn = { fg = colors.yellow },
+ color_info = { fg = colors.cyan },
+ },
+ }
+
+ -- Insert mid section. You can make any number of sections in neovim :)
+ -- for lualine it's any number greater then 2
+ -- ins_left {
+ -- function()
+ -- return '%='
+ -- end,
+ -- }
+
+ ins_right {
+ 'filetype',
+ icons_enabled = true, -- I think icons are cool but Eviline doesn't have them. sigh
+ color = { fg = colors.blue },
+ }
+
+ ins_right {
+ -- Lsp server name .
+ function()
+ local msg = 'no lsp'
+ local buf_ft = vim.api.nvim_buf_get_option(0, 'filetype')
+ local clients = vim.lsp.get_clients()
+ if next(clients) == nil then
+ icon = ''
+ return ''
+ end
+ for _, client in ipairs(clients) do
+ local filetypes = client.config.filetypes
+ if filetypes and vim.fn.index(filetypes, buf_ft) ~= -1 then
+ return client.name
+ end
+ end
+ return msg
+ end,
+ icon = ' ',
+ color = { fg = colors.cyan },
+ }
+
+ ins_right {
+ 'branch',
+ icon = '',
+ color = { fg = colors.blue, gui = 'bold' },
+ }
+
+ ins_right {
+ -- filesize component
+ 'filesize',
+ cond = conditions.buffer_not_empty,
+ }
+
+ ins_right {
+ 'diff',
+ -- Is it me or the symbol for modified us really weird
+ symbols = { added = ' ', modified = '󰝤 ', removed = ' ' },
+ diff_color = {
+ added = { fg = colors.bright_green },
+ modified = { fg = colors.yellow },
+ removed = { fg = colors.bright_red },
+ },
+ cond = conditions.hide_in_width,
+ }
+
+ ins_right { 'location' }
+
+ ins_right {
+ function()
+ return '▊'
+ end,
+ -- color = { fg = colors.green },
+ color = function()
+ -- auto change color according to neovims mode
+ return { fg = mode_color[vim.fn.mode()] }
+ end,
+ padding = { left = 1 },
+ }
+
+ require('lualine').setup(config)
+ end
+ }
+}
diff --git a/.config/nvim/lua/plugins/rainbow.lua b/.config/nvim/lua/plugins/rainbow.lua
new file mode 100644
index 0000000..740b712
--- /dev/null
+++ b/.config/nvim/lua/plugins/rainbow.lua
@@ -0,0 +1,28 @@
+return {
+ {
+ 'HiPhish/rainbow-delimiters.nvim',
+ config = function()
+ local rainbow_delimiters = require('rainbow-delimiters')
+
+ vim.g.rainbow_delimiters = {
+ strategy = {
+ [''] = rainbow_delimiters.strategy['global'],
+ vim = rainbow_delimiters.strategy['local'],
+ },
+ query = {
+ [''] = 'rainbow-delimiters',
+ lua = 'rainbow-blocks',
+ },
+ highlight = {
+ 'RainbowDelimiterOrange',
+ 'RainbowDelimiterRed',
+ 'RainbowDelimiterYellow',
+ 'RainbowDelimiterBlue',
+ 'RainbowDelimiterGreen',
+ 'RainbowDelimiterViolet',
+ 'RainbowDelimiterCyan',
+ },
+ }
+ end
+ }
+}
diff --git a/.config/nvim/lua/plugins/treesitter.lua b/.config/nvim/lua/plugins/treesitter.lua
new file mode 100644
index 0000000..5387ac6
--- /dev/null
+++ b/.config/nvim/lua/plugins/treesitter.lua
@@ -0,0 +1,53 @@
+return {
+ {
+ 'nvim-treesitter/nvim-treesitter',
+ branch = 'master',
+ lazy = false,
+ build = ':TSUpdate',
+ config = function()
+ require('nvim-treesitter.configs').setup {
+ -- A list of parser names, or "all" (the five listed parsers should always be installed)
+ ensure_installed = {
+ 'c',
+ 'cpp',
+ 'lua',
+ 'vim',
+ 'vimdoc',
+ 'query',
+ 'go',
+ 'perl',
+ 'rust',
+ 'yaml',
+ 'regex',
+ 'markdown',
+ 'markdown_inline',
+ 'terraform',
+ 'comment',
+ },
+
+ -- Install parsers synchronously (only applied to `ensure_installed`)
+ sync_install = false,
+
+ -- Automatically install missing parsers when entering buffer
+ -- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally
+ auto_install = true,
+
+ highlight = {
+ enable = true,
+
+ -- Setting this to true will run `:h syntax` and tree-sitter at the same time.
+ -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation).
+ -- Using this option may slow down your editor, and you may see some duplicate highlights.
+ -- Instead of true it can also be a list of languages
+ additional_vim_regex_highlighting = false,
+ },
+ incremental_selection = {
+ enable = true,
+ },
+ indent = {
+ enable = true,
+ },
+ }
+ end
+ }
+}
diff --git a/.config/nvim/lua/plugins/trouble.lua b/.config/nvim/lua/plugins/trouble.lua
new file mode 100644
index 0000000..11c23a3
--- /dev/null
+++ b/.config/nvim/lua/plugins/trouble.lua
@@ -0,0 +1,27 @@
+return {
+ {
+ 'folke/trouble.nvim',
+ requires = {
+ {'nvim-tree/nvim-web-devicons'},
+ },
+ config = function()
+ require('trouble').setup {
+ -- icons = true,
+ }
+
+ -- Diagnostic signs
+ -- https://github.com/folke/trouble.nvim/issues/52
+ local signs = {
+ Error = " ",
+ Warn = " ",
+ Hint = " ",
+ Info = " "
+ }
+
+ for type, icon in pairs(signs) do
+ local hl = "DiagnosticSign" .. type
+ vim.fn.sign_define(hl, {text = icon, texthl = hl, numhl = hl})
+ end
+ end
+ }
+}
diff --git a/.config/picom.conf b/.config/picom.conf
index dc1dfb2..f4afb05 100644
--- a/.config/picom.conf
+++ b/.config/picom.conf
@@ -23,7 +23,7 @@ no-use-damage = true;
# detect-rounded-corners = true;
# Enabled client-side shadows on windows.
-shadow = true;
+shadow = false;
# The blur radius for shadows. (default 12)
shadow-radius = 12;
# The left offset for shadows. (default -15)
@@ -97,13 +97,13 @@ wintypes:
};
dock = { shadow = true; }
dnd = { shadow = false; }
- popup_menu = {
- opacity = 1.0;
+ popup_menu = {
+ opacity = 1.0;
shadow = false;
fade = false;
}
- dropdown_menu = {
- opacity = 1.0;
+ dropdown_menu = {
+ opacity = 1.0;
fade = false;
}
};
diff --git a/.config/pipe-viewer/pipe-viewer.conf b/.config/pipe-viewer/pipe-viewer.conf
index c656d8b..6c0d13f 100644
--- a/.config/pipe-viewer/pipe-viewer.conf
+++ b/.config/pipe-viewer/pipe-viewer.conf
@@ -1,6 +1,6 @@
-#!/usr/bin/perl -I/nix/store/3vq9qasxlqpyq1k95nq3s13g2m6w59ay-perl-5.40.0/lib/perl5/site_perl -I/nix/store/l02g9sqkb5625739p07v9a7c5r2q167c-perl5.40.0-Test-Pod-1.52/lib/perl5/site_perl -I/nix/store/ld4ajgzsdkyjh1bpnns8ymm0xrvzdzvy-perl-5.40.0-env/lib/perl5/site_perl -I/nix/store/jy6wvmgmddhh4d82ciq1r3dwgfcialll-perl5.40.0-Module-Build-0.4234/lib/perl5/site_perl -I/nix/store/39z485wv6fl420p04v9dxcf5fz7p64pi-perl5.40.0-pipe-viewer-0.5.3/lib/perl5/site_perl
+#!/usr/bin/perl -I/nix/store/gndky4p2sjhsh0zdlqs3dnyzyslccxha-perl-5.40.0/lib/perl5/site_perl -I/nix/store/v9p0424f6q65zmjq29lqdbr1bj917j9c-perl5.40.0-Test-Pod-1.52/lib/perl5/site_perl -I/nix/store/sfz5ykgb8dg7zb9d0yqf3kxiw3ld4gmv-perl-5.40.0-env/lib/perl5/site_perl -I/nix/store/v37hnszhgvq3c68p3knbhva2dmb3lwna-perl5.40.0-Gtk3-0.038/lib/perl5/site_perl -I/nix/store/mbm6vxxhsadm5b0c4bcl174f8c456n60-perl5.40.0-Cairo-GObject-1.005/lib/perl5/site_perl -I/nix/store/3qbxs296i5znxv9g8p3vr7z6xhpb5mc3-perl5.40.0-Cairo-1.109/lib/perl5/site_perl -I/nix/store/rrkcxg15312yiy9axx6qr5s7wi6djsk0-perl5.40.0-ExtUtils-Depends-0.8001/lib/perl5/site_perl -I/nix/store/3wq4i7l0fvqmkjqv74pz5lkdmwamc22d-perl5.40.0-ExtUtils-PkgConfig-1.16/lib/perl5/site_perl -I/nix/store/hs6y91z06r9j95k35j5y143cvkw718sz-perl5.40.0-Glib-1.3294/lib/perl5/site_perl -I/nix/store/2g298acj7fsnj9grc1h9sl1whmks7gjj-perl5.40.0-Glib-Object-Introspection-0.051/lib/perl5/site_perl -I/nix/store/cg11rf957k3h37h4inyqx4y5gq53nkyz-perl5.40.0-Module-Build-0.4234/lib/perl5/site_perl -I/nix/store/jx8cqiwd6j0163qmfvd1c56a1401y03a-perl5.40.0-pipe-viewer-0.5.4/lib/perl5/site_perl
-# CLI Pipe Viewer 0.5.3 - configuration file
+# CLI Pipe Viewer 0.5.4 - configuration file
use utf8;
@@ -48,6 +48,8 @@ our $CONFIG = {
date => undef,
debug => 0,
download_and_play => 0,
+ download_in_subdir => 0,
+ download_in_subdir_format => "*AUTHOR*",
download_with_wget => 0,
download_with_ytdl => 1,
downloads_dir => ".",
@@ -86,6 +88,7 @@ our $CONFIG = {
remove_played_file => 0,
resolution => "best",
saved_channels_file => "$ENV{HOME}/.config/pipe-viewer/users.txt",
+ set_mtime => 1,
show_video_info => 1,
skip_if_exists => 1,
skip_watched => 0,
diff --git a/.config/tremc/settings.cfg b/.config/tremc/settings.cfg
index 8775c9b..7d45361 100644
--- a/.config/tremc/settings.cfg
+++ b/.config/tremc/settings.cfg
@@ -1,5 +1,5 @@
[Connection]
-host = ceres
+host = localhost
port = 9091
path = /transmission/rpc
username =
@@ -9,7 +9,7 @@ password =
order = name
[Filtering]
-filter =
+filter =
invert = False
[Misc]
@@ -19,9 +19,7 @@ file_viewer = xdg-open %%s
file_open_in_terminal = True
[Colors]
-header = bg:yellow,fg:black
-footer = bg:yellow,fg:black
-title_seed = bg:red,fg:black
+title_seed = bg:yellow,fg:black
title_download = bg:red,fg:black
title_idle = bg:cyan,fg:black
title_incomplete = bg:default,fg:default
@@ -33,7 +31,6 @@ upload_rate = bg:black,fg:red
eta+ratio = bg:default,fg:default
filter_status = bg:red,fg:black
multi_filter_status = bg:blue,fg:black
-window = bg:default,fg:default
dialog = bg:default,fg:default
dialog_important = bg:default,fg:red
file_prio_high = fg:red,bg:default
diff --git a/.config/wayland/init.sh b/.config/wayland/init.sh
index d9231bc..b86db41 100755
--- a/.config/wayland/init.sh
+++ b/.config/wayland/init.sh
@@ -1,5 +1,7 @@
#!/bin/sh
+source "$HOME"/.config/env
+
case $(hostname -s) in
mother)
icon=" "
@@ -10,6 +12,7 @@ case $(hostname -s) in
host="mother"
doas mkdir /var/run/jozan && doas chown -v jozan: /var/run/jozan
wlr-randr --output DP-3 --off
+ setwp "$HOME"/pics/wp.png
;;
po-rbo)
icon=" "
@@ -19,6 +22,7 @@ case $(hostname -s) in
ping="ping -c1 -w1 9.9.9.9 >/dev/null 2>&1"
host="po-rbo"
doas mkdir /var/run/r_bousset && doas chown -v r_bousset: /var/run/r_bousset
+ setwp "$HOME"/pics/wp/liminal
;;
mars)
icon=" "
@@ -28,6 +32,7 @@ case $(hostname -s) in
ping="ping -c1 -t1 9.9.9.9 >/dev/null 2>&1"
host="mars"
doas mkdir /var/run/jozan && doas chown -v jozan: /var/run/jozan
+ setwp "$HOME"/pics/wp
;;
esac
@@ -37,13 +42,18 @@ startif() {
startif ydotoold
startif dunst
-startif swaybg --image pics/wp.png &
pgrep $mpd >/dev/null || $mpd >/dev/null 2>&1
+pkill wireplumber
+pkill pipewire-pulse
+pkill pipewire
+sleep 1
startif pipewire
sleep 1
startif pipewire-pulse
sleep 1
startif wireplumber
+export QT_QPA_PLATFORM=xcb
startif copyq
-notify-send -u normal 'Welcome' "$icon Welcome back, partner!"
-firefox &
+startif nextcloud
+startif stalonetray
+notify-send -u normal 'welcome' "$icon welcome back, partner!"
diff --git a/.config/x11/xinitrc b/.config/x11/xinitrc
index 2b73786..5e0efb3 100644
--- a/.config/x11/xinitrc
+++ b/.config/x11/xinitrc
@@ -3,8 +3,6 @@
case $(hostname -s) in
mother)
icon=" "
- mpd="mpd"
- xscr="xscreensaver --no-splash"
sleep="sleep 1"
ping="ping -c1 -w1 9.9.9.9 >/dev/null 2>&1"
host="mother"
@@ -12,8 +10,6 @@ case $(hostname -s) in
;;
po-rbo)
icon=" "
- mpd="mpd"
- xscr="xscreensaver"
sleep="sleep 0.1"
ping="ping -c1 -w1 9.9.9.9 >/dev/null 2>&1"
host="po-rbo"
@@ -21,8 +17,6 @@ case $(hostname -s) in
;;
mars)
icon=" "
- mpd="musicpd"
- xscr="xscreensaver --no-splash"
sleep="gsleep 1"
ping="ping -c1 -t1 9.9.9.9 >/dev/null 2>&1"
host="mars"
@@ -35,41 +29,31 @@ esac
$ping && git --git-dir="$HOME"/docs/dotfiles-bsd --work-tree="$HOME" pull
startif() {
- pgrep "$(basename "$1")" >/dev/null || "$@" >/dev/null 2>&1 &
+ pidof "$(basename "$1")" >/dev/null || $@ >/dev/null 2>&1 &
}
dunst_shit() {
sleep 1
- [ $host = "po-rbo" ] && startif /home/r_bousset/.nix-profile/bin/dunst || startif dunst
+ startif dunst
sleep 2
- startif mpd-notification
startif lowbat
for pid in $(ps aux | grep local/bin/kb | awk '{print $2}'); do
kill -9 $pid
done
- [ $host = "mother" ] && "$HOME"/.local/bin/setwp "$HOME"/pics/wp.png || "$HOME"/.local/bin/setwp "$HOME"/pics/wp/129.jpg
+ [ $host = "mother" ] && "$HOME"/.local/bin/setwp "$HOME"/pics/wp.png || "$HOME"/.local/bin/setwp "$HOME"/pics/wp/desert
"$HOME"/.local/bin/kb &
}
start_apps() {
- [ $host = "po-rbo" ] && /home/r_bousset/.local/bin/pipe
CM_SELECTIONS=clipboard startif clipmenud
startif copyq
startif nextcloud
- QT_SCALE_FACTOR=1.35 startif rclone-browser
- startif nixGL teams-for-linux
- startif thunderbird
- startif firefox
+ startif ckb-next --background
+ # [ $host = "po-rbo" ] && QT_SCALE_FACTOR=1.35 startif rclone-browser
}
export LANG='en_US.UTF-8'
-[ $host = "mother" ] && xrandr --output HDMI-0 --primary --mode 1920x1080 --pos 1440x0 --rotate normal \
- --output DP-0 --mode 1680x1050 --pos 3360x0 --rotate normal \
- --output DP-1 --off \
- --output DP-2 --off \
- --output DP-3 --off \
- --output DP-4 --mode 1440x900 --pos 0x0 --rotate normal \
- --output DP-5 --off
+[ $host = "mother" ] && "$HOME"/.local/bin/scr2
[ $host = "po-rbo" ] && xrandr \
--output eDP-1 --mode 1920x1200 --pos 0x0 --rotate normal \
--output HDMI-1 --primary --mode 2560x1440 --pos 1920x0 --rotate normal \
@@ -78,14 +62,9 @@ export LANG='en_US.UTF-8'
--output VIRTUAL-1 --off
dunst_shit
-startif picom
-pgrep $mpd >/dev/null || $mpd >/dev/null 2>&1
+[ $host = "po-rbo" ] && startif picom
xset s off
xset -dpms
-startif $xscr
-# doas rc-service wireguard start &&
-# notify-send -u normal 'wireguard' 'WireGuard started'
-# $sleep
pkill wireplumber
pkill pipewire-pulse
pkill pipewire
@@ -103,4 +82,4 @@ xrdb "$HOME"/.config/x11/xresources
start_apps &
notify-send -u normal 'Welcome' "$icon Welcome back, partner!"
-[ $host = "po-rbo" ] && exec dwm
+[ $host = "po-rbo" ] && exec dbus-run-session dwm
diff --git a/.config/x11/xresources b/.config/x11/xresources
index 6db99f1..ef2cae9 100644
--- a/.config/x11/xresources
+++ b/.config/x11/xresources
@@ -5,10 +5,10 @@ Xft.rgba: rgb
Xft.autohint: false
Xft.hintstyle: hintslight
Xft.lcdfilter: lcddefault
-Xcursor.theme: Adwaita
+Xcursor.theme: "Simp1e-Gruvbox-Dark"
Xcursor.size: 18
Nsxiv.window.background: #1d2021
Nsxiv.window.foreground: #ebdbb2
-Nsxiv.bar.font: UbuntuMono Nerd Font-11
+Nsxiv.bar.font: BlexMono Nerd Font-11
Vncviewer.grabKeyboard: true
Vncviewer.FullScreen: 1
diff --git a/.config/zsh/.zshrc b/.config/zsh/.zshrc
index 4f09b46..3eda548 100644
--- a/.config/zsh/.zshrc
+++ b/.config/zsh/.zshrc
@@ -40,6 +40,35 @@ LESS_TERMCAP_se=$(printf '\e[0m'); export LESS_TERMCAP_se
LESS_TERMCAP_us=$(printf '\e[0;4;35m'); export LESS_TERMCAP_us
LESS_TERMCAP_ue=$(printf '\e[0m'); export LESS_TERMCAP_ue
+_gen_fzf_default_opts() {
+local color00='#1d2021'
+local color01='#282828'
+local color02='#504945'
+local color03='#665c54'
+local color04='#a89984'
+local color05='#bdae93'
+local color06='#ebdbb2'
+local color07='#fbf1c7'
+local color08='#cc241d'
+local color09='#fe8019'
+local color0A='#d79921'
+local color0B='#98971a'
+local color0C='#689d6a'
+local color0D='#458588'
+local color0E='#b16286'
+local color0F='#d65d0e'
+
+export FZF_DEFAULT_OPTS="$FZF_DEFAULT_OPTS"\
+" --color=bg+:$color00,bg:$color00"\
+" --color=fg:$color05,fg+:$color06"\
+" --color=hl:$color08,hl+:$color08"\
+" --color=spinner:$color0D"\
+" --color=header:$color08,info:$color03,pointer:$color08"\
+" --color=marker:$color0C,prompt:$color0A"
+}
+
+_gen_fzf_default_opts
+
autoload -U history-search-end
zle -N history-beginning-search-backward-end history-search-end
zle -N history-beginning-search-forward-end history-search-end
@@ -79,6 +108,16 @@ eza_after_cd() {
}
add-zsh-hook chpwd eza_after_cd
+_fzf_comprun() {
+ local command=$1
+ shift
+
+ case "$command" in
+ cd) fzf "$@" --preview 'tree -C {} | head -200' ;;
+ *) fzf "$@" ;;
+ esac
+}
+
autoload -Uz url-quote-magic
zle -N self-insert url-quote-magic
autoload -Uz bracketed-paste-magic
@@ -88,10 +127,10 @@ zle -N bracketed-paste bracketed-paste-magic
[ -f "$ZDOTDIR"/plugins.zsh ] && source "$ZDOTDIR"/plugins.zsh
[ -f "$XDG_PACKAGE_HOME"/fzf/shell/completion.zsh ] && source "$XDG_PACKAGE_HOME"/fzf/shell/completion.zsh
[ -f "$XDG_PACKAGE_HOME"/fzf/shell/key-bindings.zsh ] && source "$XDG_PACKAGE_HOME"/fzf/shell/key-bindings.zsh
-[ -f "$XDG_CONFIG_HOME"/lf/icons ] && {
- LF_ICONS="$(tr '\n' ':' <"$XDG_CONFIG_HOME"/lf/icons)" \
- && export LF_ICONS
-}
+# [ -f "$XDG_CONFIG_HOME"/lf/icons ] && {
+# LF_ICONS="$(tr '\n' ':' <"$XDG_CONFIG_HOME"/lf/icons)" \
+# && export LF_ICONS
+# }
globalias() {
if [[ $LBUFFER =~ ^[a-z0-9]+$ ]]; then
@@ -113,7 +152,38 @@ lfcd () {
[ -d "$dir" ] && [ "$dir" != "$(pwd)" ] && cd "$dir"
fi
}
-bindkey -s '^o' '^ulfcd\n'
+
+nnncd ()
+{
+ # Block nesting of nnn in subshells
+ [ "${NNNLVL:-0}" -eq 0 ] || {
+ echo "nnn is already running"
+ return
+ }
+
+ # The behaviour is set to cd on quit (nnn checks if NNN_TMPFILE is set)
+ # If NNN_TMPFILE is set to a custom path, it must be exported for nnn to
+ # see. To cd on quit only on ^G, remove the "export" and make sure not to
+ # use a custom path, i.e. set NNN_TMPFILE *exactly* as follows:
+ # NNN_TMPFILE="${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.lastd"
+ export NNN_TMPFILE="/tmp/nnn_lastd"
+
+ # Unmask ^Q (, ^V etc.) (if required, see `stty -a`) to Quit nnn
+ # stty start undef
+ # stty stop undef
+ # stty lwrap undef
+ # stty lnext undef
+
+ # The command builtin allows one to alias nnn to n, if desired, without
+ # making an infinitely recursive alias
+ command nnn "$@"
+
+ [ ! -f "$NNN_TMPFILE" ] || {
+ . "$NNN_TMPFILE"
+ rm -f -- "$NNN_TMPFILE" > /dev/null
+ }
+}
+bindkey -s '^o' '^unnncd\n'
bindkey -v "^ " globalias
bindkey -v " " magic-space
diff --git a/.config/zsh/alias.zsh b/.config/zsh/alias.zsh
index 4cd4099..bcd4cf8 100644
--- a/.config/zsh/alias.zsh
+++ b/.config/zsh/alias.zsh
@@ -60,6 +60,7 @@ alias \
irssi='irssi --config="$XDG_CONFIG_HOME"/irssi/config --home="$XDG_DATA_HOME"/irssi' \
irc='irssi' \
free='freecolor' \
+ n='nnn' \
gt='gpg-tui' \
lg='lazygit' \
tf='terraform' \
@@ -68,6 +69,20 @@ alias \
dgit='git --git-dir=$HOME/docs/dotfiles-bsd --work-tree=$HOME' \
confgit='git --git-dir=$HOME/docs/conffiles-bsd --work-tree=/' \
git-pull-all='git branch -r | sed "1d;s,\x1B\[[0-9;]*[a-zA-Z],,g" | while read remote; do git branch --track "${remote#origin/}" "$remote"; git checkout "${remote#origin/}"; git pull; done'
+b() {
+ oldpath="$(pwd)"
+ cd $HOME/.config/nnn/bookmarks
+ dir=$(fzf)
+ if [ -z "$dir" ]; then
+ cd "$oldpath"
+ return
+ fi
+ if ! cd "$dir"; then
+ cd "$oldpath"
+ return
+ fi
+ nnn
+}
bssh() {
user='rbousset'
host='bastion'
@@ -158,24 +173,6 @@ de() {
$VISUAL $sc
cd $p
}
-eebin() {
- file=$(find "$HOME"/.local/bin -type f | fzf)
- [ $? -ne 0 ] && return
- bsdsetsid emacsclient -c "$file"
- kill -9 "$(ps -p $$ -oppid=)"
-}
-eeconf() {
- file=$(find "$HOME"/.config -type f | fzf)
- [ $? -ne 0 ] && return
- bsdsetsid emacsclient -c "$file"
- kill -9 "$(ps -p $$ -oppid=)"
-}
-ee() {
- file=$(find . -type f | fzf)
- [ $? -ne 0 ] && return
- bsdsetsid emacsclient -c "$file"
- kill -9 "$(ps -p $$ -oppid=)"
-}
pa() {
if [ -d $HOME/.local/packs ] && cd $HOME/.local/packs || return 1
dir=$(\ls $HOME/.local/packs | fzf)
@@ -220,7 +217,7 @@ update() {
yay
;;
po-rbo)
- doas apt update && doas apt dist-upgrade
+ doas apt update; doas apt dist-upgrade
nix-channel --update
nix-env -u
# git -C $HOME/.local/packs/neovim checkout master
diff --git a/.config/zsh/plugins.zsh b/.config/zsh/plugins.zsh
index 9e13701..77bffa1 100644
--- a/.config/zsh/plugins.zsh
+++ b/.config/zsh/plugins.zsh
@@ -13,4 +13,4 @@
source $HOME/.local/packs/fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh >/dev/null
source $HOME/.local/packs/zsh-autosuggestions/zsh-autosuggestions.plugin.zsh >/dev/null
-[[ -r "/usr/share/z/z.sh" ]] && source /usr/share/z/z.sh
+# [[ -r "/usr/share/z/z.sh" ]] && source /usr/share/z/z.sh