diff --git a/.Xresources b/.Xresources
new file mode 100644
index 0000000..7081bd2
--- /dev/null
+++ b/.Xresources
@@ -0,0 +1,3 @@
+Xft.dpi: 96
+Xcursor.size: 24
+Xcursor.theme: Breeze
diff --git a/.config/X11/autostart b/.config/X11/autostart
new file mode 100755
index 0000000..807e128
--- /dev/null
+++ b/.config/X11/autostart
@@ -0,0 +1,23 @@
+set -x
+
+setxkbmap -layout us,ru -option grp:win_space_toggle
+xset r rate 300 40
+xwallpaper --zoom ${HOME}/.local/share/wallpaper/wallpaper.png
+
+launch() {
+ cmd="$1"
+ shift
+ pkill "${cmd}"
+ "${cmd}" "$@"
+}
+
+xrdb -merge ~/.Xresources
+
+launch xsettingsd &
+# launch picom --config="${HOME}/.config/picom.conf" &
+launch copyq &
+launch dunst &
+launch flameshot &
+launch dwmblocks &
+
+# vim: ft=bash
diff --git a/.config/X11/xprofile b/.config/X11/xprofile
new file mode 100644
index 0000000..abf2f22
--- /dev/null
+++ b/.config/X11/xprofile
@@ -0,0 +1,8 @@
+systemctl --user import-environment DISPLAY
+
+export TERMINAL=/usr/bin/alacritty
+export TERM=/usr/bin/alacritty
+export _JAVA_AWT_WM_NONREPARENTING=1
+export AWT_TOOLKIT=MToolkit
+
+# vim: ft=bash
diff --git a/.config/alacritty/alacritty.yml b/.config/alacritty/alacritty.yml
index c1b0615..3c1f9dc 100644
--- a/.config/alacritty/alacritty.yml
+++ b/.config/alacritty/alacritty.yml
@@ -1,4 +1,56 @@
+live_config_reload: true
+colors:
+ bright:
+ black: "0x5c6370"
+ blue: "0x61afef"
+ cyan: "0x56b6c2"
+ green: "0x98c379"
+ magenta: "0xc678dd"
+ red: "0xe06c75"
+ white: "0xe6efff"
+ yellow: "0xd19a66"
+ normal:
+ black: "0x1e2127"
+ blue: "0x61afef"
+ cyan: "0x56b6c2"
+ green: "0x98c379"
+ magenta: "0xc678dd"
+ red: "0xe06c75"
+ white: "0x828791"
+ yellow: "0xd19a66"
+ primary:
+ background: "0x1e2127"
+ bright_foreground: "0xe6efff"
+ foreground: "0xabb2bf"
+cursor:
+ style:
+ blinking: Off
+ shape: Block
+env:
+ TERM: xterm-256color
+font:
+ size: 11
+ glyph_offset:
+ x: 0
+ y: 0
+ normal:
+ family: "Mononoki Nerd Font"
+ offset:
+ x: 1
+ y: 2
+keyboard:
+ bindings:
+ - chars: "\x1f"
+ key: Slash
+ mods: Control
+ - chars: "\0"
+ key: Space
+ mods: Control
+ - chars: "\e"
+ key: Back
+ mods: Control
window:
+ dynamic_padding: true
dimensions:
columns: 140
lines: 45
@@ -6,72 +58,3 @@ window:
x: 2
y: 2
- dynamic_padding: true
-
-font:
- normal:
- family: "Mononoki Nerd Font"
- size: 10.5
-
- offset:
- x: 1
- y: 2
-
- glyph_offset:
- x: 0
- y: 0
-
-colors:
- primary:
- background: '0x1e2127'
- foreground: '0xabb2bf'
- bright_foreground: '0xe6efff'
-
- normal:
- black: '0x1e2127'
- red: '0xe06c75'
- green: '0x98c379'
- yellow: '0xd19a66'
- blue: '0x61afef'
- magenta: '0xc678dd'
- cyan: '0x56b6c2'
- white: '0x828791'
-
- bright:
- black: '0x5c6370'
- red: '0xe06c75'
- green: '0x98c379'
- yellow: '0xd19a66'
- blue: '0x61afef'
- magenta: '0xc678dd'
- cyan: '0x56b6c2'
- white: '0xe6efff'
-
- dim:
- black: '0x1e2127'
- red: '0xe06c75'
- green: '0x98c379'
- yellow: '0xd19a66'
- blue: '0x61afef'
- magenta: '0xc678dd'
- cyan: '0x56b6c2'
- white: '0x828791'
-
-cursor:
- style:
- shape: Block
- blinking: Off
-
-live_config_reload: true
-
-shell:
- program: wsl
- args:
- - sh
- - -c
- - '"cd ${HOME}; exec ${SHELL}"'
-
-key_bindings:
- - { key: 'Slash', mods: 'Control', chars: "\x1f"}
- - { key: 'Space', mods: 'Control', chars: "\x00"}
- - { key: 'Back', mods: 'Control', chars: "\x1b\x7f"}
diff --git a/.config/dunst/dunstrc b/.config/dunst/dunstrc
new file mode 100644
index 0000000..c3e8cee
--- /dev/null
+++ b/.config/dunst/dunstrc
@@ -0,0 +1,445 @@
+# See dunst(5) for all configuration options
+
+[global]
+ ### Display ###
+
+ # Which monitor should the notifications be displayed on.
+ monitor = 0
+
+ # Display notification on focused monitor. Possible modes are:
+ # mouse: follow mouse pointer
+ # keyboard: follow window with keyboard focus
+ # none: don't follow anything
+ #
+ # "keyboard" needs a window manager that exports the
+ # _NET_ACTIVE_WINDOW property.
+ # This should be the case for almost all modern window managers.
+ #
+ # If this option is set to mouse or keyboard, the monitor option
+ # will be ignored.
+ follow = none
+
+ ### Geometry ###
+
+ # dynamic width from 0 to 300
+ # width = (0, 300)
+ # constant width of 300
+ width = 400
+
+ # The maximum height of a single notification, excluding the frame.
+ height = 1000
+
+ # Position the notification in the top right corner
+ origin = top-right
+
+ # Offset from the origin
+ offset = 12x42
+
+ # Scale factor. It is auto-detected if value is 0.
+ scale = 0
+
+ # Maximum number of notification (0 means no limit)
+ notification_limit = 0
+
+ ### Progress bar ###
+
+ # Turn on the progess bar. It appears when a progress hint is passed with
+ # for example dunstify -h int:value:12
+ progress_bar = true
+
+ # Set the progress bar height. This includes the frame, so make sure
+ # it's at least twice as big as the frame width.
+ progress_bar_height = 10
+
+ # Set the frame width of the progress bar
+ progress_bar_frame_width = 1
+
+ # Set the minimum width for the progress bar
+ progress_bar_min_width = 150
+
+ # Set the maximum width for the progress bar
+ progress_bar_max_width = 300
+
+
+ # Show how many messages are currently hidden (because of
+ # notification_limit).
+ indicate_hidden = yes
+
+ # The transparency of the window. Range: [0; 100].
+ # This option will only work if a compositing window manager is
+ # present (e.g. xcompmgr, compiz, etc.). (X11 only)
+ transparency = 10
+
+ # Draw a line of "separator_height" pixel height between two
+ # notifications.
+ # Set to 0 to disable.
+ separator_height = 2
+
+ # Padding between text and separator.
+ padding = 8
+
+ # Horizontal padding.
+ horizontal_padding = 8
+
+ # Padding between text and icon.
+ text_icon_padding = 0
+
+ # Defines width in pixels of frame around the notification window.
+ # Set to 0 to disable.
+ frame_width = 1
+
+ # Defines color of the frame around the notification window.
+ frame_color = "#3e4452"
+
+ # Define a color for the separator.
+ # possible values are:
+ # * auto: dunst tries to find a color fitting to the background;
+ # * foreground: use the same color as the foreground;
+ # * frame: use the same color as the frame;
+ # * anything else will be interpreted as a X color.
+ separator_color = frame
+
+ # Sort messages by urgency.
+ sort = yes
+
+ # Don't remove messages, if the user is idle (no mouse or keyboard input)
+ # for longer than idle_threshold seconds.
+ # Set to 0 to disable.
+ # A client can set the 'transient' hint to bypass this. See the rules
+ # section for how to disable this if necessary
+ idle_threshold = 10
+
+ ### Text ###
+
+ font = Mononoki Nerd Font 10
+
+ # The spacing between lines. If the height is smaller than the
+ # font height, it will get raised to the font height.
+ line_height = 0
+
+ # Possible values are:
+ # full: Allow a small subset of html markup in notifications:
+ # bold
+ # italic
+ # strikethrough
+ # underline
+ #
+ # For a complete reference see
+ # .
+ #
+ # strip: This setting is provided for compatibility with some broken
+ # clients that send markup even though it's not enabled on the
+ # server. Dunst will try to strip the markup but the parsing is
+ # simplistic so using this option outside of matching rules for
+ # specific applications *IS GREATLY DISCOURAGED*.
+ #
+ # no: Disable markup parsing, incoming notifications will be treated as
+ # plain text. Dunst will not advertise that it has the body-markup
+ # capability if this is set as a global setting.
+ #
+ # It's important to note that markup inside the format option will be parsed
+ # regardless of what this is set to.
+ markup = full
+
+ # The format of the message. Possible variables are:
+ # %a appname
+ # %s summary
+ # %b body
+ # %i iconname (including its path)
+ # %I iconname (without its path)
+ # %p progress value if set ([ 0%] to [100%]) or nothing
+ # %n progress value if set without any extra characters
+ # %% Literal %
+ # Markup is allowed
+ format = "%s\n%b"
+
+ # Alignment of message text.
+ # Possible values are "left", "center" and "right".
+ alignment = left
+
+ # Vertical alignment of message text and icon.
+ # Possible values are "top", "center" and "bottom".
+ vertical_alignment = center
+
+ # Show age of message if message is older than show_age_threshold
+ # seconds.
+ # Set to -1 to disable.
+ show_age_threshold = 60
+
+ # Specify where to make an ellipsis in long lines.
+ # Possible values are "start", "middle" and "end".
+ ellipsize = middle
+
+ # Ignore newlines '\n' in notifications.
+ ignore_newline = no
+
+ # Stack together notifications with the same content
+ stack_duplicates = true
+
+ # Hide the count of stacked notifications with the same content
+ hide_duplicate_count = false
+
+ # Display indicators for URLs (U) and actions (A).
+ show_indicators = no
+
+ ### Icons ###
+
+ # Align icons left/right/off
+ icon_position = left
+
+ # Scale small icons up to this size, set to 0 to disable. Helpful
+ # for e.g. small files or high-dpi screens. In case of conflict,
+ # max_icon_size takes precedence over this.
+ min_icon_size = 0
+
+ # Scale larger icons down to this size, set to 0 to disable
+ max_icon_size = 48
+
+ # Paths to default icons.
+ icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/
+
+ ### History ###
+
+ # Should a notification popped up from history be sticky or timeout
+ # as if it would normally do.
+ sticky_history = yes
+
+ # Maximum amount of notifications kept in history
+ history_length = 100
+
+ ### Misc/Advanced ###
+
+ # dmenu path.
+ dmenu = dmenu -p dunst:
+
+ # Browser for opening urls in context menu.
+ browser = /usr/bin/xdg-open
+
+ # Always run rule-defined scripts, even if the notification is suppressed
+ always_run_script = true
+
+ # Define the title of the windows spawned by dunst
+ title = Dunst
+
+ # Define the class of the windows spawned by dunst
+ class = Dunst
+
+ # Define the corner radius of the notification window
+ # in pixel size. If the radius is 0, you have no rounded
+ # corners.
+ # The radius will be automatically lowered if it exceeds half of the
+ # notification height to avoid clipping text and/or icons.
+ corner_radius = 0
+
+ # Ignore the dbus closeNotification message.
+ # Useful to enforce the timeout set by dunst configuration. Without this
+ # parameter, an application may close the notification sent before the
+ # user defined timeout.
+ ignore_dbusclose = false
+
+ ### Wayland ###
+ # These settings are Wayland-specific. They have no effect when using X11
+
+ # Uncomment this if you want to let notications appear under fullscreen
+ # applications (default: overlay)
+ # layer = top
+
+ # Set this to true to use X11 output on Wayland.
+ force_xwayland = false
+
+ ### Legacy
+
+ # Use the Xinerama extension instead of RandR for multi-monitor support.
+ # This setting is provided for compatibility with older nVidia drivers that
+ # do not support RandR and using it on systems that support RandR is highly
+ # discouraged.
+ #
+ # By enabling this setting dunst will not be able to detect when a monitor
+ # is connected or disconnected which might break follow mode if the screen
+ # layout changes.
+ force_xinerama = false
+
+ ### mouse
+
+ # Defines list of actions for each mouse event
+ # Possible values are:
+ # * none: Don't do anything.
+ # * do_action: Invoke the action determined by the action_name rule. If there is no
+ # such action, open the context menu.
+ # * open_url: If the notification has exactly one url, open it. If there are multiple
+ # ones, open the context menu.
+ # * close_current: Close current notification.
+ # * close_all: Close all notifications.
+ # * context: Open context menu for the notification.
+ # * context_all: Open context menu for all notifications.
+ # These values can be strung together for each mouse event, and
+ # will be executed in sequence.
+ mouse_left_click = close_current
+ mouse_middle_click = do_action, close_current
+ mouse_right_click = context
+
+# Experimental features that may or may not work correctly. Do not expect them
+# to have a consistent behaviour across releases.
+[experimental]
+ # Calculate the dpi to use on a per-monitor basis.
+ # If this setting is enabled the Xft.dpi value will be ignored and instead
+ # dunst will attempt to calculate an appropriate dpi value for each monitor
+ # using the resolution and physical size. This might be useful in setups
+ # where there are multiple screens with very different dpi values.
+ per_monitor_dpi = false
+
+
+[urgency_low]
+ # IMPORTANT: colors have to be defined in quotation marks.
+ # Otherwise the "#" and following would be interpreted as a comment.
+ background = "#282c34"
+ foreground = "#abb2bf"
+ timeout = 10
+ # Icon for notifications with low urgency, uncomment to enable
+ #new_icon = /path/to/icon
+
+[urgency_normal]
+ background = "#282c34"
+ foreground = "#abb2bf"
+ timeout = 10
+ # Icon for notifications with normal urgency, uncomment to enable
+ #new_icon = /path/to/icon
+
+[urgency_critical]
+ background = "#282c34"
+ foreground = "#abb2bf"
+ frame_color = "#ff0000"
+ timeout = 0
+ # Icon for notifications with critical urgency, uncomment to enable
+ #new_icon = /path/to/icon
+
+# Every section that isn't one of the above is interpreted as a rules to
+# override settings for certain messages.
+#
+# Messages can be matched by
+# appname (discouraged, see desktop_entry)
+# body
+# category
+# desktop_entry
+# icon
+# match_transient
+# msg_urgency
+# stack_tag
+# summary
+#
+# and you can override the
+# background
+# foreground
+# format
+# frame_color
+# fullscreen
+# new_icon
+# set_stack_tag
+# set_transient
+# set_category
+# timeout
+# urgency
+# skip_display
+# history_ignore
+# action_name
+# word_wrap
+# ellipsize
+# alignment
+#
+# Shell-like globbing will get expanded.
+#
+# Instead of the appname filter, it's recommended to use the desktop_entry filter.
+# GLib based applications export their desktop-entry name. In comparison to the appname,
+# the desktop-entry won't get localized.
+#
+# SCRIPTING
+# You can specify a script that gets run when the rule matches by
+# setting the "script" option.
+# The script will be called as follows:
+# script appname summary body icon urgency
+# where urgency can be "LOW", "NORMAL" or "CRITICAL".
+#
+# NOTE: It might be helpful to run dunst -print in a terminal in order
+# to find fitting options for rules.
+
+# Disable the transient hint so that idle_threshold cannot be bypassed from the
+# client
+#[transient_disable]
+# match_transient = yes
+# set_transient = no
+#
+# Make the handling of transient notifications more strict by making them not
+# be placed in history.
+#[transient_history_ignore]
+# match_transient = yes
+# history_ignore = yes
+
+# fullscreen values
+# show: show the notifications, regardless if there is a fullscreen window opened
+# delay: displays the new notification, if there is no fullscreen window active
+# If the notification is already drawn, it won't get undrawn.
+# pushback: same as delay, but when switching into fullscreen, the notification will get
+# withdrawn from screen again and will get delayed like a new notification
+#[fullscreen_delay_everything]
+# fullscreen = delay
+#[fullscreen_show_critical]
+# msg_urgency = critical
+# fullscreen = show
+
+#[espeak]
+# summary = "*"
+# script = dunst_espeak.sh
+
+#[script-test]
+# summary = "*script*"
+# script = dunst_test.sh
+
+#[ignore]
+# # This notification will not be displayed
+# summary = "foobar"
+# skip_display = true
+
+[spotify]
+ appname = "Spotify"
+ format = ""
+
+[history-ignore]
+ appname = "no-history"
+ history_ignore = yes
+
+#[history-ignore]
+# # This notification will not be saved in history
+# summary = "foobar"
+# history_ignore = yes
+
+#[skip-display]
+# # This notification will not be displayed, but will be included in the history
+# summary = "foobar"
+# skip_display = yes
+
+#[signed_on]
+# appname = Pidgin
+# summary = "*signed on*"
+# urgency = low
+#
+#[signed_off]
+# appname = Pidgin
+# summary = *signed off*
+# urgency = low
+#
+#[says]
+# appname = Pidgin
+# summary = *says*
+# urgency = critical
+#
+#[twitter]
+# appname = Pidgin
+# summary = *twitter.com*
+# urgency = normal
+#
+#[stack-volumes]
+# appname = "some_volume_notifiers"
+# set_stack_tag = "volume"
+#
+# vim: ft=cfg
+
diff --git a/.config/gtk-3.0/settings.ini b/.config/gtk-3.0/settings.ini
new file mode 100644
index 0000000..37f92ad
--- /dev/null
+++ b/.config/gtk-3.0/settings.ini
@@ -0,0 +1,16 @@
+[Settings]
+gtk-theme-name=Yaru-dark
+gtk-icon-theme-name=Yaru-dark
+gtk-font-name=Sans 10
+gtk-cursor-theme-size=24
+gtk-toolbar-style=GTK_TOOLBAR_TEXT
+gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
+gtk-button-images=0
+gtk-menu-images=1
+gtk-enable-event-sounds=1
+gtk-enable-input-feedback-sounds=1
+gtk-xft-antialias=1
+gtk-xft-hinting=1
+gtk-xft-hintstyle=hintfull
+gtk-xft-rgba=rgb
+gtk-cursor-theme-name=Breeze
diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
index ce2b846..d190dfe 100644
--- a/.config/nvim/lazy-lock.json
+++ b/.config/nvim/lazy-lock.json
@@ -1,36 +1,38 @@
{
"Comment.nvim": { "branch": "master", "commit": "0236521ea582747b58869cb72f70ccfa967d2e89" },
- "LuaSnip": { "branch": "master", "commit": "f03089854a8e15594a01562fa7192d0009a6fbe7" },
+ "LuaSnip": { "branch": "master", "commit": "878ace11983444d865a72e1759dbcc331d1ace4c" },
"Navigator.nvim": { "branch": "master", "commit": "91d86506ac2a039504d5205d32a1d4bc7aa57072" },
- "bufferline.nvim": { "branch": "main", "commit": "1a3397556d194bb1f2cc530b07124ccc512c5501" },
- "cmake-tools.nvim": { "branch": "master", "commit": "edbf419e00b21e83d45f4a17edffb2035d7a0ce6" },
- "cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" },
+ "black-nvim": { "branch": "master", "commit": "8fb3efc562b67269e6f31f8653297f826534fa4b" },
+ "bufferline.nvim": { "branch": "main", "commit": "99337f63f0a3c3ab9519f3d1da7618ca4f91cffe" },
+ "cmake-tools.nvim": { "branch": "master", "commit": "13ac73e88af371552379cbdbd57fee3550ade691" },
+ "cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" },
"cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
- "fidget.nvim": { "branch": "main", "commit": "785efc604f6ffe3c3fdd2ea86262804d48863ee1" },
- "friendly-snippets": { "branch": "main", "commit": "53d3df271d031c405255e99410628c26a8f0d2b0" },
- "indent-blankline.nvim": { "branch": "master", "commit": "dbd90bb689ff10d21fee6792eb8928f0584b5860" },
- "lazy.nvim": { "branch": "main", "commit": "96584866b9c5e998cbae300594d0ccfd0c464627" },
- "lualine.nvim": { "branch": "master", "commit": "2248ef254d0a1488a72041cfb45ca9caada6d994" },
- "mason-lspconfig.nvim": { "branch": "main", "commit": "4eb8e15e3c0757303d4c6dea64d2981fc679e990" },
- "mason.nvim": { "branch": "main", "commit": "41e75af1f578e55ba050c863587cffde3556ffa6" },
- "neodev.nvim": { "branch": "main", "commit": "1676d2c24186fc30005317e0306d20c639b2351b" },
- "nvim-autopairs": { "branch": "master", "commit": "0f04d78619cce9a5af4f355968040f7d675854a1" },
- "nvim-cmp": { "branch": "main", "commit": "0b751f6beef40fd47375eaf53d3057e0bfa317e4" },
+ "fidget.nvim": { "branch": "main", "commit": "ef99df04a1c53a453602421bc0f756997edc8289" },
+ "friendly-snippets": { "branch": "main", "commit": "d0610077b6129cf9f7f78afbe3a1425d60f6e2f1" },
+ "indent-blankline.nvim": { "branch": "master", "commit": "d98f537c3492e87b6dc6c2e3f66ac517528f406f" },
+ "lazy.nvim": { "branch": "main", "commit": "24fa2a97085ca8a7220b5b078916f81e316036fd" },
+ "lualine.nvim": { "branch": "master", "commit": "0a5a66803c7407767b799067986b4dc3036e1983" },
+ "mason-lspconfig.nvim": { "branch": "main", "commit": "a4caa0d083aab56f6cd5acf2d42331b74614a585" },
+ "mason.nvim": { "branch": "main", "commit": "49ff59aded1047a773670651cfa40e76e63c6377" },
+ "neodev.nvim": { "branch": "main", "commit": "ce9a2e8eaba5649b553529c5498acb43a6c317cd" },
+ "nvim-autopairs": { "branch": "master", "commit": "c15de7e7981f1111642e7e53799e1211d4606cb9" },
+ "nvim-cmp": { "branch": "main", "commit": "5260e5e8ecadaf13e6b82cf867a909f54e15fd07" },
"nvim-lastplace": { "branch": "main", "commit": "0bb6103c506315044872e0f84b1f736c4172bb20" },
- "nvim-lspconfig": { "branch": "master", "commit": "694aaec65733e2d54d393abf80e526f86726c988" },
- "nvim-notify": { "branch": "master", "commit": "e4a2022f4fec2d5ebc79afa612f96d8b11c627b3" },
- "nvim-tree.lua": { "branch": "master", "commit": "05f55c1fd6470b31627655c528245794e3cd4b2c" },
- "nvim-treesitter": { "branch": "master", "commit": "0791b5ebb590a2d44e20640c52679df1fc42e8ab" },
- "nvim-treesitter-textobjects": { "branch": "master", "commit": "ec1c5bdb3d87ac971749fa6c7dbc2b14884f1f6a" },
- "nvim-web-devicons": { "branch": "master", "commit": "5efb8bd06841f91f97c90e16de85e96d57e9c862" },
- "onedark.nvim": { "branch": "master", "commit": "e7c656ac6b6460aaab817cbd0c9d5c043eda4b43" },
- "plenary.nvim": { "branch": "master", "commit": "55d9fe89e33efd26f532ef20223e5f9430c8b0c0" },
- "telescope-fzf-native.nvim": { "branch": "main", "commit": "6c921ca12321edaa773e324ef64ea301a1d0da62" },
- "telescope.nvim": { "branch": "0.1.x", "commit": "d90956833d7c27e73c621a61f20b29fdb7122709" },
- "vim-fugitive": { "branch": "master", "commit": "46eaf8918b347906789df296143117774e827616" },
+ "nvim-lspconfig": { "branch": "master", "commit": "7cb90cf656139dc59cf86206946ec85571671b5b" },
+ "nvim-notify": { "branch": "master", "commit": "d333b6f167900f6d9d42a59005d82919830626bf" },
+ "nvim-tree.lua": { "branch": "master", "commit": "5a87ffe35c4739ffb6b62052572583ad277a20ae" },
+ "nvim-treesitter": { "branch": "master", "commit": "5c924407cf110e9da4f3ba02ffed127b4198ad89" },
+ "nvim-treesitter-textobjects": { "branch": "master", "commit": "3557e41418b4a6c5b85d5d64abe94c9c50fa9b14" },
+ "nvim-web-devicons": { "branch": "master", "commit": "b77921fdc44833c994fdb389d658ccbce5490c16" },
+ "onedark.nvim": { "branch": "master", "commit": "8e4b79b0e6495ddf29552178eceba1e147e6cecf" },
+ "plenary.nvim": { "branch": "master", "commit": "a3e3bc82a3f95c5ed0d7201546d5d2c19b20d683" },
+ "telescope-fzf-native.nvim": { "branch": "main", "commit": "9ef21b2e6bb6ebeaf349a0781745549bbb870d27" },
+ "telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
+ "trouble.nvim": { "branch": "main", "commit": "cf81aaca820017388fc630c534774c95b58233f2" },
+ "vim-fugitive": { "branch": "master", "commit": "4f59455d2388e113bd510e85b310d15b9228ca0d" },
"vim-rhubarb": { "branch": "master", "commit": "ee69335de176d9325267b0fd2597a22901d927b1" },
"vim-sleuth": { "branch": "master", "commit": "1cc4557420f215d02c4d2645a748a816c220e99b" },
"vim-surround": { "branch": "master", "commit": "3d188ed2113431cf8dac77be61b842acb64433d9" },
"vim-tmux": { "branch": "master", "commit": "cfe76281efc29890548cf9eedd42ad51c7a1faf0" },
- "vim-wakatime": { "branch": "master", "commit": "87c6861ea81700ec4a6a27c81413cf07cb2c883c" }
+ "vim-wakatime": { "branch": "master", "commit": "3cb40867cb5a3120f9bef76eff88edc7f1dc1a23" }
}
\ No newline at end of file
diff --git a/.config/nvim/lua/config/autocmd.lua b/.config/nvim/lua/config/autocmd.lua
index 325e8c2..dcd5132 100644
--- a/.config/nvim/lua/config/autocmd.lua
+++ b/.config/nvim/lua/config/autocmd.lua
@@ -1,18 +1,19 @@
-- Open NvimTree on startup
-local function open_nvim_tree(data)
- local real_file = vim.fn.filereadable(data.file) == 1
- local no_name = data.file == "" and vim.bo[data.buf].buftype == ""
- local directory = vim.fn.isdirectory(data.file) == 1
+vim.api.nvim_create_autocmd({ "VimEnter" }, {
+ callback = function(data)
+ local real_file = vim.fn.filereadable(data.file) == 1
+ local no_name = data.file == "" and vim.bo[data.buf].buftype == ""
+ local directory = vim.fn.isdirectory(data.file) == 1
- if real_file or no_name then
- require("nvim-tree.api").tree.toggle({ focus = false, find_file = true, })
- elseif directory then
- vim.cmd.enew()
- vim.cmd.cd(data.file)
- require("nvim-tree.api").tree.open()
+ if real_file or no_name then
+ require("nvim-tree.api").tree.toggle({ focus = false, find_file = true, })
+ elseif directory then
+ vim.cmd.enew()
+ vim.cmd.cd(data.file)
+ require("nvim-tree.api").tree.open()
+ end
end
-end
-vim.api.nvim_create_autocmd({ "VimEnter" }, { callback = open_nvim_tree })
+})
-- Resotre cursor on exit
-- vim.api.nvim_create_autocmd("VimLeave", {
diff --git a/.config/nvim/lua/config/lsp/cmake.lua b/.config/nvim/lua/config/lsp/cmake.lua
new file mode 100644
index 0000000..a564707
--- /dev/null
+++ b/.config/nvim/lua/config/lsp/cmake.lua
@@ -0,0 +1 @@
+return {}
diff --git a/.config/nvim/lua/config/lsp/gopls.lua b/.config/nvim/lua/config/lsp/gopls.lua
new file mode 100644
index 0000000..a564707
--- /dev/null
+++ b/.config/nvim/lua/config/lsp/gopls.lua
@@ -0,0 +1 @@
+return {}
diff --git a/.config/nvim/lua/config/lsp/init.lua b/.config/nvim/lua/config/lsp/init.lua
index 9ce5d42..a38c85f 100644
--- a/.config/nvim/lua/config/lsp/init.lua
+++ b/.config/nvim/lua/config/lsp/init.lua
@@ -4,7 +4,38 @@ require('mason-lspconfig').setup()
local mason_lspconfig = require('mason-lspconfig')
local on_attach = function(_, bufnr)
- require("config.lsp.keybinds").init_keymap(bufnr)
+ local nmap = function(keys, func, desc)
+ if desc then
+ desc = 'LSP: ' .. desc
+ end
+
+ vim.keymap.set('n', keys, func, { buffer = bufnr, desc = desc })
+ end
+
+ nmap('rn', vim.lsp.buf.rename, '[R]e[n]ame')
+ nmap('ca', vim.lsp.buf.code_action, '[C]ode [A]ction')
+
+ nmap('gd', require('telescope.builtin').lsp_definitions, '[G]oto [D]efinition')
+ nmap('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences')
+ nmap('gI', require('telescope.builtin').lsp_implementations, '[G]oto [I]mplementation')
+ nmap('D', require('telescope.builtin').lsp_type_definitions, 'Type [D]efinition')
+ nmap("i", vim.diagnostic.open_float)
+
+ nmap('ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols')
+ nmap('ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols')
+
+ -- See `:help K` for why this keymap
+ nmap('K', vim.lsp.buf.hover, 'Hover Documentation')
+ nmap('', vim.lsp.buf.signature_help, 'Signature Documentation')
+
+ -- Lesser used LSP functionality
+ nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration')
+ nmap('wa', vim.lsp.buf.add_workspace_folder, '[W]orkspace [A]dd Folder')
+ nmap('wr', vim.lsp.buf.remove_workspace_folder, '[W]orkspace [R]emove Folder')
+ nmap('wl', function()
+ print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
+ end, '[W]orkspace [L]ist Folders')
+ -- require("config.lsp.keybinds").init_keymap(bufnr)
vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_)
vim.lsp.buf.format()
@@ -15,6 +46,9 @@ local servers = {
clangd = require("config.lsp.clangd"),
pyright = require("config.lsp.pyright"),
lua_ls = require("config.lsp.lua_ls"),
+ gopls = require("config.lsp.gopls"),
+ rust_analyzer = require("config.lsp.rust_analyzer"),
+ cmake = require("config.lsp.cmake"),
}
local capabilities = vim.lsp.protocol.make_client_capabilities()
diff --git a/.config/nvim/lua/config/lsp/keybinds.lua b/.config/nvim/lua/config/lsp/keybinds.lua
index cc3a3bd..a564707 100644
--- a/.config/nvim/lua/config/lsp/keybinds.lua
+++ b/.config/nvim/lua/config/lsp/keybinds.lua
@@ -1,36 +1 @@
-local M = {}
-
-function M.init_keymap(bufnr)
- local nmap = function(keys, func, desc)
- if desc then
- desc = 'LSP: ' .. desc
- end
-
- vim.keymap.set('n', keys, func, { buffer = bufnr, desc = desc })
- end
-
- nmap('rn', vim.lsp.buf.rename, '[R]e[n]ame')
- nmap('ca', vim.lsp.buf.code_action, '[C]ode [A]ction')
-
- nmap('gd', require('telescope.builtin').lsp_definitions, '[G]oto [D]efinition')
- nmap('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences')
- nmap('gI', require('telescope.builtin').lsp_implementations, '[G]oto [I]mplementation')
- nmap('D', require('telescope.builtin').lsp_type_definitions, 'Type [D]efinition')
-
- nmap('ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols')
- nmap('ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols')
-
- -- See `:help K` for why this keymap
- nmap('K', vim.lsp.buf.hover, 'Hover Documentation')
- nmap('', vim.lsp.buf.signature_help, 'Signature Documentation')
-
- -- Lesser used LSP functionality
- nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration')
- nmap('wa', vim.lsp.buf.add_workspace_folder, '[W]orkspace [A]dd Folder')
- nmap('wr', vim.lsp.buf.remove_workspace_folder, '[W]orkspace [R]emove Folder')
- nmap('wl', function()
- print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
- end, '[W]orkspace [L]ist Folders')
-end
-
-return M
+return {}
diff --git a/.config/nvim/lua/config/lsp/rust_analyzer.lua b/.config/nvim/lua/config/lsp/rust_analyzer.lua
new file mode 100644
index 0000000..a564707
--- /dev/null
+++ b/.config/nvim/lua/config/lsp/rust_analyzer.lua
@@ -0,0 +1 @@
+return {}
diff --git a/.config/nvim/lua/config/mappings.lua b/.config/nvim/lua/config/mappings.lua
index 557b78b..5730d2b 100644
--- a/.config/nvim/lua/config/mappings.lua
+++ b/.config/nvim/lua/config/mappings.lua
@@ -2,15 +2,15 @@ local map = vim.keymap.set
-- Unbind keys
map('n', '', '')
-map('v', 'K', '')
+-- map('v', 'K', '')
-- Movement between buffers
-map({ 'n', 'v', 'i' }, '', ':bp')
-map({ 'n', 'v', 'i' }, '', ':bn')
+map({ 'n', 'v' }, '', ':bp', { silent = true })
+map({ 'n', 'v' }, '', ':bn', { silent = true })
-- Remap for dealing with word wrap
-map('n', 'k', 'v:count == 0 ? "gk" : "k"', { expr = true, silent = true })
-map('n', 'j', 'v:count == 0 ? "gj" : "j"', { expr = true, silent = true })
+map({ 'n', 'v' }, 'k', 'v:count == 0 ? "gk" : "k"', { expr = true, silent = true })
+map({ 'n', 'v' }, 'j', 'v:count == 0 ? "gj" : "j"', { expr = true, silent = true })
-- Exit buffers/nvim with
map('n', 'q', function() require('utils.close_buffer').close_buffer() end)
@@ -18,6 +18,12 @@ map('n', '1', function() require('utils.close_buffer').close_buffer(true
map('n', 'Q', ':%bd | quit')
map('n', '!', ':%bd! | quit!')
map('n', 'w', ':write')
+map('n', 'W', function() vim.cmd.write(vim.fn.input("File: ")) end)
+map('n', 'e', ':e')
+
+-- Duplicate leader feats to gradually move to
+map('n', '', function() require('utils.close_buffer').close_buffer() end)
+map('n', '', function() require('utils.close_buffer').close_buffer(true) end)
-- Copy and paste from clipboard
map('n', 'y', '"+yy')
@@ -25,7 +31,16 @@ map('v', 'y', '"+y')
map({ 'n', 'v' }, 'p', '"+p')
map({ 'n', 'v' }, 'P', '"+P')
+-- buffer size
+map({ 'n', 'v' }, 'n', '10<')
+map({ 'n', 'v' }, 'm', '10>')
+map({ 'n', 'v' }, 'N', '6-')
+map({ 'n', 'v' }, 'M', '6+')
+
-- Remap to remove last word
map('i', '', '')
map('n', 'F', function() vim.lsp.buf.format() end)
+
+map('n', '', ':m-2', { silent = true })
+map('n', '', ':m+1', { silent = true })
diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
index b3999e2..6dec8e9 100644
--- a/.config/nvim/lua/config/options.lua
+++ b/.config/nvim/lua/config/options.lua
@@ -1,3 +1,4 @@
+-- Highlight search results
vim.o.hlsearch = true
-- Enable line numbers
@@ -7,8 +8,12 @@ vim.wo.relativenumber = true
-- Enable mouse mode
vim.o.mouse = 'a'
--- Enable break indent
+-- Indentation
vim.o.breakindent = true
+vim.o.tabstop = 4
+vim.o.shiftwidth = 4
+vim.o.expandtab = true
+vim.o.smartindent = false
-- Save undo history
vim.o.undofile = true
diff --git a/.config/nvim/lua/config/plugins/cmake-tools.lua b/.config/nvim/lua/config/plugins/cmake-tools.lua
index f5f4854..c8ab65b 100644
--- a/.config/nvim/lua/config/plugins/cmake-tools.lua
+++ b/.config/nvim/lua/config/plugins/cmake-tools.lua
@@ -2,7 +2,7 @@ require("cmake-tools").setup {
cmake_command = "cmake", -- this is used to specify cmake command path
cmake_regenerate_on_save = true, -- auto generate when save CMakeLists.txt
cmake_generate_options = { "-DCMAKE_EXPORT_COMPILE_COMMANDS=1" }, -- this will be passed when invoke `CMakeGenerate`
- cmake_build_options = {}, -- this will be passed when invoke `CMakeBuild`
+ cmake_build_options = { "-j14" }, -- this will be passed when invoke `CMakeBuild`
-- support macro expansion:
-- ${kit}
-- ${kitGenerator}
@@ -60,16 +60,15 @@ require("cmake-tools").setup {
},
},
cmake_notifications = {
- enabled = false, -- show cmake execution progress in nvim-notify
+ enabled = true, -- show cmake execution progress in nvim-notify
spinner = { "⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏" }, -- icons used for progress display
refresh_rate_ms = 100, -- how often to iterate icons
},
}
-local map = vim.keymap.set
-
-- Mappings
-map('n', 'b', ':CMakeBuild')
-map('n', 'c', ':CMakeClose')
-map('n', 'r', ':CMakeRun')
+vim.keymap.set('n', 'b', ':CMakeBuild')
+vim.keymap.set('n', 'c', ':CMakeClose')
+vim.keymap.set('n', 'r', ':CMakeRun')
+vim.keymap.set('n', 'G', ':CMakeGenerate')
diff --git a/.config/nvim/lua/config/plugins/comment.lua b/.config/nvim/lua/config/plugins/comment.lua
index b0d7d4d..23af015 100644
--- a/.config/nvim/lua/config/plugins/comment.lua
+++ b/.config/nvim/lua/config/plugins/comment.lua
@@ -1,8 +1,8 @@
local map = vim.keymap.set
-map('n', '', require('Comment.api').toggle.linewise.current)
-map('i', '', require('Comment.api').toggle.linewise.current)
-map('x', '', function()
+map({ 'n', 'i' }, '', require('Comment.api').toggle.linewise.current)
+
+map('v', '', function()
vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes('', true, false, true), 'nx', false)
require('Comment.api').toggle.linewise(vim.fn.visualmode())
end
diff --git a/.config/nvim/lua/config/plugins/init.lua b/.config/nvim/lua/config/plugins/init.lua
index 1771884..d5aeefa 100644
--- a/.config/nvim/lua/config/plugins/init.lua
+++ b/.config/nvim/lua/config/plugins/init.lua
@@ -7,3 +7,4 @@ require('config.plugins.nvim-tree')
require('config.plugins.telescope')
require('config.plugins.treesitter')
require('config.plugins.navigator')
+require('config.plugins.trouble')
diff --git a/.config/nvim/lua/config/plugins/nvim-autopairs.lua b/.config/nvim/lua/config/plugins/nvim-autopairs.lua
index c7064c7..261f664 100644
--- a/.config/nvim/lua/config/plugins/nvim-autopairs.lua
+++ b/.config/nvim/lua/config/plugins/nvim-autopairs.lua
@@ -1,4 +1,3 @@
require('nvim-autopairs').setup({
disable_filetype = { "TelescopePrompt" , "vim" },
- enable_check_bracket_line = false,
})
diff --git a/.config/nvim/lua/config/plugins/nvim-tree.lua b/.config/nvim/lua/config/plugins/nvim-tree.lua
index 6e49bfd..bce4fae 100644
--- a/.config/nvim/lua/config/plugins/nvim-tree.lua
+++ b/.config/nvim/lua/config/plugins/nvim-tree.lua
@@ -1,6 +1,15 @@
vim.g.loaded_netrw = 1
vim.g.loaded_netrwPlugin = 1
-require("nvim-tree").setup()
+require("nvim-tree").setup({
+ update_focused_file = {
+ enable = true,
+ update_root = false,
+ ignore_list = { "help" },
+ },
+ filters = {
+ custom = { '.git' },
+ },
+})
-vim.keymap.set('n', '', ':NvimTreeToggle')
+vim.keymap.set('n', '', ':NvimTreeToggle', { silent=true })
diff --git a/.config/nvim/lua/config/plugins/telescope.lua b/.config/nvim/lua/config/plugins/telescope.lua
index 44d80c9..145fe01 100644
--- a/.config/nvim/lua/config/plugins/telescope.lua
+++ b/.config/nvim/lua/config/plugins/telescope.lua
@@ -9,18 +9,15 @@ require('telescope').setup {
},
}
--- Enable telescope fzf native, if installed
pcall(require('telescope').load_extension, 'fzf')
--- See `:help telescope.builtin`
vim.keymap.set('n', '?', require('telescope.builtin').oldfiles, { desc = '[?] Find recently opened files' })
--- vim.keymap.set('n', '', require('telescope.builtin').buffers, { desc = '[ ] Find existing buffers' })
vim.keymap.set('n', '/', function()
- -- You can pass additional configuration to telescope to change theme, layout, etc.
require('telescope.builtin').current_buffer_fuzzy_find(require('telescope.themes').get_dropdown {
winblend = 10,
previewer = false,
})
+
end, { desc = '[/] Fuzzily search in current buffer' })
vim.keymap.set('n', 'gf', require('telescope.builtin').git_files, { desc = 'Search [G]it [F]iles' })
@@ -30,3 +27,4 @@ vim.keymap.set('n', 'sw', require('telescope.builtin').grep_string, { de
vim.keymap.set('n', 'sg', require('telescope.builtin').live_grep, { desc = '[S]earch by [G]rep' })
vim.keymap.set('n', 'sd', require('telescope.builtin').diagnostics, { desc = '[S]earch [D]iagnostics' })
vim.keymap.set('n', 'sr', require('telescope.builtin').resume, { desc = '[S]earch [R]esume' })
+vim.keymap.set('n', 'sm', require('telescope.builtin').treesitter)
diff --git a/.config/nvim/lua/config/plugins/treesitter.lua b/.config/nvim/lua/config/plugins/treesitter.lua
index 6e30f54..03eda3e 100644
--- a/.config/nvim/lua/config/plugins/treesitter.lua
+++ b/.config/nvim/lua/config/plugins/treesitter.lua
@@ -4,7 +4,7 @@ vim.defer_fn(function()
ensure_installed = { 'c', 'cpp', 'go', 'lua', 'python', 'rust', 'tsx', 'javascript', 'typescript', 'vimdoc', 'vim', 'bash' },
-- Autoinstall languages that are not installed. Defaults to false (but you can change for yourself!)
- auto_install = false,
+ auto_install = true,
highlight = { enable = true },
indent = { enable = true },
@@ -51,15 +51,7 @@ vim.defer_fn(function()
['[]'] = '@class.outer',
},
},
- swap = {
- enable = true,
- swap_next = {
- ['a'] = '@parameter.inner',
- },
- swap_previous = {
- ['A'] = '@parameter.inner',
- },
- },
+ swap = { enable = false, },
},
}
end, 0)
diff --git a/.config/nvim/lua/config/plugins/trouble.lua b/.config/nvim/lua/config/plugins/trouble.lua
new file mode 100644
index 0000000..a4e5c5b
--- /dev/null
+++ b/.config/nvim/lua/config/plugins/trouble.lua
@@ -0,0 +1,6 @@
+vim.keymap.set("n", "xx", function() require("trouble").toggle() end)
+vim.keymap.set("n", "xw", function() require("trouble").toggle("workspace_diagnostics") end)
+vim.keymap.set("n", "xd", function() require("trouble").toggle("document_diagnostics") end)
+vim.keymap.set("n", "xq", function() require("trouble").toggle("quickfix") end)
+vim.keymap.set("n", "xl", function() require("trouble").toggle("loclist") end)
+vim.keymap.set("n", "gR", function() require("trouble").toggle("lsp_references") end)
diff --git a/.config/nvim/lua/plugins/indent-blankline.lua b/.config/nvim/lua/plugins/indent-blankline.lua
index 75cb3f1..e445b28 100644
--- a/.config/nvim/lua/plugins/indent-blankline.lua
+++ b/.config/nvim/lua/plugins/indent-blankline.lua
@@ -1,8 +1,5 @@
return {
- -- Add indentation guides even on blank lines
'lukas-reineke/indent-blankline.nvim',
- -- Enable `lukas-reineke/indent-blankline.nvim`
- -- See `:help ibl`
main = 'ibl',
opts = {},
}
diff --git a/.config/nvim/lua/plugins/init.lua b/.config/nvim/lua/plugins/init.lua
index fa1c230..85e8930 100644
--- a/.config/nvim/lua/plugins/init.lua
+++ b/.config/nvim/lua/plugins/init.lua
@@ -1,17 +1,19 @@
return {
+ 'Civitasv/cmake-tools.nvim',
+ 'averms/black-nvim',
'numToStr/Navigator.nvim',
+ 'nvim-lualine/lualine.nvim',
+ 'nvim-tree/nvim-tree.lua',
+ 'nvim-tree/nvim-web-devicons',
+ 'rcarriga/nvim-notify',
+ 'tmux-plugins/vim-tmux',
'tpope/vim-fugitive',
'tpope/vim-rhubarb',
'tpope/vim-sleuth',
'tpope/vim-surround',
- 'tmux-plugins/vim-tmux',
- 'nvim-lualine/lualine.nvim',
- 'nvim-tree/nvim-tree.lua',
- 'nvim-tree/nvim-web-devicons',
- 'Civitasv/cmake-tools.nvim',
- 'rcarriga/nvim-notify',
- { 'numToStr/Comment.nvim', opts = {} },
{ 'akinsho/bufferline.nvim', config = {} },
{ 'ethanholz/nvim-lastplace', config = {} },
- { 'wakatime/vim-wakatime', event = 'VeryLazy' },
+ { 'numToStr/Comment.nvim', opts = {} },
+ -- { 'wakatime/vim-wakatime', event = 'VeryLazy' },
+ { "folke/trouble.nvim", dependencies = { "nvim-tree/nvim-web-devicons" }, opts = { }, }
}
diff --git a/.config/nvim/lua/plugins/telescope.lua b/.config/nvim/lua/plugins/telescope.lua
index a7acd6f..067db6f 100644
--- a/.config/nvim/lua/plugins/telescope.lua
+++ b/.config/nvim/lua/plugins/telescope.lua
@@ -3,9 +3,6 @@ return {
branch = '0.1.x',
dependencies = {
'nvim-lua/plenary.nvim',
- {
- 'nvim-telescope/telescope-fzf-native.nvim',
- build = 'make',
- },
+ { 'nvim-telescope/telescope-fzf-native.nvim', build = 'make', },
},
}
diff --git a/.config/nvim/lua/plugins/tmux-nvim.lua b/.config/nvim/lua/plugins/tmux-nvim.lua
index 8224205..17c0688 100644
--- a/.config/nvim/lua/plugins/tmux-nvim.lua
+++ b/.config/nvim/lua/plugins/tmux-nvim.lua
@@ -1,7 +1,3 @@
--- return {
--- 'aserowy/tmux.nvim',
--- event = "VeryLazy",
--- }
return {
"numToStr/Navigator.nvim",
}
diff --git a/.config/picom.conf b/.config/picom.conf
new file mode 100644
index 0000000..da21c36
--- /dev/null
+++ b/.config/picom.conf
@@ -0,0 +1,2 @@
+backend = "glx";
+vsync = true;
diff --git a/.config/taskell/bindings.ini b/.config/taskell/bindings.ini
new file mode 100644
index 0000000..ab71078
--- /dev/null
+++ b/.config/taskell/bindings.ini
@@ -0,0 +1,54 @@
+# general
+quit = q
+undo = u
+redo = r
+search = /
+help = ?
+due = !
+
+# navigation
+previous = k
+next = j
+left = h
+right = l
+bottom = G
+top = g
+
+# new tasks
+new = a
+newAbove = O
+newBelow = o
+duplicate = +
+
+# editing tasks
+edit = e, A, i
+clear = C
+delete = D
+detail =
+dueDate = @
+clearDate =
+
+# moving tasks
+moveUp = K
+moveDown = J
+# move to top of previous list
+moveLeftTop = ˙
+# move to top of next list
+moveRightTop = ¬
+# move to bottom of previous list
+moveLeftBottom = H
+# move to bottom of next list
+moveRightBottom = L
+# move to bottom of last list
+complete =
+# move to top of last list
+completeToTop = T
+# select a list to move to
+moveMenu = m
+
+# lists
+listNew = N
+listEdit = E
+listDelete = X
+listRight = >
+listLeft = <
diff --git a/.config/taskell/config.ini b/.config/taskell/config.ini
new file mode 100644
index 0000000..a00b5cc
--- /dev/null
+++ b/.config/taskell/config.ini
@@ -0,0 +1,17 @@
+[general]
+filename = TASKS.md
+
+[layout]
+padding = 1
+column_width = 30
+column_padding = 3
+description_indicator = "≡"
+statusbar = false
+
+[markdown]
+title = "##"
+task = "-"
+summary = " >"
+due = " @"
+subtask = " *"
+localTimes = false
diff --git a/.config/taskell/template.md b/.config/taskell/template.md
new file mode 100644
index 0000000..4da1daf
--- /dev/null
+++ b/.config/taskell/template.md
@@ -0,0 +1,8 @@
+## To Do
+
+
+## Doing
+
+
+## Done
+
diff --git a/.config/taskell/theme.ini b/.config/taskell/theme.ini
new file mode 100644
index 0000000..1228247
--- /dev/null
+++ b/.config/taskell/theme.ini
@@ -0,0 +1,25 @@
+[other]
+
+; list title
+title.fg = green
+
+; status bar
+statusBar.bg = blue
+statusBar.fg = black
+
+; current list title
+titleCurrent.fg = blue
+
+; current task
+taskCurrent.fg = magenta
+
+; subtasks
+; selected
+subtaskCurrent.fg = magenta
+; incomplete
+subtaskIncomplete.fg = blue
+; complete
+subtaskComplete.fg = yellow
+
+; disabled
+disabled.fg = yellow
diff --git a/.config/tmux/keybinds.conf b/.config/tmux/keybinds.conf
index 91f4b97..f06e0f9 100644
--- a/.config/tmux/keybinds.conf
+++ b/.config/tmux/keybinds.conf
@@ -10,8 +10,8 @@ bind i next-window
bind n new-window -c "#{pane_current_path}"
-bind k split-window -v
-bind l split-window -h
+bind k split-window -v -c "#{pane_current_path}"
+bind l split-window -h -c "#{pane_current_path}"
# Rebind command key to ;
bind \; command-prompt
diff --git a/.config/tmux/plugins.conf b/.config/tmux/plugins.conf
index 3fd32af..6e6f90d 100644
--- a/.config/tmux/plugins.conf
+++ b/.config/tmux/plugins.conf
@@ -15,7 +15,9 @@ set -g @batt_icon_charge_tier1 '! !'
# Change date and time format
set -g @onedark_time_format "%I:%M %p"
set -g @onedark_date_format "%D"
-set -g @onedark_widgets "#{battery_icon_charge} #{battery_percentage}%"
+set -g @onedark_widgets "#{battery_icon_charge} #{battery_percentage}"
+
+set-environment -g TMUX_PLUGIN_MANAGER_PATH '~/.local/share/tmux-plugins'
# Run tmux-plugin-manager
run '~/.local/share/tmux-plugins/tpm/tpm'
diff --git a/.config/tmux/tmux.conf b/.config/tmux/tmux.conf
index 4f6b625..db056df 100644
--- a/.config/tmux/tmux.conf
+++ b/.config/tmux/tmux.conf
@@ -2,8 +2,8 @@
setw -g mouse on
# Enable 256 color mode and TrueColor
-set -s default-terminal "tmux-256color"
-set -as terminal-overrides ",xterm*:Tc"
+set -g default-terminal "tmux-256color"
+set -ag terminal-overrides ",xterm-256color:RGB"
# Get rid of nvim escape delay
set -s escape-time 0
diff --git a/.config/zsh/.zcompdump b/.config/zsh/.zcompdump
new file mode 100644
index 0000000..59599ca
--- /dev/null
+++ b/.config/zsh/.zcompdump
@@ -0,0 +1,2104 @@
+#files: 1006 version: 5.9
+
+_comps=(
+'-' '_precommand'
+'.' '_source'
+'5g' '_go'
+'5l' '_go'
+'6g' '_go'
+'6l' '_go'
+'8g' '_go'
+'8l' '_go'
+'a2dismod' '_a2utils'
+'a2dissite' '_a2utils'
+'a2enmod' '_a2utils'
+'a2ensite' '_a2utils'
+'a2ps' '_a2ps'
+'aaaa' '_hosts'
+'aap' '_aap'
+'abcde' '_abcde'
+'ack' '_ack'
+'ack2' '_ack'
+'ack-grep' '_ack'
+'ack-standalone' '_ack'
+'acpi' '_acpi'
+'acpitool' '_acpitool'
+'acroread' '_acroread'
+'adb' '_adb'
+'add-zle-hook-widget' '_add-zle-hook-widget'
+'add-zsh-hook' '_add-zsh-hook'
+'admin' '_sccs'
+'alacritty' '_alacritty'
+'ali' '_mh'
+'alias' '_alias'
+'amaya' '_webbrowser'
+'analyseplugin' '_analyseplugin'
+'animate' '_imagemagick'
+'anno' '_mh'
+'ansible' '_ansible'
+'ansible-config' '_ansible'
+'ansible-console' '_ansible'
+'ansible-doc' '_ansible'
+'ansible-galaxy' '_ansible'
+'ansible-inventory' '_ansible'
+'ansible-playbook' '_ansible'
+'ansible-pull' '_ansible'
+'ansible-vault' '_ansible'
+'ant' '_ant'
+'antiword' '_antiword'
+'aodh' '_openstack'
+'aoss' '_precommand'
+'apache2ctl' '_apachectl'
+'apachectl' '_apachectl'
+'aplay' '_alsa-utils'
+'apm' '_apm'
+'appletviewer' '_java'
+'apropos' '_man'
+'apt' '_apt'
+'apt-cache' '_apt'
+'apt-cdrom' '_apt'
+'apt-config' '_apt'
+'apt-file' '_apt-file'
+'apt-get' '_apt'
+'aptitude' '_aptitude'
+'apt-mark' '_apt'
+'apt-move' '_apt-move'
+'apt-show-versions' '_apt-show-versions'
+'apvlv' '_pdf'
+'arduino-ctags' '_ctags'
+'arecord' '_alsa-utils'
+'arena' '_webbrowser'
+'_arguments' '__arguments'
+'arp' '_arp'
+'arping' '_arping'
+'-array-value-' '_value'
+'asciidoctor' '_asciidoctor'
+'asciinema' '_asciinema'
+'ash' '_sh'
+'-assign-parameter-' '_assign'
+'at' '_at'
+'atq' '_at'
+'atrm' '_at'
+'attr' '_attr'
+'augtool' '_augeas'
+'auto-apt' '_auto-apt'
+'autoload' '_typeset'
+'avahi-browse' '_avahi'
+'avahi-browse-domains' '_avahi'
+'avahi-resolve' '_avahi'
+'avahi-resolve-address' '_avahi'
+'avahi-resolve-host-name' '_avahi'
+'awk' '_awk'
+'axi-cache' '_axi-cache'
+'b2sum' '_md5sum'
+'barbican' '_openstack'
+'base32' '_base64'
+'base64' '_base64'
+'basename' '_basename'
+'basenc' '_basenc'
+'bash' '_bash'
+'batch' '_at'
+'baz' '_baz'
+'beadm' '_beadm'
+'beep' '_beep'
+'bg' '_jobs_bg'
+'bibtex' '_bibtex'
+'bindkey' '_bindkey'
+'bison' '_bison'
+'bmake' '_make'
+'bogofilter' '_bogofilter'
+'bogotune' '_bogofilter'
+'bogoutil' '_bogofilter'
+'bootctl' '_bootctl'
+'bpython' '_bpython'
+'bpython2' '_bpython'
+'bpython2-gtk' '_bpython'
+'bpython2-urwid' '_bpython'
+'bpython3' '_bpython'
+'bpython3-gtk' '_bpython'
+'bpython3-urwid' '_bpython'
+'bpython-gtk' '_bpython'
+'bpython-urwid' '_bpython'
+'-brace-parameter-' '_brace_parameter'
+'brctl' '_brctl'
+'bsdconfig' '_bsdconfig'
+'bsdgrep' '_grep'
+'bsdinstall' '_bsdinstall'
+'bsdtar' '_tar'
+'btdownloadcurses' '_bittorrent'
+'btdownloadgui' '_bittorrent'
+'btdownloadheadless' '_bittorrent'
+'btlaunchmany' '_bittorrent'
+'btlaunchmanycurses' '_bittorrent'
+'btmakemetafile' '_bittorrent'
+'btreannounce' '_bittorrent'
+'btrename' '_bittorrent'
+'btrfs' '_btrfs'
+'bts' '_bts'
+'btshowmetainfo' '_bittorrent'
+'bttrack' '_bittorrent'
+'bug' '_bug'
+'buildhash' '_ispell'
+'builtin' '_builtin'
+'bunzip2' '_bzip2'
+'burst' '_mh'
+'busctl' '_busctl'
+'bwrap' '_bwrap'
+'bzcat' '_bzip2'
+'bzegrep' '_grep'
+'bzfgrep' '_grep'
+'bzgrep' '_grep'
+'bzip2' '_bzip2'
+'bzip2recover' '_bzip2'
+'bzr' '_bzr'
+'c++' '_gcc'
+'cabal' '_cabal'
+'caffeinate' '_caffeinate'
+'cal' '_cal'
+'calendar' '_calendar'
+'cat' '_cat'
+'catchsegv' '_precommand'
+'cc' '_gcc'
+'ccal' '_ccal'
+'cd' '_cd'
+'cdbs-edit-patch' '_cdbs-edit-patch'
+'cdc' '_sccs'
+'cdcd' '_cdcd'
+'cdr' '_cdr'
+'cdrdao' '_cdrdao'
+'cdrecord' '_cdrecord'
+'ceilometer' '_openstack'
+'certtool' '_gnutls'
+'cftp' '_twisted'
+'chage' '_users'
+'chattr' '_chattr'
+'chcon' '_chcon'
+'chdir' '_cd'
+'chflags' '_chflags'
+'chfn' '_users'
+'chgrp' '_chown'
+'chimera' '_webbrowser'
+'chkconfig' '_chkconfig'
+'chkstow' '_stow'
+'chmod' '_chmod'
+'choom' '_choom'
+'chown' '_chown'
+'chpass' '_chsh'
+'chroot' '_chroot'
+'chrt' '_chrt'
+'chsh' '_chsh'
+'ci' '_rcs'
+'cifsiostat' '_sysstat'
+'cinder' '_openstack'
+'ckeygen' '_twisted'
+'cksum' '_cksum'
+'clang' '_gcc'
+'clang++' '_gcc'
+'clay' '_clay'
+'clear' '_nothing'
+'cloudkitty' '_openstack'
+'clusterdb' '_postgresql'
+'cmp' '_cmp'
+'co' '_rcs'
+'code' '_code'
+'column' '_column'
+'comb' '_sccs'
+'combine' '_imagemagick'
+'combinediff' '_patchutils'
+'comm' '_comm'
+'-command-' '_autocd'
+'command' '_command'
+'-command-line-' '_normal'
+'comp' '_mh'
+'compadd' '_compadd'
+'compdef' '_compdef'
+'composer' '_composer'
+'composer.phar' '_composer'
+'composite' '_imagemagick'
+'compress' '_compress'
+'conch' '_twisted'
+'-condition-' '_condition'
+'config.status' '_configure'
+'configure' '_configure'
+'convert' '_imagemagick'
+'coreadm' '_coreadm'
+'cowsay' '_cowsay'
+'cowthink' '_cowsay'
+'cp' '_cp'
+'cpio' '_cpio'
+'cplay' '_cplay'
+'cpupower' '_cpupower'
+'createdb' '_postgresql'
+'createuser' '_postgresql'
+'crontab' '_crontab'
+'crsh' '_cssh'
+'cryptsetup' '_cryptsetup'
+'cscope' '_cscope'
+'csh' '_sh'
+'csplit' '_csplit'
+'cssh' '_cssh'
+'csup' '_csup'
+'ctags' '_ctags'
+'ctags-exuberant' '_ctags'
+'ctags-universal' '_ctags'
+'ctr' '_ctr'
+'cu' '_cu'
+'curl' '_curl'
+'cut' '_cut'
+'cvlc' '_vlc'
+'cvs' '_cvs'
+'cvsup' '_cvsup'
+'cygcheck' '_cygcheck'
+'cygcheck.exe' '_cygcheck'
+'cygpath' '_cygpath'
+'cygpath.exe' '_cygpath'
+'cygrunsrv' '_cygrunsrv'
+'cygrunsrv.exe' '_cygrunsrv'
+'cygserver' '_cygserver'
+'cygserver.exe' '_cygserver'
+'cygstart' '_cygstart'
+'cygstart.exe' '_cygstart'
+'dak' '_dak'
+'darcs' '_darcs'
+'dash' '_sh'
+'date' '_date'
+'dbus-launch' '_dbus'
+'dbus-monitor' '_dbus'
+'dbus-send' '_dbus'
+'dch' '_debchange'
+'dchroot' '_dchroot'
+'dchroot-dsa' '_dchroot-dsa'
+'dconf' '_dconf'
+'dcop' '_dcop'
+'dcopclient' '_dcop'
+'dcopfind' '_dcop'
+'dcopobject' '_dcop'
+'dcopref' '_dcop'
+'dcopstart' '_dcop'
+'dcut' '_dcut'
+'dd' '_dd'
+'debchange' '_debchange'
+'debcheckout' '_debcheckout'
+'debdiff' '_debdiff'
+'debfoster' '_debfoster'
+'deborphan' '_deborphan'
+'debsign' '_debsign'
+'debsnap' '_debsnap'
+'debuild' '_debuild'
+'declare' '_typeset'
+'-default-' '_default'
+'defaults' '_defaults'
+'delta' '_sccs'
+'designate' '_openstack'
+'devtodo' '_devtodo'
+'df' '_df'
+'dhclient' '_dhclient'
+'dhclient3' '_dhclient'
+'dhcpinfo' '_dhcpinfo'
+'dict' '_dict'
+'diff' '_diff'
+'diff3' '_diff3'
+'diffstat' '_diffstat'
+'dig' '_dig'
+'dillo' '_webbrowser'
+'dircmp' '_directories'
+'dirs' '_dirs'
+'disable' '_disable'
+'disown' '_jobs_fg'
+'display' '_imagemagick'
+'dist' '_mh'
+'django-admin' '_django'
+'django-admin.py' '_django'
+'dkms' '_dkms'
+'dladm' '_dladm'
+'dlocate' '_dlocate'
+'dmake' '_make'
+'dmesg' '_dmesg'
+'dmidecode' '_dmidecode'
+'dnf' '_dnf'
+'dnf-2' '_dnf'
+'dnf-3' '_dnf'
+'doas' '_doas'
+'docker' '_docker'
+'dockerd' '_docker'
+'domainname' '_yp'
+'dos2unix' '_dos2unix'
+'dosdel' '_floppy'
+'dosread' '_floppy'
+'dpatch-edit-patch' '_dpatch-edit-patch'
+'dpkg' '_dpkg'
+'dpkg-buildpackage' '_dpkg-buildpackage'
+'dpkg-cross' '_dpkg-cross'
+'dpkg-deb' '_dpkg'
+'dpkg-parsechangelog' '_dpkg-parsechangelog'
+'dpkg-query' '_dpkg'
+'dpkg-reconfigure' '_dpkg'
+'dpkg-repack' '_dpkg-repack'
+'dpkg-source' '_dpkg_source'
+'dput' '_dput'
+'drill' '_drill'
+'dropbox' '_dropbox'
+'dropdb' '_postgresql'
+'dropuser' '_postgresql'
+'dscverify' '_dscverify'
+'dsh' '_dsh'
+'dtrace' '_dtrace'
+'dtruss' '_dtruss'
+'du' '_du'
+'dumpadm' '_dumpadm'
+'dumper' '_dumper'
+'dumper.exe' '_dumper'
+'dupload' '_dupload'
+'dvibook' '_dvi'
+'dviconcat' '_dvi'
+'dvicopy' '_dvi'
+'dvidvi' '_dvi'
+'dvipdf' '_dvi'
+'dvips' '_dvi'
+'dviselect' '_dvi'
+'dvitodvi' '_dvi'
+'dvitype' '_dvi'
+'dwb' '_webbrowser'
+'e2label' '_e2label'
+'eatmydata' '_precommand'
+'ecasound' '_ecasound'
+'echotc' '_echotc'
+'echoti' '_echoti'
+'ed' '_ed'
+'egrep' '_grep'
+'elfdump' '_elfdump'
+'elinks' '_elinks'
+'emulate' '_emulate'
+'enable' '_enable'
+'enscript' '_enscript'
+'entr' '_entr'
+'env' '_env'
+'eog' '_eog'
+'epdfview' '_pdf'
+'epsffit' '_psutils'
+'-equal-' '_equal'
+'erb' '_ruby'
+'espeak' '_espeak'
+'etags' '_etags'
+'ethtool' '_ethtool'
+'eu-nm' '_nm'
+'eu-objdump' '_objdump'
+'eu-readelf' '_readelf'
+'eu-strings' '_strings'
+'eval' '_precommand'
+'eview' '_vim'
+'evim' '_vim'
+'evince' '_evince'
+'ex' '_vi'
+'exec' '_exec'
+'expand' '_unexpand'
+'explodepkg' '_pkgtool'
+'export' '_typeset'
+'express' '_webbrowser'
+'extcheck' '_java'
+'extractres' '_psutils'
+'fakeroot' '_fakeroot'
+'false' '_nothing'
+'fc' '_fc'
+'fc-list' '_xft_fonts'
+'fc-match' '_xft_fonts'
+'feh' '_feh'
+'fetch' '_fetch'
+'fetchmail' '_fetchmail'
+'ffmpeg' '_ffmpeg'
+'fg' '_jobs_fg'
+'fgrep' '_grep'
+'figlet' '_figlet'
+'filterdiff' '_patchutils'
+'find' '_find'
+'findaffix' '_ispell'
+'findmnt' '_findmnt'
+'finger' '_finger'
+'fink' '_fink'
+'firefox' '_mozilla'
+'-first-' '_first'
+'fixdlsrps' '_psutils'
+'fixfmps' '_psutils'
+'fixmacps' '_psutils'
+'fixpsditps' '_psutils'
+'fixpspps' '_psutils'
+'fixscribeps' '_psutils'
+'fixtpps' '_psutils'
+'fixwfwps' '_psutils'
+'fixwpps' '_psutils'
+'fixwwps' '_psutils'
+'flac' '_flac'
+'flatpak' '_flatpak'
+'flex' '_flex'
+'flex++' '_flex'
+'flipdiff' '_patchutils'
+'flist' '_mh'
+'flists' '_mh'
+'float' '_typeset'
+'flowadm' '_flowadm'
+'fmadm' '_fmadm'
+'fmt' '_fmt'
+'fmttest' '_mh'
+'fned' '_zed'
+'fnext' '_mh'
+'fold' '_fold'
+'folder' '_mh'
+'folders' '_mh'
+'fortune' '_fortune'
+'forw' '_mh'
+'fprev' '_mh'
+'free' '_free'
+'freebsd-make' '_make'
+'freebsd-update' '_freebsd-update'
+'freezer' '_openstack'
+'fsh' '_fsh'
+'fstat' '_fstat'
+'fs_usage' '_fs_usage'
+'ftp' '_hosts'
+'functions' '_typeset'
+'fuser' '_fuser'
+'fusermount' '_fusermount'
+'fwhois' '_whois'
+'fw_update' '_fw_update'
+'g++' '_gcc'
+'galeon' '_webbrowser'
+'gawk' '_awk'
+'gb2sum' '_md5sum'
+'gbase32' '_base64'
+'gbase64' '_base64'
+'gbasename' '_basename'
+'gcat' '_cat'
+'gcc' '_gcc'
+'gccgo' '_go'
+'gchgrp' '_chown'
+'gchmod' '_chmod'
+'gchown' '_chown'
+'gchroot' '_chroot'
+'gcksum' '_cksum'
+'gcmp' '_cmp'
+'gcomm' '_comm'
+'gcore' '_gcore'
+'gcp' '_cp'
+'gcut' '_cut'
+'gdate' '_date'
+'gdb' '_gdb'
+'gdd' '_dd'
+'gdf' '_df'
+'gdiff' '_diff'
+'gdu' '_du'
+'geany' '_geany'
+'gegrep' '_grep'
+'gem' '_gem'
+'genisoimage' '_genisoimage'
+'genv' '_env'
+'get' '_sccs'
+'getafm' '_psutils'
+'getclip' '_getclip'
+'getclip.exe' '_getclip'
+'getconf' '_getconf'
+'getent' '_getent'
+'getfacl' '_getfacl'
+'getfacl.exe' '_getfacl'
+'getfattr' '_attr'
+'getmail' '_getmail'
+'getopt' '_getopt'
+'getopts' '_vars'
+'gex' '_vim'
+'gexpand' '_unexpand'
+'gfgrep' '_grep'
+'gfind' '_find'
+'gfmt' '_fmt'
+'gfold' '_fold'
+'ggetopt' '_getopt'
+'ggrep' '_grep'
+'ggv' '_gnome-gv'
+'ghead' '_head'
+'ghostscript' '_ghostscript'
+'ghostview' '_pspdf'
+'gid' '_id'
+'ginstall' '_install'
+'git' '_git'
+'git-buildpackage' '_git-buildpackage'
+'git-cvsserver' '_git'
+'gitk' '_git'
+'git-receive-pack' '_git'
+'git-shell' '_git'
+'git-upload-archive' '_git'
+'git-upload-pack' '_git'
+'gjoin' '_join'
+'glance' '_openstack'
+'gln' '_ln'
+'global' '_global'
+'glocate' '_locate'
+'gls' '_ls'
+'gm' '_graphicsmagick'
+'gmake' '_make'
+'gmd5sum' '_md5sum'
+'gmkdir' '_mkdir'
+'gmkfifo' '_mkfifo'
+'gmknod' '_mknod'
+'gmktemp' '_mktemp'
+'gmplayer' '_mplayer'
+'gmv' '_mv'
+'gnl' '_nl'
+'gnocchi' '_openstack'
+'gnome-gv' '_gnome-gv'
+'gnumfmt' '_numfmt'
+'gnupod_addsong' '_gnupod'
+'gnupod_addsong.pl' '_gnupod'
+'gnupod_check' '_gnupod'
+'gnupod_check.pl' '_gnupod'
+'gnupod_INIT' '_gnupod'
+'gnupod_INIT.pl' '_gnupod'
+'gnupod_search' '_gnupod'
+'gnupod_search.pl' '_gnupod'
+'gnutls-cli' '_gnutls'
+'gnutls-cli-debug' '_gnutls'
+'gnutls-serv' '_gnutls'
+'god' '_od'
+'gofmt' '_go'
+'gpasswd' '_gpasswd'
+'gpaste' '_paste'
+'gpatch' '_patch'
+'gpg' '_gpg'
+'gpg2' '_gpg'
+'gpgv' '_gpg'
+'gpg-zip' '_gpg'
+'gphoto2' '_gphoto2'
+'gprintenv' '_printenv'
+'gprof' '_gprof'
+'gqview' '_gqview'
+'gradle' '_gradle'
+'gradlew' '_gradle'
+'grail' '_webbrowser'
+'greadlink' '_readlink'
+'grep' '_grep'
+'grepdiff' '_patchutils'
+'grep-excuses' '_grep-excuses'
+'grm' '_rm'
+'grmdir' '_rmdir'
+'groff' '_groff'
+'groupadd' '_user_admin'
+'groupdel' '_groups'
+'groupmod' '_user_admin'
+'groups' '_users'
+'growisofs' '_growisofs'
+'gs' '_ghostscript'
+'gsbj' '_pspdf'
+'gsdj' '_pspdf'
+'gsdj500' '_pspdf'
+'gsed' '_sed'
+'gseq' '_seq'
+'gsettings' '_gsettings'
+'gsha1sum' '_md5sum'
+'gsha224sum' '_md5sum'
+'gsha256sum' '_md5sum'
+'gsha384sum' '_md5sum'
+'gsha512sum' '_md5sum'
+'gshred' '_shred'
+'gshuf' '_shuf'
+'gslj' '_pspdf'
+'gslp' '_pspdf'
+'gsnd' '_pspdf'
+'gsort' '_sort'
+'gsplit' '_split'
+'gstat' '_gstat'
+'gstdbuf' '_stdbuf'
+'gstrings' '_strings'
+'gstty' '_stty'
+'gsum' '_cksum'
+'gtac' '_tac'
+'gtail' '_tail'
+'gtar' '_tar'
+'gtee' '_tee'
+'gtimeout' '_timeout'
+'gtouch' '_touch'
+'gtr' '_tr'
+'gtty' '_tty'
+'guilt' '_guilt'
+'guilt-add' '_guilt'
+'guilt-applied' '_guilt'
+'guilt-delete' '_guilt'
+'guilt-files' '_guilt'
+'guilt-fold' '_guilt'
+'guilt-fork' '_guilt'
+'guilt-header' '_guilt'
+'guilt-help' '_guilt'
+'guilt-import' '_guilt'
+'guilt-import-commit' '_guilt'
+'guilt-init' '_guilt'
+'guilt-new' '_guilt'
+'guilt-next' '_guilt'
+'guilt-patchbomb' '_guilt'
+'guilt-pop' '_guilt'
+'guilt-prev' '_guilt'
+'guilt-push' '_guilt'
+'guilt-rebase' '_guilt'
+'guilt-refresh' '_guilt'
+'guilt-rm' '_guilt'
+'guilt-series' '_guilt'
+'guilt-status' '_guilt'
+'guilt-top' '_guilt'
+'guilt-unapplied' '_guilt'
+'guname' '_uname'
+'gunexpand' '_unexpand'
+'guniq' '_uniq'
+'gunzip' '_gzip'
+'guptime' '_uptime'
+'gv' '_gv'
+'gview' '_vim'
+'gvim' '_vim'
+'gvimdiff' '_vim'
+'gwc' '_wc'
+'gwho' '_who'
+'gxargs' '_xargs'
+'gzcat' '_gzip'
+'gzegrep' '_grep'
+'gzfgrep' '_grep'
+'gzgrep' '_grep'
+'gzilla' '_webbrowser'
+'gzip' '_gzip'
+'hash' '_hash'
+'hd' '_hexdump'
+'hdiutil' '_hdiutil'
+'head' '_head'
+'heat' '_openstack'
+'help' '_sccs'
+'hexdump' '_hexdump'
+'hilite' '_precommand'
+'histed' '_zed'
+'history' '_fc'
+'host' '_host'
+'hostname' '_hostname'
+'hostnamectl' '_hostnamectl'
+'hotjava' '_webbrowser'
+'htop' '_htop'
+'hwinfo' '_hwinfo'
+'iceweasel' '_mozilla'
+'icombine' '_ispell'
+'iconv' '_iconv'
+'iconvconfig' '_iconvconfig'
+'id' '_id'
+'identify' '_imagemagick'
+'ifconfig' '_ifconfig'
+'ifdown' '_net_interfaces'
+'iftop' '_iftop'
+'ifup' '_net_interfaces'
+'ijoin' '_ispell'
+'import' '_imagemagick'
+'inc' '_mh'
+'includeres' '_psutils'
+'inetadm' '_inetadm'
+'info' '_texinfo'
+'infocmp' '_terminals'
+'initctl' '_initctl'
+'initdb' '_postgresql'
+'insmod' '_modutils'
+'install' '_install'
+'install-info' '_texinfo'
+'installpkg' '_pkgtool'
+'integer' '_typeset'
+'interdiff' '_patchutils'
+'invoke-rc.d' '_invoke-rc.d'
+'ionice' '_ionice'
+'iostat' '_iostat'
+'ip' '_ip'
+'ip6tables' '_iptables'
+'ip6tables-restore' '_iptables'
+'ip6tables-save' '_iptables'
+'ipadm' '_ipadm'
+'ipfw' '_ipfw'
+'ipkg' '_opkg'
+'ipsec' '_ipsec'
+'ipset' '_ipset'
+'iptables' '_iptables'
+'iptables-restore' '_iptables'
+'iptables-save' '_iptables'
+'irb' '_ruby'
+'ironic' '_openstack'
+'irssi' '_irssi'
+'isag' '_sysstat'
+'ispell' '_ispell'
+'iwconfig' '_iwconfig'
+'jadetex' '_tex'
+'jail' '_jail'
+'jar' '_java'
+'jarsigner' '_java'
+'java' '_java'
+'javac' '_java'
+'javadoc' '_java'
+'javah' '_java'
+'javap' '_java'
+'jdb' '_java'
+'jexec' '_jexec'
+'jls' '_jls'
+'jobs' '_jobs_builtin'
+'joe' '_joe'
+'join' '_join'
+'jot' '_jot'
+'journalctl' '_journalctl'
+'jq' '_jq'
+'kdeconnect-cli' '_kdeconnect'
+'kdump' '_kdump'
+'kernel-install' '_kernel-install'
+'keystone' '_openstack'
+'keytool' '_java'
+'kfmclient' '_kfmclient'
+'kill' '_kill'
+'killall' '_killall'
+'killall5' '_killall'
+'kioclient' '_kfmclient'
+'kldload' '_kld'
+'kldunload' '_kld'
+'knock' '_knock'
+'konqueror' '_webbrowser'
+'kpartx' '_kpartx'
+'kpdf' '_pdf'
+'ksh' '_sh'
+'ksh88' '_sh'
+'ksh93' '_sh'
+'ktrace' '_ktrace'
+'kvno' '_kvno'
+'last' '_last'
+'lastb' '_last'
+'latex' '_tex'
+'latexmk' '_tex'
+'ldap' '_ldap'
+'ldconfig' '_ldconfig'
+'ldconfig.real' '_ldconfig'
+'ldd' '_ldd'
+'less' '_less'
+'let' '_math'
+'lf' '_lf'
+'lftp' '_ncftp'
+'lha' '_lha'
+'light' '_webbrowser'
+'lighty-disable-mod' '_lighttpd'
+'lighty-enable-mod' '_lighttpd'
+'limit' '_limit'
+'links' '_links'
+'links2' '_links'
+'lintian' '_lintian'
+'lintian-info' '_lintian'
+'linux' '_uml'
+'lldb' '_lldb'
+'llvm-g++' '_gcc'
+'llvm-gcc' '_gcc'
+'llvm-objdump' '_objdump'
+'llvm-otool' '_otool'
+'ln' '_ln'
+'loadkeys' '_loadkeys'
+'local' '_typeset'
+'locale' '_locale'
+'localectl' '_localectl'
+'localedef' '_localedef'
+'locate' '_locate'
+'log' '_nothing'
+'logger' '_logger'
+'loginctl' '_loginctl'
+'logname' '_nothing'
+'look' '_look'
+'losetup' '_losetup'
+'lp' '_lp'
+'lpadmin' '_lp'
+'lpinfo' '_lp'
+'lpoptions' '_lp'
+'lpq' '_lp'
+'lpr' '_lp'
+'lprm' '_lp'
+'lpstat' '_lp'
+'ls' '_ls'
+'lsattr' '_lsattr'
+'lsblk' '_lsblk'
+'lscfg' '_lscfg'
+'lsd' '_lsd'
+'lsdev' '_lsdev'
+'lsdiff' '_patchutils'
+'lslv' '_lslv'
+'lsmod' '_modutils'
+'lsns' '_lsns'
+'lsof' '_lsof'
+'lspv' '_lspv'
+'lsusb' '_lsusb'
+'lsvg' '_lsvg'
+'ltrace' '_ltrace'
+'lua' '_lua'
+'luarocks' '_luarocks'
+'lynx' '_lynx'
+'lz4' '_lz4'
+'lz4c' '_lz4'
+'lz4c32' '_lz4'
+'lz4cat' '_lz4'
+'lzcat' '_xz'
+'lzma' '_xz'
+'lzop' '_lzop'
+'m-a' '_module-assistant'
+'mac2unix' '_dos2unix'
+'machinectl' '_machinectl'
+'madison' '_madison'
+'magnum' '_openstack'
+'mail' '_mail'
+'Mail' '_mail'
+'mailx' '_mail'
+'make' '_make'
+'makeinfo' '_texinfo'
+'make-kpkg' '_make-kpkg'
+'makepkg' '_pkgtool'
+'man' '_man'
+'manage.py' '_django'
+'manila' '_openstack'
+'mark' '_mh'
+'mat' '_mat'
+'mat2' '_mat2'
+'-math-' '_math'
+'matlab' '_matlab'
+'mattrib' '_mtools'
+'mcd' '_mtools'
+'mcopy' '_mtools'
+'md2' '_cksum'
+'md4' '_cksum'
+'md5' '_cksum'
+'md5sum' '_md5sum'
+'mdadm' '_mdadm'
+'mdel' '_mtools'
+'mdeltree' '_mtools'
+'mdfind' '_mdfind'
+'mdir' '_mtools'
+'mdls' '_mdls'
+'mdu' '_mtools'
+'mdutil' '_mdutil'
+'members' '_members'
+'mencal' '_mencal'
+'mere' '_mere'
+'merge' '_rcs'
+'mergechanges' '_mergechanges'
+'metaflac' '_flac'
+'mformat' '_mtools'
+'mgv' '_pspdf'
+'mhfixmsg' '_mh'
+'mhlist' '_mh'
+'mhmail' '_mh'
+'mhn' '_mh'
+'mhparam' '_mh'
+'mhpath' '_mh'
+'mhshow' '_mh'
+'mhstore' '_mh'
+'mii-tool' '_mii-tool'
+'mistral' '_openstack'
+'mixerctl' '_mixerctl'
+'mkdir' '_mkdir'
+'mkfifo' '_mkfifo'
+'mkisofs' '_growisofs'
+'mknod' '_mknod'
+'mksh' '_sh'
+'mkshortcut' '_mkshortcut'
+'mkshortcut.exe' '_mkshortcut'
+'mktemp' '_mktemp'
+'mktunes' '_gnupod'
+'mktunes.pl' '_gnupod'
+'mkzsh' '_mkzsh'
+'mkzsh.exe' '_mkzsh'
+'mlabel' '_mtools'
+'mlocate' '_locate'
+'mmd' '_mtools'
+'mmm' '_webbrowser'
+'mmount' '_mtools'
+'mmove' '_mtools'
+'modinfo' '_modutils'
+'modprobe' '_modutils'
+'module' '_module'
+'module-assistant' '_module-assistant'
+'mogrify' '_imagemagick'
+'monasca' '_openstack'
+'mondoarchive' '_mondo'
+'montage' '_imagemagick'
+'moosic' '_moosic'
+'Mosaic' '_webbrowser'
+'mosh' '_mosh'
+'mount' '_mount'
+'mozilla' '_mozilla'
+'mozilla-firefox' '_mozilla'
+'mozilla-xremote-client' '_mozilla'
+'mpc' '_mpc'
+'mplayer' '_mplayer'
+'mpstat' '_sysstat'
+'mpv' '_mpv'
+'mr' '_myrepos'
+'mrd' '_mtools'
+'mread' '_mtools'
+'mren' '_mtools'
+'msgchk' '_mh'
+'mt' '_mt'
+'mtn' '_monotone'
+'mtoolstest' '_mtools'
+'mtr' '_mtr'
+'mtype' '_mtools'
+'munchlist' '_ispell'
+'mupdf' '_mupdf'
+'murano' '_openstack'
+'mush' '_mail'
+'mutt' '_mutt'
+'mv' '_mv'
+'mvim' '_vim'
+'mvlc' '_vlc'
+'mx' '_hosts'
+'mysql' '_mysql_utils'
+'mysqladmin' '_mysql_utils'
+'mysqldiff' '_mysqldiff'
+'mysqldump' '_mysql_utils'
+'mysqlimport' '_mysql_utils'
+'mysqlshow' '_mysql_utils'
+'nail' '_mail'
+'native2ascii' '_java'
+'nautilus' '_nautilus'
+'nawk' '_awk'
+'nc' '_netcat'
+'ncal' '_cal'
+'ncftp' '_ncftp'
+'ncl' '_nedit'
+'nedit' '_nedit'
+'nedit-nc' '_nedit'
+'netcat' '_netcat'
+'netrik' '_webbrowser'
+'netscape' '_netscape'
+'netstat' '_netstat'
+'networkctl' '_networkctl'
+'networksetup' '_networksetup'
+'neutron' '_openstack'
+'new' '_mh'
+'newgrp' '_groups'
+'next' '_mh'
+'nginx' '_nginx'
+'ngrep' '_ngrep'
+'nice' '_nice'
+'nkf' '_nkf'
+'nl' '_nl'
+'nm' '_nm'
+'nmap' '_nmap'
+'nmblookup' '_samba'
+'nmcli' '_networkmanager'
+'nocorrect' '_precommand'
+'noglob' '_precommand'
+'nohup' '_precommand'
+'nova' '_openstack'
+'npm' '_npm'
+'ns' '_hosts'
+'nsenter' '_nsenter'
+'nslookup' '_nslookup'
+'ntalk' '_other_accounts'
+'numfmt' '_numfmt'
+'nvim' '_vim'
+'nvlc' '_vlc'
+'nvram' '_nvram'
+'objdump' '_objdump'
+'od' '_od'
+'odme' '_object_classes'
+'odmget' '_object_classes'
+'odmshow' '_object_classes'
+'ogg123' '_vorbis'
+'oggdec' '_vorbis'
+'oggenc' '_vorbis'
+'ogginfo' '_vorbis'
+'oksh' '_sh'
+'okular' '_okular'
+'open' '_open'
+'openstack' '_openstack'
+'opera' '_webbrowser'
+'opera-next' '_webbrowser'
+'opkg' '_opkg'
+'opusdec' '_opustools'
+'opusenc' '_opustools'
+'opusinfo' '_opustools'
+'osascript' '_osascript'
+'osc' '_osc'
+'otool' '_otool'
+'p4' '_perforce'
+'p4d' '_perforce'
+'pacat' '_pulseaudio'
+'pack' '_pack'
+'packf' '_mh'
+'pacmd' '_pulseaudio'
+'pactl' '_pulseaudio'
+'padsp' '_pulseaudio'
+'pandoc' '_pandoc'
+'paplay' '_pulseaudio'
+'-parameter-' '_parameter'
+'parec' '_pulseaudio'
+'parecord' '_pulseaudio'
+'parsehdlist' '_urpmi'
+'passwd' '_users'
+'paste' '_paste'
+'pasuspender' '_pulseaudio'
+'patch' '_patch'
+'pax' '_pax'
+'pbcopy' '_pbcopy'
+'pbpaste' '_pbcopy'
+'pbuilder' '_pbuilder'
+'pcat' '_pack'
+'pcp-htop' '_htop'
+'pcred' '_pids'
+'pdf2dsc' '_pdf'
+'pdf2ps' '_pdf'
+'pdffonts' '_pdf'
+'pdfimages' '_pdf'
+'pdfinfo' '_pdf'
+'pdfjadetex' '_tex'
+'pdflatex' '_tex'
+'pdfopt' '_pdf'
+'pdftex' '_tex'
+'pdftexi2dvi' '_texinfo'
+'pdftk' '_pdftk'
+'pdftopbm' '_pdf'
+'pdftops' '_pdf'
+'pdftotext' '_pdf'
+'pdksh' '_sh'
+'perf' '_perf'
+'perl' '_perl'
+'perldoc' '_perldoc'
+'pfctl' '_pfctl'
+'pfexec' '_pfexec'
+'pfiles' '_pids'
+'pflags' '_pids'
+'pg_config' '_postgresql'
+'pg_ctl' '_postgresql'
+'pg_dump' '_postgresql'
+'pg_dumpall' '_postgresql'
+'pg_isready' '_postgresql'
+'pgrep' '_pgrep'
+'pg_restore' '_postgresql'
+'pg_upgrade' '_postgresql'
+'php' '_php'
+'pick' '_mh'
+'picocom' '_picocom'
+'pidof' '_pidof'
+'pidstat' '_sysstat'
+'pigz' '_gzip'
+'pine' '_pine'
+'pinef' '_pine'
+'pinfo' '_texinfo'
+'ping' '_ping'
+'ping6' '_ping'
+'piuparts' '_piuparts'
+'pkg' '_pkg5'
+'pkg_add' '_bsd_pkg'
+'pkgadd' '_pkgadd'
+'pkg-config' '_pkg-config'
+'pkg_create' '_bsd_pkg'
+'pkg_delete' '_bsd_pkg'
+'pkgin' '_pkgin'
+'pkg_info' '_bsd_pkg'
+'pkginfo' '_pkginfo'
+'pkgrm' '_pkgrm'
+'pkgtool' '_pkgtool'
+'pkill' '_pgrep'
+'pldd' '_pids'
+'plutil' '_plutil'
+'pmake' '_make'
+'pman' '_perl_modules'
+'pmap' '_pmap'
+'pmcat' '_perl_modules'
+'pmdesc' '_perl_modules'
+'pmeth' '_perl_modules'
+'pmexp' '_perl_modules'
+'pmfunc' '_perl_modules'
+'pmload' '_perl_modules'
+'pmls' '_perl_modules'
+'pmpath' '_perl_modules'
+'pmvers' '_perl_modules'
+'podgrep' '_perl_modules'
+'podpath' '_perl_modules'
+'podtoc' '_perl_modules'
+'poff' '_pon'
+'policytool' '_java'
+'pon' '_pon'
+'popd' '_directory_stack'
+'portaudit' '_portaudit'
+'portlint' '_portlint'
+'portmaster' '_portmaster'
+'portsnap' '_portsnap'
+'postconf' '_postfix'
+'postgres' '_postgresql'
+'postmaster' '_postgresql'
+'postqueue' '_postfix'
+'postsuper' '_postfix'
+'powerd' '_powerd'
+'pr' '_pr'
+'prev' '_mh'
+'print' '_print'
+'printenv' '_printenv'
+'printf' '_print'
+'procstat' '_procstat'
+'prompt' '_prompt'
+'prove' '_prove'
+'prs' '_sccs'
+'prstat' '_prstat'
+'prt' '_sccs'
+'prun' '_pids'
+'ps' '_ps'
+'ps2ascii' '_pspdf'
+'ps2epsi' '_postscript'
+'ps2pdf' '_postscript'
+'ps2pdf12' '_postscript'
+'ps2pdf13' '_postscript'
+'ps2pdf14' '_postscript'
+'ps2pdfwr' '_postscript'
+'ps2ps' '_postscript'
+'psbook' '_psutils'
+'pscp' '_pscp'
+'pscp.exe' '_pscp'
+'psed' '_sed'
+'psig' '_pids'
+'psmerge' '_psutils'
+'psmulti' '_postscript'
+'psnup' '_psutils'
+'psql' '_postgresql'
+'psresize' '_psutils'
+'psselect' '_psutils'
+'pstack' '_pids'
+'pstoedit' '_pspdf'
+'pstop' '_pids'
+'pstops' '_psutils'
+'pstotgif' '_pspdf'
+'pswrap' '_postscript'
+'ptree' '_ptree'
+'ptx' '_ptx'
+'pulseaudio' '_pulseaudio'
+'pump' '_pump'
+'pushd' '_cd'
+'putclip' '_putclip'
+'putclip.exe' '_putclip'
+'pv' '_pv'
+'pwait' '_pids'
+'pwdx' '_pids'
+'pwgen' '_pwgen'
+'pyhtmlizer' '_twisted'
+'qdbus' '_qdbus'
+'qiv' '_qiv'
+'qtplay' '_qtplay'
+'querybts' '_bug'
+'quilt' '_quilt'
+'qvlc' '_vlc'
+'r' '_fc'
+'rake' '_rake'
+'ranlib' '_ranlib'
+'rar' '_rar'
+'rc' '_sh'
+'rcctl' '_rcctl'
+'rclone' '_rclone'
+'rcp' '_rlogin'
+'rcs' '_rcs'
+'rcsdiff' '_rcs'
+'rdesktop' '_rdesktop'
+'read' '_read'
+'readelf' '_readelf'
+'readlink' '_readlink'
+'readonly' '_typeset'
+'readshortcut' '_readshortcut'
+'readshortcut.exe' '_readshortcut'
+'rebootin' '_rebootin'
+'-redirect-' '_redirect'
+'-redirect-,<,bunzip2' '_bzip2'
+'-redirect-,<,bzip2' '_bzip2'
+'-redirect-,>,bzip2' '_bzip2'
+'-redirect-,<,compress' '_compress'
+'-redirect-,>,compress' '_compress'
+'-redirect-,-default-,-default-' '_files'
+'-redirect-,<,gunzip' '_gzip'
+'-redirect-,<,gzip' '_gzip'
+'-redirect-,>,gzip' '_gzip'
+'-redirect-,<,uncompress' '_compress'
+'-redirect-,<,unxz' '_xz'
+'-redirect-,<,xz' '_xz'
+'-redirect-,>,xz' '_xz'
+'refile' '_mh'
+'rehash' '_hash'
+'reindexdb' '_postgresql'
+'reload' '_initctl'
+'removepkg' '_pkgtool'
+'remsh' '_rlogin'
+'renice' '_renice'
+'repl' '_mh'
+'reportbug' '_bug'
+'reprepro' '_reprepro'
+'resolvectl' '_resolvectl'
+'restart' '_initctl'
+'retawq' '_webbrowser'
+'rg' '_rg'
+'rgrep' '_grep'
+'rgview' '_vim'
+'rgvim' '_vim'
+'ri' '_ri'
+'rlogin' '_rlogin'
+'rm' '_rm'
+'rmadison' '_madison'
+'rmd160' '_cksum'
+'rmdel' '_sccs'
+'rmdir' '_rmdir'
+'rmf' '_mh'
+'rmic' '_java'
+'rmid' '_java'
+'rmiregistry' '_java'
+'rmm' '_mh'
+'rmmod' '_modutils'
+'route' '_route'
+'rpm' '_rpm'
+'rpmbuild' '_rpm'
+'rpmkeys' '_rpm'
+'rpmquery' '_rpm'
+'rpmsign' '_rpm'
+'rpmspec' '_rpm'
+'rpmverify' '_rpm'
+'rrdtool' '_rrdtool'
+'rsh' '_rlogin'
+'rsync' '_rsync'
+'rtin' '_tin'
+'rubber' '_rubber'
+'rubber-info' '_rubber'
+'rubber-pipe' '_rubber'
+'ruby' '_ruby'
+'ruby-mri' '_ruby'
+'run-help' '_run-help'
+'rup' '_hosts'
+'rusage' '_precommand'
+'rview' '_vim'
+'rvim' '_vim'
+'rvlc' '_vlc'
+'rwho' '_hosts'
+'rxvt' '_urxvt'
+'s2p' '_sed'
+'sact' '_sccs'
+'sadf' '_sysstat'
+'sahara' '_openstack'
+'sar' '_sysstat'
+'savecore' '_savecore'
+'say' '_say'
+'sbuild' '_sbuild'
+'scan' '_mh'
+'sccs' '_sccs'
+'sccsdiff' '_sccs'
+'sched' '_sched'
+'schedtool' '_schedtool'
+'schroot' '_schroot'
+'scl' '_scl'
+'scons' '_scons'
+'scp' '_ssh'
+'screen' '_screen'
+'script' '_script'
+'scriptreplay' '_script'
+'scselect' '_scselect'
+'sc_usage' '_sc_usage'
+'scutil' '_scutil'
+'seaf-cli' '_seafile'
+'sed' '_sed'
+'senlin' '_openstack'
+'seq' '_seq'
+'serialver' '_java'
+'service' '_service'
+'set' '_set'
+'setfacl' '_setfacl'
+'setfacl.exe' '_setfacl'
+'setfattr' '_attr'
+'setopt' '_setopt'
+'setpriv' '_setpriv'
+'setsid' '_setsid'
+'setxkbmap' '_setxkbmap'
+'sftp' '_ssh'
+'sh' '_sh'
+'sha1' '_cksum'
+'sha1sum' '_md5sum'
+'sha224sum' '_md5sum'
+'sha256' '_cksum'
+'sha256sum' '_md5sum'
+'sha384' '_cksum'
+'sha384sum' '_md5sum'
+'sha512' '_cksum'
+'sha512sum' '_md5sum'
+'sha512t256' '_cksum'
+'shasum' '_shasum'
+'shift' '_arrays'
+'show' '_mh'
+'showchar' '_psutils'
+'showmount' '_showmount'
+'shred' '_shred'
+'shuf' '_shuf'
+'shutdown' '_shutdown'
+'signify' '_signify'
+'sisu' '_sisu'
+'skein1024' '_cksum'
+'skein256' '_cksum'
+'skein512' '_cksum'
+'skipstone' '_webbrowser'
+'slabtop' '_slabtop'
+'slitex' '_tex'
+'slocate' '_locate'
+'slogin' '_ssh'
+'slrn' '_slrn'
+'smartctl' '_smartmontools'
+'smbclient' '_samba'
+'smbcontrol' '_samba'
+'smbstatus' '_samba'
+'smit' '_smit'
+'smitty' '_smit'
+'snoop' '_snoop'
+'soa' '_hosts'
+'socket' '_socket'
+'sockstat' '_sockstat'
+'softwareupdate' '_softwareupdate'
+'sort' '_sort'
+'sortm' '_mh'
+'source' '_source'
+'spamassassin' '_spamassassin'
+'split' '_split'
+'splitdiff' '_patchutils'
+'sqlite' '_sqlite'
+'sqlite3' '_sqlite'
+'sqsh' '_sqsh'
+'sr' '_surfraw'
+'srptool' '_gnutls'
+'ss' '_ss'
+'ssh' '_ssh'
+'ssh-add' '_ssh'
+'ssh-agent' '_ssh'
+'ssh-copy-id' '_ssh'
+'sshfs' '_sshfs'
+'ssh-keygen' '_ssh'
+'ssh-keyscan' '_ssh'
+'star' '_tar'
+'start' '_initctl'
+'stat' '_stat'
+'status' '_initctl'
+'stdbuf' '_stdbuf'
+'stg' '_stgit'
+'stop' '_initctl'
+'stow' '_stow'
+'strace' '_strace'
+'strace64' '_strace'
+'strftime' '_strftime'
+'strings' '_strings'
+'strip' '_strip'
+'strongswan' '_ipsec'
+'stty' '_stty'
+'su' '_su'
+'subl' '_sublimetext'
+'-subscript-' '_subscript'
+'sudo' '_sudo'
+'sudoedit' '_sudo'
+'sum' '_cksum'
+'surfraw' '_surfraw'
+'SuSEconfig' '_SUSEconfig'
+'sv' '_runit'
+'svcadm' '_svcadm'
+'svccfg' '_svccfg'
+'svcprop' '_svcprop'
+'svcs' '_svcs'
+'svlc' '_vlc'
+'svn' '_subversion'
+'svnadmin' '_subversion'
+'svnadmin-static' '_subversion'
+'svn-buildpackage' '_svn-buildpackage'
+'svnlite' '_subversion'
+'svnliteadmin' '_subversion'
+'swaks' '_swaks'
+'swanctl' '_swanctl'
+'swift' '_swift'
+'swiftc' '_swift'
+'sw_vers' '_sw_vers'
+'sync' '_nothing'
+'sysclean' '_sysclean'
+'sysctl' '_sysctl'
+'sysmerge' '_sysmerge'
+'syspatch' '_syspatch'
+'sysrc' '_sysrc'
+'systat' '_systat'
+'systemctl' '_systemctl'
+'systemd-analyze' '_systemd-analyze'
+'systemd-ask-password' '_systemd'
+'systemd-cat' '_systemd'
+'systemd-cgls' '_systemd'
+'systemd-cgtop' '_systemd'
+'systemd-delta' '_systemd-delta'
+'systemd-detect-virt' '_systemd'
+'systemd-inhibit' '_systemd-inhibit'
+'systemd-machine-id-setup' '_systemd'
+'systemd-notify' '_systemd'
+'systemd-nspawn' '_systemd-nspawn'
+'systemd-path' '_systemd-path'
+'systemd-resolve' '_resolvectl'
+'systemd-run' '_systemd-run'
+'systemd-tmpfiles' '_systemd-tmpfiles'
+'systemd-tty-ask-password-agent' '_systemd'
+'system_profiler' '_system_profiler'
+'sysupgrade' '_sysupgrade'
+'tac' '_tac'
+'tacker' '_openstack'
+'tail' '_tail'
+'talk' '_other_accounts'
+'tar' '_tar'
+'tardy' '_tardy'
+'tcpdump' '_tcpdump'
+'tcp_open' '_tcpsys'
+'tcptraceroute' '_tcptraceroute'
+'tcsh' '_sh'
+'tda' '_devtodo'
+'tdd' '_devtodo'
+'tde' '_devtodo'
+'tdr' '_devtodo'
+'tee' '_tee'
+'telnet' '_telnet'
+'tex' '_tex'
+'texi2any' '_texinfo'
+'texi2dvi' '_texinfo'
+'texi2pdf' '_texinfo'
+'texindex' '_texinfo'
+'tg' '_topgit'
+'tidy' '_tidy'
+'tig' '_git'
+'-tilde-' '_tilde'
+'time' '_precommand'
+'timedatectl' '_timedatectl'
+'timeout' '_timeout'
+'times' '_nothing'
+'tin' '_tin'
+'tkconch' '_twisted'
+'tkinfo' '_texinfo'
+'tla' '_tla'
+'tload' '_tload'
+'tmux' '_tmux'
+'todo' '_devtodo'
+'todo.sh' '_todo.sh'
+'toilet' '_toilet'
+'top' '_top'
+'totdconfig' '_totd'
+'touch' '_touch'
+'tpb' '_tpb'
+'tpkg-debarch' '_toolchain-source'
+'tpkg-install' '_toolchain-source'
+'tpkg-install-libc' '_toolchain-source'
+'tpkg-make' '_toolchain-source'
+'tpkg-update' '_toolchain-source'
+'tput' '_tput'
+'tr' '_tr'
+'tracepath' '_tracepath'
+'tracepath6' '_tracepath'
+'traceroute' '_hosts'
+'transmission-remote' '_transmission'
+'trap' '_trap'
+'trash' '_trash'
+'tree' '_tree'
+'trial' '_twisted'
+'trove' '_openstack'
+'true' '_nothing'
+'truncate' '_truncate'
+'truss' '_truss'
+'tryaffix' '_ispell'
+'tty' '_tty'
+'ttyctl' '_ttyctl'
+'tunctl' '_uml'
+'tune2fs' '_tune2fs'
+'tunes2pod' '_gnupod'
+'tunes2pod.pl' '_gnupod'
+'twidge' '_twidge'
+'twist' '_twisted'
+'twistd' '_twisted'
+'txt' '_hosts'
+'type' '_which'
+'typeset' '_typeset'
+'udevadm' '_udevadm'
+'ulimit' '_ulimit'
+'uml_mconsole' '_uml'
+'uml_moo' '_uml'
+'uml_switch' '_uml'
+'umount' '_mount'
+'unace' '_unace'
+'unalias' '_aliases'
+'uname' '_uname'
+'uncompress' '_compress'
+'unexpand' '_unexpand'
+'unfunction' '_functions'
+'unget' '_sccs'
+'unhash' '_unhash'
+'uniq' '_uniq'
+'unison' '_unison'
+'units' '_units'
+'unix2dos' '_dos2unix'
+'unix2mac' '_dos2unix'
+'unlimit' '_limits'
+'unlz4' '_lz4'
+'unlzma' '_xz'
+'unpack' '_pack'
+'unpigz' '_gzip'
+'unrar' '_rar'
+'unset' '_vars'
+'unsetopt' '_setopt'
+'unshare' '_unshare'
+'unwrapdiff' '_patchutils'
+'unxz' '_xz'
+'unzip' '_zip'
+'update-alternatives' '_update-alternatives'
+'update-rc.d' '_update-rc.d'
+'upgradepkg' '_pkgtool'
+'uptime' '_uptime'
+'urpme' '_urpmi'
+'urpmf' '_urpmi'
+'urpmi' '_urpmi'
+'urpmi.addmedia' '_urpmi'
+'urpmi.removemedia' '_urpmi'
+'urpmi.update' '_urpmi'
+'urpmq' '_urpmi'
+'urxvt' '_urxvt'
+'urxvt256c' '_urxvt'
+'urxvt256cc' '_urxvt'
+'urxvt256c-ml' '_urxvt'
+'urxvt256c-mlc' '_urxvt'
+'urxvtc' '_urxvt'
+'usbconfig' '_usbconfig'
+'uscan' '_uscan'
+'useradd' '_user_admin'
+'userdel' '_users'
+'usermod' '_user_admin'
+'vacuumdb' '_postgresql'
+'val' '_sccs'
+'valgrind' '_valgrind'
+'-value-' '_value'
+'-value-,ADB_TRACE,-default-' '_adb'
+'-value-,ANDROID_LOG_TAGS,-default-' '_adb'
+'-value-,ANDROID_SERIAL,-default-' '_adb'
+'-value-,ANSIBLE_INVENTORY_ENABLED,-default-' '_ansible'
+'-value-,ANSIBLE_STDOUT_CALLBACK,-default-' '_ansible'
+'-value-,ANT_ARGS,-default-' '_ant'
+'-value-,CFLAGS,-default-' '_gcc'
+'-value-,CPPFLAGS,-default-' '_gcc'
+'-value-,CXXFLAGS,-default-' '_gcc'
+'-value-,-default-,-command-' '_zargs'
+'-value-,-default-,-default-' '_value'
+'-value-,DISPLAY,-default-' '_x_display'
+'-value-,GREP_OPTIONS,-default-' '_grep'
+'-value-,GZIP,-default-' '_gzip'
+'-value-,LANG,-default-' '_locales'
+'-value-,LANGUAGE,-default-' '_locales'
+'-value-,LD_DEBUG,-default-' '_ld_debug'
+'-value-,LDFLAGS,-default-' '_gcc'
+'-value-,LESSCHARSET,-default-' '_less'
+'-value-,LESS,-default-' '_less'
+'-value-,LOOPDEV_DEBUG,-default-' '_losetup'
+'-value-,LPDEST,-default-' '_printers'
+'-value-,MPD_HOST,-default' '_mpc'
+'-value-,P4CLIENT,-default-' '_perforce'
+'-value-,P4MERGE,-default-' '_perforce'
+'-value-,P4PORT,-default-' '_perforce'
+'-value-,P4USER,-default-' '_perforce'
+'-value-,PERLDOC,-default-' '_perldoc'
+'-value-,PRINTER,-default-' '_printers'
+'-value-,PROMPT2,-default-' '_ps1234'
+'-value-,PROMPT3,-default-' '_ps1234'
+'-value-,PROMPT4,-default-' '_ps1234'
+'-value-,PROMPT,-default-' '_ps1234'
+'-value-,PS1,-default-' '_ps1234'
+'-value-,PS2,-default-' '_ps1234'
+'-value-,PS3,-default-' '_ps1234'
+'-value-,PS4,-default-' '_ps1234'
+'-value-,RPROMPT2,-default-' '_ps1234'
+'-value-,RPROMPT,-default-' '_ps1234'
+'-value-,RPS1,-default-' '_ps1234'
+'-value-,RPS2,-default-' '_ps1234'
+'-value-,SPROMPT,-default-' '_ps1234'
+'-value-,TERM,-default-' '_terminals'
+'-value-,TERMINFO_DIRS,-default-' '_dir_list'
+'-value-,TZ,-default-' '_time_zone'
+'-value-,VALGRIND_OPTS,-default-' '_valgrind'
+'-value-,WWW_HOME,-default-' '_urls'
+'-value-,XML_CATALOG_FILES,-default-' '_xmlsoft'
+'-value-,XZ_DEFAULTS,-default-' '_xz'
+'-value-,XZ_OPT,-default-' '_xz'
+'-vared-' '_in_vared'
+'vared' '_vared'
+'vcs_info_hookadd' '_vcs_info'
+'vcs_info_hookdel' '_vcs_info'
+'vi' '_vi'
+'view' '_vi'
+'vim' '_vim'
+'vim-addons' '_vim-addons'
+'vimdiff' '_vim'
+'virsh' '_libvirt'
+'virt-admin' '_libvirt'
+'virt-host-validate' '_libvirt'
+'virt-pki-validate' '_libvirt'
+'virt-xml-validate' '_libvirt'
+'visudo' '_visudo'
+'vitrage' '_openstack'
+'vlc' '_vlc'
+'vmctl' '_vmctl'
+'vmstat' '_vmstat'
+'vncserver' '_vnc'
+'vncviewer' '_vnc'
+'vorbiscomment' '_vorbis'
+'vpnc' '_vpnc'
+'vpnc-connect' '_vpnc'
+'vserver' '_vserver'
+'w' '_w'
+'w3m' '_w3m'
+'wait' '_wait'
+'wajig' '_wajig'
+'wanna-build' '_wanna-build'
+'watch' '_watch'
+'watcher' '_openstack'
+'wc' '_wc'
+'wget' '_wget'
+'what' '_sccs'
+'whatis' '_man'
+'whence' '_which'
+'where' '_which'
+'whereis' '_whereis'
+'which' '_which'
+'who' '_who'
+'whoami' '_nothing'
+'whois' '_whois'
+'whom' '_mh'
+'wiggle' '_wiggle'
+'wipefs' '_wipefs'
+'wodim' '_cdrecord'
+'wpa_cli' '_wpa_cli'
+'write' '_users_on'
+'www' '_webbrowser'
+'xargs' '_xargs'
+'xattr' '_attr'
+'xauth' '_xauth'
+'xautolock' '_xautolock'
+'xclip' '_xclip'
+'xcode-select' '_xcode-select'
+'xdpyinfo' '_x_utils'
+'xdvi' '_xdvi'
+'xelatex' '_tex'
+'xetex' '_tex'
+'xev' '_x_utils'
+'xfd' '_x_utils'
+'xfig' '_xfig'
+'xfontsel' '_x_utils'
+'xfreerdp' '_rdesktop'
+'xhost' '_x_utils'
+'xinput' '_xinput'
+'xkill' '_x_utils'
+'xli' '_xloadimage'
+'xloadimage' '_xloadimage'
+'xlsatoms' '_x_utils'
+'xlsclients' '_x_utils'
+'xml' '_xmlstarlet'
+'xmllint' '_xmlsoft'
+'xmlstarlet' '_xmlstarlet'
+'xmms2' '_xmms2'
+'xmodmap' '_xmodmap'
+'xmosaic' '_webbrowser'
+'xon' '_x_utils'
+'xournal' '_xournal'
+'xpdf' '_xpdf'
+'xping' '_hosts'
+'xprop' '_x_utils'
+'xrandr' '_xrandr'
+'xrdb' '_x_utils'
+'xscreensaver-command' '_xscreensaver'
+'xset' '_xset'
+'xsetbg' '_xloadimage'
+'xsetroot' '_x_utils'
+'xsltproc' '_xmlsoft'
+'xterm' '_xterm'
+'xtightvncviewer' '_vnc'
+'xtp' '_imagemagick'
+'xv' '_xv'
+'xview' '_xloadimage'
+'xvnc4viewer' '_vnc'
+'xvncviewer' '_vnc'
+'xwallpaper' '_xwallpaper'
+'xwd' '_x_utils'
+'xwininfo' '_x_utils'
+'xwit' '_xwit'
+'xwud' '_x_utils'
+'xxd' '_xxd'
+'xz' '_xz'
+'xzcat' '_xz'
+'yafc' '_yafc'
+'yash' '_sh'
+'yast' '_yast'
+'yast2' '_yast'
+'ypbind' '_yp'
+'ypcat' '_yp'
+'ypmatch' '_yp'
+'yppasswd' '_yp'
+'yppoll' '_yp'
+'yppush' '_yp'
+'ypserv' '_yp'
+'ypset' '_yp'
+'ypwhich' '_yp'
+'ypxfr' '_yp'
+'ytalk' '_other_accounts'
+'yum' '_yum'
+'yumdb' '_yum'
+'zargs' '_zargs'
+'zathura' '_zathura'
+'zcalc' '_zcalc'
+'-zcalc-line-' '_zcalc_line'
+'zcat' '_zcat'
+'zcompile' '_zcompile'
+'zcp' '_zmv'
+'zdb' '_zfs'
+'zdelattr' '_zattr'
+'zdump' '_zdump'
+'zeal' '_zeal'
+'zed' '_zed'
+'zegrep' '_grep'
+'zen' '_webbrowser'
+'zf_chgrp' '_chown'
+'zf_chmod' '_chmod'
+'zf_chown' '_chown'
+'zfgrep' '_grep'
+'zf_ln' '_ln'
+'zf_mkdir' '_mkdir'
+'zf_mv' '_mv'
+'zf_rm' '_rm'
+'zf_rmdir' '_rmdir'
+'zfs' '_zfs'
+'zgetattr' '_zattr'
+'zgrep' '_grep'
+'zip' '_zip'
+'zipinfo' '_zip'
+'zle' '_zle'
+'zlistattr' '_zattr'
+'zln' '_zmv'
+'zlogin' '_zlogin'
+'zmail' '_mail'
+'zmodload' '_zmodload'
+'zmv' '_zmv'
+'zone' '_hosts'
+'zoneadm' '_zoneadm'
+'zparseopts' '_zparseopts'
+'zpool' '_zfs'
+'zpty' '_zpty'
+'zsetattr' '_zattr'
+'zsh' '_zsh'
+'zsh-mime-handler' '_zsh-mime-handler'
+'zsocket' '_zsocket'
+'zstat' '_stat'
+'zstyle' '_zstyle'
+'ztodo' '_ztodo'
+'zun' '_openstack'
+'zxpdf' '_xpdf'
+'zypper' '_zypper'
+)
+
+_services=(
+'bzcat' 'bunzip2'
+'dch' 'debchange'
+'gchgrp' 'chgrp'
+'gchown' 'chown'
+'gnupod_addsong.pl' 'gnupod_addsong'
+'gnupod_check.pl' 'gnupod_check'
+'gnupod_INIT.pl' 'gnupod_INIT'
+'gnupod_search.pl' 'gnupod_search'
+'gpg2' 'gpg'
+'gzcat' 'gunzip'
+'iceweasel' 'firefox'
+'lzcat' 'unxz'
+'lzma' 'xz'
+'Mail' 'mail'
+'mailx' 'mail'
+'mktunes.pl' 'mktunes'
+'nail' 'mail'
+'ncl' 'nc'
+'nedit-nc' 'nc'
+'pcat' 'unpack'
+'-redirect-,<,bunzip2' 'bunzip2'
+'-redirect-,<,bzip2' 'bzip2'
+'-redirect-,>,bzip2' 'bunzip2'
+'-redirect-,<,compress' 'compress'
+'-redirect-,>,compress' 'uncompress'
+'-redirect-,<,gunzip' 'gunzip'
+'-redirect-,<,gzip' 'gzip'
+'-redirect-,>,gzip' 'gunzip'
+'-redirect-,<,uncompress' 'uncompress'
+'-redirect-,<,unxz' 'unxz'
+'-redirect-,<,xz' 'xz'
+'-redirect-,>,xz' 'unxz'
+'remsh' 'rsh'
+'slogin' 'ssh'
+'svnadmin-static' 'svnadmin'
+'svnlite' 'svn'
+'svnliteadmin' 'svnadmin'
+'tunes2pod.pl' 'tunes2pod'
+'unlzma' 'unxz'
+'xelatex' 'latex'
+'xetex' 'tex'
+'xzcat' 'unxz'
+'zf_chgrp' 'chgrp'
+'zf_chown' 'chown'
+)
+
+_patcomps=(
+'*/(init|rc[0-9S]#).d/*' '_init_d'
+)
+
+_postpatcomps=(
+'_*' '_compadd'
+'c++-*' '_gcc'
+'g++-*' '_gcc'
+'gcc-*' '_gcc'
+'gem[0-9.]#' '_gem'
+'lua[0-9.-]##' '_lua'
+'(p[bgpn]m*|*top[bgpn]m)' '_pbm'
+'php[0-9.-]' '_php'
+'pip[0-9.]#' '_pip'
+'pydoc[0-9.]#' '_pydoc'
+'python[0-9.]#' '_python'
+'qemu(|-system-*)' '_qemu'
+'(ruby|[ei]rb)[0-9.]#' '_ruby'
+'shasum(|5).*' '_shasum'
+'(texi(2*|ndex))' '_texi'
+'(tiff*|*2tiff|pal2rgb)' '_tiff'
+'-value-,(ftp|http(|s))_proxy,-default-' '_urls'
+'-value-,LC_*,-default-' '_locales'
+'-value-,*path,-default-' '_directories'
+'-value-,*PATH,-default-' '_dir_list'
+'-value-,RUBY(LIB|OPT|PATH),-default-' '_ruby'
+'*/X11(|R<4->)/*' '_x_arguments'
+'yodl(|2*)' '_yodl'
+'zf*' '_zftp'
+)
+
+_compautos=(
+'_call_program' '+X'
+)
+
+zle -C _bash_complete-word .complete-word _bash_completions
+zle -C _bash_list-choices .list-choices _bash_completions
+zle -C _complete_debug .complete-word _complete_debug
+zle -C _complete_help .complete-word _complete_help
+zle -C _complete_tag .complete-word _complete_tag
+zle -C _correct_filename .complete-word _correct_filename
+zle -C _correct_word .complete-word _correct_word
+zle -C _expand_alias .complete-word _expand_alias
+zle -C _expand_word .complete-word _expand_word
+zle -C _history-complete-newer .complete-word _history_complete_word
+zle -C _history-complete-older .complete-word _history_complete_word
+zle -C _list_expansions .list-choices _expand_word
+zle -C _most_recent_file .complete-word _most_recent_file
+zle -C _next_tags .list-choices _next_tags
+zle -C _read_comp .complete-word _read_comp
+bindkey '^X^R' _read_comp
+bindkey '^X?' _complete_debug
+bindkey '^XC' _correct_filename
+bindkey '^Xa' _expand_alias
+bindkey '^Xc' _correct_word
+bindkey '^Xd' _list_expansions
+bindkey '^Xe' _expand_word
+bindkey '^Xh' _complete_help
+bindkey '^Xm' _most_recent_file
+bindkey '^Xn' _next_tags
+bindkey '^Xt' _complete_tag
+bindkey '^X~' _bash_list-choices
+bindkey '^[,' _history-complete-newer
+bindkey '^[/' _history-complete-older
+bindkey '^[~' _bash_complete-word
+
+autoload -Uz _alacritty _bootctl _busctl _bwrap _ctr \
+ _curl _docker _dpkg-parsechangelog _flatpak _hostnamectl \
+ _journalctl _kernel-install _lf _localectl _loginctl \
+ _lsd _machinectl _mpv _networkctl _pulseaudio \
+ _resolvectl _rg _sd_hosts_or_user_at_host _sd_machines _sd_outputmodes \
+ _sd_unit_files _systemctl _systemd _systemd-analyze _systemd-delta \
+ _systemd-inhibit _systemd-nspawn _systemd-path _systemd-run _systemd-tmpfiles \
+ _timedatectl _udevadm _vlc _xwallpaper _zathura \
+ _cdr _floppy _logical_volumes _lscfg _lsdev \
+ _lslv _lspv _lsvg _object_classes _physical_volumes \
+ _smit _volume_groups _bsdconfig _bsd_disks _bsdinstall \
+ _bsd_pkg _chflags _csup _cu _cvsup \
+ _fbsd_architectures _fbsd_device_types _fetch _file_flags _freebsd-update \
+ _fstat _fw_update _gstat _ipfw _jail \
+ _jails _jexec _jls _jot _kdump \
+ _kld _ktrace _ktrace_points _ldap _login_classes \
+ _mixerctl _nbsd_architectures _obsd_architectures _pfctl _pkgin \
+ _portaudit _portlint _portmaster _portsnap _powerd \
+ _procstat _rcctl _routing_domains _routing_tables _signify \
+ _sockstat _sysclean _sysmerge _syspatch _sysrc \
+ _systat _sysupgrade _usbconfig _vmctl _watch-snoop \
+ _all_labels _all_matches _alternative _approximate _arg_compile \
+ _arguments _bash_completions _cache_invalid _call_function _combination \
+ _complete _complete_debug _complete_help _complete_help_generic _complete_tag \
+ _comp_locale _correct _correct_filename _correct_word _describe \
+ _description _dispatch _expand _expand_alias _expand_word \
+ _extensions _external_pwds _generic _guard _history \
+ _history_complete_word _ignored _list _main_complete _match \
+ _menu _message _most_recent_file _multi_parts _next_label \
+ _next_tags _normal _nothing _numbers _oldlist \
+ _pick_variant _prefix _read_comp _regex_arguments _regex_words \
+ _requested _retrieve_cache _sep_parts _sequence _set_command \
+ _setup _store_cache _sub_commands _tags _user_expand \
+ _values _wanted _cygcheck _cygpath _cygrunsrv \
+ _cygserver _cygstart _dumper _getclip _mkshortcut \
+ _mkzsh _pscp _putclip _readshortcut _caffeinate \
+ _defaults _fink _fs_usage _hdiutil _mac_applications \
+ _mac_files_for_application _mdfind _mdls _mdutil _networksetup \
+ _nvram _open _osascript _otool _pbcopy \
+ _plutil _qtplay _retrieve_mac_apps _say _scselect \
+ _sc_usage _scutil _softwareupdate _sw_vers _system_profiler \
+ _trash _xcode-select _a2utils _apt _apt-file \
+ _aptitude _apt-move _apt-show-versions _auto-apt _axi-cache \
+ _bts _bug _cdbs-edit-patch _dak _dchroot \
+ _dchroot-dsa _dcut _deb_architectures _debbugs_bugnumber _debchange \
+ _debcheckout _deb_codenames _debdiff _deb_files _debfoster \
+ _deborphan _deb_packages _debsign _debsnap _debuild \
+ _dlocate _dpatch-edit-patch _dpkg _dpkg-buildpackage _dpkg-cross \
+ _dpkg-repack _dpkg_source _dput _dscverify _dupload \
+ _git-buildpackage _grep-excuses _invoke-rc.d _lighttpd _lintian \
+ _madison _make-kpkg _members _mergechanges _module-assistant \
+ _pbuilder _piuparts _reprepro _sbuild _schroot \
+ _svn-buildpackage _toolchain-source _update-alternatives _update-rc.d _uscan \
+ _vim-addons _wajig _wanna-build _acpi _acpitool \
+ _alsa-utils _analyseplugin _basenc _brctl _btrfs \
+ _capabilities _chattr _chcon _choom _chrt \
+ _cpupower _cryptsetup _dkms _e2label _ethtool \
+ _findmnt _free _fuse_arguments _fusermount _fuse_values \
+ _gpasswd _htop _iconvconfig _ionice _ipset \
+ _iptables _iwconfig _kpartx _losetup _lsattr \
+ _lsblk _lsns _lsusb _ltrace _mat \
+ _mat2 _mdadm _mii-tool _modutils _mondo \
+ _networkmanager _nsenter _opkg _perf _pidof \
+ _pkgtool _pmap _qdbus _schedtool _selinux_contexts \
+ _selinux_roles _selinux_types _selinux_users _setpriv _setsid \
+ _slabtop _ss _sshfs _strace _sysstat \
+ _tload _tpb _tracepath _tune2fs _uml \
+ _unshare _valgrind _vserver _wakeup_capable_devices _wipefs \
+ _wpa_cli _rebootin _urpmi _dnf _rpm \
+ _scl _yum _beadm _be_name _coreadm \
+ _dhcpinfo _dladm _dtrace _dumpadm _flowadm \
+ _fmadm _inetadm _ipadm _pfexec _pkg5 \
+ _prstat _ptree _savecore _snoop _svcadm \
+ _svccfg _svcprop _svcs _svcs_fmri _zlogin \
+ _zoneadm _zones _a2ps _aap _abcde \
+ _absolute_command_paths _ack _adb _ansible _ant \
+ _antiword _apachectl _apm _arch_archives _arch_namespace \
+ _arp _arping _asciidoctor _asciinema _at \
+ _attr _augeas _avahi _awk _base64 \
+ _basename _bash _baudrates _baz _beep \
+ _bibtex _bind_addresses _bison _bittorrent _bogofilter \
+ _bpf_filters _bpython _bzip2 _bzr _cabal \
+ _cal _calendar _canonical_paths _cat _ccal \
+ _cdcd _cdrdao _cdrecord _chkconfig _chmod \
+ _chown _chroot _chsh _cksum _clay \
+ _cmdambivalent _cmdstring _cmp _column _comm \
+ _composer _compress _configure _cowsay _cp \
+ _cpio _cplay _crontab _cscope _csplit \
+ _cssh _ctags _ctags_tags _curl _cut \
+ _cvs _darcs _date _date_formats _dates \
+ _dbus _dconf _dd _devtodo _df \
+ _dhclient _dict _dict_words _diff _diff3 \
+ _diff_options _diffstat _dig _directories _dir_list \
+ _django _dmesg _dmidecode _dns_types _doas \
+ _domains _dos2unix _drill _dropbox _dsh \
+ _dtruss _du _dvi _ecasound _ed \
+ _elfdump _elinks _email_addresses _enscript _entr \
+ _env _espeak _etags _fakeroot _feh \
+ _fetchmail _ffmpeg _figlet _file_modes _files \
+ _file_systems _find _find_net_interfaces _finger _flac \
+ _flex _fmt _fold _fortune _fsh \
+ _fuser _gcc _gcore _gdb _gem \
+ _genisoimage _getconf _getent _getfacl _getmail \
+ _getopt _ghostscript _git _global _global_tags \
+ _gnu_generic _gnupod _gnutls _go _gpg \
+ _gphoto2 _gprof _gradle _graphicsmagick _grep \
+ _groff _groups _growisofs _gsettings _guilt \
+ _gzip _have_glob_qual _head _hexdump _host \
+ _hostname _hosts _iconv _id _ifconfig \
+ _iftop _imagemagick _initctl _init_d _install \
+ _iostat _ip _ipsec _irssi _ispell \
+ _java _java_class _joe _join _jq \
+ _killall _knock _kvno _last _ldconfig \
+ _ldd _ld_debug _less _lha _libvirt \
+ _links _list_files _lldb _ln _loadkeys \
+ _locale _localedef _locales _locate _logger \
+ _look _lp _ls _lsof _lua \
+ _luarocks _lynx _lz4 _lzop _mail \
+ _mailboxes _make _man _md5sum _mencal \
+ _mh _mime_types _mkdir _mkfifo _mknod \
+ _mktemp _module _monotone _moosic _mosh \
+ _mount _mpc _mt _mtools _mtr \
+ _mutt _mv _my_accounts _myrepos _mysqldiff \
+ _mysql_utils _ncftp _netcat _net_interfaces _netstat \
+ _newsgroups _nginx _ngrep _nice _nkf \
+ _nl _nm _nmap _npm _nslookup \
+ _numfmt _objdump _object_files _od _openstack \
+ _opustools _other_accounts _pack _pandoc _paste \
+ _patch _patchutils _path_commands _path_files _pax \
+ _pbm _pdf _perforce _perl _perl_basepods \
+ _perldoc _perl_modules _pgids _pgrep _php \
+ _picocom _pids _pine _ping _pip \
+ _pkgadd _pkg-config _pkginfo _pkg_instance _pkgrm \
+ _pon _ports _postfix _postgresql _postscript \
+ _pr _printenv _printers _process_names _prove \
+ _ps _pspdf _psutils _ptx _pump \
+ _pv _pwgen _pydoc _python _python_modules \
+ _qemu _quilt _rake _ranlib _rar \
+ _rclone _rcs _readelf _readlink _remote_files \
+ _renice _ri _rlogin _rm _rmdir \
+ _route _rrdtool _rsync _rubber _ruby \
+ _runit _samba _sccs _scons _screen \
+ _script _seafile _sed _seq _service \
+ _services _setfacl _sh _shasum _showmount \
+ _shred _shuf _shutdown _signals _sisu \
+ _slrn _smartmontools _socket _sort _spamassassin \
+ _split _sqlite _sqsh _ssh _ssh_hosts \
+ _stat _stdbuf _stgit _stow _strings \
+ _strip _stty _su _subversion _sudo \
+ _surfraw _swaks _swanctl _swift _sys_calls \
+ _sysctl _tac _tail _tar _tar_archive \
+ _tardy _tcpdump _tcptraceroute _tee _telnet \
+ _terminals _tex _texi _texinfo _tidy \
+ _tiff _tilde_files _timeout _time_zone _tin \
+ _tla _tmux _todo.sh _toilet _top \
+ _topgit _totd _touch _tput _tr \
+ _transmission _tree _truncate _truss _tty \
+ _ttys _twidge _twisted _umountable _unace \
+ _uname _unexpand _uniq _unison _units \
+ _uptime _urls _user_admin _user_at_host _users \
+ _users_on _vi _vim _visudo _vmstat \
+ _vorbis _vpnc _w _w3m _watch \
+ _wc _webbrowser _wget _whereis _who \
+ _whois _wiggle _xargs _xmlsoft _xmlstarlet \
+ _xmms2 _xxd _xz _yafc _yodl \
+ _yp _zcat _zdump _zfs _zfs_dataset \
+ _zfs_pool _zip _zsh _acroread _code \
+ _dcop _eog _evince _geany _gnome-gv \
+ _gqview _gv _kdeconnect _kfmclient _matlab \
+ _mozilla _mplayer _mupdf _nautilus _nedit \
+ _netscape _okular _pdftk _qiv _rdesktop \
+ _setxkbmap _sublimetext _urxvt _vnc _x_arguments \
+ _xauth _xautolock _x_borderwidth _xclip _x_color \
+ _x_colormapid _x_cursor _x_display _xdvi _x_extension \
+ _xfig _x_font _xft_fonts _x_geometry _xinput \
+ _x_keysym _xloadimage _x_locale _x_modifier _xmodmap \
+ _x_name _xournal _xpdf _xrandr _x_resource \
+ _xscreensaver _x_selection_timeout _xset _xt_arguments _xterm \
+ _x_title _xt_session_id _x_utils _xv _x_visual \
+ _x_window _xwit _zeal _add-zle-hook-widget _add-zsh-hook \
+ _alias _aliases __arguments _arrays _assign \
+ _autocd _bindkey _brace_parameter _builtin _cd \
+ _command _command_names _compadd _compdef _completers \
+ _condition _default _delimiters _directory_stack _dirs \
+ _disable _dynamic_directory_name _echotc _echoti _emulate \
+ _enable _equal _exec _fc _file_descriptors \
+ _first _functions _globflags _globqual_delims _globquals \
+ _hash _history_modifiers _in_vared _jobs _jobs_bg \
+ _jobs_builtin _jobs_fg _kill _limit _limits \
+ _math _math_params _mere _module_math_func _options \
+ _options_set _options_unset _parameter _parameters _precommand \
+ _print _prompt _ps1234 _read _redirect \
+ _run-help _sched _set _setopt _source \
+ _strftime _subscript _suffix_alias_files _tcpsys _tilde \
+ _trap _ttyctl _typeset _ulimit _unhash \
+ _user_math_func _value _vared _vars _vcs_info \
+ _vcs_info_hooks _wait _which _widgets _zargs \
+ _zattr _zcalc _zcalc_line _zcompile _zed \
+ _zftp _zle _zmodload _zmv _zparseopts \
+ _zpty _zsh-mime-handler _zsocket _zstyle _ztodo \
+ _hwinfo _osc _SUSEconfig _yast _zypper
+autoload -Uz +X _call_program
+
+typeset -gUa _comp_assocs
+_comp_assocs=( '' )
diff --git a/.config/zsh/.zprofile b/.config/zsh/.zprofile
index 40db17a..8e2bade 100644
--- a/.config/zsh/.zprofile
+++ b/.config/zsh/.zprofile
@@ -1,3 +1,4 @@
# if [ -z "$SSH_AUTH_SOCK" ]; then
# eval "$(ssh-agent -s)"
# fi
+systemctl --user import-environment XDG_CURRENT_DESKTOP
diff --git a/.config/zsh/.zshenv b/.config/zsh/.zshenv
index ad91bea..008ea8b 100644
--- a/.config/zsh/.zshenv
+++ b/.config/zsh/.zshenv
@@ -1,12 +1,8 @@
-# unused for now
+set -a
+
export PATH="${$(find ~/.local/bin -type d -printf %p:)%%:}:$PATH"
-
-# default apps
-export EDITOR="/usr/bin/nvim"
-export GPG_TTY=$(tty)
-export MANPAGER="sh -c 'col -bx | bat -l man -p'"
-export MANROFFOPT="-c"
-
+#
+# lc vars
export LANG="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
export LC_NUMERIC="en_US.UTF-8"
@@ -21,3 +17,18 @@ export LC_TELEPHONE="en_US.UTF-8"
export LC_MEASUREMENT="en_US.UTF-8"
export LC_IDENTIFICATION="en_US.UTF-8"
export LC_ALL="en_US.UTF-8"
+
+# default apps
+export EDITOR="/usr/bin/nvim"
+export GPG_TTY="$(tty)"
+export MANPAGER="sh -c 'col -bx | batcat -l man -p'"
+export MANROFFOPT="-c"
+export MTR_OPTIONS="-t"
+
+export XDG_CURRENT_DESKTOP="gtk"
+export XDG_SESSION_DESKTOP="$XDG_CURRENT_DESKTOP"
+export WINDOW_MANAGER="dwm"
+
+export SUDO_ASKPASS="${HOME}/.local/bin/scripts/dmenu_askpass"
+
+set +a
diff --git a/.config/zsh/.zshrc b/.config/zsh/.zshrc
index caaa470..4a6128b 100644
--- a/.config/zsh/.zshrc
+++ b/.config/zsh/.zshrc
@@ -1,3 +1,5 @@
+[[ $- != *i* ]] && return
+
# ls colors
eval "$(dircolors -b)"
@@ -5,6 +7,7 @@ eval "$(dircolors -b)"
HISTSIZE=10000000
SAVEHIST=10000000
HISTFILE="${HOME}/.cache/zsh_history"
+
setopt hist_expire_dups_first
setopt hist_ignore_dups
setopt hist_ignore_all_dups
@@ -29,18 +32,12 @@ bindkey "^[[1;3D" backward-word
bindkey "^[[1;5D" backward-word
-bindkey "^[^H" backward-word
-bindkey "^[^L" forward-word
-bindkey "^[h" backward-char
-bindkey "^[f" forward-char
+bindkey "^[n" backward-word
+bindkey "^[m" forward-word
# completions
autoload -Uz compinit
-if [[ -n ${ZDOTDIR}/.zcompdump(#qN.mh+24) ]]; then
- compinit;
-else
- compinit -C;
-fi;
+compinit
zstyle ':completion:*' menu select
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}'
@@ -58,17 +55,43 @@ alias ll="ls -lh"
alias tree="ls --tree"
# set bat as help pager
-alias -g -- -h='-h 2>&1 | bat --language=help --style=plain'
-alias -g -- --help='--help 2>&1 | bat --language=help --style=plain'
+alias -g -- --help='--help 2>&1 | batcat --language=help --style=plain'
# useful cd aliases
-alias ..="cd .."
-alias ...="cd ../.."
+alias ..="cd ../"
+alias ...="cd ../../"
alias ....="cd ../../../"
+alias .....="cd ../../../../"
+alias ......="cd ../../../../../"
+alias .......="cd ../../../../../../"
# aliases
-alias dt="git --git-dir=$HOME/.dotfiles/git --work-tree=$HOME"
alias rz="exec zsh"
-alias reload_completion="autoload -Uz compinit && compinit"
-alias gitignore="cp ${HOME}/.local/share/gitignore-template ./.gitignore"
alias venv="source _venv"
+alias cdb="compiledb "
+alias info="pinfo "
+alias bat="batcat "
+alias img="nsxiv "
+alias xclip="xclip -selection clipboard"
+alias d="diff --color -u "
+
+# function aliases
+bl () { brightnessctl set $1% &> /dev/null }
+clines() { find $@ \( -name '*.cpp' -o -name '*.[ch]' \) -a ! -path '*cmake-build*' | xargs wc -l }
+nosw() { alacritty --class 'noswallow' -e "$@" }; compdef _command nosw
+t() { if [ -z "$1" ]; then taskell ~/.taskell.md; else taskell "$1"; fi }
+
+# git aliases
+alias gitignore="cp ${HOME}/.local/share/gitignore-template ./.gitignore"
+alias gs="git status"
+alias gc="git commit"
+alias gp="git push"
+alias gl="git log"
+alias ga="git add"
+alias gck="git checkout"
+alias gb="git branch"
+alias gd="git diff"
+alias gr="git restore"
+
+# disable xon controll chars
+stty -ixon
diff --git a/.fonts/MononokiNerdFont-Bold.ttf b/.fonts/MononokiNerdFont-Bold.ttf
new file mode 100644
index 0000000..29413a5
Binary files /dev/null and b/.fonts/MononokiNerdFont-Bold.ttf differ
diff --git a/.fonts/MononokiNerdFont-BoldItalic.ttf b/.fonts/MononokiNerdFont-BoldItalic.ttf
new file mode 100644
index 0000000..e1e7dca
Binary files /dev/null and b/.fonts/MononokiNerdFont-BoldItalic.ttf differ
diff --git a/.fonts/MononokiNerdFont-Italic.ttf b/.fonts/MononokiNerdFont-Italic.ttf
new file mode 100644
index 0000000..e26dbbf
Binary files /dev/null and b/.fonts/MononokiNerdFont-Italic.ttf differ
diff --git a/.fonts/MononokiNerdFont-Regular.ttf b/.fonts/MononokiNerdFont-Regular.ttf
new file mode 100644
index 0000000..86b1e63
Binary files /dev/null and b/.fonts/MononokiNerdFont-Regular.ttf differ
diff --git a/.fonts/MononokiNerdFontMono-Bold.ttf b/.fonts/MononokiNerdFontMono-Bold.ttf
new file mode 100644
index 0000000..ebd5610
Binary files /dev/null and b/.fonts/MononokiNerdFontMono-Bold.ttf differ
diff --git a/.fonts/MononokiNerdFontMono-BoldItalic.ttf b/.fonts/MononokiNerdFontMono-BoldItalic.ttf
new file mode 100644
index 0000000..340a75f
Binary files /dev/null and b/.fonts/MononokiNerdFontMono-BoldItalic.ttf differ
diff --git a/.fonts/MononokiNerdFontMono-Italic.ttf b/.fonts/MononokiNerdFontMono-Italic.ttf
new file mode 100644
index 0000000..7373c41
Binary files /dev/null and b/.fonts/MononokiNerdFontMono-Italic.ttf differ
diff --git a/.fonts/MononokiNerdFontMono-Regular.ttf b/.fonts/MononokiNerdFontMono-Regular.ttf
new file mode 100644
index 0000000..0a627cb
Binary files /dev/null and b/.fonts/MononokiNerdFontMono-Regular.ttf differ
diff --git a/.fonts/MononokiNerdFontPropo-Bold.ttf b/.fonts/MononokiNerdFontPropo-Bold.ttf
new file mode 100644
index 0000000..65ba69a
Binary files /dev/null and b/.fonts/MononokiNerdFontPropo-Bold.ttf differ
diff --git a/.fonts/MononokiNerdFontPropo-BoldItalic.ttf b/.fonts/MononokiNerdFontPropo-BoldItalic.ttf
new file mode 100644
index 0000000..f185fbd
Binary files /dev/null and b/.fonts/MononokiNerdFontPropo-BoldItalic.ttf differ
diff --git a/.fonts/MononokiNerdFontPropo-Italic.ttf b/.fonts/MononokiNerdFontPropo-Italic.ttf
new file mode 100644
index 0000000..5410065
Binary files /dev/null and b/.fonts/MononokiNerdFontPropo-Italic.ttf differ
diff --git a/.fonts/MononokiNerdFontPropo-Regular.ttf b/.fonts/MononokiNerdFontPropo-Regular.ttf
new file mode 100644
index 0000000..57e5b40
Binary files /dev/null and b/.fonts/MononokiNerdFontPropo-Regular.ttf differ
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 033dfe3..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-# lazy.nvim lockfile
-.config/tmux/plugins/
-.zcompdump
diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index f6c6a45..0000000
--- a/.gitmodules
+++ /dev/null
@@ -1,3 +0,0 @@
-[submodule ".local/share/tmux-plugins/tpm"]
- path = .local/share/tmux-plugins/tpm
- url = https://github.com/tmux-plugins/tpm
diff --git a/.gtkrc-2.0 b/.gtkrc-2.0
new file mode 100644
index 0000000..eb57564
--- /dev/null
+++ b/.gtkrc-2.0
@@ -0,0 +1,19 @@
+# DO NOT EDIT! This file will be overwritten by LXAppearance.
+# Any customization should be done in ~/.gtkrc-2.0.mine instead.
+
+# include "~/.gtkrc-2.0.mine"
+gtk-theme-name="Yaru-dark"
+gtk-icon-theme-name="Yaru-dark"
+gtk-font-name="Sans 10"
+gtk-cursor-theme-name="Breeze"
+gtk-cursor-theme-size=24
+gtk-toolbar-style=GTK_TOOLBAR_TEXT
+gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
+gtk-button-images=0
+gtk-menu-images=1
+gtk-enable-event-sounds=1
+gtk-enable-input-feedback-sounds=1
+gtk-xft-antialias=1
+gtk-xft-hinting=1
+gtk-xft-hintstyle="hintfull"
+gtk-xft-rgba="rgb"
diff --git a/.local/bin/scripts/gd b/.local/bin/scripts/gd
deleted file mode 100755
index 729b585..0000000
--- a/.local/bin/scripts/gd
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/bash
-
-
-read -p "Date: " date
-export GIT_AUTHOR_DATE="${date}"
-export GIT_COMMITTER_DATE="${date}"
-
-git $@
diff --git a/.local/scripts/_venv b/.local/scripts/_venv
new file mode 100644
index 0000000..3eddbad
--- /dev/null
+++ b/.local/scripts/_venv
@@ -0,0 +1,72 @@
+VENV_FOLDER=".venv"
+OPERATION=c
+
+deactivate_() {
+ if [ ! -z "${VIRTUAL_ENV}" ]; then
+ deactivate
+ fi
+}
+
+create_or_activate() {
+ if [ -z "${VIRTUAL_ENV}" ]; then
+ if [ -d "${VENV_FOLDER}" ]; then
+ source ./${VENV_FOLDER}/bin/activate
+ else
+ python3 -m venv "${VENV_FOLDER}"
+ source ./${VENV_FOLDER}/bin/activate
+ fi
+ else
+ deactivate
+ fi
+}
+
+
+remove() {
+ deactivate_
+ if [ -d "${VENV_FOLDER}" ]; then
+ rm -r "${VENV_FOLDER}"
+ fi
+}
+
+while [ "$#" -gt 0 ]; do
+ case "$1" in
+ '-c'|"--create")
+ OPERATION=c
+ ;;
+
+ '-r'|"--remove")
+ OPERATION=r
+ ;;
+
+ '-d'|"--deactivate")
+ deactivate_
+ return
+ ;;
+
+ '-h'|"--help")
+ echo "venv [OPTION] [VENV_FOLDER]"
+ echo
+ echo "ARGUMENTS:"
+ echo "\t VENV_FOLDER \t\t Folder containing virtual environment"
+ echo
+ echo "OPTIONS:"
+ echo "\t -c, --create \t\t Create virtual environment"
+ echo "\t -d, --deactivate \t Exit virtual environment"
+ echo "\t -r, --remove \t\t Deactivate and remove virtual environment"
+ echo "\t -h, --help \t\t Print this message"
+ return
+ ;;
+
+ *)
+ VENV_FOLDER="$1"
+ ;;
+ esac
+ shift
+done
+
+case "${OPERATION}" in
+ c) create_or_activate;;
+ r) remove;;
+esac
+
+# vim: set ft=sh
diff --git a/.local/scripts/cast b/.local/scripts/cast
new file mode 100755
index 0000000..11d610d
--- /dev/null
+++ b/.local/scripts/cast
@@ -0,0 +1,45 @@
+#!/bin/bash
+
+PIDFILE="${XDG_RUNTIME_DIR}/mkchromecast.pid"
+
+WIDTH=1440
+HEIGHT=1080
+ASPECT_OFFSET=240
+OUTPUT_NAME='DVI-I-1-1'
+
+command() {
+ echo "ffmpeg -ac 2 -ar 44100 -frame_size 2048 -fragment_size 2048 -f pulse -ac 2 -i Mkchromecast.monitor -f x11grab -r 30 -s ${WIDTH}x${HEIGHT} -i :0.0+$1,0 -vcodec libx264 -preset veryfast -tune zerolatency -maxrate 10000k -bufsize 20000k -pix_fmt yuv420p -g 60 -f mp4 -vf scale=1280:720 -movflags frag_keyframe+empty_moov -ar 44100 -acodec libvorbis pipe:1"
+}
+
+set -x
+
+cleanup() {
+ xrandr --output DVI-I-1-1 --off
+ pid="$(cat ${PIDFILE})"
+ rm "${PIDFILE}"
+ pkill -35 dwmblocks
+ kill -INT "${pid}"
+}
+
+run() {
+ xrandr --setprovideroutputsource 1 0
+ xrandr --addmode DVI-I-1-1 1920x1080
+ xrandr --output ${OUTPUT_NAME} --mode 1920x1080 --rate 60 --right-of eDP-1
+
+ echo $$ > "${PIDFILE}"
+ pkill -35 dwmblocks
+ offset=$(( "$(xrandr | grep DVI | cut -d ' ' -f 3 | cut -d '+' -f 2)" + ${ASPECT_OFFSET} ))
+ systemd-inhibit --what=handle-lid-switch sleep 2592000 &
+ exec mkchromecast --video --command "$(command ${offset})"
+}
+
+if [ "$1" = "-k" ]; then
+ cleanup
+ exit 0
+fi
+
+if [ -f "${PIDFILE}" ]; then
+ cleanup || run
+else
+ run
+fi
diff --git a/.local/scripts/dmenu_askpass b/.local/scripts/dmenu_askpass
new file mode 100755
index 0000000..8637d40
--- /dev/null
+++ b/.local/scripts/dmenu_askpass
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+echo $(dmenu -p "$1" -nf '#3a3a3a' <&-)
diff --git a/.local/scripts/dual_monitor b/.local/scripts/dual_monitor
new file mode 100755
index 0000000..b12ea3a
--- /dev/null
+++ b/.local/scripts/dual_monitor
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+MODELINE=$(cvt 4120 1440 144 | tail -1 | cut -d " " -f 2- | tr -d '"')
+RES="$(echo $MODELINE | cut -d ' ' -f 1 | tr -d '\"')"
+OUTPUT="DVI-I-1-1"
+
+create() {
+ xrandr --newmode $(echo $MODELINE)
+ xrandr --addmode ${OUTPUT} "${RES}"
+ xrandr --output ${OUTPUT} --mode "${RES}"
+}
+
+remove() {
+ xrandr --output ${OUTPUT} --off
+ xrandr --delmode ${OUTPUT} "${RES}"
+ xrandr --rmmode "${RES}"
+}
+
+create_or_remove() {
+ if [ ! -z "$(xrandr | grep ${RES} | grep '*')" ]; then
+ remove
+ else
+ create
+ fi
+}
+
+case "$1" in
+ '-c'|'--create') create
+ ;;
+ '-d'|'--delete') remove
+ ;;
+ *) create_or_remove
+ ;;
+esac
diff --git a/.local/scripts/gdt b/.local/scripts/gdt
new file mode 100755
index 0000000..b67a66f
--- /dev/null
+++ b/.local/scripts/gdt
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+if [ ! -d .git ]; then
+ echo "missing .git dir!"
+ exit 1
+fi
+
+echo "Last commit: $(git log | grep 'Date' | cut -d ' ' -f 4- | head -1)"
+read -p "Date: " date
+
+export GIT_AUTHOR_DATE="${date}"
+export GIT_COMMITTER_DATE="${date}"
+
+git "$@"
diff --git a/.local/scripts/vpn b/.local/scripts/vpn
new file mode 100755
index 0000000..194e1a7
--- /dev/null
+++ b/.local/scripts/vpn
@@ -0,0 +1,44 @@
+#!/bin/bash
+
+IFNAME="wg_swe"
+
+while [ "$#" -gt 0 ]; do
+ case "$1" in
+ 'd'|'-d'|'--dpi') DPI="_d"
+ ;;
+ 'm'|'msk') IFNAME='wg_msk'
+ ;;
+ '-v'|'--verbose') VERBOSE=1
+ ;;
+ '--visual') USE_TERMINAL=1
+ ;;
+ *) echo "Wrong argument!"; exit 1
+ ;;
+ esac
+ shift
+done
+
+if [ -z "${VERBOSE}" ]; then
+ exec &>/dev/null
+else
+ set -x
+fi
+
+UP_NAME="$(ip link show | grep 'wg' | cut -d ' ' -f 2 | sed 's/://')"
+
+sudo_a() {
+ dmenu -p "$1" <&-
+}
+
+if [ ! -z "${USE_TERMINAL}" ]; then
+ LAUNCH_CMD=(sudo -A -p "Password:")
+fi
+
+if [ -z "${UP_NAME}" ]; then
+ IFNAME="${IFNAME}${DPI}"
+ ${LAUNCH_CMD[@]} wg-quick up ${IFNAME}
+else
+ ${LAUNCH_CMD[@]} wg-quick down ${UP_NAME}
+fi
+
+pkill -36 dwmblocks
diff --git a/.local/scripts/xr b/.local/scripts/xr
new file mode 100755
index 0000000..59df412
--- /dev/null
+++ b/.local/scripts/xr
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+# supress stderr
+exec 2> /dev/null
+
+change_dpi() {
+ sed -i -E "s/Xft\.dpi: .*?/Xft\.dpi: $1/g" ~/.Xresources
+ sed -i -E "s/Xcursor\.size: .*?/Xcursor\.size: $2/g" ~/.Xresources
+
+ sed -i -E "s/gtk-cursor-theme-size=.*?/gtk-cursor-theme-size=$2/g" ~/.config/gtk-3.0/settings.ini
+
+ sed -i -E "s/gtk-cursor-theme-size=.*?/gtk-cursor-theme-size=$2/g" ~/.gtkrc-2.0
+
+ echo "Xft/DPI $(expr $1 \* 1024)" > ~/.xsettingsd
+ echo "Gtk/CursorThemeSize $2" >> ~/.xsettingsd
+
+ xrdb -merge ~/.Xresources
+ killall -HUP dwm
+ killall -HUP xsettingsd
+}
+
+EXT_MON="$(xrandr | grep -ow "\(DP-[0-9]\) connected" | cut -d " " -f 1)"
+INT_MODELINE=$(cvt 1560 1040 90 | grep "Modeline" | cut -d " " -f 2- | tr -d '"')
+INT_RES="$(echo $INT_MODELINE | cut -d ' ' -f 1 | tr -d '\"')"
+
+if [[ -z "${EXT_MON}" ]]; then
+ xrandr --delmode eDP-1 "${INT_RES}"
+ xrandr --rmmode "${INT_RES}"
+ xrandr --output eDP-1 --pos 0x0 --mode "3120x2080" --rate 90 --primary --output DP-1 --off --output DP-2 --off --output DP-3 --off --output DP-4 --off
+ change_dpi 192 48
+else
+ xrandr --rmmode "${INT_RES}"
+ xrandr --newmode $(echo $INT_MODELINE)
+ xrandr --addmode eDP-1 "${INT_RES}"
+ xrandr --output eDP-1 --pos 2560x400 --mode "${INT_RES}" --output ${EXT_MON} --pos 0x0 --mode "2560x1440" --rate 144 --primary
+ change_dpi 96 24
+fi
+
+${HOME}/.config/X11/autostart
diff --git a/.local/share/gitignore-template b/.local/share/gitignore-template
deleted file mode 100644
index 06a1589..0000000
--- a/.local/share/gitignore-template
+++ /dev/null
@@ -1,139 +0,0 @@
-### Languages
-# C++
-*.d
-*.slo
-*.lo
-*.o
-*.obj
-*.gch
-*.pch
-*.so
-*.dylib
-*.dll
-*.mod
-*.smod
-*.lai
-*.la
-*.a
-*.lib
-*.exe
-*.out
-*.app
-
-# Python
-__pycache__/
-*.py[cod]
-*$py.class
-*.so
-.Python
-build/
-develop-eggs/
-dist/
-downloads/
-eggs/
-.eggs/
-lib/
-lib64/
-parts/
-sdist/
-var/
-wheels/
-share/python-wheels/
-*.egg-info/
-.installed.cfg
-*.egg
-MANIFEST
-*.manifest
-*.spec
-pip-log.txt
-pip-delete-this-directory.txt
-htmlcov/
-.tox/
-.nox/
-.coverage
-.coverage.*
-.cache
-nosetests.xml
-coverage.xml
-*.cover
-*.py,cover
-.hypothesis/
-.pytest_cache/
-cover/
-*.mo
-*.pot
-*.log
-local_settings.py
-db.sqlite3
-db.sqlite3-journal
-instance/
-.webassets-cache
-.scrapy
-docs/_build/
-.pybuilder/
-target/
-.ipynb_checkpoints
-profile_default/
-ipython_config.py
-.pdm.toml
-__pypackages__/
-celerybeat-schedule
-celerybeat.pid
-*.sage.py
-.env
-.venv
-env/
-venv/
-ENV/
-env.bak/
-venv.bak/
-.spyderproject
-.spyproject
-.ropeproject
-/site
-.mypy_cache/
-.dmypy.json
-dmypy.json
-.pyre/
-.pytype/
-cython_debug/
-poetry.toml
-.ruff_cache/
-pyrightconfig.json
-
-### IDE
-# JetBrains
-.idea
-*.iws
-.idea_modules/
-atlassian-ide-plugin.xml
-.idea/replstate.xml
-.idea/sonarlint/
-com_crashlytics_export_strings.xml
-crashlytics.properties
-crashlytics-build.properties
-fabric.properties
-.idea/httpRequests
-.idea/caches/build_file_checksums.ser
-
-# VSCode
-.vscode/*
-.history/
-*.vsix
-.ionide
-
-# CMake
-cmake-build-*/
-.cache/
-CMakeLists.txt.user
-CMakeCache.txt
-CMakeFiles
-CMakeScripts
-Testing
-Makefile
-cmake_install.cmake
-install_manifest.txt
-compile_commands.json
-CTestTestfile.cmake
-_deps
-*-prefix/
diff --git a/.local/share/tmux-plugins/tpm b/.local/share/tmux-plugins/tpm
deleted file mode 160000
index 99469c4..0000000
--- a/.local/share/tmux-plugins/tpm
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 99469c4a9b1ccf77fade25842dc7bafbc8ce9946
diff --git a/.local/share/wallpaper/wallpaper.png b/.local/share/wallpaper/wallpaper.png
new file mode 100644
index 0000000..4e4645d
Binary files /dev/null and b/.local/share/wallpaper/wallpaper.png differ
diff --git a/.local/statusbar/sb-battery b/.local/statusbar/sb-battery
new file mode 100755
index 0000000..8971ba9
--- /dev/null
+++ b/.local/statusbar/sb-battery
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+for battery in /sys/class/power_supply/BAT?*; do
+ [ -n "${capacity+x}" ] && printf " "
+ case "$(cat "$battery/status" 2>&1)" in
+ "Full") status="⚡ " ;;
+ "Discharging") status="🔋" ;;
+ "Charging") status="🔌" ;;
+ "Not charging") status="🛑" ;;
+ "Unknown") status="♻️" ;;
+ *) exit 1 ;;
+ esac
+ capacity="$(cat "$battery/capacity" 2>&1)"
+ # Will make a warn variable if discharging and low
+ [ "$status" = "🔋" ] && [ "$capacity" -le 25 ] && warn="❗"
+ # Prints the info
+ printf "%s%s%d%%" "$status" "$warn" "$capacity"; unset warn
+done && printf "\\n"
diff --git a/.local/statusbar/sb-cast b/.local/statusbar/sb-cast
new file mode 100755
index 0000000..61447f4
--- /dev/null
+++ b/.local/statusbar/sb-cast
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+PIDFILE="${XDG_RUNTIME_DIR}/mkchromecast.pid"
+
+if [ -f "${PIDFILE}" ]; then
+ printf "🔴 Casting"
+fi
diff --git a/.local/statusbar/sb-vpn b/.local/statusbar/sb-vpn
new file mode 100755
index 0000000..c199079
--- /dev/null
+++ b/.local/statusbar/sb-vpn
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+IFNAME="$(ip link show | grep 'wg_' | cut -d ' ' -f 2 | sed 's/://' | sed 's/wg_//' | tr '[:lower:]' '[:upper:]' | sed 's/_D/ (dpi)/')"
+
+if [ ! -z "${IFNAME}" ]; then
+ echo "🛡️ ${IFNAME}"
+fi
diff --git a/.xinitrc b/.xinitrc
new file mode 100644
index 0000000..07628fa
--- /dev/null
+++ b/.xinitrc
@@ -0,0 +1,6 @@
+. ${HOME}/.config/X11/xprofile
+xr
+# . ${HOME}/.config/X11/autostart
+
+exec dbus-run-session ssh-agent ${HOME}/.local/src/dwm/dwm
+# ssh-agent /usr/bin/dwm
diff --git a/.xsettingsd b/.xsettingsd
new file mode 100644
index 0000000..2f9ef25
--- /dev/null
+++ b/.xsettingsd
@@ -0,0 +1,2 @@
+Xft/DPI 98304
+Gtk/CursorThemeSize 24
diff --git a/.zshenv b/.zshenv
index 0219df4..d4ab94a 100644
--- a/.zshenv
+++ b/.zshenv
@@ -1,3 +1,2 @@
export ZDOTDIR="${HOME}/.config/zsh"
-
source "${ZDOTDIR}/.zshenv"