diff --git a/Makefile b/Makefile
index 71ba305..71f8af6 100644
--- a/Makefile
+++ b/Makefile
@@ -143,6 +143,7 @@ link_vim: check_os
@echo "Linking vim files..."
$(call link,vim,.vim)
$(call link,ideavimrc,.ideavimrc)
+ $(call link,vsvimrc,.vsvimrc)
.PHONY: link_apps_config
link_apps_config: check_os
@@ -296,8 +297,10 @@ install_asdf: check_os
.PHONY: install_vim
install_vim: check_os link_vim
- @echo "Installing vim packages..."
- @echo "\n\n\n" | vim +PlugInstall +qall
+ @echo "Vim package installation is no longer done automatically!"
+ @echo "Start Vim or NeoVim and run:"
+ @echo "For NeoVim: :PackerInstall"
+ @echo "For Vim: :PlugInstall"
.PHONY: oh_my_zsh
oh_my_zsh: check_os
diff --git a/installed_packages/core/AUR b/installed_packages/core/AUR
index 03f5291..5a76969 100644
--- a/installed_packages/core/AUR
+++ b/installed_packages/core/AUR
@@ -1,9 +1,7 @@
azote
bitwarden-bin
-libspotify
nerd-fonts-source-code-pro
-nwg-launchers
-python-pyspotify
slack-desktop
spotify
-todoist-electron
+todoist-appimage
+ulauncher
diff --git a/installed_packages/core/Arch b/installed_packages/core/Arch
index b8a7fb1..4c3adab 100644
--- a/installed_packages/core/Arch
+++ b/installed_packages/core/Arch
@@ -18,9 +18,7 @@ flex
gcc
git
gnome-themes-extra
-grub
gtk-chtheme
-intel-ucode
kdeconnect
libtool
linux
@@ -33,9 +31,7 @@ mesa
ncmpcpp
neovim
newsboat
-ntfs-3g
openssh
-os-prober
patch
pkgconf
pulseaudio
@@ -43,7 +39,6 @@ pulseaudio-alsa
python-pip
python2
python2-pip
-ranger
sudo
sway
swayidle
diff --git a/symlinks/config/.gitignore b/symlinks/config/.gitignore
index 9be4f6f..a4a4c88 100644
--- a/symlinks/config/.gitignore
+++ b/symlinks/config/.gitignore
@@ -43,6 +43,8 @@ flutter/
ibus
pulse
discord
+lutris
+cef_user_data
QtProject.conf
QtProject/
@@ -62,3 +64,10 @@ stetic
xbuild
Bitwarden
kwalletrc
+Thunar
+xfce4
+Element
+NuGet
+Microsoft*
+.mono
+tlpui
diff --git a/symlinks/config/Google/AndroidStudio4.1/options/androidStudioFirstRun.xml b/symlinks/config/Google/AndroidStudio4.1/options/androidStudioFirstRun.xml
index 000898c..20c28b4 100644
--- a/symlinks/config/Google/AndroidStudio4.1/options/androidStudioFirstRun.xml
+++ b/symlinks/config/Google/AndroidStudio4.1/options/androidStudioFirstRun.xml
@@ -3,6 +3,6 @@
1
- 4.1.1
+ 4.1.2
\ No newline at end of file
diff --git a/symlinks/config/Google/AndroidStudioPreview4.2/codestyles/Default.xml b/symlinks/config/Google/AndroidStudioPreview4.2/codestyles/Default.xml
index 768e98a..9659f93 100644
--- a/symlinks/config/Google/AndroidStudioPreview4.2/codestyles/Default.xml
+++ b/symlinks/config/Google/AndroidStudioPreview4.2/codestyles/Default.xml
@@ -1,21 +1,6 @@
-
-
+
@@ -130,4 +115,7 @@
+
+
+
\ No newline at end of file
diff --git a/symlinks/config/Google/AndroidStudioPreview4.2/options/androidStudioFirstRun.xml b/symlinks/config/Google/AndroidStudioPreview4.2/options/androidStudioFirstRun.xml
index 257b6f4..d7e0f05 100644
--- a/symlinks/config/Google/AndroidStudioPreview4.2/options/androidStudioFirstRun.xml
+++ b/symlinks/config/Google/AndroidStudioPreview4.2/options/androidStudioFirstRun.xml
@@ -3,6 +3,6 @@
1
- 4.2.0rc18
+ 4.2.0rc21
\ No newline at end of file
diff --git a/symlinks/config/JetBrains/IdeaIC2020.3/.updated_plugins_list b/symlinks/config/JetBrains/IdeaIC2020.3/.updated_plugins_list
deleted file mode 100644
index d252f67..0000000
--- a/symlinks/config/JetBrains/IdeaIC2020.3/.updated_plugins_list
+++ /dev/null
@@ -1 +0,0 @@
-org.jetbrains.kotlin
diff --git a/symlinks/config/JetBrains/IdeaIC2020.3/disabled_update.txt b/symlinks/config/JetBrains/IdeaIC2020.3/disabled_update.txt
new file mode 100644
index 0000000..e69de29
diff --git a/symlinks/config/JetBrains/IdeaIC2020.3/inspection/Default.xml b/symlinks/config/JetBrains/IdeaIC2020.3/inspection/Default.xml
new file mode 100644
index 0000000..da0c24f
--- /dev/null
+++ b/symlinks/config/JetBrains/IdeaIC2020.3/inspection/Default.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/symlinks/config/JetBrains/IdeaIC2020.3/options/editor.xml b/symlinks/config/JetBrains/IdeaIC2020.3/options/editor.xml
index 6d09e85..e4864d2 100644
--- a/symlinks/config/JetBrains/IdeaIC2020.3/options/editor.xml
+++ b/symlinks/config/JetBrains/IdeaIC2020.3/options/editor.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/symlinks/config/JetBrains/IdeaIC2020.3/options/filetypes.xml b/symlinks/config/JetBrains/IdeaIC2020.3/options/filetypes.xml
index 1a8f60c..d77d54c 100644
--- a/symlinks/config/JetBrains/IdeaIC2020.3/options/filetypes.xml
+++ b/symlinks/config/JetBrains/IdeaIC2020.3/options/filetypes.xml
@@ -2,9 +2,10 @@
+
-
\ No newline at end of file
+
diff --git a/symlinks/config/JetBrains/IdeaIC2020.3/options/pluginAdvertiser.xml b/symlinks/config/JetBrains/IdeaIC2020.3/options/pluginAdvertiser.xml
index c56c80b..7909c0e 100644
--- a/symlinks/config/JetBrains/IdeaIC2020.3/options/pluginAdvertiser.xml
+++ b/symlinks/config/JetBrains/IdeaIC2020.3/options/pluginAdvertiser.xml
@@ -151,7 +151,6 @@
-
@@ -538,7 +537,6 @@
-
@@ -556,7 +554,6 @@
-
@@ -565,7 +562,6 @@
-
@@ -574,7 +570,6 @@
-
@@ -583,7 +578,6 @@
-
@@ -592,7 +586,6 @@
-
@@ -601,7 +594,6 @@
-
diff --git a/symlinks/config/JetBrains/IdeaIC2020.3/options/runner.layout.xml b/symlinks/config/JetBrains/IdeaIC2020.3/options/runner.layout.xml
index f71953a..01e5a05 100644
--- a/symlinks/config/JetBrains/IdeaIC2020.3/options/runner.layout.xml
+++ b/symlinks/config/JetBrains/IdeaIC2020.3/options/runner.layout.xml
@@ -42,8 +42,8 @@
-
-
+
+
diff --git a/symlinks/config/JetBrains/IdeaIC2020.3/options/ui.lnf.xml b/symlinks/config/JetBrains/IdeaIC2020.3/options/ui.lnf.xml
new file mode 100644
index 0000000..457ce15
--- /dev/null
+++ b/symlinks/config/JetBrains/IdeaIC2020.3/options/ui.lnf.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/symlinks/config/NuGet/.gitignore b/symlinks/config/NuGet/.gitignore
deleted file mode 100644
index 88ad27f..0000000
--- a/symlinks/config/NuGet/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-nugetorgadd.trk
diff --git a/symlinks/config/NuGet/NuGet.Config b/symlinks/config/NuGet/NuGet.Config
deleted file mode 100644
index 3f0e003..0000000
--- a/symlinks/config/NuGet/NuGet.Config
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/symlinks/config/README.md b/symlinks/config/README.md
index ae3310a..064dbf2 100644
--- a/symlinks/config/README.md
+++ b/symlinks/config/README.md
@@ -6,4 +6,4 @@ Contains configurations for many applications, most importantly:
- `sway` - Wayland compositor
- `newsboat` - my RSS reader
- `alacritty` - my terminal emulator
- - `coc` - `coc.nvim` plugin settings for `neovim`
+ - `coc` - `coc.nvim` plugin settings for `vim`
diff --git a/symlinks/config/alacritty/alacritty.yml b/symlinks/config/alacritty/alacritty.yml
index ad72c17..fc7d64d 100644
--- a/symlinks/config/alacritty/alacritty.yml
+++ b/symlinks/config/alacritty/alacritty.yml
@@ -3,3 +3,4 @@ alt_send_esc: true
import:
- ~/.config/alacritty/font.yml
- ~/.config/alacritty/colors.yml
+ - ~/.config/alacritty/keymap.yml
diff --git a/symlinks/config/alacritty/keymap.yml b/symlinks/config/alacritty/keymap.yml
new file mode 100644
index 0000000..a7f61fe
--- /dev/null
+++ b/symlinks/config/alacritty/keymap.yml
@@ -0,0 +1,76 @@
+key_bindings:
+ - { key: A, mods: Alt, chars: "\x1ba" }
+ - { key: B, mods: Alt, chars: "\x1bb" }
+ - { key: C, mods: Alt, chars: "\x1bc" }
+ - { key: D, mods: Alt, chars: "\x1bd" }
+ - { key: E, mods: Alt, chars: "\x1be" }
+ - { key: F, mods: Alt, chars: "\x1bf" }
+ - { key: G, mods: Alt, chars: "\x1bg" }
+ - { key: H, mods: Alt, chars: "\x1bh" }
+ - { key: I, mods: Alt, chars: "\x1bi" }
+ - { key: J, mods: Alt, chars: "\x1bj" }
+ - { key: K, mods: Alt, chars: "\x1bk" }
+ - { key: L, mods: Alt, chars: "\x1bl" }
+ - { key: M, mods: Alt, chars: "\x1bm" }
+ - { key: N, mods: Alt, chars: "\x1bn" }
+ - { key: O, mods: Alt, chars: "\x1bo" }
+ - { key: P, mods: Alt, chars: "\x1bp" }
+ - { key: Q, mods: Alt, chars: "\x1bq" }
+ - { key: R, mods: Alt, chars: "\x1br" }
+ - { key: S, mods: Alt, chars: "\x1bs" }
+ - { key: T, mods: Alt, chars: "\x1bt" }
+ - { key: U, mods: Alt, chars: "\x1bu" }
+ - { key: V, mods: Alt, chars: "\x1bv" }
+ - { key: W, mods: Alt, chars: "\x1bw" }
+ - { key: X, mods: Alt, chars: "\x1bx" }
+ - { key: Y, mods: Alt, chars: "\x1by" }
+ - { key: Z, mods: Alt, chars: "\x1bz" }
+ - { key: A, mods: Alt|Shift, chars: "\x1bA" }
+ - { key: B, mods: Alt|Shift, chars: "\x1bB" }
+ - { key: C, mods: Alt|Shift, chars: "\x1bC" }
+ - { key: D, mods: Alt|Shift, chars: "\x1bD" }
+ - { key: E, mods: Alt|Shift, chars: "\x1bE" }
+ - { key: F, mods: Alt|Shift, chars: "\x1bF" }
+ - { key: G, mods: Alt|Shift, chars: "\x1bG" }
+ - { key: H, mods: Alt|Shift, chars: "\x1bH" }
+ - { key: I, mods: Alt|Shift, chars: "\x1bI" }
+ - { key: J, mods: Alt|Shift, chars: "\x1bJ" }
+ - { key: K, mods: Alt|Shift, chars: "\x1bK" }
+ - { key: L, mods: Alt|Shift, chars: "\x1bL" }
+ - { key: M, mods: Alt|Shift, chars: "\x1bM" }
+ - { key: N, mods: Alt|Shift, chars: "\x1bN" }
+ - { key: O, mods: Alt|Shift, chars: "\x1bO" }
+ - { key: P, mods: Alt|Shift, chars: "\x1bP" }
+ - { key: Q, mods: Alt|Shift, chars: "\x1bQ" }
+ - { key: R, mods: Alt|Shift, chars: "\x1bR" }
+ - { key: S, mods: Alt|Shift, chars: "\x1bS" }
+ - { key: T, mods: Alt|Shift, chars: "\x1bT" }
+ - { key: U, mods: Alt|Shift, chars: "\x1bU" }
+ - { key: V, mods: Alt|Shift, chars: "\x1bV" }
+ - { key: W, mods: Alt|Shift, chars: "\x1bW" }
+ - { key: X, mods: Alt|Shift, chars: "\x1bX" }
+ - { key: Y, mods: Alt|Shift, chars: "\x1bY" }
+ - { key: Z, mods: Alt|Shift, chars: "\x1bZ" }
+ - { key: Key1, mods: Alt, chars: "\x1b1" }
+ - { key: Key2, mods: Alt, chars: "\x1b2" }
+ - { key: Key3, mods: Alt, chars: "\x1b3" }
+ - { key: Key4, mods: Alt, chars: "\x1b4" }
+ - { key: Key5, mods: Alt, chars: "\x1b5" }
+ - { key: Key6, mods: Alt, chars: "\x1b6" }
+ - { key: Key7, mods: Alt, chars: "\x1b7" }
+ - { key: Key8, mods: Alt, chars: "\x1b8" }
+ - { key: Key9, mods: Alt, chars: "\x1b9" }
+ - { key: Key0, mods: Alt, chars: "\x1b0" }
+ - { key: Space, mods: Control, chars: "\x00" } # Ctrl + Space
+ - { key: Grave, mods: Alt, chars: "\x1b`" } # Alt + `
+ - { key: Grave, mods: Alt|Shift, chars: "\x1b~" } # Alt + ~
+ - { key: Period, mods: Alt, chars: "\x1b." } # Alt + .
+ - { key: Key8, mods: Alt|Shift, chars: "\x1b*" } # Alt + *
+ - { key: Key3, mods: Alt|Shift, chars: "\x1b#" } # Alt + #
+ - { key: Period, mods: Alt|Shift, chars: "\x1b>" } # Alt + >
+ - { key: Comma, mods: Alt|Shift, chars: "\x1b<" } # Alt + <
+ - { key: Minus, mods: Alt|Shift, chars: "\x1b_" } # Alt + _
+ - { key: Key5, mods: Alt|Shift, chars: "\x1b%" } # Alt + %
+ - { key: Key6, mods: Alt|Shift, chars: "\x1b^" } # Alt + ^
+ - { key: Backslash, mods: Alt, chars: "\x1b\\" } # Alt + \
+ - { key: Backslash, mods: Alt|Shift, chars: "\x1b|" } # Alt + |
diff --git a/symlinks/config/amfora/config.toml b/symlinks/config/amfora/config.toml
new file mode 100644
index 0000000..b4ebc18
--- /dev/null
+++ b/symlinks/config/amfora/config.toml
@@ -0,0 +1,367 @@
+# This is the default config file.
+# It also shows all the default values, if you don't create the file.
+
+# All URL values may omit the scheme and/or port, as well as the beginning double slash
+# Valid URL examples:
+# gemini://example.com
+# //example.com
+# example.com
+# example.com:123
+
+
+[a-general]
+# Press Ctrl-H to access it
+home = "gemini://gemini.circumlunar.space"
+
+# Follow up to 5 Gemini redirects without prompting.
+# A prompt is always shown after the 5th redirect and for redirects to protocols other than Gemini.
+# If set to false, a prompt will be shown before following redirects.
+auto_redirect = false
+
+# What command to run to open a HTTP(S) URL.
+# Set to "default" to try to guess the browser, or set to "off" to not open HTTP(S) URLs.
+# If a command is set, than the URL will be added (in quotes) to the end of the command.
+# A space will be prepended to the URL.
+#
+# The best to define a command is using a string array.
+# Examples:
+# http = ['firefox']
+# http = ['custom-browser', '--flag', '--option=2']
+# http = ['/path/with spaces/in it/firefox']
+#
+# Note the use of single quotes, so that backslashes will not be escaped.
+# Using just a string will also work, but it is deprecated, and will degrade if
+# you use paths with spaces.
+
+http = 'default'
+
+# Any URL that will accept a query string can be put here
+search = "gemini://gus.guru/search"
+
+# Whether colors will be used in the terminal
+color = true
+
+# Whether ANSI color codes from the page content should be rendered
+ansi = true
+
+# Whether to replace list asterisks with unicode bullets
+bullets = true
+
+# Whether to show link after link text
+show_link = false
+
+# A number from 0 to 1, indicating what percentage of the terminal width the left margin should take up.
+left_margin = 0.15
+
+# The max number of columns to wrap a page's text to. Preformatted blocks are not wrapped.
+max_width = 100
+
+# 'downloads' is the path to a downloads folder.
+# An empty value means the code will find the default downloads folder for your system.
+# If the path does not exist it will be created.
+# Note the use of single quotes, so that backslashes will not be escaped.
+downloads = ''
+
+# Max size for displayable content in bytes - after that size a download window pops up
+page_max_size = 2097152 # 2 MiB
+# Max time it takes to load a page in seconds - after that a download window pops up
+page_max_time = 10
+
+# Whether to replace tab numbers with emoji favicons, which are cached.
+emoji_favicons = false
+
+# When a scrollbar appears. "never", "auto", and "always" are the only valid values.
+# "auto" means the scrollbar only appears when the page is longer than the window.
+scrollbar = "auto"
+
+
+[auth]
+# Authentication settings
+# Note the use of single quotes for values, so that backslashes will not be escaped.
+
+[auth.certs]
+# Client certificates
+# Set domain name equal to path to client cert
+# "example.com" = 'mycert.crt'
+
+[auth.keys]
+# Client certificate keys
+# Set domain name equal to path to key for the client cert above
+# "example.com" = 'mycert.key'
+
+
+[keybindings]
+# If you have a non-US keyboard, use bind_tab1 through bind_tab0 to
+# setup the shift-number bindings: Eg, for US keyboards (the default):
+# bind_tab1 = "!"
+# bind_tab2 = "@"
+# bind_tab3 = "#"
+# bind_tab4 = "$"
+# bind_tab5 = "%"
+# bind_tab6 = "^"
+# bind_tab7 = "&"
+# bind_tab8 = "*"
+# bind_tab9 = "("
+# bind_tab0 = ")"
+
+# Whitespace is not allowed in any of the keybindings! Use 'Space' and 'Tab' to bind to those keys.
+# Multiple keys can be bound to one command, just use a TOML array.
+# To add the Alt modifier, the binding must start with Alt-, should be reasonably universal
+# Ctrl- won't work on all keys, see this for a list:
+# https://github.com/gdamore/tcell/blob/cb1e5d6fa606/key.go#L83
+
+# An example of a TOML array for multiple keys being bound to one command is the default
+# binding for reload:
+# bind_reload = ["R","Ctrl-R"]
+# One thing to note here is that "R" is capitalization sensitive, so it means shift-r.
+# "Ctrl-R" means both ctrl-r and ctrl-shift-R (this is a quirk of what ctrl-r means on
+# an ANSI terminal)
+
+# The default binding for opening the bottom bar for entering a URL or link number is:
+# bind_bottom = "Space"
+# This is how to get the Spacebar as a keybinding, if you try to use " ", it won't work.
+# And, finally, an example of a simple, unmodified character is:
+# bind_edit = "e"
+# This binds the "e" key to the command to edit the current URL.
+
+# The bind_link[1-90] options are for the commands to go to the first 10 links on a page,
+# typically these are bound to the number keys:
+# bind_link1 = "1"
+# bind_link2 = "2"
+# bind_link3 = "3"
+# bind_link4 = "4"
+# bind_link5 = "5"
+# bind_link6 = "6"
+# bind_link7 = "7"
+# bind_link8 = "8"
+# bind_link9 = "9"
+# bind_link0 = "0"
+
+# All keybindings:
+#
+# bind_bottom
+# bind_edit
+# bind_home
+# bind_bookmarks
+# bind_add_bookmark
+# bind_save
+# bind_reload
+# bind_back
+# bind_forward
+# bind_pgup
+# bind_pgdn
+# bind_new_tab
+# bind_close_tab
+# bind_next_tab
+# bind_prev_tab
+# bind_quit
+# bind_help
+# bind_sub: for viewing the subscriptions page
+# bind_add_sub
+
+[url-handlers]
+# Allows setting the commands to run for various URL schemes.
+# E.g. to open FTP URLs with FileZilla set the following key:
+# ftp = 'filezilla'
+# You can set any scheme to "off" or "" to disable handling it, or
+# just leave the key unset.
+#
+# DO NOT use this for setting the HTTP command.
+# Use the http setting in the "a-general" section above.
+#
+# NOTE: These settings are overrided by the ones in the proxies section.
+# Note the use of single quotes, so that backslashes will not be escaped.
+
+# This is a special key that defines the handler for all URL schemes for which
+# no handler is defined.
+other = 'off'
+
+
+# [[mediatype-handlers]] section
+# ---------------------------------
+#
+# Specify what applications will open certain media types.
+# By default your default application will be used to open the file when you select "Open".
+# You only need to configure this section if you want to override your default application,
+# or do special things like streaming.
+#
+# Note the use of single quotes for commands, so that backslashes will not be escaped.
+#
+#
+# To open jpeg files with the feh command:
+#
+# [[mediatype-handlers]]
+# cmd = ['feh']
+# types = ["image/jpeg"]
+#
+# Each command that you specify must come under its own [[mediatype-handlers]]. You may
+# specify as many [[mediatype-handlers]] as you want to setup multiple commands.
+#
+# If the subtype is omitted then the specified command will be used for the
+# entire type:
+#
+# [[mediatype-handlers]]
+# command = ['vlc', '--flag']
+# types = ["audio", "video"]
+#
+# A catch-all handler can by specified with "*".
+# Note that there are already catch-all handlers in place for all OSes,
+# that open the file using your default application. This is only if you
+# want to override that.
+#
+# [[mediatype-handlers]]
+# cmd = ['some-command']
+# types = [
+# "application/pdf",
+# "*",
+# ]
+#
+# You can also choose to stream the data instead of downloading it all before
+# opening it. This is especially useful for large video or audio files, as
+# well as radio streams, which will never complete. You can do this like so:
+#
+# [[mediatype-handlers]]
+# cmd = ['vlc', '-']
+# types = ["audio", "video"]
+# stream = true
+#
+# This uses vlc to stream all video and audio content.
+# By default stream is set to off for all handlers
+#
+#
+# If you want to always open a type in its viewer without the download or open
+# prompt appearing, you can add no_prompt = true
+#
+# [[mediatype-handlers]]
+# cmd = ['feh']
+# types = ["image"]
+# no_prompt = true
+#
+# Note: Multiple handlers cannot be defined for the same full media type, but
+# still there needs to be an order for which handlers are used. The following
+# order applies regardless of the order written in the config:
+#
+# 1. Full media type: "image/jpeg"
+# 2. Just type: "image"
+# 3. Catch-all: "*"
+
+
+[cache]
+# Options for page cache - which is only for text pages
+# Increase the cache size to speed up browsing at the expense of memory
+# Zero values mean there is no limit
+
+max_size = 0 # Size in bytes
+max_pages = 30 # The maximum number of pages the cache will store
+
+# How long a page will stay in cache, in seconds.
+timeout = 1800 # 30 mins
+
+[proxies]
+# Allows setting a Gemini proxy for different schemes.
+# The settings are similar to the url-handlers section above.
+# E.g. to open a gopher page by connecting to a Gemini proxy server:
+# gopher = "example.com:123"
+#
+# Port 1965 is assumed if no port is specified.
+#
+# NOTE: These settings override any external handlers specified in
+# the url-handlers section.
+#
+# Note that HTTP and HTTPS are treated as separate protocols here.
+
+
+[subscriptions]
+# For tracking feeds and pages
+
+# Whether a pop-up appears when viewing a potential feed
+popup = true
+
+# How often to check for updates to subscriptions in the background, in seconds.
+# Set it to 0 to disable this feature. You can still update individual feeds
+# manually, or restart the browser.
+#
+# Note Amfora will check for updates on browser start no matter what this setting is.
+update_interval = 1800 # 30 mins
+
+# How many subscriptions can be checked at the same time when updating.
+# If you have many subscriptions you may want to increase this for faster
+# update times. Any value below 1 will be corrected to 1.
+workers = 3
+
+# The number of subscription updates displayed per page.
+entries_per_page = 20
+
+
+[theme]
+# This section is for changing the COLORS used in Amfora.
+# These colors only apply if 'color' is enabled above.
+# Colors can be set using a W3C color name, or a hex value such as "#ffffff".
+
+# Note that not all colors will work on terminals that do not have truecolor support.
+# If you want to stick to the standard 16 or 256 colors, you can get
+# a list of those here: https://jonasjacek.github.io/colors/
+# DO NOT use the names from that site, just the hex codes.
+
+# Definitions:
+# bg = background
+# fg = foreground
+# dl = download
+# btn = button
+# hdg = heading
+# bkmk = bookmark
+# modal = a popup window/box in the middle of the screen
+
+# EXAMPLES:
+# hdg_1 = "green"
+# hdg_2 = "#5f0000"
+
+# Available keys to set:
+
+# bg: background for pages, tab row, app in general
+# tab_num: The number/highlight of the tabs at the top
+# tab_divider: The color of the divider character between tab numbers: |
+# bottombar_label: The color of the prompt that appears when you press space
+# bottombar_text: The color of the text you type
+# bottombar_bg
+# scrollbar: The scrollbar that appears on the right for long pages
+
+# hdg_1
+# hdg_2
+# hdg_3
+# amfora_link: A link that Amfora supports viewing. For now this is only gemini://
+# foreign_link: HTTP(S), Gopher, etc
+# link_number: The silver number that appears to the left of a link
+# regular_text: Normal gemini text, and plaintext documents
+# quote_text
+# preformatted_text
+# list_text
+
+# btn_bg: The bg color for all modal buttons
+# btn_text: The text color for all modal buttons
+
+# dl_choice_modal_bg
+# dl_choice_modal_text
+# dl_modal_bg
+# dl_modal_text
+# info_modal_bg
+# info_modal_text
+# error_modal_bg
+# error_modal_text
+# yesno_modal_bg
+# yesno_modal_text
+# tofu_modal_bg
+# tofu_modal_text
+# subscription_modal_bg
+# subscription_modal_text
+
+# input_modal_bg
+# input_modal_text
+# input_modal_field_bg: The bg of the input field, where you type the text
+# input_modal_field_text: The color of the text you type
+
+# bkmk_modal_bg
+# bkmk_modal_text
+# bkmk_modal_label
+# bkmk_modal_field_bg
+# bkmk_modal_field_text
diff --git a/symlinks/config/asdf/.python-default-packages b/symlinks/config/asdf/.python-default-packages
index 4430856..e69de29 100644
--- a/symlinks/config/asdf/.python-default-packages
+++ b/symlinks/config/asdf/.python-default-packages
@@ -1 +0,0 @@
-pynvim
diff --git a/symlinks/config/fish/config.fish b/symlinks/config/fish/config.fish
index 7b1fc5c..a4f5ed3 100644
--- a/symlinks/config/fish/config.fish
+++ b/symlinks/config/fish/config.fish
@@ -16,7 +16,17 @@ abbr -a batdiff "git diff --name-only --diff-filter=d | xargs bat --diff"
source ~/.config/fish/platform_config/$MACHINE_TYPE.fish
-source ~/.asdf/asdf.fish
+if [ -f /opt/asdf-vm/asdf.sh ]
+ set -gx ASDF_DIR /opt/asdf-vm
+ set -gx ASDF_CONFIG_FILE $XDG_CONFIG_HOME/asdf/asdfrc
+ set -gx ASDF_DATA_DIR $XDG_DATA_HOME/asdf
+ source $ASDF_DIR/asdf.sh
+else
+ source ~/.asdf/asdf.fish
+ if [ -f ~/.asdf/plugins/dotnet-core/set-dotnet-home.fish ]
+ . ~/.asdf/plugins/dotnet-core/set-dotnet-home.fish
+ end
+end
eval (asdf exec direnv hook fish | source)
diff --git a/symlinks/config/fish/fish_variables b/symlinks/config/fish/fish_variables
index d0b69fd..7987784 100644
--- a/symlinks/config/fish/fish_variables
+++ b/symlinks/config/fish/fish_variables
@@ -5,8 +5,8 @@ SETUVAR --export ABBR_TIPS_REGEXES:\x28\x5e\x28\x5cw\x2b\x5cs\x2b\x29\x2b\x28\x2
SETUVAR --export __ABBR_TIPS_KEYS:g\x1ega\x1egaa\x1egap\x1egapa\x1egb\x1egbD\x1egba\x1egban\x1egbd\x1egbl\x1egbs\x1egbsb\x1egbsg\x1egbsr\x1egbss\x1egc\x1egc\x21\x1egca\x1egca\x21\x1egcam\x1egcan\x21\x1egcav\x1egcav\x21\x1egcb\x1egcf\x1egcfx\x1egcl\x1egclean\x1egclean\x21\x1egclean\x21\x21\x1egcm\x1egcn\x21\x1egco\x1egcod\x1egcom\x1egcount\x1egcp\x1egcpa\x1egcpc\x1egcv\x1egd\x1egdca\x1egds\x1egdsc\x1egdw\x1egdwc\x1egf\x1egfa\x1egfb\x1egfbs\x1egfbt\x1egff\x1egffs\x1egfft\x1egfh\x1egfhs\x1egfht\x1egfm\x1egfo\x1egfp\x1egfr\x1egfrs\x1egfrt\x1egfs\x1egfss\x1egfst\x1eggp\x21\x1eggpull\x1eggpush\x1egignore\x1egl\x1eglg\x1eglgg\x1eglgga\x1egll\x1eglo\x1eglod\x1eglog\x1eglom\x1egloo\x1eglr\x1egm\x1egmt\x1egp\x1egp\x21\x1egpo\x1egpo\x21\x1egpu\x1egpv\x1egpv\x21\x1egr\x1egra\x1egrb\x1egrba\x1egrbc\x1egrbd\x1egrbdi\x1egrbdia\x1egrbi\x1egrbm\x1egrbmi\x1egrbmia\x1egrbs\x1egrev\x1egrh\x1egrhh\x1egrm\x1egrmc\x1egrmv\x1egrrm\x1egrs\x1egrset\x1egrss\x1egrup\x1egrv\x1egscam\x1egsd\x1egsh\x1egsr\x1egss\x1egst\x1egsta\x1egstd\x1egstp\x1egsts\x1egsu\x1egsur\x1egsuri\x1egsw\x1egswc\x1egts\x1egtv\x1egunignore\x1egup\x1egwch\x1el\x1epjo\x1evi\x1evim\x1ea__pbcopy\x1ea__pbpaste
SETUVAR --export __ABBR_TIPS_VALUES:git\x1egit\x20add\x1egit\x20add\x20\x2d\x2dall\x1egit\x20apply\x1egit\x20add\x20\x2d\x2dpatch\x1egit\x20branch\x20\x2dvv\x1egit\x20branch\x20\x2dD\x1egit\x20branch\x20\x2da\x20\x2dv\x1egit\x20branch\x20\x2da\x20\x2dv\x20\x2d\x2dno\x2dmerged\x1egit\x20branch\x20\x2dd\x1egit\x20blame\x20\x2db\x20\x2dw\x1egit\x20bisect\x1egit\x20bisect\x20bad\x1egit\x20bisect\x20good\x1egit\x20bisect\x20reset\x1egit\x20bisect\x20start\x1egit\x20commit\x20\x2dv\x1egit\x20commit\x20\x2dv\x20\x2d\x2damend\x1egit\x20commit\x20\x2dv\x20\x2da\x1egit\x20commit\x20\x2dv\x20\x2da\x20\x2d\x2damend\x1egit\x20commit\x20\x2da\x20\x2dm\x1egit\x20commit\x20\x2dv\x20\x2da\x20\x2d\x2dno\x2dedit\x20\x2d\x2damend\x1egit\x20commit\x20\x2da\x20\x2dv\x20\x2d\x2dno\x2dverify\x1egit\x20commit\x20\x2da\x20\x2dv\x20\x2d\x2dno\x2dverify\x20\x2d\x2damend\x1egit\x20checkout\x20\x2db\x1egit\x20config\x20\x2d\x2dlist\x1egit\x20commit\x20\x2d\x2dfixup\x1egit\x20clone\x1egit\x20clean\x20\x2ddi\x1egit\x20clean\x20\x2ddfx\x1egit\x20reset\x20\x2d\x2dhard\x3b\x20and\x20git\x20clean\x20\x2ddfx\x1egit\x20commit\x20\x2dm\x1egit\x20commit\x20\x2dv\x20\x2d\x2dno\x2dedit\x20\x2d\x2damend\x1egit\x20checkout\x1egit\x20checkout\x20develop\x1egit\x20checkout\x20master\x1egit\x20shortlog\x20\x2dsn\x1egit\x20cherry\x2dpick\x1egit\x20cherry\x2dpick\x20\x2d\x2dabort\x1egit\x20cherry\x2dpick\x20\x2d\x2dcontinue\x1egit\x20commit\x20\x2dv\x20\x2d\x2dno\x2dverify\x1egit\x20diff\x1egit\x20diff\x20\x2d\x2dcached\x1egit\x20diff\x20\x2d\x2dstat\x1egit\x20diff\x20\x2d\x2dstat\x20\x2d\x2dcached\x1egit\x20diff\x20\x2d\x2dword\x2ddiff\x1egit\x20diff\x20\x2d\x2dword\x2ddiff\x20\x2d\x2dcached\x1egit\x20fetch\x1egit\x20fetch\x20\x2d\x2dall\x20\x2d\x2dprune\x1egit\x20flow\x20bugfix\x1egit\x20flow\x20bugfix\x20start\x1egit\x20flow\x20bugfix\x20track\x1egit\x20flow\x20feature\x1egit\x20flow\x20feature\x20start\x1egit\x20flow\x20feature\x20track\x1egit\x20flow\x20hotfix\x1egit\x20flow\x20hotfix\x20start\x1egit\x20flow\x20hotfix\x20track\x1egit\x20fetch\x20origin\x20master\x20\x2d\x2dprune\x3b\x20and\x20git\x20merge\x20FETCH_HEAD\x1egit\x20fetch\x20origin\x1egit\x20flow\x20publish\x1egit\x20flow\x20release\x1egit\x20flow\x20release\x20start\x1egit\x20flow\x20release\x20track\x1egit\x20flow\x20support\x1egit\x20flow\x20support\x20start\x1egit\x20flow\x20support\x20track\x1eggp\x20\x2d\x2dforce\x2dwith\x2dlease\x1eggl\x1eggp\x1egit\x20update\x2dindex\x20\x2d\x2dassume\x2dunchanged\x1egit\x20pull\x1egit\x20log\x20\x2d\x2dstat\x20\x2d\x2dmax\x2dcount\x3d10\x1egit\x20log\x20\x2d\x2dgraph\x20\x2d\x2dmax\x2dcount\x3d10\x1egit\x20log\x20\x2d\x2dgraph\x20\x2d\x2ddecorate\x20\x2d\x2dall\x1egit\x20pull\x20origin\x1egit\x20log\x20\x2d\x2doneline\x20\x2d\x2ddecorate\x20\x2d\x2dcolor\x1egit\x20log\x20\x2d\x2doneline\x20\x2d\x2ddecorate\x20\x2d\x2dcolor\x20develop\x2e\x2e\x1egit\x20log\x20\x2d\x2doneline\x20\x2d\x2ddecorate\x20\x2d\x2dcolor\x20\x2d\x2dgraph\x1egit\x20log\x20\x2d\x2doneline\x20\x2d\x2ddecorate\x20\x2d\x2dcolor\x20master\x2e\x2e\x1egit\x5c\x20log\x5c\x20\x2d\x2dpretty\x3dformat\x3a\x5c\x27\x5c\x25C\x5c\x28yellow\x5c\x29\x5c\x25h\x5c\x20\x5c\x25Cred\x5c\x25ad\x5c\x20\x5c\x25Cblue\x5c\x25an\x5c\x25Cgreen\x5c\x25d\x5c\x20\x5c\x25Creset\x5c\x25s\x5c\x27\x5c\x20\x2d\x2ddate\x3dshort\x1egit\x20pull\x20\x2d\x2drebase\x1egit\x20merge\x1egit\x20mergetool\x20\x2d\x2dno\x2dprompt\x1egit\x20push\x1egit\x20push\x20\x2d\x2dforce\x2dwith\x2dlease\x1egit\x20push\x20origin\x1egit\x20push\x20\x2d\x2dforce\x2dwith\x2dlease\x20origin\x1eggp\x20\x2d\x2dset\x2dupstream\x1egit\x20push\x20\x2d\x2dno\x2dverify\x1egit\x20push\x20\x2d\x2dno\x2dverify\x20\x2d\x2dforce\x2dwith\x2dlease\x1egit\x20remote\x20\x2dvv\x1egit\x20remote\x20add\x1egit\x20rebase\x1egit\x20rebase\x20\x2d\x2dabort\x1egit\x20rebase\x20\x2d\x2dcontinue\x1egit\x20rebase\x20develop\x1egit\x20rebase\x20master\x20\x2d\x2dinteractive\x1egit\x20rebase\x20master\x20\x2d\x2dinteractive\x20\x2d\x2dautosquash\x1egit\x20rebase\x20\x2d\x2dinteractive\x1egit\x20rebase\x20master\x1egit\x20rebase\x20master\x20\x2d\x2dinteractive\x1egit\x20rebase\x20master\x20\x2d\x2dinteractive\x20\x2d\x2dautosquash\x1egit\x20rebase\x20\x2d\x2dskip\x1egit\x20revert\x1egit\x20reset\x1egit\x20reset\x20\x2d\x2dhard\x1egit\x20rm\x1egit\x20rm\x20\x2d\x2dcached\x1egit\x20remote\x20rename\x1egit\x20remote\x20remove\x1egit\x20restore\x1egit\x20remote\x20set\x2durl\x1egit\x20restore\x20\x2d\x2dsource\x1egit\x20remote\x20update\x1egit\x20remote\x20\x2dv\x1egit\x20commit\x20\x2dS\x20\x2da\x20\x2dm\x1egit\x20svn\x20dcommit\x1egit\x20show\x1egit\x20svn\x20rebase\x1egit\x20status\x20\x2ds\x1egit\x20status\x1egit\x20stash\x1egit\x20stash\x20drop\x1egit\x20stash\x20pop\x1egit\x20stash\x20show\x20\x2d\x2dtext\x1egit\x20submodule\x20update\x1egit\x20submodule\x20update\x20\x2d\x2drecursive\x1egit\x20submodule\x20update\x20\x2d\x2drecursive\x20\x2d\x2dinit\x1egit\x20switch\x1egit\x20switch\x20\x2d\x2dcreate\x1egit\x20tag\x20\x2ds\x1egit\x20tag\x1egit\x20update\x2dindex\x20\x2d\x2dno\x2dassume\x2dunchanged\x1egit\x20pull\x20\x2d\x2drebase\x1egit\x20whatchanged\x20\x2dp\x20\x2d\x2dabbrev\x2dcommit\x20\x2d\x2dpretty\x3dmedium\x1els\x20\x2dla\x1epj\x20open\x1envim\x1envim\x1exclip\x20\x2dselection\x20clipboard\x1exclip\x20\x2dselection\x20clipboard\x20\x2do
SETUVAR __fish_initialized:3100
-SETUVAR __git_plugin_abbreviations:g\x1ega\x1egaa\x1egapa\x1egap\x1egb\x1egba\x1egban\x1egbd\x1egbD\x1egbl\x1egbs\x1egbsb\x1egbsg\x1egbsr\x1egbss\x1egc\x1egc\x21\x1egcn\x21\x1egca\x1egca\x21\x1egcan\x21\x1egcv\x1egcav\x1egcav\x21\x1egcm\x1egcam\x1egscam\x1egcfx\x1egcf\x1egcl\x1egclean\x1egclean\x21\x1egclean\x21\x21\x1egcount\x1egcp\x1egcpa\x1egcpc\x1egd\x1egdca\x1egds\x1egdsc\x1egdw\x1egdwc\x1egignore\x1egf\x1egfa\x1egfm\x1egfo\x1egl\x1egll\x1eglr\x1eglg\x1eglgg\x1eglgga\x1eglo\x1eglog\x1eglom\x1eglod\x1egloo\x1egm\x1egmt\x1egp\x1egp\x21\x1egpo\x1egpo\x21\x1egpv\x1egpv\x21\x1eggp\x21\x1egpu\x1egr\x1egra\x1egrb\x1egrba\x1egrbc\x1egrbi\x1egrbm\x1egrbmi\x1egrbmia\x1egrbd\x1egrbdi\x1egrbdia\x1egrbs\x1egrev\x1egrh\x1egrhh\x1egrm\x1egrmc\x1egrmv\x1egrrm\x1egrs\x1egrset\x1egrss\x1egrup\x1egrv\x1egsh\x1egsd\x1egsr\x1egss\x1egst\x1egsta\x1egstd\x1egstp\x1egsts\x1egsu\x1egsur\x1egsuri\x1egts\x1egtv\x1egsw\x1egswc\x1egunignore\x1egup\x1egwch\x1egco\x1egcb\x1egcod\x1egcom\x1egfb\x1egff\x1egfr\x1egfh\x1egfs\x1egfbs\x1egffs\x1egfrs\x1egfhs\x1egfss\x1egfbt\x1egfft\x1egfrt\x1egfht\x1egfst\x1egfp
-SETUVAR __git_plugin_initialized:Fri\x20Nov\x2013\x2017\x3a21\x3a56\x20CET\x202020
+SETUVAR __git_plugin_abbreviations:g\x1ega\x1egaa\x1egapa\x1egap\x1egb\x1egba\x1egban\x1egbd\x1egbD\x1egbl\x1egbs\x1egbsb\x1egbsg\x1egbsr\x1egbss\x1egc\x1egc\x21\x1egcn\x21\x1egca\x1egca\x21\x1egcan\x21\x1egcv\x1egcav\x1egcav\x21\x1egcm\x1egcam\x1egscam\x1egcfx\x1egcf\x1egcl\x1egclean\x1egclean\x21\x1egclean\x21\x21\x1egcount\x1egcp\x1egcpa\x1egcpc\x1egd\x1egdca\x1egds\x1egdsc\x1egdw\x1egdwc\x1egdto\x1egignore\x1egf\x1egfa\x1egfm\x1egfo\x1egl\x1egll\x1eglr\x1eglg\x1eglgg\x1eglgga\x1eglo\x1eglog\x1eglom\x1eglod\x1egloo\x1egm\x1egmt\x1egp\x1egp\x21\x1egpo\x1egpo\x21\x1egpv\x1egpv\x21\x1eggp\x21\x1egpu\x1egr\x1egra\x1egrb\x1egrba\x1egrbc\x1egrbi\x1egrbm\x1egrbmi\x1egrbmia\x1egrbd\x1egrbdi\x1egrbdia\x1egrbs\x1egrev\x1egrh\x1egrhh\x1egrhpa\x1egrm\x1egrmc\x1egrmv\x1egrrm\x1egrs\x1egrset\x1egrss\x1egrup\x1egrv\x1egsh\x1egsd\x1egsr\x1egss\x1egst\x1egsta\x1egstd\x1egstp\x1egsts\x1egsu\x1egsur\x1egsuri\x1egts\x1egtv\x1egsw\x1egswc\x1egunignore\x1egup\x1egwch\x1egco\x1egcb\x1egcod\x1egcom\x1egfb\x1egff\x1egfr\x1egfh\x1egfs\x1egfbs\x1egffs\x1egfrs\x1egfhs\x1egfss\x1egfbt\x1egfft\x1egfrt\x1egfht\x1egfst\x1egfp
+SETUVAR __git_plugin_initialized:Wed\x20Jun\x2030\x2009\x3a17\x3a14\x20CEST\x202021
SETUVAR _fish_abbr_batdiff:git\x20diff\x20\x2d\x2dname\x2donly\x20\x2d\x2ddiff\x2dfilter\x3dd\x20\x7c\x20xargs\x20bat\x20\x2d\x2ddiff
SETUVAR _fish_abbr_g:git
SETUVAR _fish_abbr_ga:git\x20add
@@ -40,11 +40,11 @@ SETUVAR _fish_abbr_gcl:git\x20clone
SETUVAR _fish_abbr_gclean:git\x20clean\x20\x2ddi
SETUVAR _fish_abbr_gclean_21_:git\x20clean\x20\x2ddfx
SETUVAR _fish_abbr_gclean_21_21_:git\x20reset\x20\x2d\x2dhard\x3b\x20and\x20git\x20clean\x20\x2ddfx
-SETUVAR _fish_abbr_gcm:git\x20checkout\x20master
+SETUVAR _fish_abbr_gcm:git\x20checkout\x20\x28__git\x2edefault_branch\x29
SETUVAR _fish_abbr_gcn_21_:git\x20commit\x20\x2dv\x20\x2d\x2dno\x2dedit\x20\x2d\x2damend
SETUVAR _fish_abbr_gco:git\x20checkout
SETUVAR _fish_abbr_gcod:git\x20checkout\x20develop
-SETUVAR _fish_abbr_gcom:git\x20checkout\x20master
+SETUVAR _fish_abbr_gcom:git\x20checkout\x20\x28__git\x2edefault_branch\x29
SETUVAR _fish_abbr_gcount:git\x20shortlog\x20\x2dsn
SETUVAR _fish_abbr_gcp:git\x20cherry\x2dpick
SETUVAR _fish_abbr_gcpa:git\x20cherry\x2dpick\x20\x2d\x2dabort
@@ -54,6 +54,7 @@ SETUVAR _fish_abbr_gd:git\x20diff
SETUVAR _fish_abbr_gdca:git\x20diff\x20\x2d\x2dcached
SETUVAR _fish_abbr_gds:git\x20diff\x20\x2d\x2dstat
SETUVAR _fish_abbr_gdsc:git\x20diff\x20\x2d\x2dstat\x20\x2d\x2dcached
+SETUVAR _fish_abbr_gdto:git\x20difftool
SETUVAR _fish_abbr_gdw:git\x20diff\x20\x2d\x2dword\x2ddiff
SETUVAR _fish_abbr_gdwc:git\x20diff\x20\x2d\x2dword\x2ddiff\x20\x2d\x2dcached
SETUVAR _fish_abbr_gf:git\x20fetch
@@ -67,7 +68,7 @@ SETUVAR _fish_abbr_gfft:git\x20flow\x20feature\x20track
SETUVAR _fish_abbr_gfh:git\x20flow\x20hotfix
SETUVAR _fish_abbr_gfhs:git\x20flow\x20hotfix\x20start
SETUVAR _fish_abbr_gfht:git\x20flow\x20hotfix\x20track
-SETUVAR _fish_abbr_gfm:git\x20fetch\x20origin\x20master\x20\x2d\x2dprune\x3b\x20and\x20git\x20merge\x20FETCH_HEAD
+SETUVAR _fish_abbr_gfm:git\x20fetch\x20origin\x20\x28__git\x2edefault_branch\x29\x20\x2d\x2dprune\x3b\x20and\x20git\x20merge\x20FETCH_HEAD
SETUVAR _fish_abbr_gfo:git\x20fetch\x20origin
SETUVAR _fish_abbr_gfp:git\x20flow\x20publish
SETUVAR _fish_abbr_gfr:git\x20flow\x20release
@@ -89,7 +90,7 @@ SETUVAR _fish_abbr_gll:git\x20pull\x20origin
SETUVAR _fish_abbr_glo:git\x20log\x20\x2d\x2doneline\x20\x2d\x2ddecorate\x20\x2d\x2dcolor
SETUVAR _fish_abbr_glod:git\x20log\x20\x2d\x2doneline\x20\x2d\x2ddecorate\x20\x2d\x2dcolor\x20develop\x2e\x2e
SETUVAR _fish_abbr_glog:git\x20log\x20\x2d\x2doneline\x20\x2d\x2ddecorate\x20\x2d\x2dcolor\x20\x2d\x2dgraph
-SETUVAR _fish_abbr_glom:git\x20log\x20\x2d\x2doneline\x20\x2d\x2ddecorate\x20\x2d\x2dcolor\x20master\x2e\x2e
+SETUVAR _fish_abbr_glom:git\x20log\x20\x2d\x2doneline\x20\x2d\x2ddecorate\x20\x2d\x2dcolor\x20\x28__git\x2edefault_branch\x29\x2e\x2e
SETUVAR _fish_abbr_gloo:git\x20log\x20\x2d\x2dpretty\x3dformat\x3a\x27\x25C\x28yellow\x29\x25h\x20\x25Cred\x25ad\x20\x25Cblue\x25an\x25Cgreen\x25d\x20\x25Creset\x25s\x27\x20\x2d\x2ddate\x3dshort
SETUVAR _fish_abbr_glr:git\x20pull\x20\x2d\x2drebase
SETUVAR _fish_abbr_gm:git\x20merge
@@ -107,16 +108,17 @@ SETUVAR _fish_abbr_grb:git\x20rebase
SETUVAR _fish_abbr_grba:git\x20rebase\x20\x2d\x2dabort
SETUVAR _fish_abbr_grbc:git\x20rebase\x20\x2d\x2dcontinue
SETUVAR _fish_abbr_grbd:git\x20rebase\x20develop
-SETUVAR _fish_abbr_grbdi:git\x20rebase\x20master\x20\x2d\x2dinteractive
-SETUVAR _fish_abbr_grbdia:git\x20rebase\x20master\x20\x2d\x2dinteractive\x20\x2d\x2dautosquash
+SETUVAR _fish_abbr_grbdi:git\x20rebase\x20\x28__git\x2edefault_branch\x29\x20\x2d\x2dinteractive
+SETUVAR _fish_abbr_grbdia:git\x20rebase\x20\x28__git\x2edefault_branch\x29\x20\x2d\x2dinteractive\x20\x2d\x2dautosquash
SETUVAR _fish_abbr_grbi:git\x20rebase\x20\x2d\x2dinteractive
-SETUVAR _fish_abbr_grbm:git\x20rebase\x20master
-SETUVAR _fish_abbr_grbmi:git\x20rebase\x20master\x20\x2d\x2dinteractive
-SETUVAR _fish_abbr_grbmia:git\x20rebase\x20master\x20\x2d\x2dinteractive\x20\x2d\x2dautosquash
+SETUVAR _fish_abbr_grbm:git\x20rebase\x20\x28__git\x2edefault_branch\x29
+SETUVAR _fish_abbr_grbmi:git\x20rebase\x20\x28__git\x2edefault_branch\x29\x20\x2d\x2dinteractive
+SETUVAR _fish_abbr_grbmia:git\x20rebase\x20\x28__git\x2edefault_branch\x29\x20\x2d\x2dinteractive\x20\x2d\x2dautosquash
SETUVAR _fish_abbr_grbs:git\x20rebase\x20\x2d\x2dskip
SETUVAR _fish_abbr_grev:git\x20revert
SETUVAR _fish_abbr_grh:git\x20reset
SETUVAR _fish_abbr_grhh:git\x20reset\x20\x2d\x2dhard
+SETUVAR _fish_abbr_grhpa:git\x20reset\x20\x2d\x2dpatch
SETUVAR _fish_abbr_grm:git\x20rm
SETUVAR _fish_abbr_grmc:git\x20rm\x20\x2d\x2dcached
SETUVAR _fish_abbr_grmv:git\x20remote\x20rename
diff --git a/symlinks/config/godot/.gitignore b/symlinks/config/godot/.gitignore
new file mode 100644
index 0000000..efd6149
--- /dev/null
+++ b/symlinks/config/godot/.gitignore
@@ -0,0 +1,2 @@
+editor_settings-3.tres
+projects/*
diff --git a/symlinks/config/godot/script_templates/empty.gd b/symlinks/config/godot/script_templates/empty.gd
new file mode 100644
index 0000000..c3c8a18
--- /dev/null
+++ b/symlinks/config/godot/script_templates/empty.gd
@@ -0,0 +1,2 @@
+extends %BASE%
+
diff --git a/symlinks/config/godot/script_templates/no_comments.gd b/symlinks/config/godot/script_templates/no_comments.gd
new file mode 100644
index 0000000..8f35b0b
--- /dev/null
+++ b/symlinks/config/godot/script_templates/no_comments.gd
@@ -0,0 +1,5 @@
+extends %BASE%
+
+
+func _ready()%VOID_RETURN%:
+%TS%pass
diff --git a/symlinks/config/htop/htoprc b/symlinks/config/htop/htoprc
index 39d7ab1..ca01ab4 100644
--- a/symlinks/config/htop/htoprc
+++ b/symlinks/config/htop/htoprc
@@ -1,9 +1,10 @@
# Beware! This file is rewritten by htop when settings are changed in the interface.
# The parser is also very primitive, and not human-friendly.
-fields=0 48 17 18 38 39 40 2 46 47 49 1
+fields=0 48 17 18 38 39 40 2 46 47 49 1
sort_key=46
sort_direction=1
-hide_threads=0
+tree_sort_key=0
+tree_sort_direction=1
hide_kernel_threads=1
hide_userland_threads=0
shadow_other_users=0
@@ -12,15 +13,27 @@ show_program_path=1
highlight_base_name=0
highlight_megabytes=1
highlight_threads=1
+highlight_changes=0
+highlight_changes_delay_secs=5
+find_comm_in_cmdline=1
+strip_exe_from_cmdline=1
+show_merged_command=0
tree_view=1
+tree_view_always_by_pid=0
header_margin=1
detailed_cpu_time=0
-cpu_count_from_zero=0
+cpu_count_from_one=1
+show_cpu_usage=1
+show_cpu_frequency=0
+show_cpu_temperature=0
+degree_fahrenheit=0
update_process_names=0
account_guest_in_cpu_meter=0
color_scheme=0
+enable_mouse=1
delay=15
-left_meters=AllCPUs Memory Swap
-left_meter_modes=1 1 1
-right_meters=Tasks LoadAverage Uptime
-right_meter_modes=2 2 2
+left_meters=AllCPUs Memory Swap
+left_meter_modes=1 1 1
+right_meters=Tasks LoadAverage Uptime Systemd
+right_meter_modes=2 2 2 2
+hide_function_bar=0
diff --git a/symlinks/config/libinput-gestures.conf b/symlinks/config/libinput-gestures.conf
index 468edb3..5e60380 100644
--- a/symlinks/config/libinput-gestures.conf
+++ b/symlinks/config/libinput-gestures.conf
@@ -1,5 +1,194 @@
-gesture: swipe right 3 xdotool key super+Tab
-gesture: swipe left 3 xdotool key super+shift+Tab
+# Configuration file for libinput-gestures.
+# Mark Blakeney, Sep 2015
+#
+# The default configuration file exists at /etc/libinput-gestures.conf
+# but a user can create a personal custom configuration file at
+# ~/.config/libinput-gestures.conf.
+#
+# Lines starting with '#' and blank lines are ignored. Currently
+# "gesture" and "device" configuration keywords are supported as
+# described below. The keyword can optionally be appended with a ":" (to
+# maintain compatibility with original format configuration files).
+#
+# Each gesture line has 3 [or 4] arguments separated by whitespace:
+#
+# action motion [finger_count] command
+#
+# where action and motion is either:
+# swipe up
+# swipe down
+# swipe left
+# swipe right
+# swipe left_up
+# swipe left_down
+# swipe right_up
+# swipe right_down
+# pinch in
+# pinch out
+# pinch clockwise
+# pinch anticlockwise
+#
+# command is the remainder of the line and is any valid shell command +
+# arguments.
+#
+# finger_count is a single numeric digit and is optional (and is
+# typically 3 or 4). If specified then the command is executed when
+# exactly that number of fingers is used in the gesture. If not
+# specified then the command is executed when that gesture is executed
+# with any number of fingers. Gesture lines specified with finger_count
+# have priority over the same gesture specified without any
+# finger_count.
+#
+# Typically command will be _internal, or xdotool. See "man xdotool" for
+# the many things you can action with that tool. Note that unfortunately
+# xdotool does not work with native Wayland clients.
-gesture: pinch out 5 xdotool key super+q
-gesture: swupe up 3 xdotool key super+space
+###############################################################################
+# SWIPE GESTURES:
+###############################################################################
+
+# Note the default is an "internal" command that uses wmctrl to switch
+# workspaces and, unlike xdotool, works on both Xorg and Wayland (via
+# XWayland). It also can be configured for vertical and horizontal
+# switching over tabular workspaces, as per the example below. You can
+# also add "-w" to the internal command to allow wrapping workspaces.
+# Ensure you install wmctrl if you use _internal.
+
+# Move to next workspace (works for GNOME/KDE/etc on Wayland and Xorg)
+# gesture swipe up _internal ws_up
+
+# NOTE ABOUT FINGER COUNT:
+# The above command will configure this command for all fingers (i.e. 3
+# for 4) but to configure it for 3 fingers only, change it to:
+# gesture swipe up 3 _internal ws_up
+# Then you can configure something else for 4 fingers or leave 4 fingers
+# unconfigured. You can configure an explicit finger count like this for
+# all example commands in this configuration file.
+#
+# gesture swipe up xdotool key super+Page_Down
+
+# Move to prev workspace (works for GNOME/KDE/etc on Wayland and Xorg)
+# gesture swipe down _internal ws_down
+# gesture swipe down xdotool key super+Page_Up
+
+# Browser go forward (works only for Xorg, and Xwayland clients)
+gesture swipe left swaymsg workspace next
+
+# Browser go back (works only for Xorg, and Xwayland clients)
+gesture swipe right swaymsg workspace prev
+
+# NOTE: If you don't use "natural" scrolling direction for your touchpad
+# then you may want to swap the above default left/right and up/down
+# configurations.
+
+# Optional extended swipe gestures, e.g. for browser tab navigation:
+#
+# Jump to next open browser tab
+# gesture swipe right_up xdotool key control+Tab
+#
+# Jump to previous open browser tab
+# gesture swipe left_up xdotool key control+shift+Tab
+#
+# Close current browser tab
+# gesture swipe left_down xdotool key control+w
+#
+# Reopen and jump to last closed browser tab
+# gesture swipe right_down xdotool key control+shift+t
+
+# Example of 8 static workspaces, e.g. using KDE virtual-desktops,
+# arranged in 2 rows of 4 columns across using swipe up/down/left/right
+# to navigate in fixed planes. You can also add the "-w/--wrap" option
+# to allow wrapping in any direction. You must configure your virtual
+# desktops with the same column dimension.
+# gesture swipe up _internal --cols 4 ws_up
+# gesture swipe down _internal --cols 4 ws_down
+# gesture swipe left _internal --cols 4 ws_left
+# gesture swipe right _internal --cols 4 ws_right
+#
+# Example of 16 static workspaces, e.g. using KDE virtual-desktops,
+# arranged in 4 rows of 4 columns across using swipe up/down/left/right
+# to navigate in fixed planes, and also using swipe
+# left_up/left_down/right_up/right_down to navigate diagonally. You can
+# also add the "-w/--wrap" option to allow wrapping in any direction
+# and/or diagonally. You must configure your virtual desktops with the
+# same column dimension.
+# gesture swipe up _internal --cols 4 ws_up
+# gesture swipe down _internal --cols 4 ws_down
+# gesture swipe left _internal --cols 4 ws_left
+# gesture swipe right _internal --cols 4 ws_right
+# gesture swipe left_up _internal --cols 4 ws_left_up
+# gesture swipe left_down _internal --cols 4 ws_left_down
+# gesture swipe right_up _internal --cols 4 ws_right_up
+# gesture swipe right_down _internal --cols 4 ws_right_down
+
+# Example virtual desktop switching for Ubuntu Unity/Compiz. The
+# _internal command does not work for Compiz but you can explicitly
+# configure the swipe commands to work for a Compiz virtual 2
+# dimensional desktop as follows:
+# gesture swipe up xdotool key ctrl+alt+Up
+# gesture swipe down xdotool key ctrl+alt+Down
+# gesture swipe left xdotool key ctrl+alt+Left
+# gesture swipe right xdotool key ctrl+alt+Right
+
+# Example to change audio volume:
+# Note this only works on an Xorg desktop (not Wayland).
+# gesture swipe up xdotool key XF86AudioRaiseVolume
+# gesture swipe down xdotool key XF86AudioLowerVolume
+
+###############################################################################
+# PINCH GESTURES:
+###############################################################################
+
+# GNOME SHELL open/close overview (works for GNOME on Xorg only)
+# gesture pinch in xdotool key super+s
+# gesture pinch out xdotool key super+s
+
+# KDE Plasma open/close overview
+# gesture pinch in xdotool key ctrl+F9
+# gesture pinch out xdotool key ctrl+F9
+
+# GNOME SHELL open/close overview (works for GNOME on Wayland and Xorg)
+# Note since GNOME 3.24 on Wayland this is implemented natively so no
+# real point configuring for Wayland.
+# gesture pinch in dbus-send --session --type=method_call --dest=org.gnome.Shell /org/gnome/Shell org.gnome.Shell.Eval string:'Main.overview.toggle();'
+# gesture pinch out dbus-send --session --type=method_call --dest=org.gnome.Shell /org/gnome/Shell org.gnome.Shell.Eval string:'Main.overview.toggle();'
+
+# Optional extended pinch gestures:
+# gesture pinch clockwise
+# gesture pinch anticlockwise
+
+###############################################################################
+# This application normally determines your touchpad device
+# automatically. Some users may have multiple touchpads but by default
+# we use only the first one found. However, you can choose to specify
+# the explicit device name to use. Run "libinput list-devices" to work
+# out the name of your device (from the "Device:" field). Then add a
+# device line specifying that name, e.g:
+#
+# device DLL0665:01 06CB:76AD Touchpad
+#
+# If the device name starts with a '/' then it is instead considered as
+# the explicit device path although since device paths can change
+# through reboots this is best to be a symlink. E.g. instead of specifying
+# /dev/input/event12, you should use the corresponding full path link
+# under /dev/input/by-path/ or /dev/input/by-id/.
+#
+# You can choose to use ALL touchpad devices by setting the device name
+# to "all". E.g. Do this if you have multiple touchpads which you want
+# to use in parallel. This reduces performance slightly so only set this
+# if you have to.
+#
+# device all
+
+###############################################################################
+# You can set a minimum travel distance threshold before swipe gestures
+# are actioned using the swipe_threshold configuration command.
+# Specify this value in dots. The default is 0.
+# E.g. set it to 100 dots with "swipe_threshold 100".
+# swipe_threshold 0
+
+###############################################################################
+# You can set a timeout on gestures from start to end. The default is
+# the value commented below. It can be any value in float secs >= 0.
+# 0 = no timeout. E.g. set it to 2 secs with "timeout 2".
+# timeout 1.5
diff --git a/symlinks/config/mutt/muttrc b/symlinks/config/mutt/muttrc
index bbd18fe..914a665 100644
--- a/symlinks/config/mutt/muttrc
+++ b/symlinks/config/mutt/muttrc
@@ -1,9 +1,5 @@
# Folder for emails
set folder = "~/.mail"
-# Mailbox type
-set mbox_type = Maildir
-# Directory to pool for new mail
-set spoolfile = +Inbox
# Directory to save sent messages into
set record = +Sent
# Directory to save drafts into
@@ -27,3 +23,16 @@ auto_view text/html
# Order to try and show multipart emails
alternative_order text/plain text/enriched text/html
set editor = "vim"
+
+source accounts/personal
+
+# Mailbox type
+set mbox_type = Maildir
+# Directory to pool for new mail
+set spoolfile = +Inbox
+mailboxes = +Inbox
+set imap_check_subscribed
+
+source /usr/share/doc/neomutt/vim-keys/vim-keys.rc
+
+macro index,pager A "=Archive" "Archive Message"
diff --git a/symlinks/config/newsboat/urls b/symlinks/config/newsboat/urls
index e6ccce6..a8db30d 100644
--- a/symlinks/config/newsboat/urls
+++ b/symlinks/config/newsboat/urls
@@ -37,3 +37,8 @@ https://martinfowler.com/feed.atom blog development "~Martin Fowler Blog"
https://feeds.feedburner.com/GDBcode blog development google "~Google Developers Blog"
https://feeds.feedburner.com/blogspot/hsDu blog development google android "~Google Android Developers Blog"
https://www.smashingmagazine.com/feed blog development web "~Smashing Magazine Web Dev Blog"
+https://devblogs.microsoft.com/dotnet/feed/ blog development dotnet "~DotNet Blog"
+https://dragan.rocks/feed.xml blog development clojure "~Dragan Djuric Blog"
+http://planet.clojure.in/atom.xml blog development clojure "~Planet Clojure"
+https://godotengine.org/rss.xml blog development gamedev godot "~Godot Engine Blog"
+https://www.unrealengine.com/en-US/rss blog development gamedev unreal "~Unreal Engine Blog"
diff --git a/symlinks/config/nvim/README.md b/symlinks/config/nvim/README.md
index 9348240..3d33dc4 100644
--- a/symlinks/config/nvim/README.md
+++ b/symlinks/config/nvim/README.md
@@ -1,3 +1,11 @@
-## NeoVim config
+## My NeoVim configuration
-Current NeoVim configuration only reads .vim config, since both are currently shared. Complete migration to NeoVim and lua based config is planned.
+Configuration is separated into directories:
+ - `plugin` for logical collection of functionalities into a simple plugin
+ - `colors` my colorscheme
+ - `compiler` for compiler plugins
+ - `ftdetect` for autocommands for detecting file types
+ - `undodir` is just a placeholder for configured undo directory
+ - `spell` for spelling dictionary
+ - `after` with same directory structure for loading after plugins - allows easy overrides, most `ftplugins` are here
+ - `lua` for all lua config files, with `ftplugin` and `plugin` too, enabled by [astronauta](https://github.com/tjdevries/astronauta.nvim)
diff --git a/symlinks/config/nvim/after/ftplugin/README.md b/symlinks/config/nvim/after/ftplugin/README.md
new file mode 100644
index 0000000..06623ab
--- /dev/null
+++ b/symlinks/config/nvim/after/ftplugin/README.md
@@ -0,0 +1,3 @@
+## Filetype plugins
+
+All filetype plugins should be located in this /after dir to ensure no defaults or other plugins override these settings.
diff --git a/symlinks/config/nvim/after/ftplugin/clojure.vim b/symlinks/config/nvim/after/ftplugin/clojure.vim
new file mode 100644
index 0000000..fa15b9a
--- /dev/null
+++ b/symlinks/config/nvim/after/ftplugin/clojure.vim
@@ -0,0 +1,2 @@
+setlocal ts=2 sts=2 sw=2 expandtab autoindent
+let b:undo_ftplugin .= '|setlocal ts< sts< sw< expandtab< autoindent<'
diff --git a/symlinks/config/nvim/after/ftplugin/cs.vim b/symlinks/config/nvim/after/ftplugin/cs.vim
new file mode 100644
index 0000000..3101d7c
--- /dev/null
+++ b/symlinks/config/nvim/after/ftplugin/cs.vim
@@ -0,0 +1,2 @@
+setlocal ts=4 sts=4 sw=4 expandtab autoindent
+let b:undo_ftplugin = '|setlocal ts< sts< sw< expandtab< autoindent<'
diff --git a/symlinks/config/nvim/after/ftplugin/elixir.vim b/symlinks/config/nvim/after/ftplugin/elixir.vim
new file mode 100644
index 0000000..a1c91f6
--- /dev/null
+++ b/symlinks/config/nvim/after/ftplugin/elixir.vim
@@ -0,0 +1,5 @@
+setlocal ts=2 sts=2 sw=2 expandtab autoindent
+let b:undo_ftplugin .= '|setlocal ts< sts< sw< expandtab< autoindent<'
+
+compiler elixir
+let b:undo_ftplugin .= '|compiler<'
diff --git a/symlinks/config/nvim/after/ftplugin/gdscript.vim b/symlinks/config/nvim/after/ftplugin/gdscript.vim
new file mode 100644
index 0000000..f068acf
--- /dev/null
+++ b/symlinks/config/nvim/after/ftplugin/gdscript.vim
@@ -0,0 +1,7 @@
+setlocal foldmethod=expr
+setlocal tabstop=4
+nnoremap :GodotRunLast
+nnoremap :GodotRun
+nnoremap :GodotRunCurrent
+nnoremap :GodotRunFZF
+let b:undo_ftplugin .= '|setlocal foldmethod< tabstop<'
diff --git a/symlinks/config/nvim/after/ftplugin/gitcommit.vim b/symlinks/config/nvim/after/ftplugin/gitcommit.vim
new file mode 100644
index 0000000..9b64d11
--- /dev/null
+++ b/symlinks/config/nvim/after/ftplugin/gitcommit.vim
@@ -0,0 +1,4 @@
+setlocal textwidth=72
+setlocal spell
+setlocal cc=+1
+let b:undo_ftplugin .= '|setlocal textwidth< spell< cc<'
diff --git a/symlinks/config/nvim/after/ftplugin/java.lua b/symlinks/config/nvim/after/ftplugin/java.lua
new file mode 100644
index 0000000..877483a
--- /dev/null
+++ b/symlinks/config/nvim/after/ftplugin/java.lua
@@ -0,0 +1,4 @@
+require('jdtls').start_or_attach {
+ cmd = {'jdtls-startup.sh'};
+ on_attach = require'lsp.servers'.jdtls_on_attach;
+}
diff --git a/symlinks/config/nvim/after/ftplugin/javascript.vim b/symlinks/config/nvim/after/ftplugin/javascript.vim
new file mode 100644
index 0000000..fa15b9a
--- /dev/null
+++ b/symlinks/config/nvim/after/ftplugin/javascript.vim
@@ -0,0 +1,2 @@
+setlocal ts=2 sts=2 sw=2 expandtab autoindent
+let b:undo_ftplugin .= '|setlocal ts< sts< sw< expandtab< autoindent<'
diff --git a/symlinks/config/nvim/after/ftplugin/lua.vim b/symlinks/config/nvim/after/ftplugin/lua.vim
new file mode 100644
index 0000000..fa15b9a
--- /dev/null
+++ b/symlinks/config/nvim/after/ftplugin/lua.vim
@@ -0,0 +1,2 @@
+setlocal ts=2 sts=2 sw=2 expandtab autoindent
+let b:undo_ftplugin .= '|setlocal ts< sts< sw< expandtab< autoindent<'
diff --git a/symlinks/config/nvim/after/ftplugin/python.vim b/symlinks/config/nvim/after/ftplugin/python.vim
new file mode 100644
index 0000000..6cea5de
--- /dev/null
+++ b/symlinks/config/nvim/after/ftplugin/python.vim
@@ -0,0 +1,11 @@
+" -----------------------------------------------------------------------------
+" - Python file plugin -
+" -----------------------------------------------------------------------------
+
+" Without this, weird issues occurred with asdf + direnv + python virtualenv
+setlocal shell=/bin/sh
+
+setlocal textwidth=79
+setlocal cc=+1
+
+let b:undo_ftplugin .= "|setlocal shell< textwidth< cc<"
diff --git a/symlinks/config/nvim/after/ftplugin/text.vim b/symlinks/config/nvim/after/ftplugin/text.vim
new file mode 100644
index 0000000..07f6fc3
--- /dev/null
+++ b/symlinks/config/nvim/after/ftplugin/text.vim
@@ -0,0 +1,3 @@
+setlocal textwidth=78
+setlocal spell
+let b:undo_ftplugin .= '|setlocal textwidth< spell<'
diff --git a/symlinks/config/nvim/after/plugin/README.md b/symlinks/config/nvim/after/plugin/README.md
new file mode 100644
index 0000000..0cb9a1e
--- /dev/null
+++ b/symlinks/config/nvim/after/plugin/README.md
@@ -0,0 +1,5 @@
+## Plugin overrides
+
+This directory should mostly be used to configure specific plugins, by running after them.
+In some cases it may be required to run some code before plugin, in which case /plugin dir can be used.
+Other than this, custom plugins should be located in /plugin dir, unless plugin explicitly overrides some other plugin, in which case, it would probably be better to either disable other plugin or just override it with that plugin specific file.
diff --git a/symlinks/config/nvim/after/plugin/grepper.vim b/symlinks/config/nvim/after/plugin/grepper.vim
new file mode 100644
index 0000000..73912ec
--- /dev/null
+++ b/symlinks/config/nvim/after/plugin/grepper.vim
@@ -0,0 +1,13 @@
+" -----------------------------------------------------------------------------
+" - vim-grepper configuration -
+" -----------------------------------------------------------------------------
+
+let g:grepper = {}
+let g:grepper.tools = ['rg', 'git', 'grep']
+
+" Search for the current word (similar to *)
+nnoremap * :Grepper -cword -noprompt
+
+" Search for the current selection
+nmap gs (GrepperOperator)
+xmap gs (GrepperOperator)
diff --git a/symlinks/config/nvim/after/plugin/python_host.vim b/symlinks/config/nvim/after/plugin/python_host.vim
new file mode 100644
index 0000000..ba22ba7
--- /dev/null
+++ b/symlinks/config/nvim/after/plugin/python_host.vim
@@ -0,0 +1,6 @@
+" -----------------------------------------------------------------------------
+" - Neovim python host -
+" Explicit declaration of python host program to "prevent suprises"
+" -----------------------------------------------------------------------------
+let g:python_host_prog = $HOME.'/.asdf/shims/python2'
+let g:python3_host_prog = $HOME.'/.asdf/shims/python3'
diff --git a/symlinks/config/nvim/after/plugin/supertab.vim b/symlinks/config/nvim/after/plugin/supertab.vim
new file mode 100644
index 0000000..5227319
--- /dev/null
+++ b/symlinks/config/nvim/after/plugin/supertab.vim
@@ -0,0 +1,2 @@
+" More natural auto complete
+let g:SuperTabDefaultCompletionType = ""
diff --git a/symlinks/config/nvim/after/plugin/testing.vim b/symlinks/config/nvim/after/plugin/testing.vim
new file mode 100644
index 0000000..64350b4
--- /dev/null
+++ b/symlinks/config/nvim/after/plugin/testing.vim
@@ -0,0 +1,14 @@
+" -----------------------------------------------------------------------------
+" - Vim-test and general testing config -
+" -----------------------------------------------------------------------------
+
+" make test commands execute using dispatch.vim
+let test#strategy = "dispatch"
+let test#csharp#runner = "dotnettest"
+
+" Map test running commands
+nmap tn :TestNearest
+nmap tf :TestFile
+nmap ts :TestSuite
+nmap tl :TestLast
+nmap tg :TestVisit
diff --git a/symlinks/config/nvim/compiler/README.md b/symlinks/config/nvim/compiler/README.md
new file mode 100644
index 0000000..979c157
--- /dev/null
+++ b/symlinks/config/nvim/compiler/README.md
@@ -0,0 +1,3 @@
+## Compiler settings
+
+Used just to set up makeprg and compile errors parsing
diff --git a/symlinks/config/nvim/compiler/elixir.vim b/symlinks/config/nvim/compiler/elixir.vim
new file mode 100644
index 0000000..c48ed76
--- /dev/null
+++ b/symlinks/config/nvim/compiler/elixir.vim
@@ -0,0 +1,19 @@
+" Vim compiler file
+" Compiler: Elixir Script Compiler
+
+if exists('current_compiler')
+ finish
+endif
+let current_compiler = "elixir"
+
+let s:save_cpo = &cpo
+set cpo&vim
+
+if exists(':CompilerSet') != 2
+ command -nargs=* CompilerSet setlocal
+endif
+
+CompilerSet makeprg=elixir\ %
+
+let &cpo = s:save_cpo
+unlet s:save_cpo
diff --git a/symlinks/config/nvim/compiler/gradle.vim b/symlinks/config/nvim/compiler/gradle.vim
new file mode 100644
index 0000000..f84ca68
--- /dev/null
+++ b/symlinks/config/nvim/compiler/gradle.vim
@@ -0,0 +1,30 @@
+" Vim Compiler File
+" Compiler: gradle
+
+if exists("current_compiler")
+ finish
+endif
+let current_compiler = "gradle"
+
+let s:save_cpo = &cpo
+set cpo&vim
+
+if exists(":CompilerSet") != 2
+ command -nargs=* CompilerSet setlocal
+endif
+
+CompilerSet makeprg=gradle
+
+CompilerSet errorformat=
+ \%E[ant:scalac]\ %f:%l:\ error:\ %m,
+ \%W[ant:scalac]\ %f:%l:\ warning:\ %m,
+ \%E%.%#:compile%\\w%#Java%f:%l:\ error:\ %m,%-Z%p^,%-C%.%#,
+ \%W%.%#:compile%\\w%#Java%f:%l:\ warning:\ %m,%-Z%p^,%-C%.%#,
+ \%E%f:%l:\ error:\ %m,%-Z%p^,%-C%.%#,
+ \%W%f:%l:\ warning:\ %m,%-Z%p^,%-C%.%#,
+ \%E%f:\ %\\d%\\+:\ %m\ @\ line\ %l\\,\ column\ %c.,%-C%.%#,%Z%p^,
+ \%E%>%f:\ %\\d%\\+:\ %m,%C\ @\ line\ %l\\,\ column\ %c.,%-C%.%#,%Z%p^,
+ \%-G%.%#
+
+let &cpo = s:save_cpo
+unlet s:save_cpo
diff --git a/symlinks/config/nvim/compiler/gradlew.vim b/symlinks/config/nvim/compiler/gradlew.vim
new file mode 100644
index 0000000..7fbbace
--- /dev/null
+++ b/symlinks/config/nvim/compiler/gradlew.vim
@@ -0,0 +1,30 @@
+" Vim Compiler File
+" Compiler: gradlew
+
+if exists("current_compiler")
+ finish
+endif
+let current_compiler = "gradlew"
+
+let s:save_cpo = &cpo
+set cpo&vim
+
+if exists(":CompilerSet") != 2
+ command -nargs=* CompilerSet setlocal
+endif
+
+CompilerSet makeprg=./gradlew
+
+CompilerSet errorformat=
+ \%E[ant:scalac]\ %f:%l:\ error:\ %m,
+ \%W[ant:scalac]\ %f:%l:\ warning:\ %m,
+ \%E%.%#:compile%\\w%#Java%f:%l:\ error:\ %m,%-Z%p^,%-C%.%#,
+ \%W%.%#:compile%\\w%#Java%f:%l:\ warning:\ %m,%-Z%p^,%-C%.%#,
+ \%E%f:%l:\ error:\ %m,%-Z%p^,%-C%.%#,
+ \%W%f:%l:\ warning:\ %m,%-Z%p^,%-C%.%#,
+ \%E%f:\ %\\d%\\+:\ %m\ @\ line\ %l\\,\ column\ %c.,%-C%.%#,%Z%p^,
+ \%E%>%f:\ %\\d%\\+:\ %m,%C\ @\ line\ %l\\,\ column\ %c.,%-C%.%#,%Z%p^,
+ \%-G%.%#
+
+let &cpo = s:save_cpo
+unlet s:save_cpo
diff --git a/symlinks/config/nvim/ftdetect/gradle.vim b/symlinks/config/nvim/ftdetect/gradle.vim
new file mode 100644
index 0000000..20533b9
--- /dev/null
+++ b/symlinks/config/nvim/ftdetect/gradle.vim
@@ -0,0 +1,2 @@
+" gradle syntax highlighting
+au BufNewFile,BufRead *.gradle set filetype=groovy
diff --git a/symlinks/config/nvim/init.lua b/symlinks/config/nvim/init.lua
new file mode 100644
index 0000000..873af79
--- /dev/null
+++ b/symlinks/config/nvim/init.lua
@@ -0,0 +1,44 @@
+if require('init.first_load')() then
+ return
+end
+
+vim.cmd [[filetype plugin on]]
+vim.cmd [[filetype indent on]]
+vim.cmd [[syntax on]]
+
+vim.api.nvim_exec('let $OVIMHOME = $HOME."/.vim"', false)
+vim.api.nvim_exec('let $VIMHOME = $HOME."/.config/nvim"', false)
+vim.api.nvim_exec('let $NVIMHOME = $HOME."/.local/share/nvim"', false)
+vim.api.nvim_exec('let $VIMPLUGINS = expand($VIMHOME."/lua/personal/plugins.lua")', false)
+
+-- Leader config to
+vim.g.mapleader = ' '
+
+-- Globals taken from TJ config
+-- Helpful for configuration
+-- Might be removed in future version of NeoVim
+require('init.globals')
+
+require('init.plugins')
+
+require('init.options')
+
+require('lsp')
+
+-- Colorscheme
+vim.cmd('syntax on')
+require('init.colors')
+
+vim.api.nvim_set_keymap('n', 'Q', 'gq', {})
+vim.api.nvim_set_keymap('i', '', 'u', {noremap = true})
+
+vim.cmd('command! Wq :wq')
+vim.cmd('command! W :w')
+
+vim.api.nvim_set_keymap('n', 'c', ':ccl lcl', {noremap = true})
+
+-- Allow recursive searches
+vim.cmd('set path+=**')
+
+-- automatically rebalance windows on vim resize
+vim.cmd('autocmd VimResized * :wincmd =')
diff --git a/symlinks/config/nvim/init.vim b/symlinks/config/nvim/init.vim
deleted file mode 100644
index dbf8872..0000000
--- a/symlinks/config/nvim/init.vim
+++ /dev/null
@@ -1,3 +0,0 @@
-set runtimepath^=~/.vim runtimepath+=~/.vim/after
-let &packpath = &runtimepath
-source ~/.vim/vimrc
diff --git a/symlinks/config/nvim/lua/fugitive_extensions.lua b/symlinks/config/nvim/lua/fugitive_extensions.lua
new file mode 100644
index 0000000..cab293d
--- /dev/null
+++ b/symlinks/config/nvim/lua/fugitive_extensions.lua
@@ -0,0 +1,83 @@
+-------------------------------------------------------------------------------
+-- - Fugitive.vim extensions library -
+-------------------------------------------------------------------------------
+
+-- Generates url for creating PR for current branch
+-- Tested only with github.com
+-- Works regardless of ssh or https for origin config
+-- Hardcoded to use 'origin' remote
+local function get_pr_url(...)
+ local origin_url = vim.fn['fugitive#RemoteUrl']('origin')
+ origin_url = string.gsub(origin_url, '.git$', '')
+ origin_url = string.gsub(origin_url, ':', '/')
+ origin_url = string.gsub(origin_url, 'git@', 'https://')
+
+ -- Remove prefix if it is available, for some of common git services
+ local common_services = {'github.com', 'bitbucket.org', 'gitlab.com'}
+ for k,service in pairs(common_services) do
+ if (string.find(origin_url, service, 1, true))
+ then
+ -- Common mechanism for managing multiple SSH keys
+ origin_url = string.gsub(origin_url, '://.*' .. service, '://' .. service)
+ end
+ end
+
+ -- This part probably only works on github
+ local pr_url
+ if (select('#', ...) == 0)
+ then
+ pr_url = origin_url .. '/compare/' .. vim.fn.FugitiveHead() .. '?expand=1'
+ else
+ pr_url = origin_url .. '/compare/' .. select(1, ...) .. '...' .. vim.fn.FugitiveHead() .. '?expand=1'
+ end
+ return pr_url
+end
+
+-------------------------------------------------------------------------------
+-- - Public API -
+-------------------------------------------------------------------------------
+
+local M = {}
+
+-- Shorcut to push directly to current branch on origin
+-- Similar to `ggpush` in fish config
+function M.push_origin()
+ vim.cmd('Git push origin ' .. vim.fn.FugitiveHead())
+end
+
+-- Shorcut to pull directly from current branch on origin
+-- Similar to `ggpull` in fish config
+function M.pull_origin()
+ vim.cmd('Git pull origin ' .. vim.fn.FugitiveHead())
+end
+
+
+-- Prints current branches PR url (not saved to :messages)
+-- Makes it easy to use terminal for opening url on click
+function M.print_pr_url(...)
+ vim.cmd('echo "' .. get_pr_url(...) .. '"')
+end
+
+-- Copies current branches PR url to system clipboard
+function M.copy_pr_url(...)
+ vim.cmd('let @+ = "' .. get_pr_url(...) .. '"')
+end
+
+-- Opens current banches PR url in default browser
+-- Utilizes netrw browse, meaning it should behave same as netrw
+function M.open_new_pr(...)
+ vim.fn['netrw#BrowseX'](get_pr_url(...), 0)
+end
+
+-- Creates new branch and checks out to it
+-- Similar to `gcb` in fish config
+function M.create_branch(branch)
+ vim.cmd('Git checkout -b ' .. branch)
+end
+
+-- Switches to branch
+function M.checkout_branch(branch)
+ vim.cmd('Git checkout ' .. branch)
+end
+
+return M
diff --git a/symlinks/config/nvim/lua/init/colors.lua b/symlinks/config/nvim/lua/init/colors.lua
new file mode 100644
index 0000000..b83b219
--- /dev/null
+++ b/symlinks/config/nvim/lua/init/colors.lua
@@ -0,0 +1,4 @@
+vim.o.termguicolors = true -- Does not look good with gruvbox
+vim.o.background = "dark"
+vim.g.gruvbox_italic = 1
+vim.cmd([[colorscheme gruvbox]])
diff --git a/symlinks/config/nvim/lua/init/first_load.lua b/symlinks/config/nvim/lua/init/first_load.lua
new file mode 100644
index 0000000..2c11bc5
--- /dev/null
+++ b/symlinks/config/nvim/lua/init/first_load.lua
@@ -0,0 +1,35 @@
+-- Adopted from https://github.com/tjdevries/config_manager/blob/master/xdg_config/nvim/lua/tj/first_load.lua
+local download_packer = function()
+ if vim.fn.input("Download Packer? (y for yes)") ~= "y" then
+ return
+ end
+
+ local directory = string.format(
+ '%s/site/pack/packer/start/',
+ vim.fn.stdpath('data')
+ )
+
+ vim.fn.mkdir(directory, 'p')
+
+ local out = vim.fn.system(string.format(
+ 'git clone %s %s',
+ 'https://github.com/wbthomason/packer.nvim',
+ directory .. '/packer.nvim'
+ ))
+
+ print(out)
+ print("Downloading packer.nvim...")
+ vim.api.nvim_command('PackerCompile')
+ vim.api.nvim_command('PackerInstall')
+ print("( You'll need to restart now )")
+end
+
+return function()
+ if not pcall(require, 'packer') then
+ download_packer()
+
+ return true
+ end
+
+ return false
+end
diff --git a/symlinks/config/nvim/lua/init/globals/init.lua b/symlinks/config/nvim/lua/init/globals/init.lua
new file mode 100644
index 0000000..685a0c4
--- /dev/null
+++ b/symlinks/config/nvim/lua/init/globals/init.lua
@@ -0,0 +1,19 @@
+-------------------------------------------------------------------------------
+-- - Adopted from TJ config (https://github.com/tjdevries/config_manager/blob/master/xdg_config/nvim/lua/tj/globals/init.lua) -
+-------------------------------------------------------------------------------
+P = function(v)
+ print(vim.inspect(v))
+ return v
+end
+
+if pcall(require, 'plenary') then
+ RELOAD = require('plenary.reload').reload_module
+
+ R = function(name)
+ RELOAD(name)
+ return require(name)
+ end
+end
+
+-- `vim.opt`
+require('init.globals.opt')
diff --git a/symlinks/config/nvim/lua/init/globals/opt.lua b/symlinks/config/nvim/lua/init/globals/opt.lua
new file mode 100644
index 0000000..d55ac10
--- /dev/null
+++ b/symlinks/config/nvim/lua/init/globals/opt.lua
@@ -0,0 +1,263 @@
+--[[ To use a more declarative syntax, you could do something like this:
+
+local function set_opts(opts_table)
+ for k, v in pairs(opts_table) do
+ vim.opt[k] = v
+ end
+end
+
+set_opts {
+ mouse = 'n',
+ fillchars = { eob = "~" },
+}
+
+--]]
+
+--[[ Global option names
+
+For those wondering how to get the values at the top level,
+ you could use Lua's `setfenv` function to set the environment
+ equal to the vim.opt dict
+
+cc @mccanch
+
+setfenv(function()
+ mouse = 'n'
+end, vim.opt)()
+
+--]]
+
+local if_nil = function(a, b)
+ if a == nil then
+ return b
+ end
+ return a
+end
+
+local singular_values = {
+ ['boolean'] = true,
+ ['number'] = true,
+ ['nil'] = true,
+}
+
+local set_key_value = function(t, key_value_str)
+ assert(string.find(key_value_str, ":"), "Must have a :" .. tostring(key_value_str))
+
+ local key, value = unpack(vim.split(key_value_str, ":"))
+ key = vim.trim(key)
+ value = vim.trim(value)
+
+ t[key] = value
+end
+
+local convert_vimoption_to_lua = function(option, val)
+ -- Short circuit if we've already converted!
+ if type(val) == 'table' then
+ return val
+ end
+
+ if singular_values[type(val)] then
+ return val
+ end
+
+ if type(val) == "string" then
+ -- TODO: Bad hax I think
+ if string.find(val, ":") then
+ local result = {}
+ local items = vim.split(val, ",")
+ for _, item in ipairs(items) do
+ set_key_value(result, item)
+ end
+
+ return result
+ else
+ return vim.split(val, ",")
+ end
+ end
+end
+
+-- local concat_keys = function(t, sep)
+-- return table.concat(vim.tbl_keys(t), sep)
+-- end
+
+local concat_key_values = function(t, sep, divider)
+ local final = {}
+ for k, v in pairs(t) do
+ table.insert(final, string.format('%s%s%s', k, divider, v))
+ end
+
+ table.sort(final)
+ return table.concat(final, sep)
+end
+
+local remove_duplicate_values = function(t)
+ local result = {}
+ for _, v in ipairs(t) do
+ result[v] = true
+ end
+
+ return vim.tbl_keys(result)
+end
+
+local remove_value = function(t, val)
+ if vim.tbl_islist(t) then
+ local remove_index = nil
+ for i, v in ipairs(t) do
+ if v == val then
+ remove_index = i
+ end
+ end
+
+ if remove_index then
+ table.remove(t, remove_index)
+ end
+ else
+ t[val] = nil
+ end
+
+ return t
+end
+
+local add_value = function(current, new)
+ if singular_values[type(current)] then
+ error(
+ "This is not possible to do. Please do something different: "
+ .. tostring(current)
+ .. " // "
+ .. tostring(new)
+ )
+ end
+
+ if type(new) == 'string' then
+ if vim.tbl_islist(current) then
+ table.insert(current, new)
+ else
+ set_key_value(current, new)
+ end
+
+ return current
+ elseif type(new) == 'table' then
+ if vim.tbl_islist(current) then
+ assert(vim.tbl_islist(new))
+ vim.list_extend(current, new)
+ else
+ assert(not vim.tbl_islist(new), vim.inspect(new) .. vim.inspect(current))
+ current = vim.tbl_extend("force", current, new)
+ end
+
+ return current
+ else
+ error("Unknown type")
+ end
+end
+
+local convert_lua_to_vimoption = function(t)
+ if vim.tbl_islist(t) then
+ t = remove_duplicate_values(t)
+
+ table.sort(t)
+ return table.concat(t, ',')
+ else
+ return concat_key_values(t, ',', ':')
+ end
+end
+
+local clean_value = function(v)
+ if singular_values[type(v)] then
+ return v
+ end
+
+ local result = v:gsub('^,', '')
+
+ return result
+end
+
+local opt_mt
+
+opt_mt = {
+ __index = function(t, k)
+ if k == '_value' then
+ return rawget(t, k)
+ end
+
+ return setmetatable({ _option = k, }, opt_mt)
+ end,
+
+ __newindex = function(t, k, v)
+ if k == '_value' then
+ return rawset(t, k, v)
+ end
+
+ if type(v) == 'table' then
+ local new_value
+ if getmetatable(v) ~= opt_mt then
+ new_value = v
+ else
+ assert(v._value, "Must have a value to set this")
+ new_value = v._value
+ end
+
+ vim.o[k] = convert_lua_to_vimoption(new_value)
+ return
+ end
+
+ if v == nil then
+ v = ''
+ end
+
+ -- TODO: Figure out why nvim_set_option doesn't override values the same way.
+ -- @bfredl said he will fix this for me, so I can just use nvim_set_option
+ if type(v) == 'boolean' then
+ vim.o[k] = clean_value(v)
+ if v then
+ vim.cmd(string.format("set %s", k))
+ else
+ vim.cmd(string.format("set no%s", k))
+ end
+ else
+ vim.cmd(string.format("set %s=%s", k, clean_value(v)))
+ end
+ end,
+
+ __add = function(left, right)
+ --[[
+ set.wildignore = set.wildignore + 'hello'
+ set.wildignore = set.wildignore + { '*.o', '*~', }
+ --]]
+
+ assert(left._option, "must have an option key")
+ if left._option == 'foldcolumn' then
+ error("not implemented for foldcolumn.. use a string")
+ end
+
+ local existing = if_nil(left._value, vim.o[left._option])
+ local current = convert_vimoption_to_lua(left._option, existing)
+ if not current then
+ left._value = convert_vimoption_to_lua(right)
+ end
+
+ left._value = add_value(current, right)
+ return left
+ end,
+
+ __sub = function(left, right)
+ assert(left._option, "must have an option key")
+
+ local existing = if_nil(left._value, vim.o[left._option])
+ local current = convert_vimoption_to_lua(left._option, existing)
+ if not current then
+ return left
+ end
+
+ left._value = remove_value(current, right)
+ return left
+ end
+}
+
+vim.opt = setmetatable({}, opt_mt)
+
+return {
+ convert_vimoption_to_lua = convert_vimoption_to_lua,
+ opt = vim.opt,
+ opt_mt = opt_mt
+}
diff --git a/symlinks/config/nvim/lua/init/options.lua b/symlinks/config/nvim/lua/init/options.lua
new file mode 100644
index 0000000..1d752dc
--- /dev/null
+++ b/symlinks/config/nvim/lua/init/options.lua
@@ -0,0 +1,33 @@
+local opt = vim.opt
+
+opt.wildignore = '__pycache__'
+opt.wildignore = opt.wildignore + { '*.o' , '*~', '*.pyc', '*pycache*' }
+
+-- Indentation config
+opt.tabstop = 2
+opt.tabstop = 2
+opt.shiftwidth = 2
+opt.autoindent = true
+
+-- Line numbers
+opt.number = true
+opt.relativenumber = true
+
+-- Misc
+opt.backspace = 'indent,eol,start' -- Allow backspacing over everything in insert mode
+opt.ttimeoutlen = 50
+opt.backup = false -- do not keep a backup file, use versions instead
+opt.history = 50 -- Keep 50 lines of command line history
+opt.ruler = true -- Show the cursor position all the time
+opt.laststatus = 2 -- Always display the status line
+opt.swapfile = false -- Disable swapfile
+opt.undofile = true -- Enable undofile (auto supported in NeoVim)
+opt.showcmd = true -- Display incomplete commands
+opt.incsearch = true -- Do incremental searching
+opt.autoread = true -- Reload files changed outside
+opt.hidden = true -- Allow leaving unsaved buffers
+opt.inccommand = 'nosplit' -- Enable live preview of text replacement
+opt.hlsearch = true
+opt.mouse = 'a'
+
+opt.encoding = "utf-8"
diff --git a/symlinks/config/nvim/lua/init/plugins.lua b/symlinks/config/nvim/lua/init/plugins.lua
new file mode 100644
index 0000000..46765e9
--- /dev/null
+++ b/symlinks/config/nvim/lua/init/plugins.lua
@@ -0,0 +1,96 @@
+return require('packer').startup {
+ function(use)
+ use 'wbthomason/packer.nvim'
+
+ -- Tpope general improvements --
+ use 'tpope/vim-sensible' -- Sane defaults
+ use 'tpope/vim-endwise' -- Add closing statements automatically for if, function etc
+ use 'tpope/vim-surround' -- Surround with ', ", etc
+ use 'tpope/vim-fugitive' -- Git integration
+ use 'tpope/vim-vinegar' -- Netrw improvements
+ use 'tpope/vim-obsession' -- Session.vim management
+ use 'tpope/vim-dadbod' -- Database access
+ use 'kristijanhusak/vim-dadbod-ui' -- UI For Dadbod
+ use 'tpope/vim-speeddating' -- and for dates
+ use 'tpope/vim-dispatch' -- Dispatch command
+ use 'tpope/vim-projectionist' -- Project config file!
+ use 'tpope/vim-unimpaired' -- Additional [ and ] mappings
+ use 'tpope/vim-repeat' -- Better . repeat
+ use 'tpope/vim-commentary' -- Commenting motion
+ use 'tpope/vim-sleuth' -- Intendation heuristics
+
+ -- General improvements --
+ use 'airblade/vim-gitgutter' -- Git signs
+ use 'godlygeek/tabular' -- Tabular command for alignment
+ -- use { 'Shougo/vimproc.vim', run = 'make' } -- Not really used
+ use 'vim-scripts/utl.vim' -- Universal text linking
+ use { --
+ 'mbbill/undotree', --
+ cmd = 'UndotreeToggle' --
+ } -- Undos in a tree for easy access
+ use 'mhinz/vim-grepper' -- Grepper command - improved grepping throughout project
+ use 'radenling/vim-dispatch-neovim' -- vim-dispatch for neovim - uses terminal
+ use 'wellle/targets.vim' -- Additional targets for inside and around motions
+ use 'flazz/vim-colorschemes' -- All popular colorschemes
+ use 'romainl/vim-qf' -- Quickfix list upgrades
+ use 'romainl/vim-devdocs' -- Quick DevDocs.io search using :DD
+
+ -- Tools --
+ use 'direnv/direnv.vim' -- Integration with Direnv
+ use 'vim-test/vim-test' -- Running tests from vim
+ use 'dense-analysis/ale' -- Asynchronous Lint Engine - used for linting, not for LSP
+ use 'nathunsmitty/nvim-ale-diagnostic' -- Neovim LSP + ALE integration
+ use 'mfussenegger/nvim-dap' -- Debug Adapter Protocol
+ use 'theHamsta/nvim-dap-virtual-text' -- Virtual text display for DAP
+
+ -- Snippets --
+ if vim.g.loaded_python3_provider ~= 0 --
+ then --
+ use 'SirVer/ultisnips' -- Snippets in python format
+ use 'honza/vim-snippets' -- Collection of snippets for UltiSnips
+ end --
+
+ -- Language support --
+ use 'sheerun/vim-polyglot' -- All popular languages
+ use 'tpope/vim-rails' -- Enables all rails command through vim and integrates with projectionist
+ use 'c-brenn/phoenix.vim' -- Similar to vim-rails, but for phoenix
+ use 'tpope/vim-salve' -- Clojure integration with projectionist
+ use 'tpope/vim-fireplace' -- Clojure REPL and integration
+ use 'vimwiki/vimwiki' -- Vimwiki - personal wiki in vim
+ use 'esensar/vimwiki-reviews-lua' -- Vimwiki extension for periodic reviews
+ use 'ledger/vim-ledger' -- Support for ledger-cli format
+ use 'tandrewnichols/vim-docile' -- Support for vim doc.txt format
+ use 'habamax/vim-godot' -- Godot engine (and script) support
+ use 'guns/vim-sexp' -- Precision editing for S-expressions
+ use( -- Simpler keymaps for vim-sexp
+ 'tpope/vim-sexp-mappings-for-regular-people'
+ )
+
+ -- Treesitter --
+ use { --
+ 'nvim-treesitter/nvim-treesitter', --
+ run = ':TSUpdate' --
+ } -- Treesitter integration
+ use 'nvim-treesitter/playground' -- TSPlaygroundToggle - access treesitter data
+
+ -- LSP --
+ use 'neovim/nvim-lspconfig' -- Easy LSP Config
+ use 'alexaandru/nvim-lspupdate' -- Easy install and update for many LSP servers
+ use 'hrsh7th/nvim-compe' -- LSP completion integration
+ use 'nvim-lua/lsp_extensions.nvim' -- LSP extensions (like closing labels for Dart)
+
+ -- LSP language specific
+ use 'tjdevries/nlua.nvim' -- Built-in Lua integration with LSP
+ use 'akinsho/flutter-tools.nvim' -- Additional flutter integrations
+ use 'mfussenegger/nvim-jdtls' -- Additional java integrations
+
+ -- Lua support --
+ use 'tjdevries/astronauta.nvim' -- Support for lua ftplugins and plugins
+ use 'nvim-lua/popup.nvim' -- Popup API integration - needed for some plugins
+ use 'nvim-lua/plenary.nvim' -- Lua helpers
+
+ -- Telescope --
+ use 'nvim-telescope/telescope.nvim' -- Fuzzy searcher
+ use 'nvim-telescope/telescope-dap.nvim' -- DAP integration for Telescope
+ end
+}
diff --git a/symlinks/config/nvim/lua/lsp/completion.lua b/symlinks/config/nvim/lua/lsp/completion.lua
new file mode 100644
index 0000000..81bc85d
--- /dev/null
+++ b/symlinks/config/nvim/lua/lsp/completion.lua
@@ -0,0 +1,40 @@
+-------------------------------------------------------------------------------
+-- - LSP completion config -
+-------------------------------------------------------------------------------
+
+-- Set completeopt to have a better completion experience
+vim.o.completeopt = "menuone,noselect"
+
+require'compe'.setup {
+ enabled = true;
+ autocomplete = true;
+ debug = false;
+ min_length = 1;
+ preselect = 'enable';
+ throttle_time = 80;
+ source_timeout = 200;
+ incomplete_delay = 400;
+ max_abbr_width = 100;
+ max_kind_width = 100;
+ max_menu_width = 100;
+ documentation = true;
+
+ source = {
+ path = true;
+ buffer = true;
+ calc = true;
+ nvim_lsp = true;
+ nvim_lua = true;
+ ultisnips = true;
+ };
+}
+
+local function set_keymap(...) vim.api.nvim_set_keymap(...) end
+
+local default_opts = {noremap = true, silent = true, expr = true}
+
+set_keymap('i', '', 'compe#complete()', default_opts)
+set_keymap('i', '', "compe#confirm('')", default_opts)
+set_keymap('i', '', "compe#close('')", default_opts)
+set_keymap('i', '', "compe#scroll({ 'delta': +4 })", default_opts)
+set_keymap('i', '', "compe#scroll({ 'delta': -4 })", default_opts)
diff --git a/symlinks/config/nvim/lua/lsp/diagnostic.lua b/symlinks/config/nvim/lua/lsp/diagnostic.lua
new file mode 100644
index 0000000..862bd40
--- /dev/null
+++ b/symlinks/config/nvim/lua/lsp/diagnostic.lua
@@ -0,0 +1,16 @@
+-------------------------------------------------------------------------------
+-- - LSP diagnostics config -
+-------------------------------------------------------------------------------
+
+require("nvim-ale-diagnostic")
+
+vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(
+ vim.lsp.diagnostic.on_publish_diagnostics, {
+ underline = false,
+ virtual_text = false,
+ signs = true,
+ update_in_insert = false,
+ }
+)
+
+vim.g.diagnostic_enable_virtual_text = 1
diff --git a/symlinks/config/nvim/lua/lsp/init.lua b/symlinks/config/nvim/lua/lsp/init.lua
new file mode 100644
index 0000000..8d331e3
--- /dev/null
+++ b/symlinks/config/nvim/lua/lsp/init.lua
@@ -0,0 +1,7 @@
+-------------------------------------------------------------------------------
+-- - LSP configuration -
+-------------------------------------------------------------------------------
+
+require("lsp.diagnostic")
+require("lsp.servers")
+require("lsp.completion")
diff --git a/symlinks/config/nvim/lua/lsp/servers.lua b/symlinks/config/nvim/lua/lsp/servers.lua
new file mode 100644
index 0000000..fe152ec
--- /dev/null
+++ b/symlinks/config/nvim/lua/lsp/servers.lua
@@ -0,0 +1,75 @@
+-------------------------------------------------------------------------------
+-- - LSP servers configuration -
+-------------------------------------------------------------------------------
+
+local lspconfig = require("lspconfig")
+
+local on_attach = function(client, bufnr)
+ local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end
+ local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end
+
+ buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc')
+
+ local default_opts = {noremap = true, silent = true}
+
+ -- Lsp keymaps
+ buf_set_keymap('n', '', 'lua vim.lsp.buf.definition()', default_opts)
+ buf_set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()', default_opts)
+ buf_set_keymap('n', 'gr', 'lua vim.lsp.buf.references()', default_opts)
+ buf_set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', default_opts)
+ buf_set_keymap('n', 'rn', 'lua vim.lsp.buf.rename()', default_opts)
+ buf_set_keymap('n', '', 'lua vim.lsp.buf.signature_help()', default_opts)
+ buf_set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', default_opts)
+ buf_set_keymap('n', '', 'lua vim.lsp.buf.code_action()', default_opts)
+ buf_set_keymap('n', 'ac', 'lua vim.lsp.buf.code_action()', default_opts)
+ buf_set_keymap('n', 'a', 'lua vim.lsp.buf.code_action_range()', default_opts)
+end
+
+-- Lsp default language servers
+local servers = { "bashls", "clangd", "jsonls", "pyright", "rust_analyzer", "kotlin_language_server", "vimls", "clojure_lsp", "gopls", "gdscript", "tsserver" }
+for _, lsp in ipairs(servers) do
+ lspconfig[lsp].setup { on_attach = on_attach }
+end
+
+-- Lua bultin lsp
+require('nlua.lsp.nvim').setup(lspconfig, {
+ on_attach = on_attach,
+
+ -- Include globals you want to tell the LSP are real :)
+ globals = {}
+})
+
+-- Flutter tools
+require('flutter-tools').setup {
+ lsp = {
+ on_attach = on_attach
+ }
+}
+
+-- Dotnet LS
+local pid = vim.fn.getpid()
+local omnisharp_bin = vim.fn.glob('$HOME') .. "/lsp/dotnet/omnisharp/run"
+lspconfig.omnisharp.setup {
+ cmd = { omnisharp_bin, "--languageserver" , "--hostPID", tostring(pid) };
+ on_attach = on_attach;
+}
+
+-- JDTLS (Java)
+-- Can't be local currently, because autocommand has to be used
+jdtls_on_attach = function(client, bufnr)
+ local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end
+ local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end
+
+ buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc')
+
+ local default_opts = {noremap = true, silent = true}
+
+ on_attach(client, bufnr)
+
+ buf_set_keymap('n', '', "lua require('jdtls').code_action()", default_opts)
+ buf_set_keymap('n', 'ac', "lua require('jdtls').code_action()", default_opts)
+end
+
+return {
+ jdtls_on_attach = jdtls_on_attach
+}
diff --git a/symlinks/config/nvim/lua/plugin/README.md b/symlinks/config/nvim/lua/plugin/README.md
new file mode 100644
index 0000000..a8a2fc1
--- /dev/null
+++ b/symlinks/config/nvim/lua/plugin/README.md
@@ -0,0 +1,4 @@
+## Plugins
+
+This directory should be mostly used to group custom functionalities together into a "plugin".
+In some cases this can be used to set up plugin settings, if it is required to be run before plugin (othwerise use /after/plugin).
diff --git a/symlinks/config/nvim/lua/plugin/dap.lua b/symlinks/config/nvim/lua/plugin/dap.lua
new file mode 100644
index 0000000..1e369ec
--- /dev/null
+++ b/symlinks/config/nvim/lua/plugin/dap.lua
@@ -0,0 +1,84 @@
+-------------------------------------------------------------------------------
+-- - NeoVim DAP (Debug Adapter Protocol) config -
+-------------------------------------------------------------------------------
+
+local dap = require('dap')
+
+dap.adapters.python = {
+ type = 'executable';
+ command = 'python';
+ args = { '-m', 'debugpy.adapter' };
+}
+
+dap.configurations.python = {
+ {
+ -- The first three options are required by nvim-dap
+ type = 'python'; -- the type here established the link to the adapter definition: `dap.adapters.python`
+ request = 'launch';
+ name = "Launch file";
+
+
+ program = "${file}"; -- This configuration will launch the current file if used.
+ },
+}
+
+local netcoredbg_bin = vim.fn.glob('$HOME') .. "/dap/netcoredbg/netcoredbg"
+dap.adapters.netcoredbg = {
+ type = 'executable',
+ command = netcoredbg_bin,
+ args = {'--interpreter=vscode'}
+}
+
+dap.configurations.cs = {
+ {
+ type = "netcoredbg",
+ name = "launch - netcoredbg",
+ request = "launch",
+ program = function()
+ return vim.fn.input('Path to dll', vim.fn.getcwd() .. '/bin/Debug/', 'file')
+ end,
+ },
+}
+
+-- Nvim DAP Treesitter integration
+vim.g.dap_virtual_text = true
+
+-- Keymaps
+local function set_keymap(...) vim.api.nvim_set_keymap(...) end
+
+local default_opts = {noremap = true, silent = true}
+set_keymap('n', 'db', "lua require'dap'.toggle_breakpoint()", default_opts)
+set_keymap('n', 'dc', "lua require'dap'.continue()", default_opts)
+set_keymap('n', 'dso', "lua require'dap'.step_over()", default_opts)
+set_keymap('n', 'dsi', "lua require'dap'.step_into()", default_opts)
+set_keymap('n', 'dro', "lua require'dap'.open()", default_opts)
+
+-- Debugger Hover map
+local api = vim.api
+local keymap_restore = {}
+dap.listeners.after['event_initialized']['me'] = function()
+ for _, buf in pairs(api.nvim_list_bufs()) do
+ local keymaps = api.nvim_buf_get_keymap(buf, 'n')
+ for _, keymap in pairs(keymaps) do
+ if keymap.lhs == "K" then
+ table.insert(keymap_restore, keymap)
+ api.nvim_buf_del_keymap(buf, 'n', 'K')
+ end
+ end
+ end
+ api.nvim_set_keymap(
+ 'n', 'K', 'lua require("dap.ui.variables").hover()', { silent = true })
+end
+
+dap.listeners.after['event_terminated']['me'] = function()
+ for _, keymap in pairs(keymap_restore) do
+ api.nvim_buf_set_keymap(
+ keymap.buffer,
+ keymap.mode,
+ keymap.lhs,
+ keymap.rhs,
+ { silent = keymap.silent == 1 }
+ )
+ end
+ keymap_restore = {}
+end
diff --git a/symlinks/config/nvim/lua/plugin/fugitive.lua b/symlinks/config/nvim/lua/plugin/fugitive.lua
new file mode 100644
index 0000000..dcfb4f1
--- /dev/null
+++ b/symlinks/config/nvim/lua/plugin/fugitive.lua
@@ -0,0 +1,16 @@
+-------------------------------------------------------------------------------
+-- - Fugitive.vim setup and extra commands -
+-------------------------------------------------------------------------------
+
+vim.cmd[[command! -nargs=0 Ggpush :lua require('fugitive_extensions').push_origin()]]
+vim.cmd[[command! -nargs=0 Ggpull :lua require('fugitive_extensions').pull_origin()]]
+vim.cmd[[command! -nargs=? Gpropen :lua require('fugitive_extensions').open_new_pr()]]
+vim.cmd[[command! -nargs=? Gpr Gpropen ]]
+vim.cmd[[command! -nargs=? Gprprint :lua require('fugitive_extensions').print_pr_url()]]
+vim.cmd[[command! -nargs=? Gprcopy :lua require('fugitive_extensions').copy_pr_url()]]
+vim.cmd[[command! -nargs=1 Gcbranch :lua require('fugitive_extensions').create_branch()]]
+vim.cmd[[command! -nargs=0 Gcmaster :lua require('fugitive_extensions').checkout_branch('main')]]
+vim.cmd[[command! -nargs=0 Gcm Gcmaster]]
+vim.cmd[[command! -nargs=0 Gcdev :lua require('fugitive_extensions').checkout_branch('develop')]]
+vim.cmd[[command! -nargs=1 Gcheckout :lua require('fugitive_extensions').checkout_branch()]]
+vim.cmd[[command! -nargs=1 Gc Gcheckout ]]
diff --git a/symlinks/config/nvim/lua/plugin/projectionist.lua b/symlinks/config/nvim/lua/plugin/projectionist.lua
new file mode 100644
index 0000000..379cc3f
--- /dev/null
+++ b/symlinks/config/nvim/lua/plugin/projectionist.lua
@@ -0,0 +1,366 @@
+local log = require "vim.lsp.log"
+local vim_readme_template = {
+ "# Name",
+ "",
+ "## Requirements",
+ "",
+ "## Installation",
+ "",
+ "## Usage",
+ "",
+ "### Commands",
+ "",
+ "### Keymaps",
+ "",
+ "## License",
+ "",
+ "[LICENSE NAME](LICENSE)"
+}
+
+local vim_doc_template = {
+ "*{}.txt* Description",
+ "",
+ "INTRODUCTION *{}*",
+ "",
+ "Description",
+ "",
+ "CONTENTS *{}-contents*",
+ "",
+ " 1. Overview |{}-overview|",
+ " 2. Requirements |{}-requirements|",
+ " 3. Installation |{}-installation|",
+ " 4. Usage |{}-usage|",
+ " 5. Commands |{}-commands|",
+ " 6. Functions |{}-functions|",
+ " 7. Mappings |{}-mappings|",
+ " 8. Plugs |{}-plugs|",
+ " 9. Options |{}-options|",
+ " 10. Issues |{}-issues|",
+ " 11. Contributing |{}-contributing|",
+ " 12. Version |{}-version|",
+ " 13. License |{}-license|",
+ "",
+ "OVERVIEW *{}-overview*",
+ "",
+ "REQUIREMENTS *{}-requirements*",
+ "",
+ "INSTALLATION *{}-installation*",
+ "",
+ " 1. Plug ",
+ "",
+ " Add the following to your vimrc, or something sourced therein: >",
+ "",
+ " Plug 'esensar/{}'",
+ "<",
+ " Then install via `:PlugInstall`",
+ "",
+ " 2. Pathogen >",
+ "",
+ " cd ~/.vim/bundle",
+ " git clone https://github.com/esensar/{}.git",
+ "<",
+ " Then run `:Helptags`",
+ "",
+ " 3. Manual",
+ "",
+ " Clone this repository and copy the files in plugin/, autoload/, and doc/",
+ " to their respective directories in your vimfiles, or copy the text from",
+ " the github repository into new files in those directories. Make sure to",
+ " run `:helptags`.",
+ "",
+ "USAGE *{}-usage*",
+ "",
+ "COMMANDS *{}-commands*",
+ "",
+ "FUNCTIONS *{}-functions*",
+ "",
+ "MAPPINGS *{}-mappings*",
+ "",
+ "PLUGS *{}-plugs*",
+ "",
+ "OPTIONS *{}-options*",
+ "",
+ "ISSUES *{}-issues*",
+ "",
+ "If you experience issues using {}, please report them at",
+ ".",
+ "",
+ "CONTRIBUTING *{}-contributing*",
+ "",
+ "Feel free to look at already reported issues at ",
+ ".",
+ "If available, check out CONTRIBUTING.md in the repository.",
+ "Otherwise, feel free to create a new issue or pull request.",
+ "",
+ "VERSION *{}-version*",
+ "",
+ "Version 1.0.0",
+ "",
+ "LICENSE *{}-license*",
+ "",
+ "vim:tw=78:ts=2:ft=help:norl:"
+}
+
+local flutter_config = {
+ ["*"] = {
+ start = "flutter run"
+ },
+ ["lib/*.dart"] = {
+ alternate = "test/{}_test.dart",
+ type = "source"
+ },
+ ["test/*_test.dart"] = {
+ alternate = "lib/{}.dart",
+ type = "test",
+ template = {
+ "import 'package:flutter_test/flutter_test.dart';",
+ "",
+ "import 'package:flutter_template/{}.dart';",
+ "",
+ "void main() {",
+ " testWidgets('', (WidgetTester tester) async {",
+ " });",
+ "}"
+ }
+ }
+}
+
+local python_config = {
+ ["*.py"] = {
+ alternate = "tests/{dirname}/test_{basename}.py",
+ type = "source"
+ },
+ ["tests/**/test_*.py"] = {
+ alternate = "{dirname}/{basename}.py",
+ type = "test",
+ template = {
+ "import unittest",
+ "from unittest import mock",
+ "",
+ "class {dirname|underscore|camelcase|capitalize}{basename|camelcase|capitalize}Test(unittest.TestCase):",
+ " pass",
+ "",
+ "",
+ "if __name__ == \"__main__\":",
+ " unittest.main()"
+ }
+ }
+}
+
+local dotnet_solution_config = {
+ ["src/**/Controllers/*.cs"] = {
+ type = "controller",
+ alternate = {
+ "tests/{dirname}.Tests/Controllers/{basename}Tests.cs",
+ "tests/{dirname}.IntegrationTests/Controllers/{basename}Tests.cs"
+ }
+ },
+ ["src/**/Models/*.cs"] = {
+ type = "model",
+ alternate = "tests/{dirname}.Tests/Models/{basename}Tests.cs"
+ },
+ ["src/**/Views/*.cshtml"] = {
+ type = "view",
+ alternate = "tests/{dirname}.Tests/Views/{basename}Tests.cs"
+ },
+ ["src/**/Services/*.cs"] = {
+ type = "service",
+ alternate = "tests/{dirname}.Tests/Services/{basename}Tests.cs"
+ },
+ ["src/**/Extensions/*.cs"] = {
+ type = "extension",
+ alternate = "tests/{dirname}.Tests/Extensions/{basename}Tests.cs"
+ },
+ ["*.csproj"] = {
+ type = "project"
+ },
+ ["src/**/appsettings*json"] = {
+ type = "appsettings"
+ },
+ ["src/*.cs"] = {
+ type = "source",
+ alternate = "tests/{dirname}.Tests/{basename}Tests.cs",
+ template = {
+ "using System;",
+ "",
+ "namespace {dirname|dot}",
+ "{",
+ " public class {basename}",
+ " {",
+ " }",
+ "}"
+ }
+ },
+ ["tests/**.IntegrationTests/Controllers/*Tests.cs"] = {
+ type = "test",
+ alternate = "src/{dirname}/Controllers/{basename}.cs"
+ },
+ ["tests/**.Tests/Controllers/*Tests.cs"] = {
+ type = "test",
+ alternate = "src/{dirname}/Controllers/{basename}.cs"
+ },
+ ["tests/**.Tests/Views/*Tests.cs"] = {
+ type = "test",
+ alternate = "src/{dirname}/Views/{basename}.cs"
+ },
+ ["tests/**.Tests/Models/*Tests.cs"] = {
+ type = "test",
+ alternate = "src/{dirname}/Models/{basename}.cs"
+ },
+ ["tests/**.Tests/Services/*Tests.cs"] = {
+ type = "test",
+ alternate = "src/{dirname}/Services/{basename}.cs"
+ },
+ ["tests/**.Tests/Extensions/*Tests.cs"] = {
+ type = "test",
+ alternate = "src/{dirname}/Extensions/{basename}.cs"
+ },
+ ["tests/*Tests.cs"] = {
+ type = "test",
+ alternate = "src/{dirname}/{basename}.cs",
+ template = {
+ "using System;",
+ "",
+ "namespace {dirname|dot}",
+ "{",
+ " public class {basename}Tests",
+ " {",
+ " }",
+ "}"
+ }
+ }
+}
+
+local vim_plugin_config = {
+ ["doc/*.txt"] = {
+ type = "help",
+ template = vim_doc_template
+ },
+ ["autoload/*.vim"] = {
+ type = "autoload",
+ alternate = "test/{}.vader"
+ },
+ ["test/*.vader"] = {
+ type = "test",
+ altername = "autoload/{}.vim"
+ },
+ ["plugin/*.vim"] = {
+ type = "plugin",
+ template = {
+ "if exists(\"g:loaded_{}\") || &cp | finish | endif",
+ "",
+ "let g:loaded_{} = 1"
+ }
+ },
+ ["README.md"] = {
+ template = vim_readme_template
+ }
+}
+
+local lua_vim_plugin_config = {
+ ["doc/*.txt"] = {
+ type = "help",
+ template = vim_doc_template
+ },
+ ["plugin/*.vim"] = {
+ type = "plugin",
+ template = {
+ "if exists(\"g:loaded_{}\") || &cp | finish | endif",
+ "",
+ "let g:loaded_{} = 1"
+ }
+ },
+ ["lua/*.lua"] = {
+ type = "source",
+ alternate = "test/{}.lua"
+ },
+ ["test/*.lua"] = {
+ type = "test",
+ alternate = "lua/{}.lua"
+ },
+ ["README.md"] = {
+ template = vim_readme_template
+ }
+}
+
+local csharp_project_config = {
+ ["*"] = {
+ start = "dotnet run",
+ console = "dotnet fsi"
+ }
+}
+
+local java_project_config = {
+ ["src/main/java/*.java"] = {
+ type = "source",
+ template = {
+ "package {dirname|dot};",
+ "",
+ "public class {basename} {open}",
+ "{close}"
+ },
+ alternate = "src/test/java/{}Test.java"
+ },
+ ["src/test/java/*Test.java"] = {
+ type = "test",
+ template = {
+ "package {dirname|dot};",
+ "",
+ "public class {basename}Test {open}",
+ "{close}"
+ },
+ alternate = "src/main/java/{}.java"
+ },
+ ["src/main/java/module-info.java"] = {
+ type = "moduleinfo",
+ },
+ ["src/main/java/**/package-info.java"] = {
+ type = "packageinfo",
+ }
+}
+
+local function c_project_config(source_extension, header_extension)
+ return {
+ ["*"] = {
+ start = "make run"
+ },
+ ["src/*." .. source_extension] = {
+ type = "source",
+ alternate = {
+ "src/{}." .. header_extension,
+ "test/{}." .. source_extension,
+ "include/{project|basename}/{}." .. header_extension,
+ }
+ },
+ ["test/*." .. source_extension] = {
+ type = "test",
+ alternate = {
+ "src/{}." .. header_extension
+ }
+ },
+ ["src/*." .. header_extension] = {
+ type = "header",
+ alternate = {
+ "src/{}." .. source_extension
+ }
+ },
+ ["include/{project|basename}/*." .. header_extension] = {
+ type = "header",
+ alternate = {
+ "src/{}." .. header_extension
+ }
+ }
+ }
+end
+
+vim.g.projectionist_heuristics = {
+ ["pubspec.yaml"] = flutter_config,
+ ["requirements.txt|pyproject.toml"] = python_config,
+ ["*.sln"] = dotnet_solution_config,
+ ["*.csproj"] = csharp_project_config,
+ ["plugin/|autoload/"] = vim_plugin_config,
+ ["src/*.cpp|test/*.cpp"] = c_project_config("cpp", "hpp"),
+ ["src/*.c|test/*.c"] = c_project_config("c", "h"),
+ ["lua/"] = lua_vim_plugin_config,
+ ["build.gradle|pom.xml"] = java_project_config
+}
diff --git a/symlinks/config/nvim/lua/plugin/telescope.lua b/symlinks/config/nvim/lua/plugin/telescope.lua
new file mode 100644
index 0000000..7572ff1
--- /dev/null
+++ b/symlinks/config/nvim/lua/plugin/telescope.lua
@@ -0,0 +1,29 @@
+-------------------------------------------------------------------------------
+-- - Telescope configuration -
+-------------------------------------------------------------------------------
+
+local actions = require('telescope.actions')
+require('telescope').setup {
+ defaults = {
+ mappings = {
+ i = {
+ -- Switch out M-q and C-q since C-q will be used more often
+ [""] = actions.send_to_qflist + actions.open_qflist,
+ [""] = actions.send_selected_to_qflist + actions.open_qflist,
+ },
+ n = {
+ -- Switch out M-q and C-q since C-q will be used more often
+ [""] = actions.send_to_qflist + actions.open_qflist,
+ [""] = actions.send_selected_to_qflist + actions.open_qflist,
+ }
+ },
+ }
+}
+
+require('telescope').load_extension('dap')
+
+default_opts = {noremap = true}
+
+local function set_keymap(...) vim.api.nvim_set_keymap(...) end
+set_keymap('n', '', "lua require('telescope.builtin').find_files()", default_opts)
+set_keymap('n', '', "lua require('telescope.builtin').live_grep()", default_opts)
diff --git a/symlinks/config/nvim/lua/plugin/treesitter.lua b/symlinks/config/nvim/lua/plugin/treesitter.lua
new file mode 100644
index 0000000..dde5d7e
--- /dev/null
+++ b/symlinks/config/nvim/lua/plugin/treesitter.lua
@@ -0,0 +1,12 @@
+require'nvim-treesitter.configs'.setup {
+ ensure_installed = "maintained", -- one of "all", "maintained" (parsers with maintainers), or a list of languages
+ highlight = {
+ enable = true, -- false will disable the whole extension
+ },
+ playground = {
+ enable = true,
+ disable = {},
+ updatetime = 25, -- Debounced time for highlighting nodes in the playground from source code
+ persist_queries = false -- Whether the query persists across vim sessions
+ }
+}
diff --git a/symlinks/config/nvim/plugin/.gitignore b/symlinks/config/nvim/plugin/.gitignore
new file mode 100644
index 0000000..22cd314
--- /dev/null
+++ b/symlinks/config/nvim/plugin/.gitignore
@@ -0,0 +1 @@
+packer_compiled.vim
diff --git a/symlinks/config/nvim/plugin/README.md b/symlinks/config/nvim/plugin/README.md
new file mode 100644
index 0000000..a8a2fc1
--- /dev/null
+++ b/symlinks/config/nvim/plugin/README.md
@@ -0,0 +1,4 @@
+## Plugins
+
+This directory should be mostly used to group custom functionalities together into a "plugin".
+In some cases this can be used to set up plugin settings, if it is required to be run before plugin (othwerise use /after/plugin).
diff --git a/symlinks/config/nvim/plugin/ale.vim b/symlinks/config/nvim/plugin/ale.vim
new file mode 100644
index 0000000..ed31a13
--- /dev/null
+++ b/symlinks/config/nvim/plugin/ale.vim
@@ -0,0 +1,30 @@
+" -----------------------------------------------------------------------------
+" - ALE Plugin configuration -
+" -----------------------------------------------------------------------------
+
+" ALE Options
+let g:ale_disable_lsp = 1 " Disable LSP, we have other stuff for that
+let g:ale_fix_on_save = 1 " Default
+
+" ALE Linters configuration
+let g:ale_linters = {}
+let g:ale_linters.python = ['flake8']
+let g:ale_linters.kotlin = ['ktlint']
+let g:ale_linters.clojure = []
+let g:ale_linters.cs = ['OmniSharp']
+let g:ale_linters.cpp = ['clangd']
+
+" ALE Fixers configuration
+let g:ale_fixers = {}
+let g:ale_fixers['*'] = ['remove_trailing_lines', 'trim_whitespace']
+let g:ale_fixers.python = ['autopep8', 'isort']
+let g:ale_fixers.dart = ['dartfmt']
+let g:ale_fixers.lua = ['luafmt']
+let g:ale_fixers.go = ['gofmt']
+let g:ale_fixers.cpp = ['clang-format']
+
+" Warnings navigation
+nmap [W (ale_first)
+nmap [w (ale_previous)
+nmap ]w (ale_next)
+nmap ]W (ale_last)
diff --git a/symlinks/config/nvim/plugin/ledger.vim b/symlinks/config/nvim/plugin/ledger.vim
new file mode 100644
index 0000000..8f924ca
--- /dev/null
+++ b/symlinks/config/nvim/plugin/ledger.vim
@@ -0,0 +1,5 @@
+" -----------------------------------------------------------------------------
+" - Ledger-cli vim support config -
+" -----------------------------------------------------------------------------
+let g:ledger_extra_options = '--pedantic --explicit --check-payees'
+let g:ledger_decimal_sep = ','
diff --git a/symlinks/config/nvim/plugin/netrw.vim b/symlinks/config/nvim/plugin/netrw.vim
new file mode 100644
index 0000000..67d8f3e
--- /dev/null
+++ b/symlinks/config/nvim/plugin/netrw.vim
@@ -0,0 +1,5 @@
+" -----------------------------------------------------------------------------
+" - Netrw config -
+" -----------------------------------------------------------------------------
+
+ let g:netrw_keepdir = 0
diff --git a/symlinks/config/nvim/plugin/ruby_host.vim b/symlinks/config/nvim/plugin/ruby_host.vim
new file mode 100644
index 0000000..2e99f40
--- /dev/null
+++ b/symlinks/config/nvim/plugin/ruby_host.vim
@@ -0,0 +1,4 @@
+" -----------------------------------------------------------------------------
+" - Neovim ruby host -
+" -----------------------------------------------------------------------------
+let g:ruby_host_prog = '~/.asdf/shims/ruby'
diff --git a/symlinks/config/nvim/plugin/scratch_buffer.vim b/symlinks/config/nvim/plugin/scratch_buffer.vim
new file mode 100644
index 0000000..049587b
--- /dev/null
+++ b/symlinks/config/nvim/plugin/scratch_buffer.vim
@@ -0,0 +1,19 @@
+" -----------------------------------------------------------------------------
+" - Scratch buffer -
+" Creates a basic scratch buffer
+" Adopted from https://github.com/hagsteel/vimconf/blob/master/vimrc
+" -----------------------------------------------------------------------------
+
+functio CreateScratchBuffer(vertical)
+ if a:vertical == 1
+ :vnew
+ else
+ :new
+ endif
+ :setlocal buftype=nofile
+ :setlocal bufhidden=hide
+ :setlocal noswapfile
+ :set ft=scratch
+endfunction
+:command! Scratch call CreateScratchBuffer(1)
+:command! Scratchh call CreateScratchBuffer(0)
diff --git a/symlinks/config/nvim/plugin/statusline.vim b/symlinks/config/nvim/plugin/statusline.vim
new file mode 100644
index 0000000..13e5f49
--- /dev/null
+++ b/symlinks/config/nvim/plugin/statusline.vim
@@ -0,0 +1,182 @@
+" -----------------------------------------------------------------------------
+" - Statusline setup -
+" -----------------------------------------------------------------------------
+
+function s:UpdateColors()
+ let ctermbg = synIDattr(synIDtrans(hlID('StatusLine')), 'fg', 'cterm')
+ let guibg = synIDattr(synIDtrans(hlID('StatusLine')), 'fg', 'gui')
+ let idguifg1 = synIDattr(synIDtrans(hlID('Function')), 'fg', 'gui')
+ let idctermfg1 = synIDattr(synIDtrans(hlID('Function')), 'fg', 'cterm')
+ " Green in gruvbox
+ exec 'hi User1 guifg=' . l:idguifg1 .
+ \' guibg=' . l:guibg .
+ \' cterm=bold gui=bold'
+ if l:idctermfg1
+ exec 'hi User1 ctermfg=' . l:idctermfg1
+ endif
+ let idguifg2 = synIDattr(synIDtrans(hlID('WarningMsg')), 'fg', 'gui')
+ let idctermfg2 = synIDattr(synIDtrans(hlID('WarningMsg')), 'fg', 'cterm')
+ " Red in gruvbox
+ exec 'hi User2 guifg=' . l:idguifg2 .
+ \' guibg=' . l:guibg .
+ \' cterm=bold gui=bold'
+ if l:idctermfg2
+ exec 'hi User2 ctermfg=' . l:idctermfg2
+ endif
+ let idguifg3 = synIDattr(synIDtrans(hlID('MoreMsg')), 'fg', 'gui')
+ let idctermfg3 = synIDattr(synIDtrans(hlID('MoreMsg')), 'fg', 'cterm')
+ " Yellow in gruvbox
+ exec 'hi User3 guifg=' . l:idguifg3 .
+ \' guibg=' . l:guibg .
+ \' cterm=bold gui=bold'
+ if l:idctermfg3
+ exec 'hi User3 ctermfg=' . l:idctermfg3
+ endif
+ let idguifg4 = synIDattr(synIDtrans(hlID('Identifier')), 'fg', 'gui')
+ let idctermfg4 = synIDattr(synIDtrans(hlID('Identifier')), 'fg', 'cterm')
+ " Blue in gruvbox
+ exec 'hi User4 guifg=' . l:idguifg4
+ \' guibg=' . l:guibg .
+ \' cterm=bold gui=bold'
+ if l:idctermfg4
+ exec 'hi User4 ctermfg=' . l:idctermfg4
+ endif
+ let idguifg5 = synIDattr(synIDtrans(hlID('Number')), 'fg', 'gui')
+ let idctermfg5 = synIDattr(synIDtrans(hlID('Number')), 'fg', 'cterm')
+ " Blue in gruvbox
+ exec 'hi User5 guifg=' . l:idguifg5 .
+ \' guibg=' . l:guibg .
+ \' cterm=bold gui=bold'
+ if l:idctermfg5
+ exec 'hi User5 ctermfg=' . l:idctermfg5
+ endif
+
+ if l:ctermbg
+ exec 'hi User1 ctermbg=' . l:ctermbg
+ exec 'hi User2 ctermbg=' . l:ctermbg
+ exec 'hi User3 ctermbg=' . l:ctermbg
+ exec 'hi User4 ctermbg=' . l:ctermbg
+ exec 'hi User5 ctermbg=' . l:ctermbg
+ endif
+endfunction
+
+augroup statuslineconf
+ autocmd!
+ autocmd ColorScheme * call s:UpdateColors()
+augroup END
+
+call s:UpdateColors()
+
+
+" Checks file type to add a pretty glyph if available
+function s:GetFileType()
+ if &filetype ==# "rust"
+ return "%2*%*"
+ elseif &filetype ==# "c"
+ return "%4*%*"
+ elseif &filetype ==# "cs"
+ return "%4*%*"
+ elseif &filetype ==# "python"
+ return "%3*%*"
+ elseif &filetype ==# "javascript"
+ return ""
+ elseif &filetype ==# "typescript"
+ return "%4*%*"
+ elseif &filetype ==# "vim"
+ return "%1*%*"
+ elseif &filetype ==# "clojure"
+ return ""
+ elseif &filetype ==# "html"
+ return ""
+ elseif &filetype ==# "haskell"
+ return ""
+ elseif &filetype ==# "markdown"
+ return ""
+ elseif &filetype ==# "org"
+ return ""
+ elseif &filetype ==# "scss"
+ return ""
+ elseif &filetype ==# "scala"
+ return ""
+ elseif &filetype ==# "elixir"
+ return "%5*%*"
+ elseif &filetype ==# "kotlin"
+ return "%2*洞%*"
+ elseif &filetype ==# "yml"
+ return ""
+ elseif &filetype ==# "toml"
+ return ""
+ elseif &filetype ==# "json"
+ return ""
+ else
+ return "%y"
+endfunction
+
+" Check current mode to add colorized mode
+function s:GetMode()
+ if mode() == "n"
+ return "N"
+ elseif mode() == "i"
+ return "%3*I%*"
+ elseif mode() == "v"
+ return "%1*V%*"
+ elseif mode() == "V"
+ return "%1*V.%*"
+ elseif mode() == "\"
+ return "%1*VB%*"
+ elseif mode() == "c"
+ return "%4*C%*"
+ else
+ return "[mode: " . mode() . "]"
+endfunction
+
+" Add basic [paste] if paste mode is enabled
+function! s:PasteForStatusline()
+ let paste_status = &paste
+ if paste_status == 1
+ return " [paste] "
+ else
+ return ""
+ endif
+endfunction
+
+function! s:LinterStatus() abort
+ let l:counts = ale#statusline#Count(bufnr(''))
+
+ let l:all_errors = l:counts.error + l:counts.style_error
+ let l:all_non_errors = l:counts.total - l:all_errors
+
+ return l:counts.total == 0 ? '%1*OK%*' : printf(
+ \ '%%3*%dW%%* %%2*%dE%%*',
+ \ all_non_errors,
+ \ all_errors
+ \)
+endfunction
+
+function GetStatusLine()
+ let l:status_line_left = " " . s:GetMode() . " "
+ if exists('g:loaded_fugitive')
+ let l:fugitive_head = FugitiveHead()
+ if strlen(l:fugitive_head)
+ let l:status_line_left .= "%4* " . l:fugitive_head . "%*"
+ endif
+ endif
+ let l:status_line_left .= " %f" " Filename
+ let l:status_line_left .= " %1*%M%*" " Modified
+ let l:status_line_left .= " %2*%r%*" " Read only
+ let l:status_line_left .= s:PasteForStatusline()
+ if exists('g:did_coc_loaded')
+ let l:coc_status = coc#status()
+ if strlen(l:coc_status)
+ let l:status_line_left .= "%2*" . l:coc_status . "%*"
+ endif
+ endif
+ let l:status_line_right = "%= " " Align right statusline
+ if exists('g:loaded_ale')
+ let l:status_line_right .= s:LinterStatus() " ALE status
+ endif
+ let l:status_line_right .= " %2c:%3l/%3L (%3p%%) " " col, line, tot. lines
+ let l:status_line_right .= s:GetFileType() . " " " File type
+ return l:status_line_left . l:status_line_right
+endfunction
+set statusline=%!GetStatusLine()
diff --git a/symlinks/config/nvim/plugin/tabline.vim b/symlinks/config/nvim/plugin/tabline.vim
new file mode 100644
index 0000000..ccd1776
--- /dev/null
+++ b/symlinks/config/nvim/plugin/tabline.vim
@@ -0,0 +1,35 @@
+" -----------------------------------------------------------------------------
+" - Tabline setup -
+" -----------------------------------------------------------------------------
+function! GuiTabLabel()
+ let label = ''
+ let bufnrlist = tabpagebuflist(v:lnum)
+ " Add '+' if one of the buffers in the tab page is modified
+ for bufnr in bufnrlist
+ if getbufvar(bufnr, "&modified")
+ let label = '+'
+ break
+ endif
+ endfor
+ " Append the tab number
+ let label .= v:lnum.': '
+ " Append the buffer name
+ let name = bufname(bufnrlist[tabpagewinnr(v:lnum) - 1])
+ if name == ''
+ " give a name to no-name documents
+ if &buftype=='quickfix'
+ let name = '[Quickfix List]'
+ else
+ let name = '[No Name]'
+ endif
+ else
+ " get only the file name
+ let name = fnamemodify(name,":t")
+ endif
+ let label .= name
+ " Append the number of windows in the tab page
+ let wincount = tabpagewinnr(v:lnum, '$')
+ return label . ' [' . wincount . ']'
+endfunction
+
+set guitablabel=%{GuiTabLabel()}
diff --git a/symlinks/config/nvim/plugin/tex.vim b/symlinks/config/nvim/plugin/tex.vim
new file mode 100644
index 0000000..32584b4
--- /dev/null
+++ b/symlinks/config/nvim/plugin/tex.vim
@@ -0,0 +1,7 @@
+" -----------------------------------------------------------------------------
+" - Tex plugin configuration -
+" Must be run before plugin, therefore it can't be located in after dir
+" -----------------------------------------------------------------------------
+
+" Set default .tex file flavor to latex
+let g:tex_flavor = 'latex'
diff --git a/symlinks/config/nvim/plugin/ultisnips.vim b/symlinks/config/nvim/plugin/ultisnips.vim
new file mode 100644
index 0000000..13c1a1f
--- /dev/null
+++ b/symlinks/config/nvim/plugin/ultisnips.vim
@@ -0,0 +1,6 @@
+" -----------------------------------------------------------------------------
+" - UltiSnips configuration -
+" -----------------------------------------------------------------------------
+
+" Force ultisnips to use vim directory (for supporting both NeoVim and Vim)
+let g:UltiSnipsSnippetDirectories=[$OVIMHOME."/UltiSnips"]
diff --git a/symlinks/config/nvim/plugin/undoconf.vim b/symlinks/config/nvim/plugin/undoconf.vim
new file mode 100644
index 0000000..4a3833e
--- /dev/null
+++ b/symlinks/config/nvim/plugin/undoconf.vim
@@ -0,0 +1,10 @@
+" -----------------------------------------------------------------------------
+" - Undo configuration -
+" -----------------------------------------------------------------------------
+set undofile
+
+" Disable persistent undofile for temporary files!
+augroup undoconf
+ autocmd!
+ autocmd BufWritePre /tmp/* setlocal noundofile
+augroup END
diff --git a/symlinks/config/nvim/plugin/vimwiki.vim b/symlinks/config/nvim/plugin/vimwiki.vim
new file mode 100644
index 0000000..e3697b6
--- /dev/null
+++ b/symlinks/config/nvim/plugin/vimwiki.vim
@@ -0,0 +1,29 @@
+" Must be set up before vimwiki plugin is initialized, can't be in after
+let personal_wiki = {}
+let personal_wiki.path = '~/vimwiki/'
+let personal_wiki.ext = '.md'
+let personal_wiki.index = 'Home'
+let personal_wiki.syntax = 'markdown'
+let personal_wiki.auto_diary_index = 1
+let personal_wiki.auto_generate_links = 1
+let personal_wiki.auto_toc = 1
+
+let work_wiki = {}
+let work_wiki.path = '~/vimwiki_work/'
+let work_wiki.index = 'Home'
+let work_wiki.syntax = 'markdown'
+let work_wiki.ext = '.md'
+let work_wiki.auto_diary_index = 1
+let work_wiki.auto_generate_links = 1
+let work_wiki.auto_toc = 1
+
+let test_wiki = {}
+let test_wiki.path = '/tmp'
+
+let g:vimwiki_list = [personal_wiki, work_wiki, test_wiki]
+
+" Disable vimwiki filetype on all markdown files
+let g:vimwiki_global_ext = 0
+
+" Prettier checkboxes
+let g:vimwiki_listsyms = '✗○◐●✓'
diff --git a/symlinks/config/nvim/undodir/.gitignore b/symlinks/config/nvim/undodir/.gitignore
new file mode 100644
index 0000000..d6b7ef3
--- /dev/null
+++ b/symlinks/config/nvim/undodir/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
diff --git a/symlinks/config/nwg-launchers/nwgbar/bar.json b/symlinks/config/nwg-launchers/nwgbar/bar.json
deleted file mode 100644
index a2189fc..0000000
--- a/symlinks/config/nwg-launchers/nwgbar/bar.json
+++ /dev/null
@@ -1,22 +0,0 @@
-[
- {
- "name": "Lock screen",
- "exec": "~/bin/lockscreen",
- "icon": "system-lock-screen"
- },
- {
- "name": "Logout",
- "exec": "swaymsg exit",
- "icon": "system-log-out"
- },
- {
- "name": "Reboot",
- "exec": "systemctl reboot",
- "icon": "system-reboot"
- },
- {
- "name": "Shutdown",
- "exec": "systemctl -i poweroff",
- "icon": "system-shutdown"
- }
-]
diff --git a/symlinks/config/nwg-launchers/nwgbar/style.css b/symlinks/config/nwg-launchers/nwgbar/style.css
deleted file mode 100644
index 871ec03..0000000
--- a/symlinks/config/nwg-launchers/nwgbar/style.css
+++ /dev/null
@@ -1,28 +0,0 @@
-#bar {
- margin: 30px /* affects top/bottom & left/right alignment */
-}
-
-button, image {
- background: none;
- border-style: none;
- box-shadow: none;
- color: #999
-}
-
-button {
- padding-left: 10px;
- padding-right: 10px;
- margin: 5px
-}
-
-button:hover {
- background-color: rgba (255, 255, 255, 0.1)
-}
-
-button:focus {
- box-shadow: 0 0 2px;
-}
-
-grid {
- /* e.g. for common background to all buttons */
-}
diff --git a/symlinks/config/nwg-launchers/nwgdmenu/style.css b/symlinks/config/nwg-launchers/nwgdmenu/style.css
deleted file mode 100644
index fd063d6..0000000
--- a/symlinks/config/nwg-launchers/nwgdmenu/style.css
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Don't delete, just in case: the menu anchor is a button */
-button {
- background: none;
- border-style: none;
- box-shadow: none;
-}
-
-box {
- /* Uncomment to set vertical margin
- margin-top: 30px;
- margin-bottom: 30px;
- */
-}
-
-#searchbox {
- /* Adjust to your taste */
-}
-
-/* Menu items */
-label {
- padding-left: 5px
-}
diff --git a/symlinks/config/nwg-launchers/nwggrid/style.css b/symlinks/config/nwg-launchers/nwggrid/style.css
deleted file mode 100644
index ba8c143..0000000
--- a/symlinks/config/nwg-launchers/nwggrid/style.css
+++ /dev/null
@@ -1,39 +0,0 @@
-button, label, image {
- background: none;
- border-style: none;
- box-shadow: none;
- color: #999;
-}
-
-button {
- padding: 5px;
- margin: 5px
-}
-
-button:hover {
- background-color: rgba (255, 255, 255, 0.1);
-}
-
-button:focus {
- box-shadow: 0 0 2px;
-}
-
-#searchbox {
- background: none;
- border-color: #999;
- color: #ccc;
- margin-top: 20px;
- margin-bottom: 20px
-}
-
-#separator {
- background-color: rgba(200, 200, 200, 0.5);
- margin-left: 500px;
- margin-right: 500px;
- margin-top: 10px;
- margin-bottom: 10px
-}
-
-#description {
- margin-bottom: 20px
-}
diff --git a/symlinks/config/nwg-launchers/nwggrid/terminal b/symlinks/config/nwg-launchers/nwggrid/terminal
deleted file mode 100644
index af3808e..0000000
--- a/symlinks/config/nwg-launchers/nwggrid/terminal
+++ /dev/null
@@ -1 +0,0 @@
-alacritty -e
\ No newline at end of file
diff --git a/symlinks/config/nwg-panel/config b/symlinks/config/nwg-panel/config
deleted file mode 100644
index 608a413..0000000
--- a/symlinks/config/nwg-panel/config
+++ /dev/null
@@ -1,318 +0,0 @@
-[
- {
- "output": "DP-1",
- "layer": "bottom",
- "position": "top",
- "width": "auto",
- "height": 30,
- "margin-top": 0,
- "margin-bottom": 0,
- "padding-horizontal": 0,
- "padding-vertical": 0,
- "spacing": 4,
- "controls": "off",
- "items-padding": 0,
- "css-name": "panel-top",
- "icons": "light",
- "modules-left": [
- "button-sample",
- "playerctl"
- ],
- "modules-center": [
- "clock"
- ],
- "modules-right": [],
- "controls-settings": {
- "alignment": "right",
- "components": [
- "net",
- "brightness",
- "volume",
- "battery"
- ],
- "commands": {
- "battery": "",
- "net": ""
- },
- "custom-items": [
- {
- "name": "Wallpapers",
- "icon": "azote",
- "cmd": "azote"
- }
- ],
- "menu": {
- "name": "Exit",
- "icon": "system-shutdown-symbolic",
- "items": [
- {
- "name": "Lock",
- "cmd": "swaylock -f -c 000000"
- },
- {
- "name": "Logout",
- "cmd": "swaymsg exit"
- },
- {
- "name": "Reboot",
- "cmd": "systemctl reboot"
- },
- {
- "name": "Shutdown",
- "cmd": "systemctl -i poweroff"
- }
- ]
- },
- "show-values": false,
- "interval": 1,
- "icon-size": 16,
- "hover-opens": true,
- "css-name": "controls-window",
- "net-interface": "wlo1"
- },
- "button-sample": {
- "icon": "view-grid",
- "label": "button",
- "label-position": "",
- "command": "nwggrid",
- "css-name": "button-custom"
- },
- "playerctl": {
- "interval": 1,
- "buttons": true,
- "buttons-position": "left",
- "chars": 50,
- "css-name": "button-grid"
- },
- "clock": {
- "format": "%a, %d. %b %H:%M:%S",
- "interval": 1,
- "on-right-click": "",
- "css-name": "clock",
- "tooltip-text": "",
- "on-left-click": "",
- "on-middle-click": "",
- "on-scroll-up": "",
- "on-scroll-down": ""
- },
- "name": "test"
- },
- {
- "output": "DP-1",
- "layer": "bottom",
- "position": "bottom",
- "width": "auto",
- "height": 30,
- "margin-top": 0,
- "margin-bottom": 0,
- "padding-horizontal": 10,
- "padding-vertical": 0,
- "spacing": 4,
- "items-padding": 0,
- "css-name": "all-bottom",
- "focus": true,
- "modules-left": [
- "sway-taskbar"
- ],
- "modules-center": [],
- "modules-right": [
- "executor-weather"
- ],
- "sway-taskbar": {
- "workspace-buttons": false,
- "show-app-icon": true,
- "show-layout": true,
- "show-app-name": true,
- "name-max-len": 15,
- "workspaces-spacing": 0,
- "task-spacing": 0,
- "all-outputs": false,
- "image-size": 16,
- "workspace-menu": [
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8
- ]
- },
- "sway-workspaces": {
- "numbers": []
- },
- "executor-weather": {
- "script": "curl https://wttr.in/?format=1 -s",
- "interval": 1800,
- "css-name": "weather",
- "on-right-click": "",
- "icon-size": 16,
- "show-icon": true,
- "tooltip-text": "",
- "on-left-click": "",
- "on-middle-click": "",
- "on-scroll-up": "",
- "on-scroll-down": ""
- },
- "name": "",
- "controls": "off",
- "icons": "dark"
- },
- {
- "output": "HDMI-A-1",
- "layer": "bottom",
- "position": "top",
- "width": "auto",
- "height": 30,
- "margin-top": 0,
- "margin-bottom": 0,
- "padding-horizontal": 0,
- "padding-vertical": 0,
- "spacing": 4,
- "controls": true,
- "items-padding": 0,
- "css-name": "panel-top",
- "icons": "light",
- "modules-left": [
- "button-sample",
- "playerctl"
- ],
- "modules-center": [
- "clock"
- ],
- "modules-right": [],
- "controls-settings": {
- "alignment": "right",
- "components": [
- "net",
- "brightness",
- "volume",
- "battery"
- ],
- "commands": {
- "battery": "",
- "net": ""
- },
- "custom-items": [
- {
- "name": "Wallpapers",
- "icon": "azote",
- "cmd": "azote"
- }
- ],
- "menu": {
- "name": "Exit",
- "icon": "system-shutdown-symbolic",
- "items": [
- {
- "name": "Lock",
- "cmd": "swaylock -f -c 000000"
- },
- {
- "name": "Logout",
- "cmd": "swaymsg exit"
- },
- {
- "name": "Reboot",
- "cmd": "systemctl reboot"
- },
- {
- "name": "Shutdown",
- "cmd": "systemctl -i poweroff"
- }
- ]
- },
- "show-values": false,
- "interval": 1,
- "icon-size": 16,
- "hover-opens": true,
- "css-name": "controls-window",
- "net-interface": "wlo1"
- },
- "button-sample": {
- "icon": "view-grid",
- "label": "button",
- "label-position": "",
- "command": "nwggrid",
- "css-name": "button-custom"
- },
- "playerctl": {
- "interval": 1,
- "buttons": true,
- "buttons-position": "left",
- "chars": 50,
- "css-name": "button-grid"
- },
- "clock": {
- "format": "%a, %d. %b %H:%M:%S",
- "interval": 1,
- "on-right-click": "",
- "css-name": "clock",
- "tooltip-text": "",
- "on-left-click": "",
- "on-middle-click": "",
- "on-scroll-up": "",
- "on-scroll-down": ""
- }
- },
- {
- "output": "HDMI-A-1",
- "layer": "bottom",
- "position": "bottom",
- "width": "auto",
- "height": 30,
- "margin-top": 0,
- "margin-bottom": 0,
- "padding-horizontal": 10,
- "padding-vertical": 0,
- "spacing": 4,
- "items-padding": 0,
- "css-name": "all-bottom",
- "focus": true,
- "modules-left": [
- "sway-taskbar"
- ],
- "modules-center": [],
- "modules-right": [
- "executor-weather"
- ],
- "sway-taskbar": {
- "workspace-buttons": false,
- "show-app-icon": true,
- "show-layout": true,
- "show-app-name": true,
- "name-max-len": 15,
- "workspaces-spacing": 0,
- "task-spacing": 0,
- "all-outputs": false,
- "image-size": 16,
- "workspace-menu": [
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8
- ]
- },
- "sway-workspaces": {
- "numbers": []
- },
- "executor-weather": {
- "script": "curl https://wttr.in/?format=1 -s",
- "interval": 1800,
- "css-name": "weather",
- "on-right-click": "",
- "icon-size": 16,
- "show-icon": true,
- "tooltip-text": "",
- "on-left-click": "",
- "on-middle-click": "",
- "on-scroll-up": "",
- "on-scroll-down": ""
- }
- }
-]
\ No newline at end of file
diff --git a/symlinks/config/nwg-panel/executors/arch_updates.py b/symlinks/config/nwg-panel/executors/arch_updates.py
deleted file mode 100755
index 0d4016e..0000000
--- a/symlinks/config/nwg-panel/executors/arch_updates.py
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/usr/bin/python
-
-import subprocess
-
-
-# You may either use the full icon(s) path here, like e.g.:
-# "/home/piotr/.config/nwg-panel/icons_light/arch-linux.svg"
-# or just give the icon name, like below.
-
-# The icon name must either exist in your icon theme, or you may place `icon_name.svg`
-# custom files in '~/.config/nwg-panel/icons_light/' and '~/.config/nwg-panel/icons_dark/'.
-
-
-def main():
- arch, aur = check_updates()
- if arch and aur:
- print("software-update-urgent")
- print("{}/{}".format(arch, aur))
- elif arch:
- print("software-update-available")
- print("{}".format(arch))
- elif aur:
- print("software-update-available")
- print("{}".format(aur))
-
-
-def check_updates():
- arch, aur = 0, 0
- try:
- arch = len(subprocess.check_output(["checkupdates"]).decode("utf-8").splitlines())
- except:
- pass
- try:
- aur = len(subprocess.check_output(["trizen", "-Qqu", "-a"]).decode("utf-8").splitlines())
- except:
- pass
- return arch, aur
-
-
-if __name__ == "__main__":
- main()
diff --git a/symlinks/config/nwg-panel/executors/github.sh b/symlinks/config/nwg-panel/executors/github.sh
deleted file mode 100755
index 9bfcbaa..0000000
--- a/symlinks/config/nwg-panel/executors/github.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/bash
-
-# Based on the 'Github notifications' example from Waybar's Wiki
-# Depends on jq Command-line JSON processor
-# Obtain a notifications token at https://github.com/settings/tokens
-# save it to a file as below.
-
-token=`cat ${HOME}/.config/github/notifications.token`
-count=`curl -u nwg-piotr:${token} https://api.github.com/notifications -s | jq '. | length'`
-
-if [[ "$count" != "0" ]]; then
- echo /home/piotr/.config/nwg-panel/icons_light/github.svg
- echo $count
-fi
diff --git a/symlinks/config/nwg-panel/icons_dark/arch-linux.svg b/symlinks/config/nwg-panel/icons_dark/arch-linux.svg
deleted file mode 100644
index 39ce3ae..0000000
--- a/symlinks/config/nwg-panel/icons_dark/arch-linux.svg
+++ /dev/null
@@ -1,175 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_dark/arch-notification.svg b/symlinks/config/nwg-panel/icons_dark/arch-notification.svg
deleted file mode 100644
index ccf99af..0000000
--- a/symlinks/config/nwg-panel/icons_dark/arch-notification.svg
+++ /dev/null
@@ -1,180 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_dark/audio-volume-high-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/audio-volume-high-symbolic.svg
deleted file mode 100644
index 2221cda..0000000
--- a/symlinks/config/nwg-panel/icons_dark/audio-volume-high-symbolic.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/symlinks/config/nwg-panel/icons_dark/audio-volume-low-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/audio-volume-low-symbolic.svg
deleted file mode 100644
index c026126..0000000
--- a/symlinks/config/nwg-panel/icons_dark/audio-volume-low-symbolic.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/symlinks/config/nwg-panel/icons_dark/audio-volume-medium-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/audio-volume-medium-symbolic.svg
deleted file mode 100644
index a776174..0000000
--- a/symlinks/config/nwg-panel/icons_dark/audio-volume-medium-symbolic.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/symlinks/config/nwg-panel/icons_dark/audio-volume-muted-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/audio-volume-muted-symbolic.svg
deleted file mode 100644
index 9d7c070..0000000
--- a/symlinks/config/nwg-panel/icons_dark/audio-volume-muted-symbolic.svg
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_dark/battery-empty-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/battery-empty-symbolic.svg
deleted file mode 100644
index 410aeb4..0000000
--- a/symlinks/config/nwg-panel/icons_dark/battery-empty-symbolic.svg
+++ /dev/null
@@ -1,207 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_dark/battery-full-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/battery-full-symbolic.svg
deleted file mode 100644
index a89b677..0000000
--- a/symlinks/config/nwg-panel/icons_dark/battery-full-symbolic.svg
+++ /dev/null
@@ -1,207 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_dark/battery-good-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/battery-good-symbolic.svg
deleted file mode 100644
index 4a6bd26..0000000
--- a/symlinks/config/nwg-panel/icons_dark/battery-good-symbolic.svg
+++ /dev/null
@@ -1,207 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_dark/battery-low-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/battery-low-symbolic.svg
deleted file mode 100644
index 83a0c2c..0000000
--- a/symlinks/config/nwg-panel/icons_dark/battery-low-symbolic.svg
+++ /dev/null
@@ -1,207 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_dark/bluetooth-active-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/bluetooth-active-symbolic.svg
deleted file mode 100644
index 6521c5d..0000000
--- a/symlinks/config/nwg-panel/icons_dark/bluetooth-active-symbolic.svg
+++ /dev/null
@@ -1,206 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_dark/bluetooth-disabled-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/bluetooth-disabled-symbolic.svg
deleted file mode 100644
index e41de61..0000000
--- a/symlinks/config/nwg-panel/icons_dark/bluetooth-disabled-symbolic.svg
+++ /dev/null
@@ -1,206 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_dark/display-brightness-high-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/display-brightness-high-symbolic.svg
deleted file mode 100644
index 7f57ba4..0000000
--- a/symlinks/config/nwg-panel/icons_dark/display-brightness-high-symbolic.svg
+++ /dev/null
@@ -1,227 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_dark/display-brightness-low-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/display-brightness-low-symbolic.svg
deleted file mode 100644
index 9206004..0000000
--- a/symlinks/config/nwg-panel/icons_dark/display-brightness-low-symbolic.svg
+++ /dev/null
@@ -1,222 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_dark/display-brightness-medium-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/display-brightness-medium-symbolic.svg
deleted file mode 100644
index 5aabfda..0000000
--- a/symlinks/config/nwg-panel/icons_dark/display-brightness-medium-symbolic.svg
+++ /dev/null
@@ -1,222 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_dark/document-open-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/document-open-symbolic.svg
deleted file mode 100644
index f99203a..0000000
--- a/symlinks/config/nwg-panel/icons_dark/document-open-symbolic.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/symlinks/config/nwg-panel/icons_dark/edit-delete-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/edit-delete-symbolic.svg
deleted file mode 100644
index 83e5e4c..0000000
--- a/symlinks/config/nwg-panel/icons_dark/edit-delete-symbolic.svg
+++ /dev/null
@@ -1,212 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_dark/emblem-system-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/emblem-system-symbolic.svg
deleted file mode 100644
index 61f1709..0000000
--- a/symlinks/config/nwg-panel/icons_dark/emblem-system-symbolic.svg
+++ /dev/null
@@ -1,228 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_dark/github.svg b/symlinks/config/nwg-panel/icons_dark/github.svg
deleted file mode 100644
index 14111be..0000000
--- a/symlinks/config/nwg-panel/icons_dark/github.svg
+++ /dev/null
@@ -1,62 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_dark/go-down-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/go-down-symbolic.svg
deleted file mode 100644
index 503ed4d..0000000
--- a/symlinks/config/nwg-panel/icons_dark/go-down-symbolic.svg
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_dark/go-next-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/go-next-symbolic.svg
deleted file mode 100644
index c2a06fe..0000000
--- a/symlinks/config/nwg-panel/icons_dark/go-next-symbolic.svg
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_dark/list-add-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/list-add-symbolic.svg
deleted file mode 100644
index f00cf05..0000000
--- a/symlinks/config/nwg-panel/icons_dark/list-add-symbolic.svg
+++ /dev/null
@@ -1,222 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_dark/media-playback-pause-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/media-playback-pause-symbolic.svg
deleted file mode 100644
index f125d7c..0000000
--- a/symlinks/config/nwg-panel/icons_dark/media-playback-pause-symbolic.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/symlinks/config/nwg-panel/icons_dark/media-playback-start-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/media-playback-start-symbolic.svg
deleted file mode 100644
index 770f184..0000000
--- a/symlinks/config/nwg-panel/icons_dark/media-playback-start-symbolic.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/symlinks/config/nwg-panel/icons_dark/media-skip-backward-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/media-skip-backward-symbolic.svg
deleted file mode 100644
index c9d9916..0000000
--- a/symlinks/config/nwg-panel/icons_dark/media-skip-backward-symbolic.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/symlinks/config/nwg-panel/icons_dark/media-skip-forward-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/media-skip-forward-symbolic.svg
deleted file mode 100644
index b30dde3..0000000
--- a/symlinks/config/nwg-panel/icons_dark/media-skip-forward-symbolic.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/symlinks/config/nwg-panel/icons_dark/network-wired-disconnected-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/network-wired-disconnected-symbolic.svg
deleted file mode 100644
index 24c2f69..0000000
--- a/symlinks/config/nwg-panel/icons_dark/network-wired-disconnected-symbolic.svg
+++ /dev/null
@@ -1,63 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_dark/network-wired-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/network-wired-symbolic.svg
deleted file mode 100644
index 06bf8fb..0000000
--- a/symlinks/config/nwg-panel/icons_dark/network-wired-symbolic.svg
+++ /dev/null
@@ -1,63 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_dark/network-wireless-connected-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/network-wireless-connected-symbolic.svg
deleted file mode 100644
index 0780bd8..0000000
--- a/symlinks/config/nwg-panel/icons_dark/network-wireless-connected-symbolic.svg
+++ /dev/null
@@ -1,221 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_dark/network-wireless-disconnected-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/network-wireless-disconnected-symbolic.svg
deleted file mode 100644
index 1c05649..0000000
--- a/symlinks/config/nwg-panel/icons_dark/network-wireless-disconnected-symbolic.svg
+++ /dev/null
@@ -1,221 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_dark/nwg-panel.svg b/symlinks/config/nwg-panel/icons_dark/nwg-panel.svg
deleted file mode 100644
index 08622b3..0000000
--- a/symlinks/config/nwg-panel/icons_dark/nwg-panel.svg
+++ /dev/null
@@ -1,92 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_dark/nwgocc-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/nwgocc-symbolic.svg
deleted file mode 100644
index 071e8ac..0000000
--- a/symlinks/config/nwg-panel/icons_dark/nwgocc-symbolic.svg
+++ /dev/null
@@ -1,95 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_dark/pan-down-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/pan-down-symbolic.svg
deleted file mode 100644
index 8476a75..0000000
--- a/symlinks/config/nwg-panel/icons_dark/pan-down-symbolic.svg
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_dark/pan-end-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/pan-end-symbolic.svg
deleted file mode 100644
index 0105ef3..0000000
--- a/symlinks/config/nwg-panel/icons_dark/pan-end-symbolic.svg
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_dark/system-lock-screen.svg b/symlinks/config/nwg-panel/icons_dark/system-lock-screen.svg
deleted file mode 100644
index e9f7ac8..0000000
--- a/symlinks/config/nwg-panel/icons_dark/system-lock-screen.svg
+++ /dev/null
@@ -1,222 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_dark/system-shutdown-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/system-shutdown-symbolic.svg
deleted file mode 100644
index 464d107..0000000
--- a/symlinks/config/nwg-panel/icons_dark/system-shutdown-symbolic.svg
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_dark/user-available-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/user-available-symbolic.svg
deleted file mode 100644
index 8043718..0000000
--- a/symlinks/config/nwg-panel/icons_dark/user-available-symbolic.svg
+++ /dev/null
@@ -1,221 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_dark/view-dual-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/view-dual-symbolic.svg
deleted file mode 100644
index 1f6002b..0000000
--- a/symlinks/config/nwg-panel/icons_dark/view-dual-symbolic.svg
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_dark/view-paged-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/view-paged-symbolic.svg
deleted file mode 100644
index 3773f81..0000000
--- a/symlinks/config/nwg-panel/icons_dark/view-paged-symbolic.svg
+++ /dev/null
@@ -1,58 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_dark/view-refresh-symbolic.svg b/symlinks/config/nwg-panel/icons_dark/view-refresh-symbolic.svg
deleted file mode 100644
index 30c7466..0000000
--- a/symlinks/config/nwg-panel/icons_dark/view-refresh-symbolic.svg
+++ /dev/null
@@ -1,181 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_light/arch-linux.svg b/symlinks/config/nwg-panel/icons_light/arch-linux.svg
deleted file mode 100644
index 8d9f667..0000000
--- a/symlinks/config/nwg-panel/icons_light/arch-linux.svg
+++ /dev/null
@@ -1,175 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_light/arch-notification.svg b/symlinks/config/nwg-panel/icons_light/arch-notification.svg
deleted file mode 100644
index 0ebfddd..0000000
--- a/symlinks/config/nwg-panel/icons_light/arch-notification.svg
+++ /dev/null
@@ -1,180 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_light/audio-volume-high-symbolic.svg b/symlinks/config/nwg-panel/icons_light/audio-volume-high-symbolic.svg
deleted file mode 100644
index f200300..0000000
--- a/symlinks/config/nwg-panel/icons_light/audio-volume-high-symbolic.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/symlinks/config/nwg-panel/icons_light/audio-volume-low-symbolic.svg b/symlinks/config/nwg-panel/icons_light/audio-volume-low-symbolic.svg
deleted file mode 100644
index d0797f5..0000000
--- a/symlinks/config/nwg-panel/icons_light/audio-volume-low-symbolic.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/symlinks/config/nwg-panel/icons_light/audio-volume-medium-symbolic.svg b/symlinks/config/nwg-panel/icons_light/audio-volume-medium-symbolic.svg
deleted file mode 100644
index 21d91da..0000000
--- a/symlinks/config/nwg-panel/icons_light/audio-volume-medium-symbolic.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/symlinks/config/nwg-panel/icons_light/audio-volume-muted-symbolic.svg b/symlinks/config/nwg-panel/icons_light/audio-volume-muted-symbolic.svg
deleted file mode 100644
index 9d11387..0000000
--- a/symlinks/config/nwg-panel/icons_light/audio-volume-muted-symbolic.svg
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_light/battery-empty-symbolic.svg b/symlinks/config/nwg-panel/icons_light/battery-empty-symbolic.svg
deleted file mode 100644
index 9c72319..0000000
--- a/symlinks/config/nwg-panel/icons_light/battery-empty-symbolic.svg
+++ /dev/null
@@ -1,207 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_light/battery-full-symbolic.svg b/symlinks/config/nwg-panel/icons_light/battery-full-symbolic.svg
deleted file mode 100644
index f071c9c..0000000
--- a/symlinks/config/nwg-panel/icons_light/battery-full-symbolic.svg
+++ /dev/null
@@ -1,207 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_light/battery-good-symbolic.svg b/symlinks/config/nwg-panel/icons_light/battery-good-symbolic.svg
deleted file mode 100644
index 873b598..0000000
--- a/symlinks/config/nwg-panel/icons_light/battery-good-symbolic.svg
+++ /dev/null
@@ -1,207 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_light/battery-low-symbolic.svg b/symlinks/config/nwg-panel/icons_light/battery-low-symbolic.svg
deleted file mode 100644
index e3a4bf4..0000000
--- a/symlinks/config/nwg-panel/icons_light/battery-low-symbolic.svg
+++ /dev/null
@@ -1,207 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_light/bluetooth-active-symbolic.svg b/symlinks/config/nwg-panel/icons_light/bluetooth-active-symbolic.svg
deleted file mode 100644
index 8ec4a69..0000000
--- a/symlinks/config/nwg-panel/icons_light/bluetooth-active-symbolic.svg
+++ /dev/null
@@ -1,206 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_light/bluetooth-disabled-symbolic.svg b/symlinks/config/nwg-panel/icons_light/bluetooth-disabled-symbolic.svg
deleted file mode 100644
index 541b3cb..0000000
--- a/symlinks/config/nwg-panel/icons_light/bluetooth-disabled-symbolic.svg
+++ /dev/null
@@ -1,206 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_light/display-brightness-high-symbolic.svg b/symlinks/config/nwg-panel/icons_light/display-brightness-high-symbolic.svg
deleted file mode 100644
index 89172a6..0000000
--- a/symlinks/config/nwg-panel/icons_light/display-brightness-high-symbolic.svg
+++ /dev/null
@@ -1,227 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_light/display-brightness-low-symbolic.svg b/symlinks/config/nwg-panel/icons_light/display-brightness-low-symbolic.svg
deleted file mode 100644
index 34e2720..0000000
--- a/symlinks/config/nwg-panel/icons_light/display-brightness-low-symbolic.svg
+++ /dev/null
@@ -1,222 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_light/display-brightness-medium-symbolic.svg b/symlinks/config/nwg-panel/icons_light/display-brightness-medium-symbolic.svg
deleted file mode 100644
index 08ae8cd..0000000
--- a/symlinks/config/nwg-panel/icons_light/display-brightness-medium-symbolic.svg
+++ /dev/null
@@ -1,222 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_light/document-open-symbolic.svg b/symlinks/config/nwg-panel/icons_light/document-open-symbolic.svg
deleted file mode 100644
index cc8a69b..0000000
--- a/symlinks/config/nwg-panel/icons_light/document-open-symbolic.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/symlinks/config/nwg-panel/icons_light/edit-delete-symbolic.svg b/symlinks/config/nwg-panel/icons_light/edit-delete-symbolic.svg
deleted file mode 100644
index 3c3a1c9..0000000
--- a/symlinks/config/nwg-panel/icons_light/edit-delete-symbolic.svg
+++ /dev/null
@@ -1,212 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_light/emblem-system-symbolic.svg b/symlinks/config/nwg-panel/icons_light/emblem-system-symbolic.svg
deleted file mode 100644
index 8d44933..0000000
--- a/symlinks/config/nwg-panel/icons_light/emblem-system-symbolic.svg
+++ /dev/null
@@ -1,228 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_light/github.svg b/symlinks/config/nwg-panel/icons_light/github.svg
deleted file mode 100644
index d2427c7..0000000
--- a/symlinks/config/nwg-panel/icons_light/github.svg
+++ /dev/null
@@ -1,62 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_light/go-down-symbolic.svg b/symlinks/config/nwg-panel/icons_light/go-down-symbolic.svg
deleted file mode 100644
index caaeb9a..0000000
--- a/symlinks/config/nwg-panel/icons_light/go-down-symbolic.svg
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_light/go-next-symbolic.svg b/symlinks/config/nwg-panel/icons_light/go-next-symbolic.svg
deleted file mode 100644
index 5ce4c79..0000000
--- a/symlinks/config/nwg-panel/icons_light/go-next-symbolic.svg
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_light/icon-missing.svg b/symlinks/config/nwg-panel/icons_light/icon-missing.svg
deleted file mode 100644
index 85d157b..0000000
--- a/symlinks/config/nwg-panel/icons_light/icon-missing.svg
+++ /dev/null
@@ -1,217 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_light/list-add-symbolic.svg b/symlinks/config/nwg-panel/icons_light/list-add-symbolic.svg
deleted file mode 100644
index e46935d..0000000
--- a/symlinks/config/nwg-panel/icons_light/list-add-symbolic.svg
+++ /dev/null
@@ -1,222 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_light/media-playback-pause-symbolic.svg b/symlinks/config/nwg-panel/icons_light/media-playback-pause-symbolic.svg
deleted file mode 100644
index 25aff5f..0000000
--- a/symlinks/config/nwg-panel/icons_light/media-playback-pause-symbolic.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/symlinks/config/nwg-panel/icons_light/media-playback-start-symbolic.svg b/symlinks/config/nwg-panel/icons_light/media-playback-start-symbolic.svg
deleted file mode 100644
index 162f467..0000000
--- a/symlinks/config/nwg-panel/icons_light/media-playback-start-symbolic.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/symlinks/config/nwg-panel/icons_light/media-skip-backward-symbolic.svg b/symlinks/config/nwg-panel/icons_light/media-skip-backward-symbolic.svg
deleted file mode 100644
index 50358eb..0000000
--- a/symlinks/config/nwg-panel/icons_light/media-skip-backward-symbolic.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/symlinks/config/nwg-panel/icons_light/media-skip-forward-symbolic.svg b/symlinks/config/nwg-panel/icons_light/media-skip-forward-symbolic.svg
deleted file mode 100644
index 4c9c191..0000000
--- a/symlinks/config/nwg-panel/icons_light/media-skip-forward-symbolic.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/symlinks/config/nwg-panel/icons_light/network-wired-disconnected-symbolic.svg b/symlinks/config/nwg-panel/icons_light/network-wired-disconnected-symbolic.svg
deleted file mode 100644
index f48377e..0000000
--- a/symlinks/config/nwg-panel/icons_light/network-wired-disconnected-symbolic.svg
+++ /dev/null
@@ -1,63 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_light/network-wired-symbolic.svg b/symlinks/config/nwg-panel/icons_light/network-wired-symbolic.svg
deleted file mode 100644
index 03c758d..0000000
--- a/symlinks/config/nwg-panel/icons_light/network-wired-symbolic.svg
+++ /dev/null
@@ -1,63 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_light/network-wireless-connected-symbolic.svg b/symlinks/config/nwg-panel/icons_light/network-wireless-connected-symbolic.svg
deleted file mode 100644
index a3976e7..0000000
--- a/symlinks/config/nwg-panel/icons_light/network-wireless-connected-symbolic.svg
+++ /dev/null
@@ -1,221 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_light/network-wireless-disconnected-symbolic.svg b/symlinks/config/nwg-panel/icons_light/network-wireless-disconnected-symbolic.svg
deleted file mode 100644
index 4546474..0000000
--- a/symlinks/config/nwg-panel/icons_light/network-wireless-disconnected-symbolic.svg
+++ /dev/null
@@ -1,221 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_light/nwg-panel.svg b/symlinks/config/nwg-panel/icons_light/nwg-panel.svg
deleted file mode 100644
index 9b60df2..0000000
--- a/symlinks/config/nwg-panel/icons_light/nwg-panel.svg
+++ /dev/null
@@ -1,92 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_light/nwgocc-symbolic.svg b/symlinks/config/nwg-panel/icons_light/nwgocc-symbolic.svg
deleted file mode 100644
index 6564196..0000000
--- a/symlinks/config/nwg-panel/icons_light/nwgocc-symbolic.svg
+++ /dev/null
@@ -1,95 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_light/pan-down-symbolic.svg b/symlinks/config/nwg-panel/icons_light/pan-down-symbolic.svg
deleted file mode 100644
index de71d75..0000000
--- a/symlinks/config/nwg-panel/icons_light/pan-down-symbolic.svg
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_light/pan-end-symbolic.svg b/symlinks/config/nwg-panel/icons_light/pan-end-symbolic.svg
deleted file mode 100644
index d8150b8..0000000
--- a/symlinks/config/nwg-panel/icons_light/pan-end-symbolic.svg
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_light/system-lock-screen.svg b/symlinks/config/nwg-panel/icons_light/system-lock-screen.svg
deleted file mode 100644
index fb8753d..0000000
--- a/symlinks/config/nwg-panel/icons_light/system-lock-screen.svg
+++ /dev/null
@@ -1,222 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_light/system-shutdown-symbolic.svg b/symlinks/config/nwg-panel/icons_light/system-shutdown-symbolic.svg
deleted file mode 100644
index 6ed014f..0000000
--- a/symlinks/config/nwg-panel/icons_light/system-shutdown-symbolic.svg
+++ /dev/null
@@ -1,58 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_light/user-available-symbolic.svg b/symlinks/config/nwg-panel/icons_light/user-available-symbolic.svg
deleted file mode 100644
index b8bcd2f..0000000
--- a/symlinks/config/nwg-panel/icons_light/user-available-symbolic.svg
+++ /dev/null
@@ -1,221 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_light/view-dual-symbolic.svg b/symlinks/config/nwg-panel/icons_light/view-dual-symbolic.svg
deleted file mode 100644
index 6361735..0000000
--- a/symlinks/config/nwg-panel/icons_light/view-dual-symbolic.svg
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_light/view-paged-symbolic.svg b/symlinks/config/nwg-panel/icons_light/view-paged-symbolic.svg
deleted file mode 100644
index 53a2e98..0000000
--- a/symlinks/config/nwg-panel/icons_light/view-paged-symbolic.svg
+++ /dev/null
@@ -1,58 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/icons_light/view-refresh-symbolic.svg b/symlinks/config/nwg-panel/icons_light/view-refresh-symbolic.svg
deleted file mode 100644
index 7082d07..0000000
--- a/symlinks/config/nwg-panel/icons_light/view-refresh-symbolic.svg
+++ /dev/null
@@ -1,181 +0,0 @@
-
-
diff --git a/symlinks/config/nwg-panel/style.css b/symlinks/config/nwg-panel/style.css
deleted file mode 100644
index f38e1ab..0000000
--- a/symlinks/config/nwg-panel/style.css
+++ /dev/null
@@ -1,59 +0,0 @@
-/***** SUGGESTED TO CHANGE CAREFULLY *****/
-
-/* Recommended if panel "height" unset or smaller then your theme default button height */
-button {
- margin: 2px
-}
-
-/* WindowBox in SwayTaskBar is a custom widget, that needs this and the next name
- to highlight currently focused task */
-#task-box {
- padding-left: 4px;
- padding-right: 4px
-}
-#task-box-focused {
- background-color: rgba (255, 255, 255, 0.12);
- padding-left: 4px;
- padding-right: 4px
-}
-
-
-/***** MODIFY TO YOUR TASTE *****/
-
-/* Sample button in sample config w/ no background nor border */
-#button-custom {
- background: rgba (0, 0, 0, 0.0);
- border: 0
-}
-
-/* Top panel in sample config uses this name */
-#panel-top {
- background: #101010
-}
-
-/* Bottom panel in sample config uses this name */
-#panel-bottom {
- background: #3b4559
-}
-
-/* Controls window in sample config uses this name */
-#controls-window {
- border-radius: 15px;
- background: #36364f
-}
-
-/* Executors usually behave better in monospace fonts */
-#executor-label {
- font-family: monospace
-}
-
-/* and so does the Clock */
-#clock {
- font-family: monospace;
- font-size: 16px
-}
-
-/* Sample executor-weather uses "css-name": "weather" */
-#weather {
- font-size: 16px
-}
diff --git a/symlinks/config/pavucontrol.ini b/symlinks/config/pavucontrol.ini
index ebd7628..0bdb574 100644
--- a/symlinks/config/pavucontrol.ini
+++ b/symlinks/config/pavucontrol.ini
@@ -1,7 +1,8 @@
[window]
-width=500
-height=400
+width=465
+height=1020
sinkInputType=1
sourceOutputType=1
sinkType=0
sourceType=1
+showVolumeMeters=1
diff --git a/symlinks/config/sway/conf.d/01_default_tools b/symlinks/config/sway/conf.d/01_default_tools
index af6bdcb..edb8c0f 100644
--- a/symlinks/config/sway/conf.d/01_default_tools
+++ b/symlinks/config/sway/conf.d/01_default_tools
@@ -1,10 +1,9 @@
# Main tools mapping
set $term alacritty
-set $menu "wofi -G -modi drun,run --show drun"
-set $filemanager $term -e ranger
+set $menu "ulauncher-toggle"
+set $filemanager thunar
set $processviewer $term -e htop
-
# start a terminal
bindsym $mod+Return exec $term
diff --git a/symlinks/config/sway/conf.d/15_workspace_assignment b/symlinks/config/sway/conf.d/15_workspace_assignment
index 14607dc..eadf5f7 100644
--- a/symlinks/config/sway/conf.d/15_workspace_assignment
+++ b/symlinks/config/sway/conf.d/15_workspace_assignment
@@ -1,7 +1,9 @@
# Assign windows to workspaces
-assign [class="firefox"] $browser_workspace
+assign [app_id="firefox"] $browser_workspace
assign [class="Hexchat"] $chat_workspace
assign [class="Slack"] $chat_workspace
+assign [class="discord"] $chat_workspace
+assign [instance="element"] $chat_workspace
assign [class="Gvim"] $editor_workspace
assign [class="jetbrains-idea-ce"] $ide_workspace
assign [class="libreoffice"] $note_workspace
diff --git a/symlinks/config/sway/conf.d/45_touchpad b/symlinks/config/sway/conf.d/45_touchpad
new file mode 100644
index 0000000..f02edc8
--- /dev/null
+++ b/symlinks/config/sway/conf.d/45_touchpad
@@ -0,0 +1,4 @@
+input type:touchpad {
+ tap enabled
+ natural_scroll enabled
+}
diff --git a/symlinks/config/sway/conf.d/50_startup b/symlinks/config/sway/conf.d/50_startup
index 9fb6c44..dd06e7d 100644
--- a/symlinks/config/sway/conf.d/50_startup
+++ b/symlinks/config/sway/conf.d/50_startup
@@ -1,5 +1,5 @@
# Start up notification manager
exec --no-startup-id mako
exec kdeconnect-indicator
-exec spotify
-exec slack
+exec ulauncher --hide-window
+exec libinput-gestures-setup start
diff --git a/symlinks/config/sway/conf.d/91_mediakeys b/symlinks/config/sway/conf.d/91_mediakeys
index a4389ac..b8e436e 100644
--- a/symlinks/config/sway/conf.d/91_mediakeys
+++ b/symlinks/config/sway/conf.d/91_mediakeys
@@ -5,5 +5,6 @@ bindsym XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle
bindsym XF86MonBrightnessDown exec brightnessctl set 5%-
bindsym XF86MonBrightnessUp exec brightnessctl set +5%
bindsym XF86AudioPlay exec playerctl play-pause
+bindsym XF86AudioStop exec playerctl play-pause
bindsym XF86AudioNext exec playerctl next
bindsym XF86AudioPrev exec playerctl previous
diff --git a/symlinks/config/sway/config b/symlinks/config/sway/config
index fc42510..1eb5cb9 100644
--- a/symlinks/config/sway/config
+++ b/symlinks/config/sway/config
@@ -1,6 +1,5 @@
# Read `man 5 sway` for a complete reference.
-# Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/)
exec ~/.azotebg
# Font for window titles. Will also be used by the bar unless a different font
@@ -21,6 +20,8 @@ for_window [window_role="Preferences"] floating enable
for_window [window_type="dialog"] floating enable
for_window [window_type="menu"] floating enable
for_window [window_role="About"] floating enable
+for_window [app_id="ulauncher"] border none
+for_window [app_id="wofi"] border none
include ~/.config/sway/conf.d/*
include /etc/sway/config.d/*
diff --git a/symlinks/config/ulauncher/extensions.json b/symlinks/config/ulauncher/extensions.json
new file mode 100644
index 0000000..9e26dfe
--- /dev/null
+++ b/symlinks/config/ulauncher/extensions.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/symlinks/config/ulauncher/settings.json b/symlinks/config/ulauncher/settings.json
new file mode 100644
index 0000000..eb25f6a
--- /dev/null
+++ b/symlinks/config/ulauncher/settings.json
@@ -0,0 +1,11 @@
+{
+ "blacklisted-desktop-dirs": "/usr/share/locale:/usr/share/app-install:/usr/share/kservices5:/usr/share/fk5:/usr/share/kservicetypes5:/usr/share/applications/screensavers:/usr/share/kde4:/usr/share/mimelnk",
+ "clear-previous-query": true,
+ "grab-mouse-pointer": false,
+ "hotkey-show-app": "Super_Lspace",
+ "render-on-screen": "mouse-pointer-monitor",
+ "show-indicator-icon": true,
+ "show-recent-apps": "0",
+ "terminal-command": "alacritty -e /usr/bin/fish -c",
+ "theme-name": "dark"
+}
\ No newline at end of file
diff --git a/symlinks/config/ulauncher/shortcuts.json b/symlinks/config/ulauncher/shortcuts.json
new file mode 100644
index 0000000..bc40f45
--- /dev/null
+++ b/symlinks/config/ulauncher/shortcuts.json
@@ -0,0 +1,22 @@
+{
+ "feb919a9-ec3f-41dd-8cee-07be86cc0901": {
+ "id": "feb919a9-ec3f-41dd-8cee-07be86cc0901",
+ "name": "Stack Overflow",
+ "keyword": "so",
+ "cmd": "xdg-open \"http://stackoverflow.com/search?q=$@\"",
+ "icon": "/usr/share/ulauncher/media/stackoverflow-icon.svg",
+ "is_default_search": true,
+ "run_without_argument": false,
+ "added": 1615309537.084131
+ },
+ "a61d5cbd-4e61-45ff-ae0e-a08e8f9242f5": {
+ "id": "a61d5cbd-4e61-45ff-ae0e-a08e8f9242f5",
+ "name": "Wikipedia",
+ "keyword": "wiki",
+ "cmd": "xdg-open \"https://en.wikipedia.org/wiki/$@\"",
+ "icon": "/usr/share/ulauncher/media/wikipedia-icon.png",
+ "is_default_search": true,
+ "run_without_argument": false,
+ "added": 1615309537.0841668
+ }
+}
\ No newline at end of file
diff --git a/symlinks/config/waybar/config b/symlinks/config/waybar/config
index aec5094..77b05b3 100644
--- a/symlinks/config/waybar/config
+++ b/symlinks/config/waybar/config
@@ -31,6 +31,7 @@
"modules-right": [
"network",
"pulseaudio",
+ "backlight",
"memory",
"cpu",
"temperature",
@@ -38,8 +39,7 @@
"battery",
"tray",
"idle_inhibitor",
- "custom/power-menu",
- "custom/apps-menu"
+ "custom/power-menu"
],
@@ -134,6 +134,14 @@
}
},
+ "backlight": {
+ "device": "amdgpu_bl0",
+ "format": "{icon} {percent}%",
+ "format-icons": ["", ""],
+ "on-scroll-up": "brightnessctl set +1%",
+ "on-scroll-down": "brightnessctl set 1%-"
+ },
+
"pulseaudio": {
//"scroll-step": 1,
"format": "{icon} {volume}%",
@@ -181,12 +189,6 @@
"custom/power-menu": {
"tooltip": false,
"format": "",
- "on-click": "nwgbar"
+ "on-click": "wlogout"
},
-
- "custom/apps-menu": {
- "tooltip": false,
- "format": "",
- "on-click": "nwggrid"
- }
}
diff --git a/symlinks/config/wlogout/layout b/symlinks/config/wlogout/layout
new file mode 100644
index 0000000..e0c8814
--- /dev/null
+++ b/symlinks/config/wlogout/layout
@@ -0,0 +1,36 @@
+{
+ "label" : "lock",
+ "action" : "~/bin/lockscreen",
+ "text" : "Lock screen",
+ "keybind" : "l"
+}
+{
+ "label" : "hibernate",
+ "action" : "systemctl hibernate",
+ "text" : "Hibernate",
+ "keybind" : "h"
+}
+{
+ "label" : "logout",
+ "action" : "swaymsg exit",
+ "text" : "Logout",
+ "keybind" : "e"
+}
+{
+ "label" : "shutdown",
+ "action" : "systemctl poweroff",
+ "text" : "Shutdown",
+ "keybind" : "s"
+}
+{
+ "label" : "suspend",
+ "action" : "systemctl suspend",
+ "text" : "Suspend",
+ "keybind" : "u"
+}
+{
+ "label" : "reboot",
+ "action" : "systemctl reboot",
+ "text" : "Reboot",
+ "keybind" : "r"
+}
diff --git a/symlinks/config/wlogout/style.css b/symlinks/config/wlogout/style.css
new file mode 100644
index 0000000..b076b72
--- /dev/null
+++ b/symlinks/config/wlogout/style.css
@@ -0,0 +1,44 @@
+* {
+ background-image: none;
+}
+window {
+ background-color: rgba(12, 12, 12, 0.5);
+}
+button {
+ color: #FFFFFF;
+ background-color: #1E1E1E;
+ border-style: solid;
+ border-width: 2px;
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: 25%;
+}
+
+button:focus, button:active, button:hover {
+ background-color: #3700B3;
+ outline-style: none;
+}
+
+#lock {
+ background-image: image(url("/usr/share/wlogout/icons/lock.png"), url("/usr/local/share/wlogout/icons/lock.png"));
+}
+
+#logout {
+ background-image: image(url("/usr/share/wlogout/icons/logout.png"), url("/usr/local/share/wlogout/icons/logout.png"));
+}
+
+#suspend {
+ background-image: image(url("/usr/share/wlogout/icons/suspend.png"), url("/usr/local/share/wlogout/icons/suspend.png"));
+}
+
+#hibernate {
+ background-image: image(url("/usr/share/wlogout/icons/hibernate.png"), url("/usr/local/share/wlogout/icons/hibernate.png"));
+}
+
+#shutdown {
+ background-image: image(url("/usr/share/wlogout/icons/shutdown.png"), url("/usr/local/share/wlogout/icons/shutdown.png"));
+}
+
+#reboot {
+ background-image: image(url("/usr/share/wlogout/icons/reboot.png"), url("/usr/local/share/wlogout/icons/reboot.png"));
+}
diff --git a/symlinks/gitconfig.optimum b/symlinks/gitconfig.optimum
index 3b6d908..98c35aa 100644
--- a/symlinks/gitconfig.optimum
+++ b/symlinks/gitconfig.optimum
@@ -1,3 +1,3 @@
[user]
- name = Enasr Sarajčić
+ name = Ensar Sarajčić
email = ensar@optimum.ba
diff --git a/symlinks/gitignore b/symlinks/gitignore
index 95d0950..ad99632 100644
--- a/symlinks/gitignore
+++ b/symlinks/gitignore
@@ -73,3 +73,5 @@ erl_crash.dump
# Python
pyrightconfig.json
+
+**/.lsp/sqlite.db
diff --git a/symlinks/ideavimrc b/symlinks/ideavimrc
index 565b2c2..4f4b952 100644
--- a/symlinks/ideavimrc
+++ b/symlinks/ideavimrc
@@ -10,13 +10,25 @@ set ideajoin
set idearefactormode=keep
" IdeaVIM mappings
-noremap :action SearchEverywhere
+nnoremap [c :action VcsShowPrevChangeMarker
+nnoremap ]c :action VcsShowNextChangeMarker
+
+nnoremap :action SearchEverywhere
nnoremap gd :action GotoDeclaration
nnoremap gi :action GotoImplementation
nnoremap gr :action FindUsages
nnoremap rn :action RenameElement
+nnoremap :action FindInPath
+nnoremap tn :action RunAnything
+nnoremap tf :action RunClass
+inoremap :action ParameterInfo
+nnoremap :action ParameterInfo
+
+nnoremap db :action ToggleLineBreakpoint
+nnoremap dc :action ChooseDebugConfiguration
nnoremap ac :action ShowIntentionActions
command! Start action Run
command! A action GotoTest
+command! Scratch action NewScratchBuffer
diff --git a/symlinks/tool-versions b/symlinks/tool-versions
index b508eb3..1a36542 100644
--- a/symlinks/tool-versions
+++ b/symlinks/tool-versions
@@ -1,12 +1,12 @@
clojure 1.10.2.774
dart 2.12.0-259.0.dev
direnv 2.27.0
-flutter 1.22.6-stable
+flutter 2.0.5-stable
leiningen 2.9.5
nodejs 15.5.0
poetry 1.1.4
-python 3.9.1 2.7.18
+python system
ruby 3.0.0
rust 1.49.0
-neovim 0.4.4
-vim 8.2.2544
+neovim 0.5.0
+dotnet-core 5.0.202
diff --git a/symlinks/vim/UltiSnips/lua.snippets b/symlinks/vim/UltiSnips/lua.snippets
new file mode 100644
index 0000000..3e368db
--- /dev/null
+++ b/symlinks/vim/UltiSnips/lua.snippets
@@ -0,0 +1,5 @@
+snippet cmt
+-------------------------------------------------------------------------------
+-- - $1 -
+-------------------------------------------------------------------------------$0
+endsnippet
diff --git a/symlinks/vim/plugin/statusline.vim b/symlinks/vim/plugin/statusline.vim
index f487039..9a09975 100644
--- a/symlinks/vim/plugin/statusline.vim
+++ b/symlinks/vim/plugin/statusline.vim
@@ -3,38 +3,48 @@
" -----------------------------------------------------------------------------
function s:UpdateColors()
- let ctermbg = synIDattr(synIDtrans(hlID('StatusLine')), 'bg', 'cterm')
- let guibg = synIDattr(synIDtrans(hlID('StatusLine')), 'bg', 'gui')
+ let ctermbg = synIDattr(synIDtrans(hlID('StatusLine')), 'fg', 'cterm')
+ let guibg = synIDattr(synIDtrans(hlID('StatusLine')), 'fg', 'gui')
let idguifg1 = synIDattr(synIDtrans(hlID('Function')), 'fg', 'gui')
let idctermfg1 = synIDattr(synIDtrans(hlID('Function')), 'fg', 'cterm')
" Green in gruvbox
exec 'hi User1 guifg=' . l:idguifg1 .
\' ctermfg=' . l:idctermfg1 .
- \' cterm=bold,reverse gui=bold,reverse'
+ \' guibg=' . l:guibg .
+ \' ctermbg=' . l:ctermbg .
+ \' cterm=bold gui=bold'
let idguifg2 = synIDattr(synIDtrans(hlID('WarningMsg')), 'fg', 'gui')
let idctermfg2 = synIDattr(synIDtrans(hlID('WarningMsg')), 'fg', 'cterm')
" Red in gruvbox
exec 'hi User2 guifg=' . l:idguifg2 .
\' ctermfg=' . l:idctermfg2 .
- \' cterm=bold,reverse gui=bold,reverse'
+ \' guibg=' . l:guibg .
+ \' ctermbg=' . l:ctermbg .
+ \' cterm=bold gui=bold'
let idguifg3 = synIDattr(synIDtrans(hlID('MoreMsg')), 'fg', 'gui')
let idctermfg3 = synIDattr(synIDtrans(hlID('MoreMsg')), 'fg', 'cterm')
" Yellow in gruvbox
exec 'hi User3 guifg=' . l:idguifg3 .
\' ctermfg=' . l:idctermfg3 .
- \' cterm=bold,reverse gui=bold,reverse'
+ \' guibg=' . l:guibg .
+ \' ctermbg=' . l:ctermbg .
+ \' cterm=bold gui=bold'
let idguifg4 = synIDattr(synIDtrans(hlID('Identifier')), 'fg', 'gui')
let idctermfg4 = synIDattr(synIDtrans(hlID('Identifier')), 'fg', 'cterm')
" Blue in gruvbox
exec 'hi User4 guifg=' . l:idguifg4 .
\' ctermfg=' . l:idctermfg4 .
- \' cterm=bold,reverse gui=bold,reverse'
+ \' guibg=' . l:guibg .
+ \' ctermbg=' . l:ctermbg .
+ \' cterm=bold gui=bold'
let idguifg5 = synIDattr(synIDtrans(hlID('Number')), 'fg', 'gui')
let idctermfg5 = synIDattr(synIDtrans(hlID('Number')), 'fg', 'cterm')
" Blue in gruvbox
exec 'hi User5 guifg=' . l:idguifg5 .
\' ctermfg=' . l:idctermfg5 .
- \' cterm=bold,reverse gui=bold,reverse'
+ \' guibg=' . l:guibg .
+ \' ctermbg=' . l:ctermbg .
+ \' cterm=bold gui=bold'
endfunction
augroup statuslineconf
@@ -48,41 +58,43 @@ call s:UpdateColors()
" Checks file type to add a pretty glyph if available
function s:GetFileType()
if &filetype ==# "rust"
- return "%2* %*"
+ return "%2*%*"
elseif &filetype ==# "c"
- return "%4* %*"
+ return "%4*%*"
+ elseif &filetype ==# "cs"
+ return "%4*%*"
elseif &filetype ==# "python"
- return "%3* %*"
+ return "%3*%*"
elseif &filetype ==# "javascript"
- return " "
+ return ""
elseif &filetype ==# "typescript"
- return "%4* %*"
+ return "%4*%*"
elseif &filetype ==# "vim"
- return "%1* %*"
+ return "%1*%*"
elseif &filetype ==# "clojure"
- return " "
+ return ""
elseif &filetype ==# "html"
- return " "
+ return ""
elseif &filetype ==# "haskell"
- return " "
+ return ""
elseif &filetype ==# "markdown"
- return " "
+ return ""
elseif &filetype ==# "org"
- return " "
+ return ""
elseif &filetype ==# "scss"
- return " "
+ return ""
elseif &filetype ==# "scala"
- return " "
+ return ""
elseif &filetype ==# "elixir"
- return "%5* %*"
+ return "%5*%*"
elseif &filetype ==# "kotlin"
- return "%2* 洞 %*"
+ return "%2*洞%*"
elseif &filetype ==# "yml"
- return " "
+ return ""
elseif &filetype ==# "toml"
- return " "
+ return ""
elseif &filetype ==# "json"
- return " "
+ return ""
else
return "%y"
endfunction
@@ -90,17 +102,17 @@ endfunction
" Check current mode to add colorized mode
function s:GetMode()
if mode() == "n"
- return " N "
+ return "N"
elseif mode() == "i"
- return "%3* I %*"
+ return "%3*I%*"
elseif mode() == "v"
- return "%1* V %*"
+ return "%1*V%*"
elseif mode() == "V"
- return "%1* V. %*"
+ return "%1*V.%*"
elseif mode() == "\"
- return "%1* VB %*"
+ return "%1*VB%*"
elseif mode() == "c"
- return "%4* C %*"
+ return "%4*C%*"
else
return "[mode: " . mode() . "]"
endfunction
@@ -122,18 +134,18 @@ function! s:LinterStatus() abort
let l:all_non_errors = l:counts.total - l:all_errors
return l:counts.total == 0 ? '%1* OK %*' : printf(
- \ '%%3* %dW %%* %%2* %dE %%*',
+ \ '%%3*%dW%%* %%2*%dE%%*',
\ all_non_errors,
\ all_errors
\)
endfunction
function GetStatusLine()
- let l:status_line_left = s:GetMode()
+ let l:status_line_left = " " . s:GetMode() . " "
if exists('g:loaded_fugitive')
let l:fugitive_head = FugitiveHead()
if strlen(l:fugitive_head)
- let l:status_line_left .= "%4* " . l:fugitive_head . " %*"
+ let l:status_line_left .= "%4* " . l:fugitive_head . "%*"
endif
endif
let l:status_line_left .= " %f" " Filename
@@ -143,7 +155,7 @@ function GetStatusLine()
if exists('g:did_coc_loaded')
let l:coc_status = coc#status()
if strlen(l:coc_status)
- let l:status_line_left .= "%2* " . l:coc_status . " %*"
+ let l:status_line_left .= "%2*" . l:coc_status . "%*"
endif
endif
let l:status_line_right = "%= " " Align right statusline
diff --git a/symlinks/vim/plugin/vimwiki_reviews.vim b/symlinks/vim/plugin/vimwiki_reviews.vim
deleted file mode 100644
index 6322e30..0000000
--- a/symlinks/vim/plugin/vimwiki_reviews.vim
+++ /dev/null
@@ -1,133 +0,0 @@
-" -----------------------------------------------------------------------------
-" - Vimwiki extensions for working with weekly/monthly/yearly reviews -
-"
-" DEPENDS ON VIMWIKI PLUGIN
-" -----------------------------------------------------------------------------
-
-" Gets path to reviews dir of provided vimwiki (by index)
-function! s:GetReviewsDir(...)
- if a:0 == 0
- let l:vimwiki = g:vimwiki_list[0]
- else
- let l:vimwiki = g:vimwiki_list[str2nr(a:1) - 1]
- endif
-
- return l:vimwiki.path . 'reviews/'
-endfunction
-
-" Finds review template path for provided review type
-function! s:GetReviewTemplatePath(vimwiki_reviews_path, review_type)
- return a:vimwiki_reviews_path . 'template-' . a:review_type . '.md'
-endfunction
-
-" Edits weekly review template
-function! s:OpenReviewWeeklyTemplate(...)
- let reviews_dir = call('s:GetReviewsDir', a:000)
- execute 'edit ' . s:GetReviewTemplatePath(l:reviews_dir, 'week')
-endfunction
-
-" Edits monthly review template
-function! s:OpenReviewMonthlyTemplate(...)
- let reviews_dir = call('s:GetReviewsDir', a:000)
- execute 'edit ' . s:GetReviewTemplatePath(l:reviews_dir, 'month')
-endfunction
-
-" Edits yearly review template
-function! s:OpenReviewYearlyTemplate(...)
- let reviews_dir = call('s:GetReviewsDir', a:000)
- execute 'edit ' . s:GetReviewTemplatePath(l:reviews_dir, 'year')
-endfunction
-
-" Reads template for provided review type into current buffer
-" Uses overrides in form of files in reviews directory
-" Looks for file named template-{review_type}.md:
-" - template-week.md
-" - template-month.md
-" - template-year.md
-" Templates can use variables using %variable% syntax
-" Currently supported variables are:
-" - %date% (Puts different date based on review type)
-function! s:ReadReviewTemplateIntoBuffer(vimwiki_reviews_path, review_type)
- let template_path = s:GetReviewTemplatePath(a:vimwiki_reviews_path, a:review_type)
- if filereadable(glob(l:template_path))
- execute 'read ' . l:template_path
- else
- if a:review_type == 'week'
- call setline(1, '# %date% Weekly Review')
- elseif a:review_type == 'month'
- call setline(1, '# %date% Monthly Review')
- elseif a:review_type == 'year'
- call setline(1, '# %date% Yearly Review')
- endif
- endif
-endfunction
-
-" Open current week weekly review file
-" Created buffer is dated to Sunday of current week
-" Opens current week because Sunday is good time to do this review
-function! s:VimwikiWeeklyReview(...)
- let reviews_dir = call('s:GetReviewsDir', a:000)
- let days_to_sunday = 7 - str2nr(strftime('%u'))
- let week_date = strftime('%Y-%m-%d', localtime() + l:days_to_sunday * 24 * 60 * 60)
- let file_name = l:reviews_dir . l:week_date . '-week.md'
- let exists = filereadable(glob(l:file_name))
- execute 'edit ' . l:file_name
- if exists == v:false
- call s:ReadReviewTemplateIntoBuffer(l:reviews_dir, 'week')
- execute '%substitute/%date%/' . l:week_date
- endif
-endfunction
-
-
-" Open past month monthly review file
-" Created buffer is dated to previous month
-" Previous month is calculated in an erroneous way
-" 28 days are subtracted from current time to get previous month
-function! s:VimwikiMonthlyReview(...)
- let reviews_dir = call('s:GetReviewsDir', a:000)
- let month_time = localtime() - 28 * 24 * 60 * 60
- let month_date = strftime('%Y-%m', l:month_time)
- let file_name = l:reviews_dir . l:month_date .'-month.md'
- let exists = filereadable(glob(l:file_name))
- execute 'edit ' . l:file_name
- if exists == v:false
- call s:ReadReviewTemplateIntoBuffer(l:reviews_dir, 'month')
- execute '%substitute/%date%/' . strftime('%Y %B', l:month_time)
- endif
-endfunction
-
-" Open past year yearly review file
-" Created buffer is dated to previous year
-function! s:VimwikiYearlyReview(...)
- let reviews_dir = call('s:GetReviewsDir', a:000)
- let year_date = (str2nr(strftime('%Y')) - 1)
- let file_name = l:reviews_dir . l:year_date .'-year.md'
- let exists = filereadable(glob(l:file_name))
- execute 'edit ' . l:file_name
- if exists == v:false
- call s:ReadReviewTemplateIntoBuffer(l:reviews_dir, 'year')
- execute '%substitute/%date%/' . l:year_date
- endif
-endfunction
-
-" Open reviews index file
-function! s:VimwikiReviewIndex(...)
- let reviews_dir = call('s:GetReviewsDir', a:000)
- execute 'edit ' . l:reviews_dir . 'reviews.md'
-endfunction
-
-command! -nargs=? VimwikiWeeklyReview :call s:VimwikiWeeklyReview()
-command! -nargs=? VimwikiWeeklyTemplate :call s:OpenReviewWeeklyTemplate()
-command! -nargs=? VimwikiMonthlyReview :call s:VimwikiMonthlyReview()
-command! -nargs=? VimwikiMonthlyTemplate :call s:OpenReviewMonthlyTemplate()
-command! -nargs=? VimwikiYearlyReview :call s:VimwikiYearlyReview()
-command! -nargs=? VimwikiYearlyTemplate :call s:OpenReviewYearlyTemplate()
-command! -nargs=? VimwikiReviewIndex :call s:VimwikiReviewIndex()
-
-nnoremap wrw :VimwikiWeeklyReview
-nnoremap wrtw :VimwikiWeeklyTemplate
-nnoremap wrm :VimwikiMonthlyReview
-nnoremap wrtm :VimwikiMonthlyTemplate
-nnoremap wry :VimwikiYearlyReview
-nnoremap wrty :VimwikiYearlyTemplate
-nnoremap wri :VimwikiReviewIndex
diff --git a/symlinks/vim/plugins.vim b/symlinks/vim/plugins.vim
index 7426d9a..adcd783 100644
--- a/symlinks/vim/plugins.vim
+++ b/symlinks/vim/plugins.vim
@@ -91,6 +91,7 @@ Plug 'tpope/vim-rails'
Plug 'tpope/vim-salve'
Plug 'tpope/vim-fireplace'
Plug 'vimwiki/vimwiki'
+Plug 'esensar/vimwiki-reviews'
Plug 'ledger/vim-ledger'
call plug#end()
diff --git a/symlinks/vim/vimrc b/symlinks/vim/vimrc
index 7b45837..00d22e1 100644
--- a/symlinks/vim/vimrc
+++ b/symlinks/vim/vimrc
@@ -68,7 +68,6 @@ set showcmd " display incomplete commands
set incsearch " do incremental searching
set autoread " Reload files changed outside vim
set hidden " Allow leaving unsaved buffers
-set inccommand=nosplit " Enable live preview of text replacement
" Trigger autoread when changing buffers or coming back to vim in terminal.
if !has('win32') && !has('win64')
@@ -128,5 +127,3 @@ if &term =~ '256color'
" render properly when inside 256-color tmux and GNU screen.
set t_ut=
endif
-
-highlight Comment cterm=italic
diff --git a/symlinks/vsvimrc b/symlinks/vsvimrc
new file mode 100644
index 0000000..7f1ab28
--- /dev/null
+++ b/symlinks/vsvimrc
@@ -0,0 +1,11 @@
+source ~/.vim/vimrc
+source ~/.vim/plugins.vim
+
+nnoremap :vsc MonoDevelop.Ide.Commands.SearchCommands.GotoFile
+nnoremap gr :vsc MonoDevelop.Refactoring.RefactoryCommands.FindReferences
+nnoremap K :vsc MonoDevelop.Ide.Commands.TextEditorCommands.ShowQuickInfo
+nnoremap gD :vsc MonoDevelop.RefactoryCommands.NavigationCommands.FindBaseSymbols
+nnoremap o :vsc MonoDevelop.Ide.Commands.FileTabCommands.CloseAllButThis
+
+nnoremap :vsc MonoDevelop.Ide.Commands.NavigationCommands.NavigateBack
+nnoremap :vsc MonoDevelop.Ide.Commands.NavigationCommands.NavigateForward