Compare commits
167 Commits
master
...
fccbc60400
| Author | SHA1 | Date | |
|---|---|---|---|
| fccbc60400 | |||
| 226667afdd | |||
| 4e1e89b6de | |||
| 80594fb9cd | |||
| ab463f9a8d | |||
| 1743fc3cb0 | |||
| 3aa7246458 | |||
| 7656f1db67 | |||
| 219b0466db | |||
| b3b04d9efe | |||
| 7f1fea5a8c | |||
| 1d42c23f1c | |||
| fdb736c39e | |||
| 7004a10dd6 | |||
| 8337231b23 | |||
| a37ae0f8bf | |||
| de8d8cf6ef | |||
| 61e964a0e0 | |||
| 5ad950c65e | |||
| aca76de49d | |||
| 9a77b3730e | |||
| b6f9d9c9b5 | |||
| b4ebc3f4f3 | |||
| 29f75429ed | |||
| 0d9360c53a | |||
| a43babdad9 | |||
| 754b811dea | |||
| 5acd019f5b | |||
| c5c64b9247 | |||
| 5f37235a4c | |||
| 70cd97c9b0 | |||
| 0a551a210b | |||
| c37e371dda | |||
| 09aaa47790 | |||
| ecadd54569 | |||
| d2fc26e982 | |||
| 40e7629ce3 | |||
| e06b7d94ac | |||
| ac0480b08e | |||
| 34fd4bd6c9 | |||
| 389dbe5c9d | |||
| 0d65fc0d2a | |||
| a9415caa6e | |||
| 8266382d70 | |||
| 786ea69867 | |||
| 3e79476b5d | |||
| 85395280ba | |||
| 3b57990b9d | |||
| 4629322b51 | |||
| 7f52230f2e | |||
| 6e0320da4f | |||
| 832080bbe6 | |||
| 734938a724 | |||
| 4db06659a0 | |||
| 24c0064ec9 | |||
| f5ad3f4926 | |||
| b618dfc5f0 | |||
| a7c7a45463 | |||
| a619b0b47e | |||
| 1e0263e5ed | |||
| 9a2a4822c2 | |||
| 9f4a0eb52d | |||
| 2c4d4c2a10 | |||
| 6371fee81b | |||
| d45450227e | |||
| 0be2ea5be3 | |||
| 7ab3c8cdbb | |||
| 410cfe4fca | |||
| baec05802d | |||
| 85553bd9ac | |||
| f6c795b8e9 | |||
| 9778bd3e69 | |||
| 0c16c1d8fe | |||
| bd1652deff | |||
| 4dfb7abbba | |||
| a7c0178983 | |||
| 292de198a6 | |||
| 48392501e1 | |||
| dafff8e0cd | |||
| b4f94f7064 | |||
| be03be655e | |||
| 4a698f6e1f | |||
| 195176678c | |||
| 71b7e78112 | |||
| 11e8870aed | |||
| 19a7dd6dee | |||
| e734764630 | |||
| a09a464f0c | |||
| 5018c78956 | |||
| ce19fa1371 | |||
| 95fdacdd31 | |||
| cef92f13c9 | |||
| 876aa0ac1c | |||
| 7c05d57053 | |||
| bce8fbc87c | |||
| 58fa05c6f8 | |||
| 77108587b2 | |||
| 297d2959fa | |||
| bcd7480efc | |||
| e149e46b81 | |||
| e54be984ac | |||
| 9130eb1a37 | |||
| fb9eece5ce | |||
| 3f2951a1ea | |||
| b04611b199 | |||
| aeb8a78721 | |||
| 836267b80e | |||
| 4866eb3f9c | |||
| 18e93a89db | |||
| 869482ba91 | |||
| 73d76e8cee | |||
| e0f22f25cf | |||
| f76cac70eb | |||
| 270338f6d3 | |||
| 9edf260607 | |||
| 512599d8d7 | |||
| 7f28c1c13f | |||
| e1869dcbc3 | |||
| f5ea4d4c13 | |||
| c3580ea62a | |||
| edb02ef94b | |||
| 53b29759e8 | |||
| a95d62b7e8 | |||
| bf90b5fbe9 | |||
| 9edbed2349 | |||
| 95fc836b55 | |||
| 51457299a9 | |||
| ad532f260f | |||
| 5ffcbbffcc | |||
| 0794c045fb | |||
| 7fcc30a7c7 | |||
| 8a4b46d38d | |||
| 1c36fc4f5d | |||
| ff8b03f04d | |||
| ec87546913 | |||
| a1f90c79d6 | |||
| 399fae9c2b | |||
| 9538406245 | |||
| 90e7cbe7c6 | |||
| fd727586f9 | |||
| 1c42f46fbc | |||
| 86027c1564 | |||
| 78d758b8fb | |||
| 6757fc6aec | |||
| 28fbb75b47 | |||
| 829804f2ed | |||
| ebec63e48c | |||
| b600226065 | |||
| 4398125c7b | |||
| 9064a389e9 | |||
| e507e258e3 | |||
| d138f4c1da | |||
| fa085ae00c | |||
| d8a21e78c4 | |||
| 213a93acd9 | |||
| bdde8238c9 | |||
| d21fdc925c | |||
| dba234077e | |||
| 867e3d6991 | |||
| ecb466f230 | |||
| f5302fc646 | |||
| 3eaba86825 | |||
| 1b0d0597b0 | |||
| 63860cd661 | |||
| d122f56ab6 | |||
| a5c491d1ce | |||
| d6ba2a78b9 |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -4,8 +4,11 @@ shell/.config/zsh/plugins/zsh-syntax-highlighting
|
||||
shell/.config/zsh/plugins/zsh-vi-mode
|
||||
qtile/.config/qtile/theme.txt
|
||||
lupan-clock/lupan-clock
|
||||
lupan-clock/stdout-clock
|
||||
lupan-wm/target
|
||||
*~
|
||||
__pycache__
|
||||
/dwm
|
||||
/st
|
||||
/vis/.config/vis/plugins/
|
||||
/tools/.local/bin/
|
||||
|
||||
20
Makefile
20
Makefile
@@ -1,7 +1,7 @@
|
||||
all:
|
||||
@echo "run: make clone build install"
|
||||
|
||||
clone: ~/.local/share/zap dwm st
|
||||
clone: dwm st
|
||||
|
||||
build: build-dwm build-st build-lupan-clock
|
||||
|
||||
@@ -14,32 +14,38 @@ install: install-dwm install-st install-lupan-clock install-other
|
||||
|
||||
dwm:
|
||||
git clone https://git.suckless.org/dwm
|
||||
cp -i patches/dwm/config.h dwm/
|
||||
cd dwm && \
|
||||
git remote add lupan.pl https://gitea.lupan.pl/lupan/dwm.git && \
|
||||
git fetch lupan.pl && \
|
||||
git checkout -b wip --track lupan.pl/wip
|
||||
|
||||
build-dwm:
|
||||
make -C dwm
|
||||
|
||||
install-dwm:
|
||||
make -C dwm install PREFIX="${HOME}/.local"
|
||||
make -C dwm install PREFIX="${HOME}/.local/stow/dwm"
|
||||
stow -d ~/.local/stow dwm
|
||||
|
||||
st:
|
||||
git clone https://git.suckless.org/st
|
||||
cd st && \
|
||||
git remote add lupan.pl https://gitea.lupan.pl/lupan/st.git && \
|
||||
git fetch lupan.pl && \
|
||||
git checkout -b patched --track lupan.pl/patched
|
||||
git checkout -b patched-5 --track lupan.pl/patched-5
|
||||
|
||||
build-st:
|
||||
make -C st
|
||||
|
||||
install-st:
|
||||
make -C st install PREFIX="${HOME}/.local"
|
||||
make -C st install PREFIX="${HOME}/.local/stow/st"
|
||||
stow -d ~/.local/stow st
|
||||
|
||||
build-lupan-clock:
|
||||
make -C lupan-clock
|
||||
|
||||
install-lupan-clock:
|
||||
make -C lupan-clock install PREFIX="${HOME}/.local"
|
||||
make -C lupan-clock install PREFIX="${HOME}/.local/stow/lupan-clock"
|
||||
stow -d ~/.local/stow lupan-clock
|
||||
|
||||
install-other:
|
||||
stow -Rv shell tmux xsession nvim
|
||||
stow -Rv lazygit shell tmux nvim vis xsession
|
||||
|
||||
266
a4/.config/a4/a4.ini
Normal file
266
a4/.config/a4/a4.ini
Normal file
@@ -0,0 +1,266 @@
|
||||
# Session settings
|
||||
# Name used for the default session
|
||||
session = default
|
||||
# Key press used to detatch from a session. Typically a Control key specified
|
||||
# with prefix C-, for example C-\ for Control-backslash. Single keys are also
|
||||
# allowed but not Meta (M-) keys.
|
||||
detach_key = C-\
|
||||
|
||||
# Application Theming
|
||||
# Colors are specified as -1 for default, 0-7 for standard, 8-15 for bright,
|
||||
# 16-231 for extended, 232-255 for gray scale, 0xRRGGBB for 24-bit RGB colors,
|
||||
# or you can use any of the X11 or Web Color Names. One or more comma separated
|
||||
# font attributes may optionally be specified: bold, italic, reverse, strike,
|
||||
# and blink. The attributes may also optionally include one of three underline
|
||||
# types single, double, or curly.
|
||||
include = theme_blue.ini
|
||||
#statusbar_attr = white 0x5F636A
|
||||
#tag_unoccupied = white 0x5F636A
|
||||
#titlebar_unselected = white 0x004C6C
|
||||
titlebar_unselected = 0x808080 0x000000
|
||||
#tag_occupied = white 0x004C6C
|
||||
#tag_urgent = white 0x004C6C bold,blink
|
||||
#titlebar_selected = white 0x00AEEF
|
||||
titlebar_selected = white 0x004C6C
|
||||
#tag_selected = white 0x00AEEF bold
|
||||
# Read only settings are overlayed onto the three titlebar settings above. Set
|
||||
# either fg or bg to -1 to retain that titlebar setting. Any specified
|
||||
# attributes are combined with those from above. These must be in this order
|
||||
# and must be after all other titlebar definitions!
|
||||
#titlebar_urgent = 0xE7DDB4 -1 blink
|
||||
#titlebar_readonly = 0xA56815 -1 bold,italic
|
||||
|
||||
# Define up to 9 alphanumeric tag names, how they will be displayed on the
|
||||
# status bar, and the types of colors and font attributes.
|
||||
tagnames = 1 2 3 4 5 6 7 8 9
|
||||
#tagnames = play dev test stage prod
|
||||
tag_printf = " %s "
|
||||
# Number of lines saved for each terminal's scroll back history
|
||||
scroll_history = 5000
|
||||
# The size of the layout zoom area is a number from .1 to .9, and the number of
|
||||
# terminals in the zoom area is a number 1 or more.
|
||||
zoomsize = .5
|
||||
zoomnum = 1
|
||||
|
||||
# Specify one or more status bar commands to cycle through at the given number
|
||||
# of interval seconds. Set interval to 0 to have the command run once and not
|
||||
# refresh. Set interval to -1 to not have any status bar text.
|
||||
statusbar_cmd = date; echo " | a4/$A4_SESSION" $A4
|
||||
statusbar_cmd = uptime; echo " | a4/$A4_SESSION" $A4
|
||||
#statusbar_cmd = cat ~/.cache/status/statusbar.txt; echo ' | a4' $A4
|
||||
statusbar_interval = 10
|
||||
statusbar_display = true
|
||||
statusbar_top = true
|
||||
#statusbar_begin = [
|
||||
#statusbar_end = ]
|
||||
|
||||
# The terminal cursor can be set to visible or hidden, blinking or solid, and
|
||||
# the shape can be 1-block, 2-underline, or 3-bar.
|
||||
cursorvis = true
|
||||
cursorblink = true
|
||||
cursorshape = 1
|
||||
|
||||
# Any number of actions assigned to the optional special keyword "startup" are
|
||||
# run when a4 is started, in the order specified.
|
||||
#include = startup.ini
|
||||
startup = create
|
||||
#startup = view 2
|
||||
#startup = create
|
||||
#startup = keysequence ssh example.com\n
|
||||
|
||||
[Layouts]
|
||||
# Layout symbol string in the status bar. First layout is the default. Order
|
||||
# determines layout toggle cycle.
|
||||
zoom_left = " │├┤ "
|
||||
zoom_right = " ├┤│ "
|
||||
fullscreen = " │ │ "
|
||||
grid = " ├┼┤ "
|
||||
columns = " │││ "
|
||||
rows = " ─── "
|
||||
zoom_top = " ├┬┤ "
|
||||
zoom_bottom = " ├┴┤ "
|
||||
|
||||
[KeyboardActions]
|
||||
# Keyboard actions have a key combination of no more than three keys assigned
|
||||
# to them. A key can be raw or can include modifiers Meta or Alt, M-, Control,
|
||||
# C-, Shift, S-, or with combinations of those. Any modifier keys must be put
|
||||
# in the order of M-C-S-. Two special keys that must be fully spelled out are
|
||||
# "Space" and "Hyphen".
|
||||
C-g c = create
|
||||
C-g x x = destroy
|
||||
C-g Enter = zoom
|
||||
C-g . = minimize
|
||||
C-g q q = quit
|
||||
C-g C-l = redraw
|
||||
C-g s = statusbar vis
|
||||
C-g S = statusbar pos
|
||||
|
||||
# The four actions view, tag, viewtoggle, and tagtoggle each take tag name as a
|
||||
# parameter. You can use the special '#' character as a shortcut to assign
|
||||
# mappings for up to 9 digits to the list of tag names. For the key
|
||||
# combination, the last occurrence of '#' is replaced with the digit 'n' and
|
||||
# then the 'nth' tag name is passed as the action parameter. For example,
|
||||
# "C-g # F# = view #" expands to "C-g F1 = view 1", "C-g F2 = view 2", ....
|
||||
C-g v # = view #
|
||||
C-g F# = view #
|
||||
C-g t # = tag #
|
||||
C-g V # = viewtoggle #
|
||||
C-g T # = tagtoggle #
|
||||
|
||||
C-g v 0 = view _all
|
||||
C-g v Tab = view _swap
|
||||
C-g t 0 = tag _all
|
||||
|
||||
# The focus action takes several possible parameters, including window number.
|
||||
# You can use the special '#' character as a shortcut to assign mappings for
|
||||
# all digits 1-9. in the key combination and the action parameter to assign
|
||||
# that combo/action pairing to digits 1-9. For the key combination, the last
|
||||
# occurrence of '#' is replaced with the digit 'n' and the same digit 'n' is
|
||||
# passed as the action parameter. For example, "C-g # = focus #" is expanded
|
||||
# out to "C-g 1 = focus 1", "C-g 2 = focus 2", ....
|
||||
C-g # = focus #
|
||||
|
||||
C-g j = focus next
|
||||
C-g C-j = focus NEXT
|
||||
C-g k = focus prev
|
||||
C-g C-k = focus PREV
|
||||
C-g Tab = focus swap
|
||||
C-g H = focus left
|
||||
C-g J = focus down
|
||||
C-g K = focus up
|
||||
C-g L = focus right
|
||||
C-g ) = focus group
|
||||
C-g 0 = focus groupall
|
||||
C-g * = readonly
|
||||
|
||||
C-a # = view #
|
||||
|
||||
C-a f = layout fullscreen
|
||||
C-a g = layout grid
|
||||
C-a h = layout zoom_left
|
||||
C-a j = layout zoom_bottom
|
||||
C-a k = layout zoom_top
|
||||
C-a l = layout zoom_right
|
||||
C-a c = layout columns
|
||||
C-a r = layout rows
|
||||
# Cycle through all layouts in order listed in the [Layouts] section
|
||||
C-a Space = layout +1
|
||||
C-a C-Space = layout -1
|
||||
C-a Tab = layout swap
|
||||
|
||||
C-a i = zoomnum +1
|
||||
C-a d = zoomnum -1
|
||||
C-a I = zoomsize +.05
|
||||
C-a D = zoomsize -.05
|
||||
|
||||
S-PageUp = scrollback .5
|
||||
S-PageDown = scrollback -.5
|
||||
C-g PageUp = scrollback 1.0
|
||||
C-g PageDown = scrollback -1.0
|
||||
|
||||
# Specify ANSI escape or other key sequence overrides
|
||||
#include = vt220.ini
|
||||
#Home = keysequence \e[1~
|
||||
#End = keysequence \e[4~
|
||||
#C-g Space = keysequence Hello world!
|
||||
|
||||
[MouseTermwinActions]
|
||||
click-1 = focus
|
||||
C-click-1 = zoom
|
||||
click-3 = focus group
|
||||
C-click-3 = focus 0
|
||||
wheel-up = scrollback 3
|
||||
wheel-dn = scrollback -3
|
||||
S-wheel-up = scrollback 0.5
|
||||
S-wheel-dn = scrollback -0.5
|
||||
C-wheel-up = scrollback 1.0
|
||||
C-wheel-dn = scrollback -1.0
|
||||
|
||||
[MouseTitlebarActions]
|
||||
click-1 = minimize
|
||||
click-3 = readonly
|
||||
|
||||
[MouseTagNamesActions]
|
||||
click-1 = view
|
||||
C-click-1 = viewtoggle
|
||||
click-3 = tag
|
||||
C-click-3 = tagtoggle
|
||||
|
||||
[MouseLayoutSymbolActions]
|
||||
click-1 = layout +1
|
||||
click-3 = layout -1
|
||||
C-click-1 = zoomnum +1
|
||||
C-click-3 = zoomnum -1
|
||||
M-C-click-1 = zoomsize +.05
|
||||
M-C-click-3 = zoomsize -.05
|
||||
|
||||
[MouseStatusTextActions]
|
||||
click-1 = statusbar next
|
||||
|
||||
[MouseFrameLinesActions]
|
||||
click-1 = layout fullscreen
|
||||
|
||||
# Terminals typically have a default foreground (fg) color, background (bg)
|
||||
# color, and 16 standard colors that are used by terminal applications. They
|
||||
# can also define color numbers up to 255, but the are used less often. In a4,
|
||||
# you can define ColorSchemes that are then applied to terminal windows
|
||||
# dynamically by comparing the terminal's title text to defined ColorRules (see
|
||||
# below). The first defined ColorScheme is used by default for all windows.
|
||||
# (The cursor color is not yet implemented.)
|
||||
#include = cs_gruvbox.ini
|
||||
#include = cs_solarized.ini
|
||||
#include = cs_redsands.ini
|
||||
#include = cs_fairyfloss.ini
|
||||
#include = cs_kokuban.ini
|
||||
#include = cs_frontend_fun_forrest.ini
|
||||
#include = cs_seafoam_pastel.ini
|
||||
[ColorScheme Basic]
|
||||
fg = 7
|
||||
bg = 0
|
||||
#color123 = DarkOrange1
|
||||
|
||||
[ColorScheme BasicRed]
|
||||
fg = 0
|
||||
bg = 1
|
||||
|
||||
[ColorScheme Red160]
|
||||
fg = 232
|
||||
bg = 160
|
||||
|
||||
[ColorScheme Crimson]
|
||||
fg = MidnightBlue
|
||||
bg = Crimson
|
||||
|
||||
[colorscheme RedSands]
|
||||
color00 = 0x000000
|
||||
color01 = 0xff3f00
|
||||
color02 = 0x00bb00
|
||||
color03 = 0xe7b000
|
||||
color04 = 0x0072ff
|
||||
color05 = 0xbb00bb
|
||||
color06 = 0x00bbbb
|
||||
color07 = 0xbbbbbb
|
||||
color08 = 0x555555
|
||||
color09 = 0xbb0000
|
||||
color10 = 0x00bb00
|
||||
color11 = 0xe7b000
|
||||
color12 = 0x0072ae
|
||||
color13 = 0xff55ff
|
||||
color14 = 0x55ffff
|
||||
color15 = 0xffffff
|
||||
fg = 0xd7c9a7
|
||||
bg = 0x7a251e
|
||||
cursor = 0xd7c9a7
|
||||
|
||||
# Color rules pair text with a colorscheme. A terminal window's title bar text
|
||||
# is compared with each ColorRule text, in the order specified, until one
|
||||
# matches, and then that colorscheme is applied to the terminal. If none of the
|
||||
# rules match, then the first colorscheme defined in a4.ini is used.
|
||||
# <pattern> = <colorscheme name> [<fg color|-1> [<bg color>]]
|
||||
#[ColorRules]
|
||||
#root@appdev.com = FairyFloss red
|
||||
#@appdev.com = FairyFloss
|
||||
#root@appprd = redsands red
|
||||
#appprd = redsands
|
||||
#root@appprddr = redsands red 0x521914
|
||||
#appprddr = redsands -1 0x521914
|
||||
@@ -8,10 +8,10 @@ TERM = "xterm-256color"
|
||||
size = 10
|
||||
|
||||
[font.bold]
|
||||
family = "Fira Code Nerd Font"
|
||||
family = "HurmitNerdFont"
|
||||
|
||||
[font.normal]
|
||||
family = "Fira Code Nerd Font"
|
||||
family = "HurmitNerdFont"
|
||||
|
||||
[general]
|
||||
import = ["~/.config/alacritty/dark.toml"]
|
||||
|
||||
@@ -1,71 +1,31 @@
|
||||
# Nightfox Alacritty Colors
|
||||
## name: nightfox
|
||||
## upstream: https://github.com/edeneast/nightfox.nvim/raw/main/extra/nightfox/alacritty.toml
|
||||
# https://github.com/alacritty/alacritty-theme/blob/master/themes/nordic.toml
|
||||
|
||||
# Colors (Nordic)
|
||||
|
||||
[colors.primary]
|
||||
background = "#2e3440" # changed
|
||||
foreground = "#eceff4" # changed
|
||||
dim_foreground = "#aeafb0"
|
||||
bright_foreground = "#d6d6d7"
|
||||
|
||||
[colors.cursor]
|
||||
text = "#cdcecf"
|
||||
cursor = "#aeafb0"
|
||||
|
||||
[colors.vi_mode_cursor]
|
||||
text = "#cdcecf"
|
||||
cursor = "#63cdcf"
|
||||
|
||||
[colors.search.matches]
|
||||
foreground = "#cdcecf"
|
||||
background = "#3c5372"
|
||||
|
||||
[colors.search.focused_match]
|
||||
foreground = "#cdcecf"
|
||||
background = "#81b29a"
|
||||
|
||||
[colors.footer_bar]
|
||||
foreground = "#cdcecf"
|
||||
background = "#29394f"
|
||||
|
||||
[colors.hints.start]
|
||||
foreground = "#cdcecf"
|
||||
background = "#f4a261"
|
||||
|
||||
[colors.hints.end]
|
||||
foreground = "#cdcecf"
|
||||
background = "#29394f"
|
||||
|
||||
[colors.selection]
|
||||
text = "#cdcecf"
|
||||
background = "#2b3b51"
|
||||
background = '#242933'
|
||||
foreground = '#BBBDAF'
|
||||
|
||||
[colors.normal]
|
||||
black = "#393b44"
|
||||
red = "#c94f6d"
|
||||
green = "#81b29a"
|
||||
yellow = "#dbc074"
|
||||
blue = "#719cd6"
|
||||
magenta = "#9d79d6"
|
||||
cyan = "#63cdcf"
|
||||
white = "#dfdfe0"
|
||||
black = '#191C1D'
|
||||
red = '#BD6062'
|
||||
green = '#A3D6A9'
|
||||
yellow = '#F0DFAF'
|
||||
blue = '#8FB4D8'
|
||||
magenta = '#C7A9D9'
|
||||
cyan = '#B6D7A8'
|
||||
white = '#BDC5BD'
|
||||
|
||||
[colors.bright]
|
||||
black = "#575860"
|
||||
red = "#d16983"
|
||||
green = "#8ebaa4"
|
||||
yellow = "#e0c989"
|
||||
blue = "#86abdc"
|
||||
magenta = "#baa1e2"
|
||||
cyan = "#7ad5d6"
|
||||
white = "#e4e4e5"
|
||||
black = '#727C7C'
|
||||
red = '#D18FAF'
|
||||
green = '#B7CEB0'
|
||||
yellow = '#BCBCBC'
|
||||
blue = '#E0CF9F'
|
||||
magenta = '#C7A9D9'
|
||||
cyan = '#BBDA97'
|
||||
white = '#BDC5BD'
|
||||
|
||||
[colors.dim]
|
||||
black = "#30323a"
|
||||
red = "#ab435d"
|
||||
green = "#6e9783"
|
||||
yellow = "#baa363"
|
||||
blue = "#6085b6"
|
||||
magenta = "#8567b6"
|
||||
cyan = "#54aeb0"
|
||||
white = "#bebebe"
|
||||
[colors.selection]
|
||||
text = '#000000'
|
||||
background = '#F0DFAF'
|
||||
|
||||
@@ -1,30 +1,35 @@
|
||||
# Colors (Alabaster)
|
||||
# author tonsky
|
||||
# https://github.com/alacritty/alacritty-theme/blob/master/themes/night_owlish_light.toml
|
||||
|
||||
# Colors (Night Owlish Light)
|
||||
|
||||
[colors.primary]
|
||||
background = '#FFFFFF' # changed
|
||||
foreground = '#434343'
|
||||
|
||||
[colors.cursor]
|
||||
text = '#F7F7F7'
|
||||
cursor = '#434343'
|
||||
background = '#ffffff'
|
||||
foreground = '#403f53'
|
||||
|
||||
[colors.normal]
|
||||
black = '#000000'
|
||||
red = '#AA3731'
|
||||
green = '#448C27'
|
||||
yellow = '#CB9000'
|
||||
blue = '#325CC0'
|
||||
magenta = '#7A3E9D'
|
||||
cyan = '#0083B2'
|
||||
white = '#BBBBBB'
|
||||
black = '#011627'
|
||||
red = '#d3423e'
|
||||
green = '#2aa298'
|
||||
yellow = '#daaa01'
|
||||
blue = '#4876d6'
|
||||
magenta = '#403f53'
|
||||
cyan = '#08916a'
|
||||
white = '#7a8181'
|
||||
|
||||
[colors.bright]
|
||||
black = '#777777'
|
||||
red = '#F05050'
|
||||
green = '#60CB00'
|
||||
yellow = '#FFBC5D'
|
||||
blue = '#007ACC'
|
||||
magenta = '#E64CE6'
|
||||
cyan = '#00AACB'
|
||||
white = '#FFFFFF'
|
||||
black = '#7a8181'
|
||||
red = '#f76e6e'
|
||||
green = '#49d0c5'
|
||||
yellow = '#dac26b'
|
||||
blue = '#5ca7e4'
|
||||
magenta = '#697098'
|
||||
cyan = '#00c990'
|
||||
white = '#989fb1'
|
||||
|
||||
[colors.cursor]
|
||||
cursor = '#403f53'
|
||||
text = '#fbfbfb'
|
||||
|
||||
[colors.selection]
|
||||
background = '#f2f2f2'
|
||||
text = '#403f53'
|
||||
|
||||
@@ -54,14 +54,12 @@ end
|
||||
|
||||
local function read_theme()
|
||||
local theme = "theme_dark.lua"
|
||||
local f = io.open(os.getenv('HOME') .. '/.config/alacritty/alacritty.toml')
|
||||
local f = io.open(os.getenv('HOME') .. '/.lightmode')
|
||||
if f then
|
||||
if string.find(f:read('*all'), 'light') then
|
||||
theme = 'theme_light.lua'
|
||||
end
|
||||
theme = 'theme_light.lua'
|
||||
f:close()
|
||||
return theme
|
||||
end
|
||||
return theme
|
||||
end
|
||||
|
||||
local theme = read_theme()
|
||||
@@ -88,7 +86,7 @@ local function switch_theme()
|
||||
end
|
||||
|
||||
-- This is used later as the default terminal and editor to run.
|
||||
local terminal = "alacritty"
|
||||
local terminal = "kitty --single-instance --instance-group default"
|
||||
|
||||
-- Default modkey.
|
||||
local modkey = "Mod4"
|
||||
@@ -123,7 +121,7 @@ local mykeyboardlayout = awful.widget.keyboardlayout()
|
||||
|
||||
-- {{{ Wibar
|
||||
-- Create a textclock widget
|
||||
local mytextclock = wibox.widget.textclock()
|
||||
local mytextclock = wibox.widget.textclock('%H:%M ')
|
||||
|
||||
-- Create a wibox for each screen and add it
|
||||
local taglist_buttons = gears.table.join(
|
||||
@@ -236,6 +234,17 @@ local function layout_menu()
|
||||
awful.menu(layouts):show()
|
||||
end
|
||||
|
||||
local function focus_nth_window(n)
|
||||
local cc = {}
|
||||
for _, c in ipairs(client.get()) do
|
||||
if awful.widget.tasklist.filter.currenttags(c, mouse.screen) then cc[#cc + 1] = c end
|
||||
end
|
||||
local new_focused = cc[n]
|
||||
if new_focused then
|
||||
client.focus = new_focused; new_focused:raise()
|
||||
end
|
||||
end
|
||||
|
||||
-- {{{ Key bindings
|
||||
local globalkeys = gears.table.join(
|
||||
awful.key({ modkey, }, "s", hotkeys_popup.show_help,
|
||||
@@ -287,7 +296,7 @@ local globalkeys = gears.table.join(
|
||||
{ description = "open a terminal", group = "launcher" }),
|
||||
awful.key({ modkey, "Control", "Shift" }, "s", function() awful.spawn("systemctl suspend") end,
|
||||
{ description = "open a terminal", group = "launcher" }),
|
||||
awful.key({ modkey, "Shift" }, "F6", switch_theme,
|
||||
awful.key({ modkey, "Control", "Shift" }, "t", switch_theme,
|
||||
{ description = "switch theme", group = "launcher" }),
|
||||
awful.key({ modkey, }, "q", awesome.restart,
|
||||
{ description = "reload awesome", group = "awesome" }),
|
||||
@@ -338,8 +347,8 @@ local globalkeys = gears.table.join(
|
||||
end,
|
||||
{ description = "lua execute prompt", group = "awesome" }),
|
||||
-- Menubar
|
||||
awful.key({ modkey, }, "p", function() menubar.show() end,
|
||||
{ description = "show the menubar", group = "launcher" })
|
||||
awful.key({ modkey }, "p", function() awful.spawn("dmenu_run -fn 'HurmitNerdFont:size=16'") end,
|
||||
{ description = "run command", group = "launcher" })
|
||||
)
|
||||
|
||||
local clientkeys = gears.table.join(
|
||||
@@ -368,8 +377,11 @@ local clientkeys = gears.table.join(
|
||||
{ description = "minimize", group = "client" }),
|
||||
awful.key({ modkey, }, "m",
|
||||
function(c)
|
||||
c.maximized = not c.maximized
|
||||
c:raise()
|
||||
if awful.layout.getname() == "max" then
|
||||
awful.layout.set(awful.layout.suit.tile)
|
||||
else
|
||||
awful.layout.set(awful.layout.suit.max)
|
||||
end
|
||||
end,
|
||||
{ description = "(un)maximize", group = "client" }),
|
||||
awful.key({ modkey, }, "v",
|
||||
@@ -432,7 +444,11 @@ for i = 1, 9 do
|
||||
end
|
||||
end
|
||||
end,
|
||||
{ description = "toggle focused client on tag #" .. i, group = "tag" })
|
||||
{ description = "toggle focused client on tag #" .. i, group = "tag" }),
|
||||
--- Focus nth window
|
||||
awful.key({ "Control" }, "#" .. i + 9,
|
||||
function() focus_nth_window(i) end,
|
||||
{ description = "focus window index #" .. i, group = "client" })
|
||||
)
|
||||
end
|
||||
|
||||
@@ -468,7 +484,8 @@ awful.rules.rules = {
|
||||
keys = clientkeys,
|
||||
buttons = clientbuttons,
|
||||
screen = awful.screen.preferred,
|
||||
placement = awful.placement.no_overlap + awful.placement.no_offscreen
|
||||
placement = awful.placement.no_overlap + awful.placement.no_offscreen,
|
||||
size_hints_honor = false,
|
||||
}
|
||||
},
|
||||
|
||||
@@ -520,6 +537,19 @@ awful.rules.rules = {
|
||||
-- }}}
|
||||
|
||||
-- {{{ Signals
|
||||
|
||||
local function set_border_width(c)
|
||||
local t = awful.screen.focused().selected_tag
|
||||
if #t:clients() == 1 or t.layout.name == 'max' then
|
||||
c = c or client.focus
|
||||
c.border_width = 0
|
||||
else
|
||||
for _, cl in ipairs(t:clients()) do
|
||||
cl.border_width = beautiful.border_width
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Signal function to execute when a new client appears.
|
||||
client.connect_signal("manage", function(c)
|
||||
-- Set the windows at the slave,
|
||||
@@ -532,6 +562,7 @@ client.connect_signal("manage", function(c)
|
||||
-- Prevent clients from being unreachable after screen count changes.
|
||||
awful.placement.no_offscreen(c)
|
||||
end
|
||||
set_border_width(c)
|
||||
end)
|
||||
|
||||
-- Enable sloppy focus, so that focus follows mouse.
|
||||
@@ -539,6 +570,23 @@ client.connect_signal("mouse::enter", function(c)
|
||||
c:emit_signal("request::activate", "mouse_enter", { raise = false })
|
||||
end)
|
||||
|
||||
client.connect_signal("focus", function(c) c.border_color = beautiful.border_focus end)
|
||||
client.connect_signal("unfocus", function(c) c.border_color = beautiful.border_normal end)
|
||||
-- local function set_border(c)
|
||||
-- local s = awful.screen.focused()
|
||||
-- if c.maximized
|
||||
-- or (#s.tiled_clients == 1 and not c.floating)
|
||||
-- or (s.selected_tag and s.selected_tag.layout.name == 'max')
|
||||
-- then
|
||||
-- c.border_width = 0
|
||||
-- else
|
||||
-- c.border_width = beautiful.border_width
|
||||
-- end
|
||||
-- end
|
||||
|
||||
client.connect_signal("focus", function(c)
|
||||
c.border_color = beautiful.border_focus
|
||||
set_border_width(c)
|
||||
end)
|
||||
client.connect_signal("unfocus", function(c) c.border_color = beautiful.border_normal; end)
|
||||
tag.connect_signal("property::layout", function() set_border_width(nil) end)
|
||||
|
||||
-- }}}
|
||||
|
||||
@@ -5,30 +5,31 @@ local dpi = xresources.apply_dpi
|
||||
|
||||
local theme = {}
|
||||
|
||||
theme.font = "Fira Code Nerd Font 10"
|
||||
theme.font = "HurmitNerdFont 10"
|
||||
theme.tasklist_disable_icon = true
|
||||
theme.wibar_height = 40
|
||||
theme.wibar_height = 30
|
||||
|
||||
theme.bg_normal = "#293d38" -- hsl(165deg 20% 20%)
|
||||
theme.bg_focus = "#478575" -- hsl(165deg 30% 40%)
|
||||
theme.bg_urgent = "#5c3d45" -- hsl(345deg 20% 30%)
|
||||
theme.bg_minimize = "#363e49" -- hsl(215deg 15% 25%)
|
||||
theme.bg_normal = "#111c22" -- hsl(200 35% 10%)
|
||||
theme.bg_focus = "#316781" -- hsl(200 45% 35%)
|
||||
theme.bg_urgent = "#814c31" -- hsl(20 45% 35%)
|
||||
theme.bg_minimize = "#454f54" -- hsl(200 10% 30%)
|
||||
theme.bg_systray = theme.bg_normal
|
||||
theme.tasklist_bg_focus = "#3d5c54" -- hsl(165deg 20% 30%)
|
||||
theme.tasklist_bg_focus = "#1c3b4a" -- hsl(200 45% 20%)
|
||||
|
||||
theme.fg_normal = "#a9d6ca" -- hsl(165deg 35% 75%)"
|
||||
theme.fg_focus = "#b1babd"
|
||||
theme.fg_normal = "#8f9ca3" -- hsl(200 10% 60%)
|
||||
theme.fg_focus = "#abb5ba" -- hsl(200 10% 70%)
|
||||
theme.fg_urgent = theme.bg_focus
|
||||
theme.fg_minimize = "#8a9294"
|
||||
theme.taglist_fg_empty = "#62847b" -- hsl(165deg 15% 45%)"
|
||||
theme.fg_minimize = theme.fg_normal
|
||||
theme.taglist_fg_empty = "#454f54" -- hsl(200 10% 30%)
|
||||
|
||||
theme.gap_single_client = false
|
||||
theme.useless_gap = dpi(1)
|
||||
theme.border_width = dpi(2)
|
||||
theme.border_normal = "#708090"
|
||||
theme.border_focus = "#a0522d"
|
||||
theme.border_marked = "#91231c"
|
||||
theme.border_normal = "#73848c" -- hsl(200 10% 50%)
|
||||
theme.border_focus = "#b25e34" -- hsl(20 55% 45%)
|
||||
theme.border_marked = "#3488b2" -- hsl(200 55% 45%)
|
||||
|
||||
theme.bg_wallpaper = "#424a4c"
|
||||
theme.bg_wallpaper = "#454f54" -- hsl(200 10% 30%)
|
||||
|
||||
theme.hotkeys_font = theme.font
|
||||
theme.hotkeys_description_font = theme.font
|
||||
|
||||
@@ -5,30 +5,31 @@ local dpi = xresources.apply_dpi
|
||||
|
||||
local theme = {}
|
||||
|
||||
theme.font = "Fira Code Nerd Font 10"
|
||||
theme.font = "HurmitNerdFont 10"
|
||||
theme.tasklist_disable_icon = true
|
||||
theme.wibar_height = 40
|
||||
theme.wibar_height = 30
|
||||
|
||||
theme.bg_normal = "#293d38" -- hsl(165deg 20% 20%)
|
||||
theme.bg_focus = "#a9d6ca" -- hsl(165deg 35% 75%)
|
||||
theme.bg_urgent = "#bc8f9b" -- hsl(345deg 25% 65%)
|
||||
theme.bg_minimize = "#62847b" -- hsl(165deg 15% 45%)
|
||||
theme.bg_normal = "#111c22" -- hsl(200 35% 10%)
|
||||
theme.bg_focus = "#d0e3fb" -- hsl(214 85% 90%)
|
||||
theme.bg_urgent = "#f2d1a6" -- hsl(34 75% 80%)
|
||||
theme.bg_minimize = "#8596ad" -- hsl(214 20% 60%)
|
||||
theme.bg_systray = theme.bg_normal
|
||||
theme.tasklist_bg_focus = "#8fbcb1" -- hsl(165deg 25% 65%)
|
||||
theme.tasklist_bg_focus = "#a6c7f2" -- hsl(214 75% 80%)
|
||||
|
||||
theme.fg_normal = "#a9d6ca" -- hsl(165deg 35% 75%)"
|
||||
theme.fg_focus = "#363d3e"
|
||||
theme.fg_urgent = "#e9f2f5"
|
||||
theme.fg_minimize = "#4b5456"
|
||||
theme.taglist_fg_empty = "#62847b" -- hsl(165deg 15% 45%)"
|
||||
theme.fg_normal = "#8f9ca3" -- hsl(200 10% 60%)
|
||||
theme.fg_focus = "#454b54" -- hsl(214 10% 30%)
|
||||
theme.fg_urgent = "#70675c" -- hsl(34 10% 40%)
|
||||
theme.fg_minimize = "#70675c" -- hsl(34 10% 40%)
|
||||
theme.taglist_fg_empty = theme.fg_minimize
|
||||
|
||||
theme.gap_single_client = false
|
||||
theme.useless_gap = dpi(1)
|
||||
theme.border_width = dpi(2)
|
||||
theme.border_normal = "#bebebe"
|
||||
theme.border_focus = "#ff7f50"
|
||||
theme.border_marked = "#91231c"
|
||||
theme.border_normal = theme.bg_minimize
|
||||
theme.border_focus = "#df8c20" -- hsl(34 75% 50%)
|
||||
theme.border_marked = "#2073df" -- hsl(214 75% 50%)
|
||||
|
||||
theme.bg_wallpaper = "#b0bec2"
|
||||
theme.bg_wallpaper = theme.fg_normal
|
||||
|
||||
theme.hotkeys_font = theme.font
|
||||
theme.hotkeys_description_font = theme.font
|
||||
|
||||
43
compile_tools.sh
Executable file
43
compile_tools.sh
Executable file
@@ -0,0 +1,43 @@
|
||||
#!/bin/sh
|
||||
|
||||
mkdir -p tools/.local/bin
|
||||
|
||||
uid=$(id -u):$(id -g)
|
||||
|
||||
go-install() {
|
||||
echo "build $1"
|
||||
docker exec -u "$uid" dotfiles-go go install -ldflags="-s -w" "$@"
|
||||
}
|
||||
|
||||
cargo-install() {
|
||||
B="$1"
|
||||
shift
|
||||
echo "build $B"
|
||||
docker exec -u "$uid" dotfiles-rust cargo install --quiet "$@"
|
||||
docker exec -u "$uid" dotfiles-rust cp "/usr/local/cargo/bin/$B" /rust/bin
|
||||
strip "tools/.local/bin/$B"
|
||||
}
|
||||
|
||||
docker kill dotfiles-go && sleep 3 || :
|
||||
docker run --rm -d --name dotfiles-go -e HOME=/go -v ./tools/.local/bin:/go/bin golang:1.25.1-alpine3.22 tail -f /dev/null
|
||||
docker exec dotfiles-go chown "$uid" /go
|
||||
|
||||
go-install github.com/junegunn/fzf@latest
|
||||
go-install github.com/gokcehan/lf@latest
|
||||
go-install github.com/rs/curlie@latest
|
||||
|
||||
docker kill dotfiles-go
|
||||
|
||||
docker kill dotfiles-rust && sleep 3 || :
|
||||
docker run --rm -d --name dotfiles-rust -v ./tools/.local/bin:/rust/bin rust:1.90-bullseye tail -f /dev/null
|
||||
|
||||
cargo-install zoxide zoxide --locked
|
||||
cargo-install rg ripgrep
|
||||
cargo-install fd fd-find
|
||||
cargo-install bat bat --locked
|
||||
cargo-install eza eza
|
||||
cargo-install delta git-delta
|
||||
cargo-install jj --bin jj jj-cli --locked
|
||||
cargo-install lazyjj lazyjj --locked
|
||||
|
||||
docker kill dotfiles-rust
|
||||
175
dk/.config/dk/dkrc
Executable file
175
dk/.config/dk/dkrc
Executable file
@@ -0,0 +1,175 @@
|
||||
#!/bin/sh
|
||||
|
||||
# determine where to place the log file
|
||||
logfile="$HOME/.dkrc.log"
|
||||
[ -d "$HOME/.local/share/xorg" ] && logfile="$HOME/.local/share/xorg/dkrc.log"
|
||||
: > "$logfile"
|
||||
|
||||
# load sxhkd for keybinds
|
||||
pgrep sxhkd || sxhkd -c "$HOME/.config/dk/sxhkdrc" &
|
||||
|
||||
# spawn a scratchpad terminal if not already (see sxhkdrc and rules for binds/setup)
|
||||
# pgrep -f "st -c scratchpad" || st -c scratchpad &
|
||||
|
||||
# adjust border widths based on the DPI of the monitor
|
||||
px=$(xrandr | grep ' connected' | tail -n1 | grep -o '[0-9]\+x[0-9]\+' | cut -d'x' -f2)
|
||||
mm=$(xrandr | grep ' connected' | tail -n1 | grep -o '[0-9]\+mm' | tail -n1 | sed 's/mm//')
|
||||
dpi=$(( (px / mm) * 25 ))
|
||||
|
||||
if [ $dpi -ge 140 ]; then
|
||||
border_width=5
|
||||
border_outer_width=3
|
||||
elif [ $dpi -ge 120 ]; then
|
||||
border_width=4
|
||||
border_outer_width=2
|
||||
else
|
||||
border_width=2
|
||||
border_outer_width=1
|
||||
fi
|
||||
|
||||
{ # compound command to redirect all output
|
||||
|
||||
# workspace settings
|
||||
# ------------------------
|
||||
|
||||
# initialize 6 workspaces (1-6) (default: 1/monitor)
|
||||
dkcmd set numws=10
|
||||
|
||||
# default workspace '_' values used when allocating new workspaces
|
||||
# can be applied to all existing workspaces when passed 'apply' after ws=_
|
||||
dkcmd set ws=_ apply layout=tile master=1 stack=3 gap=0 msplit=0.5 ssplit=0.5
|
||||
|
||||
# use grid layout, padding, and gaps on last workspace
|
||||
#dkcmd set ws=6 layout=grid pad left=200 right=200 top=100 bottom=100 gap=50
|
||||
|
||||
# change workspace names (default: number == name -> 1:1, 2:2, 3:3....)
|
||||
# dkcmd set \
|
||||
# ws=1 name="edit" \
|
||||
# ws=2 name="web" \
|
||||
# ws=3 name="😀" \
|
||||
# ws=4 name="😠" \
|
||||
# ws=5 name="5" \
|
||||
# ws=6 name="6" \
|
||||
|
||||
# enable static workspaces assigned to monitors (relevant for multiple monitors)
|
||||
monitors=$(polybar -m | sed 's/+/:/g' | awk -F: '{print $3, $1}' | sort -n | cut -d' ' -f2 | xargs)
|
||||
mon1=$(echo $monitors | cut -d' ' -f1)
|
||||
mon2=$(echo $monitors | cut -d' ' -f2)
|
||||
mon3=$(echo $monitors | cut -d' ' -f3)
|
||||
if [ -z "$mon2" ]; then
|
||||
mon2="$mon1"
|
||||
mon3="$mon1"
|
||||
elif [ -z "$mon3" ]; then
|
||||
mon3="$mon1"
|
||||
fi
|
||||
dkcmd set static_ws=true \
|
||||
ws=1 mon=$mon2 \
|
||||
ws=2 mon=$mon2 \
|
||||
ws=3 mon=$mon2 \
|
||||
ws=4 mon=$mon2 \
|
||||
ws=5 mon=$mon2 \
|
||||
ws=6 mon=$mon2 \
|
||||
ws=7 mon=$mon2 \
|
||||
ws=8 mon=$mon2 \
|
||||
ws=9 mon=$mon1 \
|
||||
ws=10 mon=$mon3
|
||||
|
||||
# global settings
|
||||
# ---------------------
|
||||
|
||||
# focus windows when receiving activation and enable focus-follows-mouse
|
||||
dkcmd set focus_open=true focus_urgent=true focus_mouse=true
|
||||
|
||||
# place clients at the tail and ignore size hints on tiled windows
|
||||
dkcmd set tile_tohead=0 tile_hints=false
|
||||
|
||||
# minimum width/height for resizing, and minimum allowed on-screen when moving
|
||||
dkcmd set win_minwh=50 win_minxy=10
|
||||
|
||||
# disable gaps and borders in single window layouts
|
||||
dkcmd set smart_gap=true smart_border=true
|
||||
|
||||
# define mouse mod and move/resize buttons
|
||||
dkcmd set mouse mod=mod4 move=button1 resize=button3
|
||||
|
||||
# obey motif border hints on windows that draw their own (steam, easyeffects, etc.)
|
||||
dkcmd set obey_motif=true
|
||||
|
||||
|
||||
# borders
|
||||
# ---------
|
||||
|
||||
# traditional
|
||||
# set border width and colour for each window state
|
||||
# dkcmd set border width=$border_width colour focus='#6699cc' unfocus='#000000' urgent='#ee5555'
|
||||
|
||||
# alternative
|
||||
# enable split borders and colours, width is overall width, outer_width consumes some of width.
|
||||
# outer_width must be less than width, outer_width of 0 will be single borders
|
||||
dkcmd set border width=$border_width outer_width=$border_outer_width \
|
||||
colour \
|
||||
focus='#6699cc' \
|
||||
unfocus='#444444' \
|
||||
urgent='#ee5555' \
|
||||
outer_focus='#222222' \
|
||||
outer_unfocus='#222222' \
|
||||
outer_urgent='#222222'
|
||||
|
||||
|
||||
# window rules
|
||||
# --------------
|
||||
|
||||
# rule class, instance, and title regex are *always* case INSENSITIVE
|
||||
|
||||
# open window(s) on a specific workspace (assigned monitor)
|
||||
# dkcmd rule class="^gimp$" ws=2
|
||||
|
||||
# open window(s) on a monitor by number or name (active workspace on monitor)
|
||||
# dkcmd rule class="^chromium$" mon="HDMI-A-0"
|
||||
|
||||
# open window(s) and use a callback function (user defined in config.h)
|
||||
# we also ignore_cfg=true to stop the window from being resized on it's own from events
|
||||
# eg. mpv --x11-name=albumart /path/to/media
|
||||
# dkcmd rule class="^mpv$" instance="^albumart$" float=true ignore_cfg=true callback=albumart bw=0
|
||||
|
||||
# open window(s) in a floating state
|
||||
dkcmd rule class="^(pavucontrol|transmission-gtk|steam|lxappearance)$" float=true
|
||||
|
||||
# open window(s) with a specific geometry and coordinates (floating only!)
|
||||
# dkcmd rule class="^google-chrome$" title="^open files$" float=true w=1280 h=720
|
||||
|
||||
# open window(s) with ignore_msg=true to avoid focus being grabbed and changing workspace
|
||||
# dkcmd rule class="^TelegramDesktop$" ignore_msg=true
|
||||
|
||||
# define some terminals and allow them to be absorbed by spawned windows
|
||||
dkcmd rule class="^(st|st-256color|urxvt|kitty|alacritty|xterm|xterm-256color)$" terminal=true
|
||||
|
||||
# set a window to never absorb other windows, like the xev event tester
|
||||
dkcmd rule title="^Event Tester$" no_absorb=true
|
||||
|
||||
# send a window to the scratchpad
|
||||
dkcmd rule class="^scratchpad$" scratch=true
|
||||
|
||||
# focus window and workspace on opening
|
||||
# dkcmd rule class="^firefox$" ws=1 focus=true
|
||||
|
||||
# update or remove an existing rule with the same match patterns
|
||||
# dkcmd rule class="^firefox$" mon="HDMI-A-0"
|
||||
# dkcmd rule remove class="^firefox$"
|
||||
|
||||
# apply current rule set to all existing windows (used mainly for WM restart)
|
||||
dkcmd rule apply '*'
|
||||
|
||||
# delete all rules
|
||||
# dkcmd rule remove '*'
|
||||
|
||||
} >> "$logfile" 2>&1 # append responses
|
||||
|
||||
# inform of any errors in a notification
|
||||
if grep -q 'error:' "$logfile"; then
|
||||
hash notify-send && notify-send -t 0 -u critical "dkrc has errors" \
|
||||
"$(awk '/error:/ {sub(/^error: /, ""); gsub(/</, "\<"); print}' "$logfile")"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
||||
117
dk/.config/dk/sxhkdrc
Normal file
117
dk/.config/dk/sxhkdrc
Normal file
@@ -0,0 +1,117 @@
|
||||
# sxhkdrc for use with dk
|
||||
#########################################################
|
||||
|
||||
# launcher
|
||||
mod4 + p
|
||||
dmenu_run -fn 'Fira Code Nerd Font Ret:size=13'
|
||||
|
||||
# terminal
|
||||
mod4 + shift + Return
|
||||
st
|
||||
|
||||
mod4 + ctrl + shift + Return
|
||||
st-abduco-tabbed
|
||||
|
||||
# screenshot and selection capture
|
||||
{_,mod4 + }@Print
|
||||
scrot {_,-s}
|
||||
|
||||
# dedicated volume keys
|
||||
{XF86AudioRaiseVolume,XF86AudioLowerVolume}
|
||||
pamixer {-i,-d} 2
|
||||
|
||||
# dedicated backlight keys
|
||||
{XF86MonBrightnessUp,XF86MonBrightnessDown}
|
||||
xbacklight {+10,-10}
|
||||
|
||||
# alt volume keys
|
||||
mod4 + {Insert,Delete}
|
||||
pamixer {-i,-d} 2
|
||||
|
||||
# reload sxhkd
|
||||
mod4 + shift + x
|
||||
pkill -USR1 -x sxhkd
|
||||
|
||||
|
||||
|
||||
# quit dk
|
||||
mod4 + shift + q
|
||||
dkcmd exit
|
||||
|
||||
# reload dkrc
|
||||
mod4 + shift + r
|
||||
$HOME/.config/dk/dkrc
|
||||
|
||||
# restart dk
|
||||
mod4 + ctrl + shift + r
|
||||
dkcmd restart
|
||||
|
||||
# focus next or previous window
|
||||
mod4 + {j,k}
|
||||
dkcmd win focus {next,prev}
|
||||
|
||||
# close window, swap tiled window in/out of master, cycle tiled windows in place
|
||||
mod4 + {q,space,Tab}
|
||||
dkcmd win {kill,swap,cycle}
|
||||
|
||||
# toggle fullscreen and fake fullscreen (enable manipulating fullscreen window)
|
||||
{_,mod4 + }F11
|
||||
dkcmd win {full,fakefull}
|
||||
|
||||
# toggle floating, sticky, or scratchpad
|
||||
mod4 + shift + {space,s,u}
|
||||
dkcmd win {float,stick,scratch}
|
||||
# alternatively to scratch a window by class "scratchpad"
|
||||
#dkcmd win {float,stick,scratchpad scratch}
|
||||
|
||||
# move window, signed (+/-) for relative changes, for tiled windows
|
||||
# y coord changes will move the window up/down the stack
|
||||
mod4 + shift + {h,j,k,l}
|
||||
dkcmd win resize {x=-20,y=+20,y=-20,x=+20}
|
||||
|
||||
# resize window, signed (+/-) for relative changes
|
||||
mod4 + ctrl + {h,j,k,l}
|
||||
dkcmd win resize {w=-20,h=+20,h=-20,w=+20}
|
||||
|
||||
# view, send, or follow to a workspace (by number)
|
||||
mod4 + {_,shift + ,ctrl + }{1-9,0}
|
||||
dkcmd ws {view,send,follow} {1-9,10}
|
||||
|
||||
# view, send, or follow to the next, previous, last active,
|
||||
# next non-empty, or prev non-empty workspace
|
||||
mod4 + {_,shift + ,ctrl + }{bracketleft,bracketright,BackSpace,Left,Right}
|
||||
dkcmd ws {view,send,follow} {prev,next,last,prevne,nextne}
|
||||
|
||||
# view, send, or follow to the next, previous, or last active monitor
|
||||
mod4 + {_,shift + ,ctrl + }{comma,period,backslash}
|
||||
dkcmd mon {view,send,follow} {prev,next,last}
|
||||
|
||||
# change active workspace layout or cycle between them
|
||||
mod4 + {t,r,m,g,s,w,f,u,c}
|
||||
dkcmd set layout {tile,rtile,mono,grid,spiral,dwindle,none,tstack,cycle}
|
||||
|
||||
# change number of windows in master or first stack
|
||||
mod4 + {_,shift + }{i,d}
|
||||
dkcmd set {master,stack} {+1,-1}
|
||||
|
||||
# change gap width
|
||||
mod4 + {equal,minus}
|
||||
dkcmd set gap {+5,-5}
|
||||
|
||||
# change border widths
|
||||
mod4 + ctrl + {_,shift + }{equal,minus}
|
||||
dkcmd set border {width,outer_width} {+1,-1}
|
||||
|
||||
# lock screen
|
||||
mod4 + ctrl + shift + l
|
||||
slock
|
||||
|
||||
# suspend
|
||||
mod4 + ctrl + shift + s
|
||||
systemctl suspend
|
||||
|
||||
# toggle light/dark theme
|
||||
mod4 + F6
|
||||
lupan-set-theme toggle
|
||||
|
||||
# vim:ft=sxhkdrc
|
||||
164
kakoune/.config/kak/autoload/local/jump-mode.kak
Normal file
164
kakoune/.config/kak/autoload/local/jump-mode.kak
Normal file
@@ -0,0 +1,164 @@
|
||||
# name: kakoune_jump_mode
|
||||
# version: 0.1.0
|
||||
# description: Click with your keyboard.
|
||||
# authors: ["Mathieu Ablasou <alexherbo2@gmail.com>"]
|
||||
# kakoune: 2023-12-12
|
||||
# license: MIT
|
||||
# dependencies: []
|
||||
# doc: yes
|
||||
# tests: no
|
||||
declare-option range-specs jump_ranges
|
||||
declare-option str-to-str-map jump_label_selection_map
|
||||
declare-option str-list jump_selections
|
||||
declare-option str-list jump_labels \
|
||||
'aa' 'ab' 'ac' 'ad' 'ae' 'af' 'ag' 'ah' 'ai' 'aj' 'ak' 'al' 'am' 'an' 'ao' 'ap' 'aq' 'ar' 'as' 'at' 'au' 'av' 'aw' 'ax' 'ay' 'az' \
|
||||
'ba' 'bb' 'bc' 'bd' 'be' 'bf' 'bg' 'bh' 'bi' 'bj' 'bk' 'bl' 'bm' 'bn' 'bo' 'bp' 'bq' 'br' 'bs' 'bt' 'bu' 'bv' 'bw' 'bx' 'by' 'bz' \
|
||||
'ca' 'cb' 'cc' 'cd' 'ce' 'cf' 'cg' 'ch' 'ci' 'cj' 'ck' 'cl' 'cm' 'cn' 'co' 'cp' 'cq' 'cr' 'cs' 'ct' 'cu' 'cv' 'cw' 'cx' 'cy' 'cz' \
|
||||
'da' 'db' 'dc' 'dd' 'de' 'df' 'dg' 'dh' 'di' 'dj' 'dk' 'dl' 'dm' 'dn' 'do' 'dp' 'dq' 'dr' 'ds' 'dt' 'du' 'dv' 'dw' 'dx' 'dy' 'dz' \
|
||||
'ea' 'eb' 'ec' 'ed' 'ee' 'ef' 'eg' 'eh' 'ei' 'ej' 'ek' 'el' 'em' 'en' 'eo' 'ep' 'eq' 'er' 'es' 'et' 'eu' 'ev' 'ew' 'ex' 'ey' 'ez' \
|
||||
'fa' 'fb' 'fc' 'fd' 'fe' 'ff' 'fg' 'fh' 'fi' 'fj' 'fk' 'fl' 'fm' 'fn' 'fo' 'fp' 'fq' 'fr' 'fs' 'ft' 'fu' 'fv' 'fw' 'fx' 'fy' 'fz' \
|
||||
'ga' 'gb' 'gc' 'gd' 'ge' 'gf' 'gg' 'gh' 'gi' 'gj' 'gk' 'gl' 'gm' 'gn' 'go' 'gp' 'gq' 'gr' 'gs' 'gt' 'gu' 'gv' 'gw' 'gx' 'gy' 'gz' \
|
||||
'ha' 'hb' 'hc' 'hd' 'he' 'hf' 'hg' 'hh' 'hi' 'hj' 'hk' 'hl' 'hm' 'hn' 'ho' 'hp' 'hq' 'hr' 'hs' 'ht' 'hu' 'hv' 'hw' 'hx' 'hy' 'hz' \
|
||||
'ia' 'ib' 'ic' 'id' 'ie' 'if' 'ig' 'ih' 'ii' 'ij' 'ik' 'il' 'im' 'in' 'io' 'ip' 'iq' 'ir' 'is' 'it' 'iu' 'iv' 'iw' 'ix' 'iy' 'iz' \
|
||||
'ja' 'jb' 'jc' 'jd' 'je' 'jf' 'jg' 'jh' 'ji' 'jj' 'jk' 'jl' 'jm' 'jn' 'jo' 'jp' 'jq' 'jr' 'js' 'jt' 'ju' 'jv' 'jw' 'jx' 'jy' 'jz' \
|
||||
'ka' 'kb' 'kc' 'kd' 'ke' 'kf' 'kg' 'kh' 'ki' 'kj' 'kk' 'kl' 'km' 'kn' 'ko' 'kp' 'kq' 'kr' 'ks' 'kt' 'ku' 'kv' 'kw' 'kx' 'ky' 'kz' \
|
||||
'la' 'lb' 'lc' 'ld' 'le' 'lf' 'lg' 'lh' 'li' 'lj' 'lk' 'll' 'lm' 'ln' 'lo' 'lp' 'lq' 'lr' 'ls' 'lt' 'lu' 'lv' 'lw' 'lx' 'ly' 'lz' \
|
||||
'ma' 'mb' 'mc' 'md' 'me' 'mf' 'mg' 'mh' 'mi' 'mj' 'mk' 'ml' 'mm' 'mn' 'mo' 'mp' 'mq' 'mr' 'ms' 'mt' 'mu' 'mv' 'mw' 'mx' 'my' 'mz' \
|
||||
'na' 'nb' 'nc' 'nd' 'ne' 'nf' 'ng' 'nh' 'ni' 'nj' 'nk' 'nl' 'nm' 'nn' 'no' 'np' 'nq' 'nr' 'ns' 'nt' 'nu' 'nv' 'nw' 'nx' 'ny' 'nz' \
|
||||
'oa' 'ob' 'oc' 'od' 'oe' 'of' 'og' 'oh' 'oi' 'oj' 'ok' 'ol' 'om' 'on' 'oo' 'op' 'oq' 'or' 'os' 'ot' 'ou' 'ov' 'ow' 'ox' 'oy' 'oz' \
|
||||
'pa' 'pb' 'pc' 'pd' 'pe' 'pf' 'pg' 'ph' 'pi' 'pj' 'pk' 'pl' 'pm' 'pn' 'po' 'pp' 'pq' 'pr' 'ps' 'pt' 'pu' 'pv' 'pw' 'px' 'py' 'pz' \
|
||||
'qa' 'qb' 'qc' 'qd' 'qe' 'qf' 'qg' 'qh' 'qi' 'qj' 'qk' 'ql' 'qm' 'qn' 'qo' 'qp' 'qq' 'qr' 'qs' 'qt' 'qu' 'qv' 'qw' 'qx' 'qy' 'qz' \
|
||||
'ra' 'rb' 'rc' 'rd' 're' 'rf' 'rg' 'rh' 'ri' 'rj' 'rk' 'rl' 'rm' 'rn' 'ro' 'rp' 'rq' 'rr' 'rs' 'rt' 'ru' 'rv' 'rw' 'rx' 'ry' 'rz' \
|
||||
'sa' 'sb' 'sc' 'sd' 'se' 'sf' 'sg' 'sh' 'si' 'sj' 'sk' 'sl' 'sm' 'sn' 'so' 'sp' 'sq' 'sr' 'ss' 'st' 'su' 'sv' 'sw' 'sx' 'sy' 'sz' \
|
||||
'ta' 'tb' 'tc' 'td' 'te' 'tf' 'tg' 'th' 'ti' 'tj' 'tk' 'tl' 'tm' 'tn' 'to' 'tp' 'tq' 'tr' 'ts' 'tt' 'tu' 'tv' 'tw' 'tx' 'ty' 'tz' \
|
||||
'ua' 'ub' 'uc' 'ud' 'ue' 'uf' 'ug' 'uh' 'ui' 'uj' 'uk' 'ul' 'um' 'un' 'uo' 'up' 'uq' 'ur' 'us' 'ut' 'uu' 'uv' 'uw' 'ux' 'uy' 'uz' \
|
||||
'va' 'vb' 'vc' 'vd' 've' 'vf' 'vg' 'vh' 'vi' 'vj' 'vk' 'vl' 'vm' 'vn' 'vo' 'vp' 'vq' 'vr' 'vs' 'vt' 'vu' 'vv' 'vw' 'vx' 'vy' 'vz' \
|
||||
'wa' 'wb' 'wc' 'wd' 'we' 'wf' 'wg' 'wh' 'wi' 'wj' 'wk' 'wl' 'wm' 'wn' 'wo' 'wp' 'wq' 'wr' 'ws' 'wt' 'wu' 'wv' 'ww' 'wx' 'wy' 'wz' \
|
||||
'xa' 'xb' 'xc' 'xd' 'xe' 'xf' 'xg' 'xh' 'xi' 'xj' 'xk' 'xl' 'xm' 'xn' 'xo' 'xp' 'xq' 'xr' 'xs' 'xt' 'xu' 'xv' 'xw' 'xx' 'xy' 'xz' \
|
||||
'ya' 'yb' 'yc' 'yd' 'ye' 'yf' 'yg' 'yh' 'yi' 'yj' 'yk' 'yl' 'ym' 'yn' 'yo' 'yp' 'yq' 'yr' 'ys' 'yt' 'yu' 'yv' 'yw' 'yx' 'yy' 'yz' \
|
||||
'za' 'zb' 'zc' 'zd' 'ze' 'zf' 'zg' 'zh' 'zi' 'zj' 'zk' 'zl' 'zm' 'zn' 'zo' 'zp' 'zq' 'zr' 'zs' 'zt' 'zu' 'zv' 'zw' 'zx' 'zy' 'zz'
|
||||
|
||||
set-face global JumpLabel 'black,bright-yellow+F'
|
||||
|
||||
define-command enter_jump_mode_with_replace_select_mode %{
|
||||
enter_jump_mode 'jump (replace):' %{
|
||||
try %{
|
||||
execute-keys -save-regs 's' '<esc><a-,>"sZz"s<a-z>a<esc>'
|
||||
} catch %{
|
||||
execute-keys '<esc>z<esc>'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
define-command enter_jump_mode_with_extend_select_mode %{
|
||||
enter_jump_mode 'jump (extend):' %{
|
||||
execute-keys -save-regs 's' '<esc>"sZ,<a-z>u"s<a-z>a<esc>'
|
||||
}
|
||||
}
|
||||
|
||||
define-command enter_jump_mode_with_append_select_mode %{
|
||||
enter_jump_mode 'jump (append):' %{
|
||||
execute-keys -save-regs 's' '<esc>"sZz"s<a-z>a<esc>'
|
||||
}
|
||||
}
|
||||
|
||||
define-command enter_jump_mode -params 2 %{
|
||||
create_jump_state_from_words_in_viewport
|
||||
create_jump_label_selection_map_option_buffer
|
||||
execute-keys 'ga'
|
||||
render_jump_labels
|
||||
open_jump_prompt %arg{1} %arg{2}
|
||||
}
|
||||
|
||||
define-command exit_jump_mode %{
|
||||
unrender_jump_labels
|
||||
close_jump_label_selection_map_option_buffer
|
||||
}
|
||||
|
||||
define-command render_jump_labels %{
|
||||
add-highlighter window/jump_ranges replace-ranges jump_ranges
|
||||
}
|
||||
|
||||
define-command unrender_jump_labels %{
|
||||
remove-highlighter window/jump_ranges
|
||||
}
|
||||
|
||||
define-command open_jump_prompt -params 2 %{
|
||||
prompt %arg{1} %{
|
||||
exit_jump_mode
|
||||
} -on-change %{
|
||||
handle_jump_input %val{text} %arg{2}
|
||||
} -on-abort %{
|
||||
exit_jump_mode
|
||||
}
|
||||
}
|
||||
|
||||
define-command handle_jump_input -params 2 %{
|
||||
evaluate-commands -save-regs '^/' -draft -verbatim try %{
|
||||
open_jump_label_selection_map_option_buffer
|
||||
set-register / "\A\Q%arg{1}\E=(\d+\.\d+,\d+\.\d+)\z"
|
||||
execute-keys 's<ret>'
|
||||
evaluate-commands -draft -client %val{client} %exp{
|
||||
select %reg{1}
|
||||
execute-keys -save-regs '' 'Z'
|
||||
}
|
||||
evaluate-commands -client %val{client} %arg{2}
|
||||
}
|
||||
}
|
||||
|
||||
define-command create_jump_state_from_words_in_viewport %{
|
||||
create_jump_state_from_selections_in_viewport %{
|
||||
execute-keys 's\w+<ret><a-i>w'
|
||||
}
|
||||
}
|
||||
|
||||
define-command create_jump_state_from_selections_in_viewport -params 1 %{
|
||||
evaluate-commands -draft %{
|
||||
execute-keys 'gtGbx'
|
||||
evaluate-commands %arg{1}
|
||||
execute-keys '<a-k>\A.{2,}\z<ret>)'
|
||||
evaluate-commands -client %val{client} -verbatim create_jump_state %val{selections_desc}
|
||||
}
|
||||
}
|
||||
|
||||
define-command create_jump_state -params .. %{
|
||||
evaluate-commands -save-regs '"ab' %{
|
||||
set-register a %arg{@}
|
||||
set-register b %opt{jump_labels}
|
||||
evaluate-commands -draft %{
|
||||
edit -scratch
|
||||
execute-keys '"a<a-P>a<space><c-r>b<esc>'
|
||||
evaluate-commands -itersel %{
|
||||
execute-keys 's\A(\d+)\.(\d+),(\d+)\.(\d+) (.{2})\z<ret>'
|
||||
set-register dquote %exp{
|
||||
set-option -add window jump_ranges "%reg{1}.%reg{2}+2|{JumpLabel}%reg{5}"
|
||||
set-option -add window jump_label_selection_map "%reg{5}=%reg{1}.%reg{2},%reg{3}.%reg{4}"
|
||||
}
|
||||
execute-keys 'R'
|
||||
}
|
||||
execute-keys -save-regs '' '%y'
|
||||
delete-buffer
|
||||
}
|
||||
set-option window jump_ranges %val{timestamp}
|
||||
set-option window jump_label_selection_map
|
||||
evaluate-commands %reg{dquote}
|
||||
}
|
||||
}
|
||||
|
||||
define-command create_jump_label_selection_map_option_buffer %{
|
||||
evaluate-commands -save-regs '"' %{
|
||||
set-register dquote %opt{jump_label_selection_map}
|
||||
edit -scratch "jump_label_selection_map@%val{client}.option"
|
||||
execute-keys '<a-P>'
|
||||
set-option buffer jump_selections %val{selections_desc}
|
||||
}
|
||||
}
|
||||
|
||||
define-command open_jump_label_selection_map_option_buffer %{
|
||||
edit -scratch "jump_label_selection_map@%val{client}.option"
|
||||
select %opt{jump_selections}
|
||||
}
|
||||
|
||||
define-command close_jump_label_selection_map_option_buffer %{
|
||||
delete-buffer "jump_label_selection_map@%val{client}.option"
|
||||
}
|
||||
125
kakoune/.config/kak/colors/five-colors-dark.kak
Normal file
125
kakoune/.config/kak/colors/five-colors-dark.kak
Normal file
@@ -0,0 +1,125 @@
|
||||
# Five colors dark theme
|
||||
|
||||
evaluate-commands %sh{
|
||||
bg="rgb:272117"
|
||||
bgmenu="rgb:282e38"
|
||||
fg="rgb:a29e98"
|
||||
gray="rgb:767778"
|
||||
|
||||
red1="rgb:f2a0ae"
|
||||
red2="rgb:c37583"
|
||||
red3="rgb:954c5b"
|
||||
|
||||
yellow1="rgb:dcb46e"
|
||||
yellow2="rgb:af8842"
|
||||
yellow3="rgb:845f10"
|
||||
|
||||
green1="rgb:73d0b1"
|
||||
green2="rgb:44a386"
|
||||
green3="rgb:04785d"
|
||||
|
||||
blue1="rgb:7fc3f5"
|
||||
blue2="rgb:5396c7"
|
||||
blue3="rgb:276c9a"
|
||||
|
||||
violet1="rgb:d2a8e8"
|
||||
violet2="rgb:a57cba"
|
||||
violet3="rgb:7b548e"
|
||||
|
||||
echo "
|
||||
## CODE
|
||||
|
||||
set-face global value $violet2
|
||||
set-face global type $green2
|
||||
set-face global variable $yellow3
|
||||
set-face global module $red3
|
||||
set-face global function $blue2
|
||||
set-face global string $yellow2
|
||||
set-face global keyword $violet3
|
||||
set-face global operator $red2
|
||||
set-face global attribute $green3
|
||||
set-face global comment $gray
|
||||
set-face global documentation $gray
|
||||
set-face global meta $blue3
|
||||
set-face global builtin $violet1
|
||||
|
||||
## MARKUP
|
||||
|
||||
set-face global title $red3
|
||||
set-face global header $violet3
|
||||
set-face global mono $yellow2
|
||||
set-face global block $blue3
|
||||
set-face global link $blue2
|
||||
set-face global bullet $red2
|
||||
set-face global list $red2
|
||||
|
||||
## BUILTIN
|
||||
|
||||
set-face global Default $fg,$bg
|
||||
set-face global PrimarySelection $bg,$green3
|
||||
set-face global SecondarySelection $bg,$blue3
|
||||
set-face global PrimaryCursor $bg,$green1
|
||||
set-face global SecondaryCursor $bg,$blue1
|
||||
set-face global PrimaryCursorEol $bg,$red1
|
||||
set-face global SecondaryCursorEol $bg,$yellow1
|
||||
set-face global MenuForeground $green1,$green3
|
||||
set-face global MenuBackground $fg,$bgmenu
|
||||
set-face global MenuInfo $green2
|
||||
set-face global Information $fg,$bgmenu
|
||||
set-face global InlineInformation $blue2,$bgmenu
|
||||
set-face global Error $red2
|
||||
set-face global DiagnosticError default,default,$red2+c
|
||||
set-face global DiagnosticWarning default,default,$yellow2+c
|
||||
set-face global DiagnosticInfo default,default,$green2+c
|
||||
set-face global DiagnosticHint default,default,$blue2+c
|
||||
set-face global StatusLine $fg,$bgmenu
|
||||
set-face global StatusLineMode $green2
|
||||
set-face global StatusLineInfo $yellow2
|
||||
set-face global StatusLineValue $blue2
|
||||
set-face global StatusCursor $bg,$green1
|
||||
set-face global Prompt $green2
|
||||
set-face global BufferPadding $bg,$bg
|
||||
|
||||
# Built-in highlighter faces
|
||||
|
||||
set-face global LineNumbers $gray
|
||||
set-face global LineNumberCursor $green3
|
||||
set-face global LineNumbersWrapped $bg,$bg
|
||||
set-face global MatchingChar $red1
|
||||
set-face global Whitespace $gray
|
||||
set-face global WhitespaceIndent $gray
|
||||
set-face global WrapMarker $yellow1
|
||||
|
||||
# PLUGINS
|
||||
|
||||
# kak-lsp
|
||||
|
||||
set-face global InfoDefault default
|
||||
set-face global InfoBlock $green2
|
||||
set-face global InfoBlockQuote $yellow2
|
||||
set-face global InfoBullet $red2
|
||||
set-face global InfoHeader $red3
|
||||
set-face global InfoLink $blue2
|
||||
set-face global InfoLinkMono $blue3
|
||||
|
||||
set-face global InfoMono $blue2
|
||||
set-face global InfoRule $yellow2
|
||||
set-face global InfoDiagnosticError $red2
|
||||
set-face global InfoDiagnosticHint $blue2
|
||||
set-face global InfoDiagnosticInformation $green2
|
||||
set-face global InfoDiagnosticWarning $yellow2
|
||||
|
||||
set-face global LineFlagError $red2
|
||||
set-face global LineFlagHint $blue2
|
||||
set-face global LineFlagInfo $green2
|
||||
set-face global LineFlagWarning $yellow2
|
||||
|
||||
set-face global InlayDiagnosticError $red2
|
||||
set-face global InlayDiagnosticHint $blue2
|
||||
set-face global InlayDiagnosticInfo $green2
|
||||
set-face global InlayDiagnosticWarning $yellow2
|
||||
|
||||
set-face global SnippetsNextPlaceholders $bg,$green2
|
||||
set-face global SnippetsOtherPlaceholders $bg,$yellow2
|
||||
"
|
||||
}
|
||||
125
kakoune/.config/kak/colors/five-colors-light.kak
Normal file
125
kakoune/.config/kak/colors/five-colors-light.kak
Normal file
@@ -0,0 +1,125 @@
|
||||
# Five colors dark theme
|
||||
|
||||
evaluate-commands %sh{
|
||||
bg="rgb:faf8f5"
|
||||
bgmenu="rgb:f6ede0"
|
||||
fg="rgb:696257"
|
||||
gray="rgb:c0c1c2"
|
||||
|
||||
red1="rgb:f9a6b5"
|
||||
red2="rgb:d0818f"
|
||||
red3="rgb:a95d6c"
|
||||
|
||||
yellow1="rgb:e3ba74"
|
||||
yellow2="rgb:bc944f"
|
||||
yellow3="rgb:967028"
|
||||
|
||||
green1="rgb:7ad6b7"
|
||||
green2="rgb:52af92"
|
||||
green3="rgb:278a6e"
|
||||
|
||||
blue1="rgb:85c9fc"
|
||||
blue2="rgb:60a3d4"
|
||||
blue3="rgb:3a7ead"
|
||||
|
||||
violet1="rgb:d9aeee"
|
||||
violet2="rgb:b289c7"
|
||||
violet3="rgb:8d65a1"
|
||||
|
||||
echo "
|
||||
## CODE
|
||||
|
||||
set-face global value $violet2
|
||||
set-face global type $green2
|
||||
set-face global variable $yellow3
|
||||
set-face global module $red3
|
||||
set-face global function $blue2
|
||||
set-face global string $yellow2
|
||||
set-face global keyword $violet3
|
||||
set-face global operator $red2
|
||||
set-face global attribute $green3
|
||||
set-face global comment $gray
|
||||
set-face global documentation $gray
|
||||
set-face global meta $blue3
|
||||
set-face global builtin $violet1
|
||||
|
||||
## MARKUP
|
||||
|
||||
set-face global title $red3
|
||||
set-face global header $violet3
|
||||
set-face global mono $yellow2
|
||||
set-face global block $blue3
|
||||
set-face global link $blue2
|
||||
set-face global bullet $red2
|
||||
set-face global list $red2
|
||||
|
||||
## BUILTIN
|
||||
|
||||
set-face global Default $fg,$bg
|
||||
set-face global PrimarySelection $bg,$green3
|
||||
set-face global SecondarySelection $bg,$blue3
|
||||
set-face global PrimaryCursor $bg,$green1
|
||||
set-face global SecondaryCursor $bg,$blue1
|
||||
set-face global PrimaryCursorEol $bg,$red1
|
||||
set-face global SecondaryCursorEol $bg,$yellow1
|
||||
set-face global MenuForeground $green1,$green3
|
||||
set-face global MenuBackground $fg,$bgmenu
|
||||
set-face global MenuInfo $green2
|
||||
set-face global Information $fg,$bgmenu
|
||||
set-face global InlineInformation $blue2,$bgmenu
|
||||
set-face global Error $red2
|
||||
set-face global DiagnosticError default,default,$red2+c
|
||||
set-face global DiagnosticWarning default,default,$yellow2+c
|
||||
set-face global DiagnosticInfo default,default,$green2+c
|
||||
set-face global DiagnosticHint default,default,$blue2+c
|
||||
set-face global StatusLine $fg,$bgmenu
|
||||
set-face global StatusLineMode $green2
|
||||
set-face global StatusLineInfo $yellow2
|
||||
set-face global StatusLineValue $blue2
|
||||
set-face global StatusCursor $bg,$green1
|
||||
set-face global Prompt $green2
|
||||
set-face global BufferPadding $bg,$bg
|
||||
|
||||
# Built-in highlighter faces
|
||||
|
||||
set-face global LineNumbers $gray
|
||||
set-face global LineNumberCursor $green3
|
||||
set-face global LineNumbersWrapped $bg,$bg
|
||||
set-face global MatchingChar $red1
|
||||
set-face global Whitespace $gray
|
||||
set-face global WhitespaceIndent $gray
|
||||
set-face global WrapMarker $yellow1
|
||||
|
||||
# PLUGINS
|
||||
|
||||
# kak-lsp
|
||||
|
||||
set-face global InfoDefault default
|
||||
set-face global InfoBlock $green2
|
||||
set-face global InfoBlockQuote $yellow2
|
||||
set-face global InfoBullet $red2
|
||||
set-face global InfoHeader $red3
|
||||
set-face global InfoLink $blue2
|
||||
set-face global InfoLinkMono $blue3
|
||||
|
||||
set-face global InfoMono $blue2
|
||||
set-face global InfoRule $yellow2
|
||||
set-face global InfoDiagnosticError $red2
|
||||
set-face global InfoDiagnosticHint $blue2
|
||||
set-face global InfoDiagnosticInformation $green2
|
||||
set-face global InfoDiagnosticWarning $yellow2
|
||||
|
||||
set-face global LineFlagError $red2
|
||||
set-face global LineFlagHint $blue2
|
||||
set-face global LineFlagInfo $green2
|
||||
set-face global LineFlagWarning $yellow2
|
||||
|
||||
set-face global InlayDiagnosticError $red2
|
||||
set-face global InlayDiagnosticHint $blue2
|
||||
set-face global InlayDiagnosticInfo $green2
|
||||
set-face global InlayDiagnosticWarning $yellow2
|
||||
|
||||
set-face global SnippetsNextPlaceholders $bg,$green2
|
||||
set-face global SnippetsOtherPlaceholders $bg,$yellow2
|
||||
"
|
||||
}
|
||||
121
kakoune/.config/kak/colors/four-colors-dark.kak
Normal file
121
kakoune/.config/kak/colors/four-colors-dark.kak
Normal file
@@ -0,0 +1,121 @@
|
||||
# Four colors dark theme
|
||||
|
||||
evaluate-commands %sh{
|
||||
bg="rgb:272117"
|
||||
bgmenu="rgb:282e38"
|
||||
fg="rgb:a29e98"
|
||||
gray="rgb:58666d"
|
||||
|
||||
yellow1="rgb:dcb46e"
|
||||
yellow2="rgb:af8842"
|
||||
yellow3="rgb:845f10"
|
||||
|
||||
green1="rgb:73d0b1"
|
||||
green2="rgb:44a386"
|
||||
green3="rgb:04785d"
|
||||
|
||||
blue1="rgb:95bcfb"
|
||||
blue2="rgb:6b90cc"
|
||||
blue3="rgb:43669f"
|
||||
|
||||
pink1="rgb:eca0c4"
|
||||
pink2="rgb:bd7598"
|
||||
pink3="rgb:904c6e"
|
||||
|
||||
echo "
|
||||
## CODE
|
||||
|
||||
set-face global value $pink1
|
||||
set-face global type $green2
|
||||
set-face global variable $yellow3
|
||||
set-face global module $pink3
|
||||
set-face global function $blue2
|
||||
set-face global string $yellow2
|
||||
set-face global keyword $blue1
|
||||
set-face global operator $pink2
|
||||
set-face global attribute $green1
|
||||
set-face global comment $green3
|
||||
set-face global documentation $green3
|
||||
set-face global meta $blue3
|
||||
set-face global builtin $green2
|
||||
|
||||
## MARKUP
|
||||
|
||||
set-face global title $pink3
|
||||
set-face global header $pink2
|
||||
set-face global mono $yellow2
|
||||
set-face global block $blue2
|
||||
set-face global link $blue1
|
||||
set-face global bullet $pink1
|
||||
set-face global list $pink1
|
||||
|
||||
## BUILTIN
|
||||
|
||||
set-face global Default $fg,$bg
|
||||
set-face global PrimarySelection $bg,$green3
|
||||
set-face global SecondarySelection $bg,$blue3
|
||||
set-face global PrimaryCursor $bg,$green1
|
||||
set-face global SecondaryCursor $bg,$blue1
|
||||
set-face global PrimaryCursorEol $bg,$pink1
|
||||
set-face global SecondaryCursorEol $bg,$yellow1
|
||||
set-face global MenuForeground $green1,$green3
|
||||
set-face global MenuBackground $fg,$bgmenu
|
||||
set-face global MenuInfo $green2
|
||||
set-face global Information $fg,$bgmenu
|
||||
set-face global InlineInformation $blue2,$bgmenu
|
||||
set-face global Error $pink2
|
||||
set-face global DiagnosticError default,default,$pink2+c
|
||||
set-face global DiagnosticWarning default,default,$yellow2+c
|
||||
set-face global DiagnosticInfo default,default,$green2+c
|
||||
set-face global DiagnosticHint default,default,$blue2+c
|
||||
set-face global StatusLine $fg,$bgmenu
|
||||
set-face global StatusLineMode $green2
|
||||
set-face global StatusLineInfo $yellow2
|
||||
set-face global StatusLineValue $blue2
|
||||
set-face global StatusCursor $bg,$green1
|
||||
set-face global Prompt $green2
|
||||
set-face global BufferPadding $bg,$bg
|
||||
|
||||
# Built-in highlighter faces
|
||||
|
||||
set-face global LineNumbers $blue3
|
||||
set-face global LineNumberCursor $green3
|
||||
set-face global LineNumbersWrapped $bg,$bg
|
||||
set-face global MatchingChar $yellow1
|
||||
set-face global Whitespace $gray
|
||||
set-face global WhitespaceIndent $gray
|
||||
set-face global WrapMarker $yellow1
|
||||
|
||||
# PLUGINS
|
||||
|
||||
# kak-lsp
|
||||
|
||||
set-face global InfoDefault default
|
||||
set-face global InfoBlock $green2
|
||||
set-face global InfoBlockQuote $yellow2
|
||||
set-face global InfoBullet $pink1
|
||||
set-face global InfoHeader $pink3
|
||||
set-face global InfoLink $blue1
|
||||
set-face global InfoLinkMono $blue2
|
||||
|
||||
set-face global InfoMono $blue2
|
||||
set-face global InfoRule $yellow2
|
||||
set-face global InfoDiagnosticError $pink2
|
||||
set-face global InfoDiagnosticHint $blue2
|
||||
set-face global InfoDiagnosticInformation $green2
|
||||
set-face global InfoDiagnosticWarning $yellow2
|
||||
|
||||
set-face global LineFlagError $pink2
|
||||
set-face global LineFlagHint $blue2
|
||||
set-face global LineFlagInfo $green2
|
||||
set-face global LineFlagWarning $yellow2
|
||||
|
||||
set-face global InlayDiagnosticError $pink2
|
||||
set-face global InlayDiagnosticHint $blue2
|
||||
set-face global InlayDiagnosticInfo $green2
|
||||
set-face global InlayDiagnosticWarning $yellow2
|
||||
|
||||
set-face global SnippetsNextPlaceholders $bg,$green2
|
||||
set-face global SnippetsOtherPlaceholders $bg,$yellow2
|
||||
"
|
||||
}
|
||||
121
kakoune/.config/kak/colors/four-colors-light.kak
Normal file
121
kakoune/.config/kak/colors/four-colors-light.kak
Normal file
@@ -0,0 +1,121 @@
|
||||
# Four colors light theme
|
||||
|
||||
evaluate-commands %sh{
|
||||
bg="rgb:faf8f5"
|
||||
bgmenu="rgb:f6ede0"
|
||||
fg="rgb:696257"
|
||||
gray="rgb:58666d"
|
||||
|
||||
yellow1="rgb:dcb46e"
|
||||
yellow2="rgb:af8842"
|
||||
yellow3="rgb:845f10"
|
||||
|
||||
green1="rgb:73d0b1"
|
||||
green2="rgb:44a386"
|
||||
green3="rgb:04785d"
|
||||
|
||||
blue1="rgb:95bcfb"
|
||||
blue2="rgb:6b90cc"
|
||||
blue3="rgb:43669f"
|
||||
|
||||
pink1="rgb:eca0c4"
|
||||
pink2="rgb:bd7598"
|
||||
pink3="rgb:904c6e"
|
||||
|
||||
echo "
|
||||
## CODE
|
||||
|
||||
set-face global value $pink1
|
||||
set-face global type $green2
|
||||
set-face global variable $yellow3
|
||||
set-face global module $pink3
|
||||
set-face global function $blue2
|
||||
set-face global string $yellow2
|
||||
set-face global keyword $blue1
|
||||
set-face global operator $pink2
|
||||
set-face global attribute $green1
|
||||
set-face global comment $green3
|
||||
set-face global documentation $green3
|
||||
set-face global meta $blue3
|
||||
set-face global builtin $green2
|
||||
|
||||
## MARKUP
|
||||
|
||||
set-face global title $pink3
|
||||
set-face global header $pink2
|
||||
set-face global mono $yellow2
|
||||
set-face global block $blue2
|
||||
set-face global link $blue1
|
||||
set-face global bullet $pink1
|
||||
set-face global list $pink1
|
||||
|
||||
## BUILTIN
|
||||
|
||||
set-face global Default $fg,$bg
|
||||
set-face global PrimarySelection $bg,$green3
|
||||
set-face global SecondarySelection $bg,$blue3
|
||||
set-face global PrimaryCursor $bg,$green1
|
||||
set-face global SecondaryCursor $bg,$blue1
|
||||
set-face global PrimaryCursorEol $bg,$pink1
|
||||
set-face global SecondaryCursorEol $bg,$yellow1
|
||||
set-face global MenuForeground $green1,$green3
|
||||
set-face global MenuBackground $fg,$bgmenu
|
||||
set-face global MenuInfo $green2
|
||||
set-face global Information $fg,$bgmenu
|
||||
set-face global InlineInformation $blue2,$bgmenu
|
||||
set-face global Error $pink2
|
||||
set-face global DiagnosticError default,default,$pink2+c
|
||||
set-face global DiagnosticWarning default,default,$yellow2+c
|
||||
set-face global DiagnosticInfo default,default,$green2+c
|
||||
set-face global DiagnosticHint default,default,$blue2+c
|
||||
set-face global StatusLine $fg,$bgmenu
|
||||
set-face global StatusLineMode $green2
|
||||
set-face global StatusLineInfo $yellow2
|
||||
set-face global StatusLineValue $blue2
|
||||
set-face global StatusCursor $bg,$green1
|
||||
set-face global Prompt $green2
|
||||
set-face global BufferPadding $bg,$bg
|
||||
|
||||
# Built-in highlighter faces
|
||||
|
||||
set-face global LineNumbers $blue3
|
||||
set-face global LineNumberCursor $green2
|
||||
set-face global LineNumbersWrapped $bg,$bg
|
||||
set-face global MatchingChar $yellow1
|
||||
set-face global Whitespace $gray
|
||||
set-face global WhitespaceIndent $gray
|
||||
set-face global WrapMarker $yellow1
|
||||
|
||||
# PLUGINS
|
||||
|
||||
# kak-lsp
|
||||
|
||||
set-face global InfoDefault default
|
||||
set-face global InfoBlock $green2
|
||||
set-face global InfoBlockQuote $yellow2
|
||||
set-face global InfoBullet $pink1
|
||||
set-face global InfoHeader $pink3
|
||||
set-face global InfoLink $blue1
|
||||
set-face global InfoLinkMono $blue2
|
||||
|
||||
set-face global InfoMono $blue2
|
||||
set-face global InfoRule $yellow2
|
||||
set-face global InfoDiagnosticError $pink2
|
||||
set-face global InfoDiagnosticHint $blue2
|
||||
set-face global InfoDiagnosticInformation $green2
|
||||
set-face global InfoDiagnosticWarning $yellow2
|
||||
|
||||
set-face global LineFlagError $pink2
|
||||
set-face global LineFlagHint $blue2
|
||||
set-face global LineFlagInfo $green2
|
||||
set-face global LineFlagWarning $yellow2
|
||||
|
||||
set-face global InlayDiagnosticError $pink2
|
||||
set-face global InlayDiagnosticHint $blue2
|
||||
set-face global InlayDiagnosticInfo $green2
|
||||
set-face global InlayDiagnosticWarning $yellow2
|
||||
|
||||
set-face global SnippetsNextPlaceholders $bg,$green2
|
||||
set-face global SnippetsOtherPlaceholders $bg,$yellow2
|
||||
"
|
||||
}
|
||||
116
kakoune/.config/kak/colors/lp-dark.kak
Normal file
116
kakoune/.config/kak/colors/lp-dark.kak
Normal file
@@ -0,0 +1,116 @@
|
||||
# LP Dark
|
||||
|
||||
declare-option str bg "272117"
|
||||
declare-option str bgmenu "1c222b"
|
||||
declare-option str fg "a29e98"
|
||||
declare-option str comment "696257"
|
||||
declare-option str gray "58666d"
|
||||
|
||||
declare-option str red "d48490"
|
||||
declare-option str orange "d4896e"
|
||||
declare-option str yellow "bf9752"
|
||||
declare-option str yellow_green "96a85e"
|
||||
declare-option str green "62b289"
|
||||
declare-option str cyan "40b1b7"
|
||||
declare-option str blue "54aad1"
|
||||
declare-option str blue_violet "7a9fdd"
|
||||
declare-option str violet "9d94d9"
|
||||
declare-option str pink "ba8ac5"
|
||||
declare-option str pink_red "ce84a7"
|
||||
|
||||
declare-option str selectionalpha "90"
|
||||
|
||||
## CODE
|
||||
|
||||
set-face global value "rgb:%opt{yellow_green}"
|
||||
set-face global type "rgb:%opt{cyan}"
|
||||
set-face global variable "rgb:%opt{blue_violet}"
|
||||
set-face global module "rgb:%opt{red}"
|
||||
set-face global function "rgb:%opt{blue}"
|
||||
set-face global string "rgb:%opt{green}"
|
||||
set-face global keyword "rgb:%opt{pink}"
|
||||
set-face global operator "rgb:%opt{orange}"
|
||||
set-face global attribute "rgb:%opt{blue_violet}"
|
||||
set-face global comment "rgb:%opt{comment}"
|
||||
set-face global documentation "rgb:%opt{comment}"
|
||||
set-face global meta "rgb:%opt{violet}"
|
||||
set-face global bultin "rgb:%opt{pink_red}"
|
||||
|
||||
## MARKUP
|
||||
|
||||
set-face global title "rgb:%opt{pink_red}"
|
||||
set-face global header "rgb:%opt{orange}"
|
||||
set-face global mono "rgb:%opt{yellow_green}"
|
||||
set-face global block "rgb:%opt{cyan}"
|
||||
set-face global link "rgb:%opt{blue}"
|
||||
set-face global bullet "rgb:%opt{orange}"
|
||||
set-face global list "rgb:%opt{orange}"
|
||||
|
||||
## BUILTIN
|
||||
|
||||
set-face global Default "rgb:%opt{fg},rgb:%opt{bg}"
|
||||
set-face global PrimarySelection "rgb:%opt{bg},rgba:%opt{green}%opt{selectionalpha}"
|
||||
set-face global SecondarySelection "rgb:%opt{bg},rgba:%opt{blue}%opt{selectionalpha}"
|
||||
set-face global PrimaryCursor "rgb:%opt{bg},rgb:%opt{green}"
|
||||
set-face global SecondaryCursor "rgb:%opt{bg},rgb:%opt{blue}"
|
||||
set-face global PrimaryCursorEol "rgb:%opt{bg},rgb:%opt{pink_red}"
|
||||
set-face global SecondaryCursorEol "rgb:%opt{bg},rgb:%opt{violet}"
|
||||
set-face global MenuForeground "rgb:%opt{bg},rgb:%opt{fg}"
|
||||
set-face global MenuBackground "rgb:%opt{fg},rgb:%opt{bgmenu}"
|
||||
set-face global MenuInfo "rgb:%opt{comment}"
|
||||
set-face global Information "rgb:%opt{fg},rgb:%opt{bgmenu}"
|
||||
set-face global InlineInformation "rgb:%opt{yellow}"
|
||||
set-face global Error "rgb:%opt{orange}"
|
||||
set-face global DiagnosticError "default,default,rgb:%opt{red}+c"
|
||||
set-face global DiagnosticWarning "default,default,rgb:%opt{yellow}+c"
|
||||
set-face global StatusLine "rgb:%opt{fg},rgb:%opt{bgmenu}"
|
||||
set-face global StatusLineMode "rgb:%opt{green}"
|
||||
set-face global StatusLineInfo "rgb:%opt{yellow_green}"
|
||||
set-face global StatusLineValue "rgb:%opt{green}"
|
||||
set-face global StatusCursor "rgb:%opt{bg},rgb:%opt{green}"
|
||||
set-face global Prompt "rgb:%opt{green}"
|
||||
set-face global BufferPadding "rgb:%opt{bg},rgb:%opt{bg}"
|
||||
|
||||
# Built-in highlighter faces
|
||||
|
||||
set-face global LineNumbers "rgb:%opt{comment}"
|
||||
set-face global LineNumberCursor "rgb:%opt{comment}"
|
||||
set-face global LineNumbersWrapped "rgb:%opt{bg},rgb:%opt{bg}"
|
||||
set-face global MatchingChar "rgb:%opt{yellow_green}"
|
||||
set-face global Whitespace "rgb:%opt{gray}"
|
||||
set-face global WhitespaceIndent "rgb:%opt{gray}"
|
||||
set-face global WrapMarker "rgb:%opt{yellow_green}"
|
||||
|
||||
# PLUGINS
|
||||
|
||||
# kak-lsp
|
||||
|
||||
set-face global InfoDefault "default"
|
||||
set-face global InfoBlock "rgb:%opt{cyan}"
|
||||
set-face global InfoBlockQuote "rgb:%opt{orange}"
|
||||
set-face global InfoBullet "rgb:%opt{orange}"
|
||||
set-face global InfoHeader "rgb:%opt{orange}"
|
||||
set-face global InfoLink "rgb:%opt{blue}"
|
||||
set-face global InfoLinkMono "rgb:%opt{pink}"
|
||||
|
||||
set-face global InfoMono "rgb:%opt{cyan}"
|
||||
set-face global InfoRule "rgb:%opt{orange}"
|
||||
set-face global InfoDiagnosticError "rgb:%opt{red}"
|
||||
set-face global InfoDiagnosticHint "rgb:%opt{blue}"
|
||||
set-face global InfoDiagnosticInformation "rgb:%opt{yellow_green}"
|
||||
set-face global InfoDiagnosticWarning "rgb:%opt{yellow}"
|
||||
|
||||
set-face global LineFlagError "rgb:%opt{red}"
|
||||
set-face global LineFlagHint "rgb:%opt{blue}"
|
||||
set-face global LineFlagInfo "rgb:%opt{yellow_green}"
|
||||
set-face global LineFlagWarning "rgb:%opt{yellow}"
|
||||
|
||||
set-face global InlayDiagnosticError "rgb:%opt{red}"
|
||||
set-face global InlayDiagnosticHint "rgb:%opt{blue}"
|
||||
set-face global InlayDiagnosticInfo "rgb:%opt{yellow_green}"
|
||||
set-face global InlayDiagnosticWarning "rgb:%opt{yellow}"
|
||||
|
||||
set-face global LineFlagError "rgb:%opt{red}"
|
||||
set-face global LineFlagHint "rgb:%opt{blue}"
|
||||
set-face global LineFlagInfo "rgb:%opt{yellow_green}"
|
||||
set-face global LineFlagWarning "rgb:%opt{yellow}"
|
||||
117
kakoune/.config/kak/colors/lp-light.kak
Normal file
117
kakoune/.config/kak/colors/lp-light.kak
Normal file
@@ -0,0 +1,117 @@
|
||||
# LP light
|
||||
|
||||
declare-option str bg "faf8f5"
|
||||
declare-option str bgmenu "f6ede0"
|
||||
declare-option str fg "696257"
|
||||
declare-option str light_yellow "e0b771"
|
||||
declare-option str comment "a59d91"
|
||||
declare-option str gray "58666d"
|
||||
|
||||
declare-option str red "d48490"
|
||||
declare-option str orange "d4896e"
|
||||
declare-option str yellow "bf9752"
|
||||
declare-option str yellow_green "96a85e"
|
||||
declare-option str green "62b289"
|
||||
declare-option str cyan "40b1b7"
|
||||
declare-option str blue "54aad1"
|
||||
declare-option str blue_violet "7a9fdd"
|
||||
declare-option str violet "9d94d9"
|
||||
declare-option str pink "ba8ac5"
|
||||
declare-option str pink_red "ce84a7"
|
||||
|
||||
declare-option str selectionalpha "90"
|
||||
|
||||
## CODE
|
||||
|
||||
set-face global value "rgb:%opt{yellow_green}"
|
||||
set-face global type "rgb:%opt{cyan}"
|
||||
set-face global variable "rgb:%opt{blue_violet}"
|
||||
set-face global module "rgb:%opt{red}"
|
||||
set-face global function "rgb:%opt{blue}"
|
||||
set-face global string "rgb:%opt{green}"
|
||||
set-face global keyword "rgb:%opt{pink}"
|
||||
set-face global operator "rgb:%opt{orange}"
|
||||
set-face global attribute "rgb:%opt{blue_violet}"
|
||||
set-face global comment "rgb:%opt{comment}"
|
||||
set-face global documentation "rgb:%opt{comment}"
|
||||
set-face global meta "rgb:%opt{violet}"
|
||||
set-face global bultin "rgb:%opt{pink_red}"
|
||||
|
||||
## MARKUP
|
||||
|
||||
set-face global title "rgb:%opt{pink_red}"
|
||||
set-face global header "rgb:%opt{orange}"
|
||||
set-face global mono "rgb:%opt{yellow_green}"
|
||||
set-face global block "rgb:%opt{cyan}"
|
||||
set-face global link "rgb:%opt{blue}"
|
||||
set-face global bullet "rgb:%opt{orange}"
|
||||
set-face global list "rgb:%opt{orange}"
|
||||
|
||||
## BUILTIN
|
||||
|
||||
set-face global Default "rgb:%opt{fg},rgb:%opt{bg}"
|
||||
set-face global PrimarySelection "rgb:%opt{bg},rgba:%opt{green}%opt{selectionalpha}"
|
||||
set-face global SecondarySelection "rgb:%opt{bg},rgba:%opt{blue}%opt{selectionalpha}"
|
||||
set-face global PrimaryCursor "rgb:%opt{bg},rgb:%opt{green}"
|
||||
set-face global SecondaryCursor "rgb:%opt{bg},rgb:%opt{blue}"
|
||||
set-face global PrimaryCursorEol "rgb:%opt{bg},rgb:%opt{pink_red}"
|
||||
set-face global SecondaryCursorEol "rgb:%opt{bg},rgb:%opt{violet}"
|
||||
set-face global MenuForeground "rgb:%opt{fg},rgb:%opt{light_yellow}"
|
||||
set-face global MenuBackground "rgb:%opt{fg},rgb:%opt{bgmenu}"
|
||||
set-face global MenuInfo "rgb:%opt{comment}"
|
||||
set-face global Information "rgb:%opt{fg},rgb:%opt{bgmenu}"
|
||||
set-face global InlineInformation "rgb:%opt{yellow}"
|
||||
set-face global Error "rgb:%opt{orange}"
|
||||
set-face global DiagnosticError "default,default,rgb:%opt{red}+c"
|
||||
set-face global DiagnosticWarning "default,default,rgb:%opt{yellow}+c"
|
||||
set-face global StatusLine "rgb:%opt{fg},rgb:%opt{bgmenu}"
|
||||
set-face global StatusLineMode "rgb:%opt{green}"
|
||||
set-face global StatusLineInfo "rgb:%opt{yellow}"
|
||||
set-face global StatusLineValue "rgb:%opt{green}"
|
||||
set-face global StatusCursor "rgb:%opt{bg},rgb:%opt{green}"
|
||||
set-face global Prompt "rgb:%opt{comment}"
|
||||
set-face global BufferPadding "rgb:%opt{bg},rgb:%opt{bg}"
|
||||
|
||||
# Built-in highlighter faces
|
||||
|
||||
set-face global LineNumbers "rgb:%opt{comment}"
|
||||
set-face global LineNumberCursor "rgb:%opt{comment}"
|
||||
set-face global LineNumbersWrapped "rgb:%opt{bg},rgb:%opt{bg}"
|
||||
set-face global MatchingChar "rgb:%opt{yellow_green}"
|
||||
set-face global Whitespace "rgb:%opt{gray}"
|
||||
set-face global WhitespaceIndent "rgb:%opt{gray}"
|
||||
set-face global WrapMarker "rgb:%opt{yellow_green}"
|
||||
|
||||
# PLUGINS
|
||||
|
||||
# kak-lsp
|
||||
|
||||
set-face global InfoDefault "default"
|
||||
set-face global InfoBlock "rgb:%opt{cyan}"
|
||||
set-face global InfoBlockQuote "rgb:%opt{orange}"
|
||||
set-face global InfoBullet "rgb:%opt{orange}"
|
||||
set-face global InfoHeader "rgb:%opt{orange}"
|
||||
set-face global InfoLink "rgb:%opt{blue}"
|
||||
set-face global InfoLinkMono "rgb:%opt{pink}"
|
||||
|
||||
set-face global InfoMono "rgb:%opt{cyan}"
|
||||
set-face global InfoRule "rgb:%opt{orange}"
|
||||
set-face global InfoDiagnosticError "rgb:%opt{red}"
|
||||
set-face global InfoDiagnosticHint "rgb:%opt{blue}"
|
||||
set-face global InfoDiagnosticInformation "rgb:%opt{yellow_green}"
|
||||
set-face global InfoDiagnosticWarning "rgb:%opt{yellow}"
|
||||
|
||||
set-face global LineFlagError "rgb:%opt{red}"
|
||||
set-face global LineFlagHint "rgb:%opt{blue}"
|
||||
set-face global LineFlagInfo "rgb:%opt{yellow_green}"
|
||||
set-face global LineFlagWarning "rgb:%opt{yellow}"
|
||||
|
||||
set-face global InlayDiagnosticError "rgb:%opt{red}"
|
||||
set-face global InlayDiagnosticHint "rgb:%opt{blue}"
|
||||
set-face global InlayDiagnosticInfo "rgb:%opt{yellow_green}"
|
||||
set-face global InlayDiagnosticWarning "rgb:%opt{yellow}"
|
||||
|
||||
set-face global LineFlagError "rgb:%opt{red}"
|
||||
set-face global LineFlagHint "rgb:%opt{blue}"
|
||||
set-face global LineFlagInfo "rgb:%opt{yellow_green}"
|
||||
set-face global LineFlagWarning "rgb:%opt{yellow}"
|
||||
212
kakoune/.config/kak/kakrc
Normal file
212
kakoune/.config/kak/kakrc
Normal file
@@ -0,0 +1,212 @@
|
||||
# OPTIONS
|
||||
|
||||
set-option global startup_info_version 20260412
|
||||
set-option global ui_options terminal_assistant=none
|
||||
|
||||
hook global WinCreate .* %{
|
||||
add-highlighter window/number-lines number-lines -relative -hlcursor
|
||||
}
|
||||
add-highlighter global/ show-matching
|
||||
|
||||
# LOCAL
|
||||
|
||||
nop %sh{
|
||||
mkdir -p "$kak_config/autoload"
|
||||
[ -e "$kak_config/autoload/stdlib" ] || ln -s "$kak_runtime/autoload" "$kak_config/autoload/stdlib"
|
||||
}
|
||||
|
||||
declare-user-mode file-mode
|
||||
declare-user-mode options-mode
|
||||
|
||||
map global -docstring 'File' user 'f' ': enter-user-mode file-mode<ret>'
|
||||
map global -docstring 'Buffer' user ' ' ': b '
|
||||
|
||||
map global -docstring 'Open (git)' file-mode 'a' ': file-open-git<ret>'
|
||||
map global -docstring 'Git diff file' file-mode 'd' ': git diff %val{buffile}<ret>'
|
||||
map global -docstring 'Open (fd)' file-mode 'f' ': file-open<ret>'
|
||||
map global -docstring 'Open (recent)' file-mode 'r' ': file-open-recent<ret>'
|
||||
map global -docstring 'Git grep' file-mode 'g' ': git grep '
|
||||
map global -docstring 'Open (nnn)' file-mode 'n' ': nnn-open %val{buffile}<ret>'
|
||||
map global -docstring 'Open (nnn)' file-mode 'N' ': nnn-open .<ret>'
|
||||
map global -docstring 'Open/create in dir' file-mode 'c' ': open-create-in-dir<ret>'
|
||||
|
||||
map global -docstring 'Options' user 'o' ': enter-user-mode options-mode<ret>'
|
||||
|
||||
map global -docstring 'LP Dark mode' options-mode 'd' ': colorscheme five-colors-dark<ret>'
|
||||
map global -docstring 'LP Light mode' options-mode 'l' ': colorscheme five-colors-light<ret>'
|
||||
map global -docstring 'Light mode' options-mode 'L' ': colorscheme one-light<ret>'
|
||||
map global -docstring 'Dark mode' options-mode 'D' ': colorscheme one-darker<ret>'
|
||||
|
||||
evaluate-commands %sh{
|
||||
if [ -n "$WAYLAND_DISPLAY" ]; then
|
||||
echo "
|
||||
map global -docstring 'Paste clipboard (append)' user 'p' '<a-!> wl-paste -n<ret>'
|
||||
map global -docstring 'Paste clipboard (insert)' user 'P' '! wl-paste -n<ret>'
|
||||
map global -docstring 'Yank to clipboard' user 'y' '<a-|> wl-copy<ret>'
|
||||
"
|
||||
elif [ -n "$DISPLAY" ]; then
|
||||
echo "
|
||||
map global -docstring 'Paste clipboard (append)' user 'p' '<a-!> xsel -bo<ret>'
|
||||
map global -docstring 'Paste clipboard (insert)' user 'P' '! xsel -bo<ret>'
|
||||
map global -docstring 'Yank to clipboard' user 'y' '<a-|> xsel -bi<ret>'
|
||||
"
|
||||
fi
|
||||
}
|
||||
|
||||
map global -docstring 'Replace jump mode' user 'j' ': enter_jump_mode_with_replace_select_mode<ret>'
|
||||
map global -docstring 'Extend jump mode' user 'e' ': enter_jump_mode_with_extend_select_mode<ret>'
|
||||
map global -docstring 'Append jump mode' user 'a' ': enter_jump_mode_with_append_select_mode<ret>'
|
||||
|
||||
define-command -override file-open %{
|
||||
prompt -menu -shell-script-candidates %{ fd -t f } 'File: ' %{ edit -- %val{text} }
|
||||
}
|
||||
|
||||
define-command -override file-open-git %{
|
||||
prompt -menu -shell-script-candidates %{ git ls-files } 'File (git): ' %{ edit -- %val{text} }
|
||||
}
|
||||
|
||||
define-command -override file-open-recent %{
|
||||
prompt -menu -shell-script-candidates %{ cat ~/.cache/kak-mru } 'File (recent): ' %{ edit -- %val{text} }
|
||||
}
|
||||
|
||||
define-command -override -params 1 nnn-open %{
|
||||
terminal nnn-kak-edit %arg{1} %val{session} %val{client}
|
||||
}
|
||||
|
||||
define-command -override open-create-in-dir %{
|
||||
execute-keys ': edit ' %sh{dirname "$kak_buffile"}/
|
||||
}
|
||||
|
||||
set-face global JumpLabel 'rgb:faf8f5,rgb:af8842+F'
|
||||
|
||||
# CHANGE STATUS BAR COLOR IN INSERT MODE
|
||||
|
||||
hook global ModeChange push:.*:insert %{
|
||||
set-face window StatusLine 'default,rgb:04785d'
|
||||
}
|
||||
|
||||
hook global ModeChange pop:insert:.* %{
|
||||
unset-face window StatusLine
|
||||
}
|
||||
|
||||
# ODIN
|
||||
|
||||
hook global BufSetOption filetype=odin %{
|
||||
set-option buffer formatcmd 'odinfmt -stdin'
|
||||
}
|
||||
|
||||
# LSP
|
||||
|
||||
eval %sh{kak-lsp}
|
||||
lsp-enable
|
||||
|
||||
set-option global modelinefmt "%opt{lsp_modeline} %opt{modelinefmt}"
|
||||
|
||||
map global user l ': enter-user-mode lsp<ret>' -docstring 'LSP mode'
|
||||
|
||||
map global goto d <esc>:lsp-definition<ret> -docstring 'LSP definition'
|
||||
map global goto r <esc>:lsp-references<ret> -docstring 'LSP references'
|
||||
map global goto y <esc>:lsp-type-definition<ret> -docstring 'LSP type definition'
|
||||
|
||||
map global insert <tab> '<a-;>:try lsp-snippets-select-next-placeholders catch %{ execute-keys -with-hooks <lt>tab> }<ret>' -docstring 'Select next snippet placeholder'
|
||||
|
||||
map global object a '<a-semicolon>lsp-object<ret>' -docstring 'LSP any symbol'
|
||||
map global object <a-a> '<a-semicolon>lsp-object<ret>' -docstring 'LSP any symbol'
|
||||
map global object f '<a-semicolon>lsp-object Function Method<ret>' -docstring 'LSP function or method'
|
||||
map global object t '<a-semicolon>lsp-object Class Interface Module Namespace Struct<ret>' -docstring 'LSP class or module'
|
||||
map global object d '<a-semicolon>lsp-diagnostic-object error warning<ret>' -docstring 'LSP errors and warnings'
|
||||
map global object D '<a-semicolon>lsp-diagnostic-object error<ret>' -docstring 'LSP errors'
|
||||
|
||||
map global lsp p '<esc>: lsp-find-error --previous error<ret>' -docstring 'find previous error'
|
||||
|
||||
# BUNDLE
|
||||
|
||||
source "%val{config}/bundle/kak-bundle/rc/kak-bundle.kak"
|
||||
bundle-noload kak-bundle https://codeberg.org/jdugan6240/kak-bundle
|
||||
|
||||
# COLORSCHEME
|
||||
|
||||
bundle-theme kak-one 'https://codeberg.org/raiguard/kak-one'
|
||||
|
||||
bundle-theme kakoune-themes 'https://codeberg.org/anhsirk0/kakoune-themes'
|
||||
|
||||
# FZF
|
||||
|
||||
bundle fzf.kak 'https://github.com/andreyorst/fzf.kak' %{
|
||||
map global -docstring 'FZF menu' user s ': fzf-mode<ret>'
|
||||
require-module fzf
|
||||
set-option global fzf_highlight_command "bat"
|
||||
}
|
||||
|
||||
hook global BufCreate [^*].* %{
|
||||
nop %sh{
|
||||
mru=~/.cache/kak-mru
|
||||
echo "$kak_buffile" | awk '!seen[$0]++' - "$mru" | sponge "$mru"
|
||||
}}
|
||||
|
||||
# MATCH
|
||||
|
||||
bundle match 'https://github.com/kmafeni04/match.kak' %{
|
||||
declare-user-mode match
|
||||
map global user m ': enter-user-mode match<ret>' -docstring 'Match'
|
||||
map global match m m -docstring 'Match next matching pair'
|
||||
map global match i ': match-inside<ret>' -docstring 'Match inside object'
|
||||
map global match a ': match-around<ret>' -docstring 'Match around object'
|
||||
map global match n ': match-next<ret>' -docstring 'Match next object'
|
||||
map global match p ': match-prev<ret>' -docstring 'Match previous object'
|
||||
map global match s ': match-surround-add<ret>' -docstring 'Surround selection with character'
|
||||
map global match d ': match-surround-delete<ret>' -docstring "Delete selection's surrounding character"
|
||||
map global match r ': match-surround-replace<ret>' -docstring "Replace selection's surrounding character"
|
||||
map global match u ': match-surround-undo<ret>' -docstring "Undo"
|
||||
map global match U ': match-surround-redo<ret>' -docstring "Redo"
|
||||
}
|
||||
|
||||
# HARPOON
|
||||
|
||||
bundle kak-harpoon 'https://codeberg.org/raiguard/kak-harpoon' %{
|
||||
harpoon-add-bindings
|
||||
}
|
||||
|
||||
# PENEIRA
|
||||
|
||||
bundle 'luar' 'https://github.com/gustavo-hms/luar' %{
|
||||
require-module luar
|
||||
}
|
||||
|
||||
bundle 'peneira' 'https://github.com/gustavo-hms/peneira' %{
|
||||
require-module peneira
|
||||
|
||||
define-command buffers %{
|
||||
peneira 'buffers: ' %{ eval "printf '%s\n' $kak_quoted_buflist" } %{
|
||||
buffer %arg{1}
|
||||
}
|
||||
}
|
||||
define-command peneira-git-files %{
|
||||
peneira 'git files: ' %{ git ls-files } %{ e %arg{1} }
|
||||
}
|
||||
define-command peneira-recent-files %{
|
||||
peneira 'mru files: ' %{ cat ~/.cache/kak-mru } %{ e %arg{1} }
|
||||
}
|
||||
|
||||
map global -docstring 'Buffer' user ' ' ': buffers<ret>'
|
||||
|
||||
declare-user-mode peneira-mode
|
||||
map global -docstring 'Peneira' user 'd' ': enter-user-mode peneira-mode<ret>'
|
||||
map global -docstring 'Git files' peneira-mode 'a' ': peneira-git-files<ret>'
|
||||
map global -docstring 'Buffers' peneira-mode 'b' ': buffers<ret>'
|
||||
map global -docstring 'Files' peneira-mode 'f' ': peneira-files<ret>'
|
||||
map global -docstring 'Files' peneira-mode 'F' ': peneira-local-files<ret>'
|
||||
map global -docstring 'Lines' peneira-mode 'l' ': peneira-lines<ret>'
|
||||
map global -docstring 'Symbols' peneira-mode 's' ': peneira-symbols<ret>'
|
||||
map global -docstring 'Recent files' peneira-mode 'r' ': peneira-recent-files<ret>'
|
||||
}
|
||||
|
||||
# LOCAL
|
||||
|
||||
colorscheme %sh{
|
||||
if [ -e ~/.lightmode ]; then
|
||||
echo five-colors-light
|
||||
else
|
||||
echo five-colors-dark
|
||||
fi
|
||||
}
|
||||
4
kakoune/bin/nnn-kak-edit
Executable file
4
kakoune/bin/nnn-kak-edit
Executable file
@@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
|
||||
cd "$(dirname $1)"
|
||||
exec nnn -A -p - | awk "{print \"evaluate-commands -client $3 edit\", \$1 }" | kak -p "$2"
|
||||
@@ -1,20 +1,27 @@
|
||||
font_family FiraCode Nerd
|
||||
font_size 11
|
||||
font_family HurmitNerdFont
|
||||
font_size 10
|
||||
|
||||
cursor_blink_interval 0
|
||||
enable_audio_bell no
|
||||
visual_bell_duration 1.0
|
||||
|
||||
tab_title_template "{fmt.fg.red}{bell_symbol}{activity_symbol}{fmt.fg.tab}{title} {index}"
|
||||
tab_bar_min_tabs 1
|
||||
tab_bar_style powerline
|
||||
tab_bar_edge top
|
||||
tab_bar_filter session:~ or session:^$
|
||||
tab_title_template "{index}:{session_name}:{bell_symbol}{activity_symbol}{title}"
|
||||
tab_powerline_style round
|
||||
|
||||
action_alias launch_tab launch --type=tab --cwd=current
|
||||
open_url_with qutebrowser
|
||||
|
||||
action_alias launch_tab_home launch --type tab --cwd=~
|
||||
kitten_alias hints hints --hints-background-color red --hints-foreground-color white
|
||||
|
||||
allow_remote_control yes
|
||||
|
||||
map ctrl+shift+n launch_tab tmux
|
||||
map ctrl+shift+t launch_tab tmux attach
|
||||
map ctrl+shift+s launch_tab zsh
|
||||
map ctrl+shift+6 no_op
|
||||
map ctrl+shift+0 nth_window -1
|
||||
|
||||
map ctrl+shift+h previous_tab
|
||||
map ctrl+shift+l next_tab
|
||||
map ctrl+shift+p goto_tab -1
|
||||
map ctrl+alt+1 goto_tab 1
|
||||
map ctrl+alt+2 goto_tab 2
|
||||
map ctrl+alt+3 goto_tab 3
|
||||
@@ -24,9 +31,43 @@ map ctrl+alt+6 goto_tab 6
|
||||
map ctrl+alt+7 goto_tab 7
|
||||
map ctrl+alt+8 goto_tab 8
|
||||
map ctrl+alt+9 goto_tab 9
|
||||
map ctrl+alt+0 goto_tab 10
|
||||
map ctrl+alt+0 goto_tab -1
|
||||
|
||||
map ctrl+alt+h neighboring_window left
|
||||
map ctrl+alt+j neighboring_window down
|
||||
map ctrl+alt+k neighboring_window up
|
||||
map ctrl+alt+l neighboring_window right
|
||||
|
||||
map ctrl+alt+a last_used_layout
|
||||
map ctrl+alt+b goto_layout fat
|
||||
map ctrl+alt+g goto_layout grid
|
||||
map ctrl+alt+r goto_layout tall
|
||||
|
||||
map ctrl+alt+space goto_session -1
|
||||
map ctrl+alt+return new_window_with_cwd
|
||||
map ctrl+alt+d new_tab_with_cwd sh -c 'cd $(kitten choose-file --mode dir) && nvim'
|
||||
map ctrl+alt+e new_tab_with_cwd nvim
|
||||
map ctrl+alt+i new_tab_with_cwd lazygit
|
||||
map ctrl+alt+f new_tab_with_cwd sh -c 'nvim $(kitten choose-file)'
|
||||
map ctrl+alt+m toggle_layout stack
|
||||
map ctrl+alt+o goto_session ~/.config/kitty/sessions
|
||||
map ctrl+alt+/ goto_session --sort-by=alphabetical ~/.config/kitty/sessions
|
||||
map ctrl+alt+p new_tab_with_cwd spf
|
||||
map ctrl+alt+s launch --stdin-source=@screen_scrollback --type=overlay nvim -R -
|
||||
map ctrl+alt+w new_window_with_cwd
|
||||
map ctrl+alt+t new_tab_with_cwd
|
||||
map ctrl+alt+x close_window_with_confirmation
|
||||
map ctrl+alt+u>d launch_tab_home sh -c 'cd $(kitten choose-file --mode dir) && nvim'
|
||||
map ctrl+alt+u>f launch_tab_home sh -c 'nvim $(kitten choose-file)'
|
||||
map ctrl+alt+v focus_visible_window
|
||||
map ctrl+alt+y new_window nvim @selection
|
||||
|
||||
map ctrl+alt+shift+s save_as_session --base-dir ~/.config/kitty/sessions --match=session:.
|
||||
map ctrl+alt+shift+t detach_tab
|
||||
map ctrl+alt+shift+w detach_window
|
||||
map ctrl+alt+shift+x close_session .
|
||||
|
||||
# BEGIN_KITTY_THEME
|
||||
# Afterglow
|
||||
# Five-Colors-Dark
|
||||
include current-theme.conf
|
||||
# END_KITTY_THEME
|
||||
|
||||
35
kitty/.config/kitty/themes/five-colors-dark.conf
Normal file
35
kitty/.config/kitty/themes/five-colors-dark.conf
Normal file
@@ -0,0 +1,35 @@
|
||||
# vim:ft=kitty
|
||||
|
||||
foreground #a29e98
|
||||
background #272117
|
||||
selection_foreground #272117
|
||||
selection_background #276c9a
|
||||
|
||||
cursor #73d0b1
|
||||
cursor_text_color #272117
|
||||
|
||||
active_border_color #276c9a
|
||||
inactive_border_color #b0bcc7
|
||||
|
||||
active_tab_foreground #9da0af
|
||||
active_tab_background #4d5580
|
||||
inactive_tab_foreground #1f212e
|
||||
inactive_tab_background #808080
|
||||
|
||||
color0 #85919b
|
||||
color1 #c37583
|
||||
color2 #44a386
|
||||
color3 #af8842
|
||||
color4 #5396c7
|
||||
color5 #a57cba
|
||||
color6 #2da0ad
|
||||
color7 #b0bcc7
|
||||
|
||||
color8 #85919b
|
||||
color9 #f2a0ae
|
||||
color10 #73d0b1
|
||||
color11 #dcb46e
|
||||
color12 #7fc3f5
|
||||
color13 #d2a8e8
|
||||
color14 #62cdda
|
||||
color15 #a29e98
|
||||
35
kitty/.config/kitty/themes/five-colors-light.conf
Normal file
35
kitty/.config/kitty/themes/five-colors-light.conf
Normal file
@@ -0,0 +1,35 @@
|
||||
# vim:ft=kitty
|
||||
|
||||
foreground #696257
|
||||
background #faf8f5
|
||||
selection_foreground #faf8f5
|
||||
selection_background #3a7ead
|
||||
|
||||
cursor #7ad6b7
|
||||
cursor_text_color #faf8f5
|
||||
|
||||
active_border_color #85c9fc
|
||||
inactive_border_color #919da7
|
||||
|
||||
active_tab_foreground #1f212e
|
||||
active_tab_background #a6c7f2
|
||||
inactive_tab_foreground #faf8f5
|
||||
inactive_tab_background #808080
|
||||
|
||||
color0 #272117
|
||||
color1 #d0818f
|
||||
color2 #52af92
|
||||
color3 #bc944f
|
||||
color4 #60a3d4
|
||||
color5 #b289c7
|
||||
color6 #3dadba
|
||||
color7 #b6c3cd
|
||||
|
||||
color8 #919da7
|
||||
color9 #85c9fc
|
||||
color10 #7ad6b7
|
||||
color11 #e3ba74
|
||||
color12 #60a3d4
|
||||
color13 #d9aeee
|
||||
color14 #85c9fc
|
||||
color15 #faf8f5
|
||||
33
kitty/.config/kitty/themes/lupanbones-dark.conf
Normal file
33
kitty/.config/kitty/themes/lupanbones-dark.conf
Normal file
@@ -0,0 +1,33 @@
|
||||
# vim:ft=kitty
|
||||
|
||||
foreground #9da0af
|
||||
background #1f212e
|
||||
selection_foreground #808080
|
||||
selection_background #4d5580
|
||||
|
||||
cursor #bf8040
|
||||
cursor_text_color #1f212e
|
||||
|
||||
active_border_color #862d2d
|
||||
inactive_border_color #4d5580
|
||||
|
||||
active_tab_foreground #9da0af
|
||||
active_tab_background #4d5580
|
||||
inactive_tab_foreground #1f212e
|
||||
inactive_tab_background #808080
|
||||
|
||||
color1 #862d2d
|
||||
color2 #3a783a
|
||||
color3 #707010
|
||||
color4 #345eb2
|
||||
color5 #cc66cc
|
||||
color6 #3a7878
|
||||
color7 #a1a3aa
|
||||
color8 #4d4d4d
|
||||
color9 #c27070
|
||||
color10 #40bf40
|
||||
color11 #acac53
|
||||
color12 #6b8ac7
|
||||
color13 #8f248f
|
||||
color14 #509595
|
||||
color15 #dbdff0
|
||||
34
kitty/.config/kitty/themes/lupanbones-light.conf
Normal file
34
kitty/.config/kitty/themes/lupanbones-light.conf
Normal file
@@ -0,0 +1,34 @@
|
||||
# vim:ft=kitty
|
||||
|
||||
foreground #1f212e
|
||||
background #faf8f5
|
||||
selection_foreground #1f212e
|
||||
selection_background #a6c7f2
|
||||
|
||||
cursor #1f212e
|
||||
cursor_text_color #faf8f5
|
||||
|
||||
active_border_color #862d2d
|
||||
inactive_border_color #a6c7f2
|
||||
|
||||
active_tab_foreground #1f212e
|
||||
active_tab_background #a6c7f2
|
||||
inactive_tab_foreground #faf8f5
|
||||
inactive_tab_background #808080
|
||||
|
||||
color0 #1f212e
|
||||
color1 #862d2d
|
||||
color2 #3a783a
|
||||
color3 #707010
|
||||
color4 #345eb2
|
||||
color5 #cc66cc
|
||||
color6 #3a7878
|
||||
color7 #a1a3aa
|
||||
color8 #73778c
|
||||
color9 #c27070
|
||||
color10 #40bf40
|
||||
color11 #acac53
|
||||
color12 #6b8ac7
|
||||
color13 #8f248f
|
||||
color14 #509595
|
||||
color15 #dae4f1
|
||||
1207
kwm/.config/kwm/config.zon
Normal file
1207
kwm/.config/kwm/config.zon
Normal file
File diff suppressed because it is too large
Load Diff
13
lazygit/.config/lazygit/config.yml
Normal file
13
lazygit/.config/lazygit/config.yml
Normal file
@@ -0,0 +1,13 @@
|
||||
os:
|
||||
edit: 'nvim {{filename}}'
|
||||
editAtLine: 'nvim +{{line}} {{filename}}'
|
||||
editAtLineAndWait: 'nvim +{{line}} {{filename}}'
|
||||
editInTerminal: true
|
||||
openDirInEditor: 'nvim {{dir}}'
|
||||
|
||||
gui:
|
||||
nerdFontsVersion: "3"
|
||||
|
||||
theme:
|
||||
selectedLineBgColor:
|
||||
- reverse
|
||||
@@ -3,6 +3,9 @@ PREFIX = /usr/local
|
||||
lupan-clock: lupan-clock.c
|
||||
${CC} -o $@ $< -lX11 -Wall
|
||||
|
||||
stdout-clock: stdout-clock.c
|
||||
${CC} -o $@ $< -Wall
|
||||
|
||||
install:
|
||||
mkdir -p ${DESTDIR}${PREFIX}/bin
|
||||
cp -f lupan-clock ${DESTDIR}${PREFIX}/bin
|
||||
|
||||
32
lupan-clock/stdout-clock.c
Normal file
32
lupan-clock/stdout-clock.c
Normal file
@@ -0,0 +1,32 @@
|
||||
#include <X11/Xlib.h>
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
|
||||
void show(struct tm *tm)
|
||||
{
|
||||
char s[6];
|
||||
strftime(s, sizeof(s), "%H:%M", tm);
|
||||
printf("%s\n", s);
|
||||
fflush(stdout);
|
||||
}
|
||||
|
||||
int main() {
|
||||
int h, m, init = 60;
|
||||
time_t t;
|
||||
struct tm *tm;
|
||||
|
||||
while (1) {
|
||||
t = time(NULL);
|
||||
tm = localtime(&t);
|
||||
if (tm->tm_hour != h || tm->tm_min != m || init > 0) {
|
||||
show(tm);
|
||||
h = tm->tm_hour;
|
||||
m = tm->tm_min;
|
||||
init = (init > 0) ? init - 1 : 0;
|
||||
}
|
||||
sleep(1);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
320
niri/.config/niri/config.kdl
Normal file
320
niri/.config/niri/config.kdl
Normal file
@@ -0,0 +1,320 @@
|
||||
// This config is in the KDL format: https://kdl.dev
|
||||
// https://niri-wm.github.io/niri/Configuration:-Introduction
|
||||
|
||||
input {
|
||||
keyboard {
|
||||
xkb {
|
||||
layout "pl"
|
||||
}
|
||||
numlock
|
||||
}
|
||||
|
||||
touchpad {
|
||||
tap
|
||||
natural-scroll
|
||||
}
|
||||
|
||||
// mouse { }
|
||||
|
||||
// trackpoint { }
|
||||
|
||||
warp-mouse-to-focus
|
||||
}
|
||||
|
||||
output "HDMI-A-1" {
|
||||
scale 2
|
||||
}
|
||||
output "DP-1" {
|
||||
scale 2
|
||||
}
|
||||
|
||||
layout {
|
||||
gaps 16
|
||||
|
||||
center-focused-column "never"
|
||||
|
||||
preset-column-widths {
|
||||
proportion 0.33333
|
||||
proportion 0.5
|
||||
proportion 0.66667
|
||||
}
|
||||
|
||||
// preset-window-heights { }
|
||||
|
||||
default-column-width { proportion 0.5; }
|
||||
|
||||
focus-ring {
|
||||
width 4
|
||||
active-color "#7fc8ff"
|
||||
inactive-color "#505050"
|
||||
}
|
||||
|
||||
border {
|
||||
off
|
||||
|
||||
width 4
|
||||
active-color "#ffc87f"
|
||||
inactive-color "#505050"
|
||||
urgent-color "#9b0000"
|
||||
}
|
||||
|
||||
struts {
|
||||
// left 64
|
||||
// right 64
|
||||
// top 64
|
||||
// bottom 64
|
||||
}
|
||||
}
|
||||
|
||||
overview {
|
||||
zoom 0.25
|
||||
}
|
||||
|
||||
hotkey-overlay {
|
||||
skip-at-startup
|
||||
}
|
||||
|
||||
prefer-no-csd
|
||||
|
||||
screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"
|
||||
// screenshot-path null
|
||||
|
||||
animations {
|
||||
off
|
||||
}
|
||||
|
||||
// Work around WezTerm's initial configure bug
|
||||
// by setting an empty default-column-width.
|
||||
window-rule {
|
||||
match app-id=r#"^org\.wezfurlong\.wezterm$"#
|
||||
default-column-width {}
|
||||
}
|
||||
|
||||
// Open the Firefox picture-in-picture player as floating by default.
|
||||
window-rule {
|
||||
match app-id=r#"firefox$"# title="^Picture-in-Picture$"
|
||||
open-floating true
|
||||
}
|
||||
|
||||
// Example: block out two password managers from screen capture.
|
||||
// (This example rule is commented out with a "/-" in front.)
|
||||
/-window-rule {
|
||||
match app-id=r#"^org\.keepassxc\.KeePassXC$"#
|
||||
match app-id=r#"^org\.gnome\.World\.Secrets$"#
|
||||
|
||||
block-out-from "screen-capture"
|
||||
|
||||
// Use this instead if you want them visible on third-party screenshot tools.
|
||||
// block-out-from "screencast"
|
||||
}
|
||||
|
||||
window-rule {
|
||||
geometry-corner-radius 4
|
||||
clip-to-geometry true
|
||||
}
|
||||
|
||||
binds {
|
||||
// Mod-Shift-/, which is usually the same as Mod-?,
|
||||
// shows a list of important hotkeys.
|
||||
Mod+Shift+Slash { show-hotkey-overlay; }
|
||||
|
||||
// Suggested binds for running programs: terminal, app launcher, screen locker.
|
||||
Mod+T hotkey-overlay-title="Open a Terminal: alacritty" { spawn "kitty" "--single-instance" "--instance-group" "default"; }
|
||||
Mod+D hotkey-overlay-title="Run an Application: wmenu" { spawn "wmenu-run" "-f" "HurmitNerdFont 10"; }
|
||||
Super+Alt+L hotkey-overlay-title="Lock the Screen: swaylock" { spawn "swaylock"; }
|
||||
Mod+Shift+T hotkey-overlay-title="Toggle theme" { spawn "lupan-set-theme" "toggle"; }
|
||||
|
||||
XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+ -l 1.0"; }
|
||||
XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; }
|
||||
XF86AudioMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; }
|
||||
XF86AudioMicMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; }
|
||||
|
||||
XF86AudioPlay allow-when-locked=true { spawn-sh "playerctl play-pause"; }
|
||||
XF86AudioStop allow-when-locked=true { spawn-sh "playerctl stop"; }
|
||||
XF86AudioPrev allow-when-locked=true { spawn-sh "playerctl previous"; }
|
||||
XF86AudioNext allow-when-locked=true { spawn-sh "playerctl next"; }
|
||||
|
||||
XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "+10%"; }
|
||||
XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "10%-"; }
|
||||
|
||||
Mod+O repeat=false { toggle-overview; }
|
||||
|
||||
Mod+Shift+C repeat=false { close-window; }
|
||||
|
||||
Mod+Left { focus-column-left; }
|
||||
Mod+Down { focus-window-down; }
|
||||
Mod+Up { focus-window-up; }
|
||||
Mod+Right { focus-column-right; }
|
||||
Mod+H { focus-column-left; }
|
||||
Mod+J { focus-window-down; }
|
||||
Mod+K { focus-window-up; }
|
||||
Mod+L { focus-column-right; }
|
||||
|
||||
Mod+Ctrl+Left { move-column-left; }
|
||||
Mod+Ctrl+Down { move-window-down; }
|
||||
Mod+Ctrl+Up { move-window-up; }
|
||||
Mod+Ctrl+Right { move-column-right; }
|
||||
Mod+Ctrl+H { move-column-left; }
|
||||
Mod+Ctrl+J { move-window-down; }
|
||||
Mod+Ctrl+K { move-window-up; }
|
||||
Mod+Ctrl+L { move-column-right; }
|
||||
|
||||
// Alternative commands that move across workspaces when reaching
|
||||
// the first or last window in a column.
|
||||
// Mod+J { focus-window-or-workspace-down; }
|
||||
// Mod+K { focus-window-or-workspace-up; }
|
||||
// Mod+Ctrl+J { move-window-down-or-to-workspace-down; }
|
||||
// Mod+Ctrl+K { move-window-up-or-to-workspace-up; }
|
||||
|
||||
Mod+Home { focus-column-first; }
|
||||
Mod+End { focus-column-last; }
|
||||
Mod+Ctrl+Home { move-column-to-first; }
|
||||
Mod+Ctrl+End { move-column-to-last; }
|
||||
|
||||
Mod+Shift+Left { focus-monitor-left; }
|
||||
Mod+Shift+Down { focus-monitor-down; }
|
||||
Mod+Shift+Up { focus-monitor-up; }
|
||||
Mod+Shift+Right { focus-monitor-right; }
|
||||
Mod+Shift+H { focus-monitor-left; }
|
||||
Mod+Shift+J { focus-monitor-down; }
|
||||
Mod+Shift+K { focus-monitor-up; }
|
||||
Mod+Shift+L { focus-monitor-right; }
|
||||
|
||||
Mod+Shift+Ctrl+Left { move-column-to-monitor-left; }
|
||||
Mod+Shift+Ctrl+Down { move-column-to-monitor-down; }
|
||||
Mod+Shift+Ctrl+Up { move-column-to-monitor-up; }
|
||||
Mod+Shift+Ctrl+Right { move-column-to-monitor-right; }
|
||||
Mod+Shift+Ctrl+H { move-column-to-monitor-left; }
|
||||
Mod+Shift+Ctrl+J { move-column-to-monitor-down; }
|
||||
Mod+Shift+Ctrl+K { move-column-to-monitor-up; }
|
||||
Mod+Shift+Ctrl+L { move-column-to-monitor-right; }
|
||||
|
||||
// Alternatively, there are commands to move just a single window:
|
||||
// Mod+Shift+Ctrl+Left { move-window-to-monitor-left; }
|
||||
// ...
|
||||
|
||||
// And you can also move a whole workspace to another monitor:
|
||||
// Mod+Shift+Ctrl+Left { move-workspace-to-monitor-left; }
|
||||
// ...
|
||||
|
||||
Mod+Page_Down { focus-workspace-down; }
|
||||
Mod+Page_Up { focus-workspace-up; }
|
||||
Mod+U { focus-workspace-down; }
|
||||
Mod+I { focus-workspace-up; }
|
||||
Mod+Ctrl+Page_Down { move-column-to-workspace-down; }
|
||||
Mod+Ctrl+Page_Up { move-column-to-workspace-up; }
|
||||
Mod+Ctrl+U { move-column-to-workspace-down; }
|
||||
Mod+Ctrl+I { move-column-to-workspace-up; }
|
||||
|
||||
Mod+Shift+Page_Down { move-workspace-down; }
|
||||
Mod+Shift+Page_Up { move-workspace-up; }
|
||||
Mod+Shift+U { move-workspace-down; }
|
||||
Mod+Shift+I { move-workspace-up; }
|
||||
|
||||
Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; }
|
||||
Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; }
|
||||
Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; }
|
||||
Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; }
|
||||
|
||||
Mod+WheelScrollRight { focus-column-right; }
|
||||
Mod+WheelScrollLeft { focus-column-left; }
|
||||
Mod+Ctrl+WheelScrollRight { move-column-right; }
|
||||
Mod+Ctrl+WheelScrollLeft { move-column-left; }
|
||||
|
||||
Mod+Shift+WheelScrollDown { focus-column-right; }
|
||||
Mod+Shift+WheelScrollUp { focus-column-left; }
|
||||
Mod+Ctrl+Shift+WheelScrollDown { move-column-right; }
|
||||
Mod+Ctrl+Shift+WheelScrollUp { move-column-left; }
|
||||
|
||||
Mod+1 { focus-workspace 1; }
|
||||
Mod+2 { focus-workspace 2; }
|
||||
Mod+3 { focus-workspace 3; }
|
||||
Mod+4 { focus-workspace 4; }
|
||||
Mod+5 { focus-workspace 5; }
|
||||
Mod+6 { focus-workspace 6; }
|
||||
Mod+7 { focus-workspace 7; }
|
||||
Mod+8 { focus-workspace 8; }
|
||||
Mod+9 { focus-workspace 9; }
|
||||
Mod+Ctrl+1 { move-column-to-workspace 1; }
|
||||
Mod+Ctrl+2 { move-column-to-workspace 2; }
|
||||
Mod+Ctrl+3 { move-column-to-workspace 3; }
|
||||
Mod+Ctrl+4 { move-column-to-workspace 4; }
|
||||
Mod+Ctrl+5 { move-column-to-workspace 5; }
|
||||
Mod+Ctrl+6 { move-column-to-workspace 6; }
|
||||
Mod+Ctrl+7 { move-column-to-workspace 7; }
|
||||
Mod+Ctrl+8 { move-column-to-workspace 8; }
|
||||
Mod+Ctrl+9 { move-column-to-workspace 9; }
|
||||
|
||||
Mod+Ctrl+Shift+1 { move-window-to-workspace 1; }
|
||||
Mod+Ctrl+Shift+2 { move-window-to-workspace 2; }
|
||||
Mod+Ctrl+Shift+3 { move-window-to-workspace 3; }
|
||||
Mod+Ctrl+Shift+4 { move-window-to-workspace 4; }
|
||||
Mod+Ctrl+Shift+5 { move-window-to-workspace 5; }
|
||||
Mod+Ctrl+Shift+6 { move-window-to-workspace 6; }
|
||||
Mod+Ctrl+Shift+7 { move-window-to-workspace 7; }
|
||||
Mod+Ctrl+Shift+8 { move-window-to-workspace 8; }
|
||||
Mod+Ctrl+Shift+9 { move-window-to-workspace 9; }
|
||||
|
||||
// Switches focus between the current and the previous workspace.
|
||||
// Mod+Tab { focus-workspace-previous; }
|
||||
|
||||
Mod+BracketLeft { consume-or-expel-window-left; }
|
||||
Mod+BracketRight { consume-or-expel-window-right; }
|
||||
|
||||
Mod+Comma { consume-window-into-column; }
|
||||
Mod+Period { expel-window-from-column; }
|
||||
|
||||
Mod+R { switch-preset-column-width; }
|
||||
Mod+Shift+R { switch-preset-column-width-back; }
|
||||
|
||||
Mod+Ctrl+Shift+R { switch-preset-window-height; }
|
||||
Mod+Ctrl+R { reset-window-height; }
|
||||
|
||||
Mod+F { maximize-column; }
|
||||
Mod+Shift+F { fullscreen-window; }
|
||||
|
||||
Mod+M { maximize-window-to-edges; }
|
||||
|
||||
Mod+Ctrl+F { expand-column-to-available-width; }
|
||||
|
||||
Mod+C { center-column; }
|
||||
Mod+Ctrl+C { center-visible-columns; }
|
||||
|
||||
Mod+Minus { set-column-width "-10%"; }
|
||||
Mod+Equal { set-column-width "+10%"; }
|
||||
|
||||
Mod+Shift+Minus { set-window-height "-10%"; }
|
||||
Mod+Shift+Equal { set-window-height "+10%"; }
|
||||
|
||||
Mod+V { toggle-window-floating; }
|
||||
Mod+Shift+V { switch-focus-between-floating-and-tiling; }
|
||||
|
||||
Mod+W { toggle-column-tabbed-display; }
|
||||
|
||||
// Actions to switch layouts.
|
||||
// Note: if you uncomment these, make sure you do NOT have
|
||||
// a matching layout switch hotkey configured in xkb options above.
|
||||
// Having both at once on the same hotkey will break the switching,
|
||||
// since it will switch twice upon pressing the hotkey (once by xkb, once by niri).
|
||||
// Mod+Space { switch-layout "next"; }
|
||||
// Mod+Shift+Space { switch-layout "prev"; }
|
||||
|
||||
Print { screenshot; }
|
||||
Ctrl+Print { screenshot-screen; }
|
||||
Alt+Print { screenshot-window; }
|
||||
|
||||
// Applications such as remote-desktop clients and software KVM switches may
|
||||
// request that niri stops processing the keyboard shortcuts defined here
|
||||
// so they may, for example, forward the key presses as-is to a remote machine.
|
||||
// It's a good idea to bind an escape hatch to toggle the inhibitor,
|
||||
// so a buggy application can't hold your session hostage.
|
||||
//
|
||||
// The allow-inhibiting=false property can be applied to other binds as well,
|
||||
// which ensures niri always processes them, even when an inhibitor is active.
|
||||
Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; }
|
||||
|
||||
Mod+Shift+E { quit; }
|
||||
Ctrl+Alt+Delete { quit; }
|
||||
|
||||
Mod+Shift+P { power-off-monitors; }
|
||||
}
|
||||
6
niri/bin/chromium
Executable file
6
niri/bin/chromium
Executable file
@@ -0,0 +1,6 @@
|
||||
#!/bin/sh
|
||||
|
||||
if [ -n "$WAYLAND_DISPLAY" ]; then
|
||||
exec /usr/bin/chromium --enable-features=UseOzonePlatform --ozone-platform=wayland "$@"
|
||||
fi
|
||||
exec /usr/bin/chromium "$@"
|
||||
55
nvim/.config/nvim/colors/lupanbones.lua
Normal file
55
nvim/.config/nvim/colors/lupanbones.lua
Normal file
@@ -0,0 +1,55 @@
|
||||
local colors_name = "lupanbones"
|
||||
vim.g.colors_name = colors_name -- Required when defining a colorscheme
|
||||
|
||||
local lush = require "lush"
|
||||
local hsluv = lush.hsluv -- Human-friendly hsl
|
||||
local util = require "zenbones.util"
|
||||
|
||||
local bg = vim.o.background
|
||||
|
||||
-- Define a palette. Use `palette_extend` to fill unspecified colors
|
||||
local palette
|
||||
if bg == "light" then
|
||||
palette = util.palette_extend({
|
||||
bg = hsluv "#faf8f5",
|
||||
fg = hsluv "#1f212e",
|
||||
rose = hsluv "#bf8040",
|
||||
leaf = hsluv "#3d8f66",
|
||||
wood = hsluv "#acac53",
|
||||
water = hsluv "#6b8ac7",
|
||||
blossom = hsluv "#93806c",
|
||||
sky = hsluv "#7461d1",
|
||||
}, bg)
|
||||
else
|
||||
palette = util.palette_extend({
|
||||
bg = hsluv "#1f212e",
|
||||
fg = hsluv "#9da0af",
|
||||
rose = hsluv "#bf8040",
|
||||
leaf = hsluv "#3d8f66",
|
||||
wood = hsluv "#d1d147",
|
||||
water = hsluv "#6b8ac7",
|
||||
blossom = hsluv "#93806c",
|
||||
sky = hsluv "#7461d1",
|
||||
}, bg)
|
||||
end
|
||||
|
||||
-- Generate the lush specs using the generator util
|
||||
local generator = require "zenbones.specs"
|
||||
local base_specs = generator.generate(palette, bg, generator.get_global_config(colors_name, bg))
|
||||
|
||||
-- Optionally extend specs using Lush
|
||||
local specs = lush.extends({ base_specs }).with(function()
|
||||
return {
|
||||
Statement { base_specs.Statement, fg = palette.rose },
|
||||
String { fg = palette.leaf },
|
||||
Special { fg = palette.water },
|
||||
Type { fg = palette.sky, gui = "italic" },
|
||||
Delimiter { fg = palette.blossom },
|
||||
}
|
||||
end)
|
||||
|
||||
-- Pass the specs to lush to apply
|
||||
lush(specs)
|
||||
|
||||
-- Optionally set term colors
|
||||
require("zenbones.term").apply_colors(palette)
|
||||
55
nvim/.config/nvim/colors/lupandimbones.lua
Normal file
55
nvim/.config/nvim/colors/lupandimbones.lua
Normal file
@@ -0,0 +1,55 @@
|
||||
local colors_name = "lupandimbones"
|
||||
vim.g.colors_name = colors_name -- Required when defining a colorscheme
|
||||
|
||||
local lush = require "lush"
|
||||
local hsluv = lush.hsluv -- Human-friendly hsl
|
||||
local util = require "zenbones.util"
|
||||
|
||||
local bg = vim.o.background
|
||||
|
||||
-- Define a palette. Use `palette_extend` to fill unspecified colors
|
||||
local palette
|
||||
if bg == "light" then
|
||||
palette = util.palette_extend({
|
||||
bg = hsluv "#ebeee8",
|
||||
fg = hsluv "#1f212e",
|
||||
rose = hsluv "#9d6948",
|
||||
leaf = hsluv "#66824a",
|
||||
wood = hsluv "#bd720f",
|
||||
water = hsluv "#3a7878",
|
||||
blossom = hsluv "#70675c",
|
||||
sky = hsluv "#463da9",
|
||||
}, bg)
|
||||
else
|
||||
palette = util.palette_extend({
|
||||
bg = hsluv "#0d0d0c",
|
||||
fg = hsluv "#5c6570",
|
||||
rose = hsluv "#814c31",
|
||||
leaf = hsluv "#526241",
|
||||
wood = hsluv "#d78c42",
|
||||
water = hsluv "#3a7878",
|
||||
blossom = hsluv "#70675c",
|
||||
sky = hsluv "#584b9b",
|
||||
}, bg)
|
||||
end
|
||||
|
||||
-- Generate the lush specs using the generator util
|
||||
local generator = require "zenbones.specs"
|
||||
local base_specs = generator.generate(palette, bg, generator.get_global_config(colors_name, bg))
|
||||
|
||||
-- Optionally extend specs using Lush
|
||||
local specs = lush.extends({ base_specs }).with(function()
|
||||
return {
|
||||
Statement { base_specs.Statement, fg = palette.rose },
|
||||
String { fg = palette.leaf },
|
||||
Special { fg = palette.water },
|
||||
Type { fg = palette.sky, gui = "italic" },
|
||||
Delimiter { fg = palette.blossom },
|
||||
}
|
||||
end)
|
||||
|
||||
-- Pass the specs to lush to apply
|
||||
lush(specs)
|
||||
|
||||
-- Optionally set term colors
|
||||
require("zenbones.term").apply_colors(palette)
|
||||
@@ -1 +1,20 @@
|
||||
require("lupan")
|
||||
require("config.options")
|
||||
require("config.remap")
|
||||
require("config.lsp")
|
||||
|
||||
require("plugins.arrow")
|
||||
require("plugins.auto-session")
|
||||
require("plugins.colorscheme")
|
||||
require("plugins.conform")
|
||||
require("plugins.flash")
|
||||
require("plugins.fzf-lua")
|
||||
require("plugins.guess-indent")
|
||||
require("plugins.luasnip")
|
||||
require("plugins.multicursor")
|
||||
require("plugins.nvim-various-textobjs")
|
||||
require("plugins.oil")
|
||||
require("plugins.slimline")
|
||||
require("plugins.snacks")
|
||||
require("plugins.surround")
|
||||
require("plugins.treesitter")
|
||||
require("plugins.which-key")
|
||||
|
||||
@@ -1,80 +1,12 @@
|
||||
{
|
||||
"Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
|
||||
"LuaSnip": { "branch": "master", "commit": "c9b9a22904c97d0eb69ccb9bab76037838326817" },
|
||||
"better-escape.nvim": { "branch": "master", "commit": "199dcc2643dec5d8dbdab4ec672cf405224dcb3b" },
|
||||
"blame.nvim": { "branch": "main", "commit": "39bb4cda9e658d053a43919b10ca52c0a4d738e1" },
|
||||
"ccc.nvim": { "branch": "main", "commit": "b57cbaf8db3ac43c56c9e2c7f3812944638260ed" },
|
||||
"cmp-nvim-lsp": { "branch": "main", "commit": "99290b3ec1322070bcfb9e846450a46f6efa50f0" },
|
||||
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
|
||||
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
|
||||
"diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" },
|
||||
"fidget.nvim": { "branch": "main", "commit": "d9ba6b7bfe29b3119a610892af67602641da778e" },
|
||||
"friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" },
|
||||
"gitsigns.nvim": { "branch": "main", "commit": "7010000889bfb6c26065e0b0f7f1e6aa9163edd9" },
|
||||
"global-note.nvim": { "branch": "main", "commit": "1e0d4bba425d971ed3ce40d182c574a25507115c" },
|
||||
"go.nvim": { "branch": "master", "commit": "0d426e87227dd14584881ecc595c173121456111" },
|
||||
"godoc.nvim": { "branch": "main", "commit": "356f79853dbb3b3e200064367603751895153c29" },
|
||||
"guihua.lua": { "branch": "master", "commit": "d783191eaa75215beae0c80319fcce5e6b3beeda" },
|
||||
"hardtime.nvim": { "branch": "main", "commit": "f87c86d1aa1e05dcf3c6ecd97fbfd237e2de0bf5" },
|
||||
"hererocks": { "branch": "master", "commit": "c9c5444dea1e07e005484014a8231aa667be30b6" },
|
||||
"hlsearch.nvim": { "branch": "main", "commit": "fdeb60b890d15d9194e8600042e5232ef8c29b0e" },
|
||||
"incline.nvim": { "branch": "main", "commit": "27040695b3bbfcd3257669037bd008d1a892831d" },
|
||||
"indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" },
|
||||
"iswap.nvim": { "branch": "master", "commit": "e02cc91f2a8feb5c5a595767d208c54b6e3258ec" },
|
||||
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
|
||||
"leap.nvim": { "branch": "main", "commit": "346a16ef942635a8ca5ff92e603d07e7e8be6cbe" },
|
||||
"lsp_signature.nvim": { "branch": "master", "commit": "b58cca003d1d3311213d6db0352f58d8e57bfff0" },
|
||||
"lspsaga.nvim": { "branch": "main", "commit": "778d56ff9b387dacd14ae648ed5604394b486f51" },
|
||||
"marks.nvim": { "branch": "master", "commit": "bb25ae3f65f504379e3d08c8a02560b76eaf91e8" },
|
||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "1a31f824b9cd5bc6f342fc29e9a53b60d74af245" },
|
||||
"mason-tool-installer.nvim": { "branch": "main", "commit": "98767d37f8e5255a5111fc1e3163232d4dc07bda" },
|
||||
"mason.nvim": { "branch": "main", "commit": "fc98833b6da5de5a9c5b1446ac541577059555be" },
|
||||
"melange-nvim": { "branch": "master", "commit": "2db5407f2f6d6d6286f50f2f7365728d66f6f3ae" },
|
||||
"mellifluous.nvim": { "branch": "v1", "commit": "1637e46585435ebda7963248e0e65422effad8d9" },
|
||||
"mini.nvim": { "branch": "main", "commit": "0420076298c4457f200c2de468f65d080597a347" },
|
||||
"nano-theme.nvim": { "branch": "main", "commit": "0b1158c4911f4bd9d5a1e2e7669ebff893435b64" },
|
||||
"neodev.nvim": { "branch": "main", "commit": "46aa467dca16cf3dfe27098042402066d2ae242d" },
|
||||
"neogit": { "branch": "master", "commit": "6d1bd94f7fca92a50a892f494920696b5defa8c8" },
|
||||
"nordic.nvim": { "branch": "main", "commit": "8627750ece357e9670f9e69853091f7fbb8d6523" },
|
||||
"nui.nvim": { "branch": "main", "commit": "8d3bce9764e627b62b07424e0df77f680d47ffdb" },
|
||||
"nvim-cmp": { "branch": "main", "commit": "1e1900b0769324a9675ef85b38f99cca29e203b3" },
|
||||
"nvim-lspconfig": { "branch": "master", "commit": "0a1ac55d7d4ec2b2ed9616dfc5406791234d1d2b" },
|
||||
"nvim-surround": { "branch": "main", "commit": "caf6f633d4d77a29b6e265b560c5a035d171a913" },
|
||||
"nvim-treesitter": { "branch": "master", "commit": "aece1062335a9e856636f5da12d8a06c7615ce8a" },
|
||||
"nvim-treesitter-textobjects": { "branch": "master", "commit": "9937e5e356e5b227ec56d83d0a9d0a0f6bc9cad4" },
|
||||
"nvim-web-devicons": { "branch": "master", "commit": "4c3a5848ee0b09ecdea73adcd2a689190aeb728c" },
|
||||
"oil.nvim": { "branch": "master", "commit": "ab887d926c2665a708fbe9e6c4654042cc5f4c60" },
|
||||
"onenord.nvim": { "branch": "main", "commit": "babdcc3da92f0c90703bb612a13a58e5f7669287" },
|
||||
"orgmode": { "branch": "master", "commit": "145dce4d2f1bbaed5ff9e353822981b783627b32" },
|
||||
"persisted.nvim": { "branch": "main", "commit": "b4b7a281307f8b52d47b0fd5b6798a453681d44e" },
|
||||
"plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" },
|
||||
"quicker.nvim": { "branch": "master", "commit": "1798be71cdcb15fb84fa8054148a56e17fd391dc" },
|
||||
"rabbit.nvim": { "branch": "master", "commit": "3a4ce048b8ecc48811d061220d0e86111adda20d" },
|
||||
"rest.nvim": { "branch": "main", "commit": "2ded89dbda1fd3c1430685ffadf2df8beb28336d" },
|
||||
"slimline.nvim": { "branch": "main", "commit": "326514876f6e5c051a7a2bf1e926659a74500016" },
|
||||
"sqlite.lua": { "branch": "master", "commit": "50092d60feb242602d7578398c6eb53b4a8ffe7b" },
|
||||
"tardis.nvim": { "branch": "main", "commit": "a6ee00a217529490e79d349b1f1a9cf5831180d3" },
|
||||
"telescope-fzf-native.nvim": { "branch": "main", "commit": "1f08ed60cafc8f6168b72b80be2b2ea149813e55" },
|
||||
"telescope-git-grep.nvim": { "branch": "main", "commit": "cdd8215f15843a420b5c8e792395c403136626b6" },
|
||||
"telescope-tabs": { "branch": "master", "commit": "0a678eefcb71ebe5cb0876aa71dd2e2583d27fd3" },
|
||||
"telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" },
|
||||
"telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
|
||||
"tmux.nvim": { "branch": "main", "commit": "2c1c3be0ef287073cef963f2aefa31a15c8b9cd8" },
|
||||
"toggleterm.nvim": { "branch": "main", "commit": "50ea089fc548917cc3cc16b46a8211833b9e3c7c" },
|
||||
"tree-sitter-nu": { "branch": "main", "commit": "d5c71a10b4d1b02e38967b05f8de70e847448dd1" },
|
||||
"tree-sitter-templ": { "branch": "master", "commit": "7f7f06b3931ca00e8ddfbeab3fc08ad00d297fad" },
|
||||
"treesj": { "branch": "main", "commit": "6c616638e3aa0087f2c267bb5990115b67105976" },
|
||||
"treewalker.nvim": { "branch": "main", "commit": "43d3250007d2c5a2ed693c1edebf66d66af33407" },
|
||||
"trouble.nvim": { "branch": "main", "commit": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3" },
|
||||
"undotree": { "branch": "master", "commit": "b951b87b46c34356d44aa71886aecf9dd7f5788a" },
|
||||
"vim-ReplaceWithRegister": { "branch": "master", "commit": "b82bf59e5387b57d0125afb94fd7984061031136" },
|
||||
"vim-dadbod": { "branch": "master", "commit": "9f0ca8bcef704659820a95c3bbd2c262583a66a1" },
|
||||
"vim-dadbod-completion": { "branch": "master", "commit": "a8dac0b3cf6132c80dc9b18bef36d4cf7a9e1fe6" },
|
||||
"vim-dadbod-ui": { "branch": "master", "commit": "685e75b34ee0e12f92ec4507ea8bb7f1aaa936e5" },
|
||||
"vim-repeat": { "branch": "master", "commit": "65846025c15494983dafe5e3b46c8f88ab2e9635" },
|
||||
"vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" },
|
||||
"whaler": { "branch": "main", "commit": "9e0b67e36250cb80e679563adcd4b7451eae26b2" },
|
||||
"which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" },
|
||||
"yankbank-nvim": { "branch": "main", "commit": "ded8f01bd6a7887310e14d463c8aa55eb79ec281" },
|
||||
"zen-mode.nvim": { "branch": "main", "commit": "863f150ca321b3dd8aa1a2b69b5f411a220e144f" }
|
||||
"arrow.nvim": { "branch": "master", "commit": "6e0f726f55f99332dd726a53effd6813786b6d49" },
|
||||
"conform.nvim": { "branch": "master", "commit": "1bf8b5b9caee51507aa51eaed3da5b0f2595c6b9" },
|
||||
"flash.nvim": { "branch": "main", "commit": "fcea7ff883235d9024dc41e638f164a450c14ca2" },
|
||||
"lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" },
|
||||
"multicursor.nvim": { "branch": "1.0", "commit": "a6cf4e7daaf10a6b14bb7838caf779f0de5070cd" },
|
||||
"nightfox.nvim": { "branch": "main", "commit": "ba47d4b4c5ec308718641ba7402c143836f35aa9" },
|
||||
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
|
||||
"nvim-treesitter-textobjects": { "branch": "master", "commit": "5ca4aaa6efdcc59be46b95a3e876300cfead05ef" },
|
||||
"oil.nvim": { "branch": "master", "commit": "7e1cd7703ff2924d7038476dcbc04b950203b902" },
|
||||
"snacks.nvim": { "branch": "main", "commit": "fe7cfe9800a182274d0f868a74b7263b8c0c020b" }
|
||||
}
|
||||
|
||||
5
nvim/.config/nvim/lsp/clangd.lua
Normal file
5
nvim/.config/nvim/lsp/clangd.lua
Normal file
@@ -0,0 +1,5 @@
|
||||
return {
|
||||
cmd = { "clangd" },
|
||||
filetypes = { "c", "cpp" },
|
||||
root_markers = { ".git" },
|
||||
}
|
||||
5
nvim/.config/nvim/lsp/gopls.lua
Normal file
5
nvim/.config/nvim/lsp/gopls.lua
Normal file
@@ -0,0 +1,5 @@
|
||||
return {
|
||||
cmd = { "gopls" },
|
||||
filetypes = { "go", "gomod", "gowork", "gosum", "gotmpl" },
|
||||
root_markers = { "go.mod", "go.work", ".git" },
|
||||
}
|
||||
15
nvim/.config/nvim/lsp/lua_ls.lua
Normal file
15
nvim/.config/nvim/lsp/lua_ls.lua
Normal file
@@ -0,0 +1,15 @@
|
||||
return {
|
||||
cmd = { "lua-language-server" },
|
||||
filetypes = { "lua" },
|
||||
root_markers = { ".luarc.json", ".git" },
|
||||
settings = {
|
||||
Lua = {
|
||||
runtime = {
|
||||
version = "LuaJIT",
|
||||
},
|
||||
diagnostics = {
|
||||
globals = { "vim" },
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
5
nvim/.config/nvim/lsp/ols.lua
Normal file
5
nvim/.config/nvim/lsp/ols.lua
Normal file
@@ -0,0 +1,5 @@
|
||||
return {
|
||||
cmd = { "ols" },
|
||||
filetypes = { "odin" },
|
||||
root_markers = { ".git" },
|
||||
}
|
||||
5
nvim/.config/nvim/lsp/templ-lsp.lua
Normal file
5
nvim/.config/nvim/lsp/templ-lsp.lua
Normal file
@@ -0,0 +1,5 @@
|
||||
return {
|
||||
cmd = { "templ", "lsp" },
|
||||
filetypes = { "templ" },
|
||||
root_markers = { "go.mod", "go.work", ".git" },
|
||||
}
|
||||
5
nvim/.config/nvim/lsp/typescript-language-server.lua
Normal file
5
nvim/.config/nvim/lsp/typescript-language-server.lua
Normal file
@@ -0,0 +1,5 @@
|
||||
return {
|
||||
cmd = { "typescript-language-server", "--stdio" },
|
||||
filetypes = { "javascript", "typescript", "javascriptreact", "typescriptreact" },
|
||||
root_markers = { "package.json", "tsconfig.json", ".git" },
|
||||
}
|
||||
57
nvim/.config/nvim/lua/config/colorscheme.lua
Normal file
57
nvim/.config/nvim/lua/config/colorscheme.lua
Normal file
@@ -0,0 +1,57 @@
|
||||
local M = {}
|
||||
|
||||
local home = os.getenv("HOME")
|
||||
local filename = home .. "/.lightmode"
|
||||
|
||||
local colorschemes = nil
|
||||
|
||||
function M.set_colorschemes(dark, light)
|
||||
colorschemes = { dark = dark, light = light }
|
||||
end
|
||||
|
||||
function M.terminalbg()
|
||||
if vim.uv.fs_stat(filename) then
|
||||
return "light"
|
||||
else
|
||||
return "dark"
|
||||
end
|
||||
end
|
||||
|
||||
function M.update_colorscheme(only_if_changed)
|
||||
local next = M.terminalbg()
|
||||
if not only_if_changed or next ~= vim.o.background then
|
||||
vim.o.background = next
|
||||
if colorschemes then
|
||||
vim.cmd.colorscheme(colorschemes[next])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function M.toggle_colorscheme()
|
||||
if vim.o.background == "dark" then
|
||||
vim.o.background = "light"
|
||||
else
|
||||
vim.o.background = "dark"
|
||||
end
|
||||
if colorschemes then
|
||||
vim.cmd.colorscheme(colorschemes[vim.o.background])
|
||||
end
|
||||
end
|
||||
|
||||
local w = vim.uv.new_fs_event()
|
||||
|
||||
local function watch(fname)
|
||||
w:start(
|
||||
fname,
|
||||
{},
|
||||
vim.schedule_wrap(function(...)
|
||||
M.update_colorscheme(true)
|
||||
w:stop()
|
||||
watch(fname)
|
||||
end)
|
||||
)
|
||||
end
|
||||
|
||||
watch(home)
|
||||
|
||||
return M
|
||||
17
nvim/.config/nvim/lua/config/lazy.lua
Normal file
17
nvim/.config/nvim/lua/config/lazy.lua
Normal file
@@ -0,0 +1,17 @@
|
||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
||||
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
|
||||
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
|
||||
if vim.v.shell_error ~= 0 then
|
||||
vim.api.nvim_echo({
|
||||
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
|
||||
{ out, "WarningMsg" },
|
||||
{ "\nPress any key to exit..." },
|
||||
}, true, {})
|
||||
vim.fn.getchar()
|
||||
os.exit(1)
|
||||
end
|
||||
end
|
||||
vim.opt.rtp:prepend(lazypath)
|
||||
|
||||
require("lazy").setup({ { import = "plugins" } })
|
||||
26
nvim/.config/nvim/lua/config/lsp.lua
Normal file
26
nvim/.config/nvim/lua/config/lsp.lua
Normal file
@@ -0,0 +1,26 @@
|
||||
vim.lsp.enable({
|
||||
"clangd",
|
||||
"gopls",
|
||||
"templ-lsp",
|
||||
"lua_ls",
|
||||
"ols",
|
||||
"typescript-language-server",
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd("LspAttach", {
|
||||
group = vim.api.nvim_create_augroup("lsp-keys-complete", { clear = true }),
|
||||
callback = function(event)
|
||||
vim.lsp.completion.enable(true, event.data.client_id, event.data.bufnr, {
|
||||
convert = function(item)
|
||||
return { abbr = item.label:gsub("%b()", "") }
|
||||
end,
|
||||
})
|
||||
vim.keymap.set("i", "<C-space>", vim.lsp.completion.get)
|
||||
vim.keymap.set("n", "<leader>k", function()
|
||||
vim.diagnostic.jump({ float = true, count = -1 })
|
||||
end)
|
||||
vim.keymap.set("n", "<leader>j", function()
|
||||
vim.diagnostic.jump({ float = true, count = 1 })
|
||||
end)
|
||||
end,
|
||||
})
|
||||
24
nvim/.config/nvim/lua/config/options.lua
Normal file
24
nvim/.config/nvim/lua/config/options.lua
Normal file
@@ -0,0 +1,24 @@
|
||||
vim.opt.shortmess = vim.opt.shortmess + "I"
|
||||
|
||||
vim.g.mapleader = " "
|
||||
vim.g.maplocalleader = " \\"
|
||||
|
||||
vim.opt.number = true
|
||||
vim.opt.relativenumber = true
|
||||
vim.opt.signcolumn = "yes"
|
||||
vim.opt.title = true
|
||||
|
||||
vim.opt.ignorecase = true
|
||||
vim.opt.smartcase = true
|
||||
|
||||
vim.opt.timeout = false
|
||||
|
||||
vim.o.undofile = true
|
||||
|
||||
vim.cmd([[autocmd TermOpen * startinsert]]);
|
||||
|
||||
vim.filetype.add({
|
||||
extension = {
|
||||
["kitty-session"] = 'kitty',
|
||||
},
|
||||
})
|
||||
19
nvim/.config/nvim/lua/config/remap.lua
Normal file
19
nvim/.config/nvim/lua/config/remap.lua
Normal file
@@ -0,0 +1,19 @@
|
||||
local set = vim.keymap.set
|
||||
|
||||
set("n", "<M-h>", "<C-w>h")
|
||||
set("n", "<M-k>", "<C-w>k")
|
||||
set("n", "<M-j>", "<C-w>j")
|
||||
set("n", "<M-l>", "<C-w>l")
|
||||
|
||||
set({ "n", 'v' }, "<leader>p", [["+p]])
|
||||
set({ "n", 'v' }, "<leader>P", [["+P]])
|
||||
set({ "n", 'v' }, "<leader>y", [["+y]])
|
||||
set({ "n", 'v' }, "<leader>Y", [["+Y]])
|
||||
|
||||
set("n", "<Esc>", "<cmd>nohlsearch<cr>")
|
||||
set("n", "<leader>K", "<cmd>cp<cr>")
|
||||
set("n", "<leader>J", "<cmd>cn<cr>")
|
||||
set("n", "<leader>x", "<cmd>copen<cr>")
|
||||
set("n", "<leader>X", "<cmd>cclose<cr>")
|
||||
|
||||
set("n", "<leader>ga", "<cmd>tabnew | terminal lazygit<cr>")
|
||||
@@ -1,18 +0,0 @@
|
||||
-- [[ Highlight on yank ]]
|
||||
-- See `:help vim.highlight.on_yank()`
|
||||
vim.api.nvim_create_autocmd('TextYankPost', {
|
||||
desc = 'Highlight when yanking (copying) text',
|
||||
group = vim.api.nvim_create_augroup('YankHighlight', { clear = true }),
|
||||
callback = function()
|
||||
vim.highlight.on_yank()
|
||||
end,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd('BufWritePre', {
|
||||
desc = 'Format on saving buffer',
|
||||
callback = function()
|
||||
vim.lsp.buf.format()
|
||||
end,
|
||||
group = vim.api.nvim_create_augroup('BufWriteFormat', { clear = true }),
|
||||
pattern = { '*.go', '*.lua', '*.rs' },
|
||||
})
|
||||
@@ -1,5 +0,0 @@
|
||||
require("lupan.remap")
|
||||
require("lupan.lazy")
|
||||
require("lupan.options")
|
||||
require("lupan.autocmd")
|
||||
require('lazy').setup('plugins')
|
||||
@@ -1,13 +0,0 @@
|
||||
-- Install package manager (`:help lazy.nvim.txt`)
|
||||
local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim'
|
||||
if not vim.loop.fs_stat(lazypath) then
|
||||
vim.fn.system {
|
||||
'git',
|
||||
'clone',
|
||||
'--filter=blob:none',
|
||||
'https://github.com/folke/lazy.nvim.git',
|
||||
'--branch=stable',
|
||||
lazypath,
|
||||
}
|
||||
end
|
||||
vim.opt.rtp:prepend(lazypath)
|
||||
@@ -1,56 +0,0 @@
|
||||
-- See `:help vim.o`
|
||||
|
||||
-- Disable intro message
|
||||
vim.opt.shortmess = vim.opt.shortmess + 'I'
|
||||
|
||||
vim.opt.showmode = false
|
||||
|
||||
-- Set highlight on search
|
||||
vim.o.hlsearch = true -- false
|
||||
vim.keymap.set('n', '<Esc>', '<cmd>nohlsearch<CR>')
|
||||
|
||||
-- Make line numbers default
|
||||
vim.wo.number = true
|
||||
vim.wo.relativenumber = true
|
||||
|
||||
-- Enable mouse mode
|
||||
vim.o.mouse = 'a'
|
||||
|
||||
-- Enable break indent
|
||||
vim.o.breakindent = true
|
||||
|
||||
-- Save undo history
|
||||
vim.o.undofile = true
|
||||
|
||||
-- Case-insensitive searching UNLESS \C or capital in search
|
||||
vim.o.ignorecase = true
|
||||
vim.o.smartcase = true
|
||||
|
||||
-- Keep signcolumn on by default
|
||||
vim.wo.signcolumn = 'yes'
|
||||
|
||||
-- Decrease update time
|
||||
vim.o.updatetime = 250
|
||||
vim.o.timeout = false
|
||||
|
||||
-- Set completeopt to have a better completion experience
|
||||
vim.o.completeopt = 'menuone,noselect'
|
||||
|
||||
-- NOTE: You should make sure your terminal supports this
|
||||
vim.o.termguicolors = true
|
||||
|
||||
vim.o.scrolloff = 8
|
||||
|
||||
vim.o.tabstop = 8
|
||||
vim.o.softtabstop = 4
|
||||
vim.o.shiftwidth = 4
|
||||
vim.o.expandtab = true
|
||||
vim.o.expandtab = true
|
||||
|
||||
vim.g.lightspeed_no_default_keymaps = true
|
||||
|
||||
vim.o.cursorline = true
|
||||
|
||||
vim.opt.foldcolumn = '1'
|
||||
|
||||
vim.opt.laststatus = 3
|
||||
@@ -1,116 +0,0 @@
|
||||
vim.g.mapleader = ' '
|
||||
vim.g.maplocalleader = ' '
|
||||
|
||||
local key = vim.keymap.set
|
||||
local opts = { silent = true, noremap = true }
|
||||
|
||||
key('v', '<Space>', '<Nop>', { silent = true })
|
||||
|
||||
-- Remap for dealing with word wrap
|
||||
key('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true })
|
||||
key('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true })
|
||||
|
||||
key("n", "<leader>ut", "<cmd>UndotreeToggle<CR>", { desc = "[U]undotree [t]oggle" })
|
||||
|
||||
-- tabs
|
||||
|
||||
key('n', '<leader>td', function()
|
||||
require('lupan.ui').tab_change_dir()
|
||||
end, { desc = '[T]ab change [d]irectory' })
|
||||
|
||||
key('n', '<leader>tD', function()
|
||||
require('lupan.ui').tab_change_dir_newtab()
|
||||
end, { desc = '[T]ab change [D]irectory (new tab)' })
|
||||
|
||||
key('n', '<leader>tm', function()
|
||||
require('telescope-tabs').list_tabs(require 'telescope.themes'.get_dropdown())
|
||||
end, { desc = '[T]ab change [D]irectory (new tab)' })
|
||||
|
||||
key('n', '<leader>tt', function()
|
||||
require('telescope-tabs').go_to_previous()
|
||||
end, { desc = '[T]ab [t]oggle previous' })
|
||||
|
||||
for i = 1, 9, 1 do
|
||||
key('n', '<leader>t' .. i, '<cmd>' .. i .. 'tabnext<CR>', { desc = '[T]ab nr [' .. i .. ']' })
|
||||
end
|
||||
|
||||
-- translations
|
||||
|
||||
key('n', '<leader>tr', function()
|
||||
require('lupan.ui').find_translation_key()
|
||||
end, { desc = '[T][r]anlation key find' })
|
||||
|
||||
-- Diagnostic keymaps
|
||||
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous [D]iagnostic message' })
|
||||
vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next [D]iagnostic message' })
|
||||
vim.keymap.set('n', '<leader>e', vim.diagnostic.open_float, { desc = 'Show diagnostic [E]rror messages' })
|
||||
vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' })
|
||||
|
||||
key('n', '<leader>N', '<cmd>bn<CR>', { desc = '[N]ext buffer' })
|
||||
key('n', '<leader>P', '<cmd>bp<CR>', { desc = '[P]revious buffer' })
|
||||
|
||||
key('n', '<leader>tc', '<cmd>tabnew<CR>', { desc = '[T]ab [c]reate' })
|
||||
key('n', '<leader>tx', '<cmd>tabclose<CR>', { desc = '[T]ab close' })
|
||||
key('n', '<leader>ts', '<cmd>tab split<CR>', { desc = '[T]ab [s]plit' })
|
||||
key('n', '<leader>tn', '<cmd>tabnext<CR>', { desc = '[T]ab [n]ext' })
|
||||
key('n', '<leader>tp', '<cmd>tabprevious<CR>', { desc = '[T]ab [p]revious' })
|
||||
key('n', '<leader>tf', '<cmd>tabfirst<CR>', { desc = '[T]ab [f]irst' })
|
||||
key('n', '<leader>tl', '<cmd>tablast<CR>', { desc = '[T]tab [l]ast' })
|
||||
|
||||
key('v', 'J', ":m '>+1<CR>gv=gv", { desc = "Move lines down" })
|
||||
key('v', 'K', ":m '<-2<CR>gv=gv", { desc = "Move lines up" })
|
||||
|
||||
-- Change window
|
||||
key('n', '<C-j>', '<C-w>j', opts)
|
||||
key('n', '<C-k>', '<C-w>k', opts)
|
||||
key('n', '<C-h>', '<C-w>h', opts)
|
||||
key('n', '<C-l>', '<C-w>l', opts)
|
||||
|
||||
-- Stay in key mode
|
||||
key('v', '<', '<gv', opts)
|
||||
key('v', '>', '>gv', opts)
|
||||
|
||||
-- Keep old value of register
|
||||
key('v', 'P', '"_dP', opts)
|
||||
|
||||
-- LightSpeed
|
||||
key('n', 'g/', '<Plug>Lightspeed_s', { desc = "Lightspeed forward search" })
|
||||
key('n', 'g?', '<Plug>Lightspeed_S', { desc = "Lightspeed backward search" })
|
||||
|
||||
-- Clipboard and quickfix
|
||||
key({ 'n', 'v' }, '<leader>y', '"+y', { desc = "Yank to clipboard" })
|
||||
key('n', '<leader>j', '<cmd>cn<CR>', { desc = "Quickfix next" })
|
||||
key('n', '<leader>k', '<cmd>cp<CR>', { desc = "Quickfix previous" })
|
||||
key('n', '<leader>co', '<cmd>copen<CR>', { desc = "Quickfix [O]pen" })
|
||||
key('n', '<leader>cc', '<cmd>cclose<CR>', { desc = "Quickfix [C]lose" })
|
||||
key('n', '<leader>ct', '<cmd>TroubleToggle<CR>', { desc = "Toggle [T]rouble" })
|
||||
|
||||
-- luasnip
|
||||
|
||||
vim.keymap.set({ 'i', 's' }, "<c-k>", function()
|
||||
local ls = require "luasnip"
|
||||
if ls.expand_or_jumpable() then
|
||||
ls.expand_or_jump()
|
||||
end
|
||||
end, { silent = true })
|
||||
|
||||
vim.keymap.set({ 'i', 's' }, "<c-j>", function()
|
||||
local ls = require "luasnip"
|
||||
if ls.jumpable(-1) then
|
||||
ls.jump(-1)
|
||||
end
|
||||
end, { silent = true })
|
||||
|
||||
vim.keymap.set({ 'i', 's' }, "<c-l>", function()
|
||||
local ls = require "luasnip"
|
||||
if ls.choice_active() then
|
||||
ls.change_choice(1)
|
||||
end
|
||||
end, { silent = true })
|
||||
|
||||
vim.keymap.set("n", "<leader>ss", "<cmd>source ~/.config/nvim/after/plugin/luasnip.lua<CR>",
|
||||
{ desc = "[S]nippets [s]ource" })
|
||||
|
||||
-- colors
|
||||
|
||||
key('n', '<F6>', function() require('lupan.utils').toggle_color_scheme() end, { desc = 'Toggle background' })
|
||||
@@ -1,69 +0,0 @@
|
||||
local actions = require "telescope.actions"
|
||||
local action_state = require "telescope.actions.state"
|
||||
local finders = require "telescope.finders"
|
||||
local pickers = require "telescope.pickers"
|
||||
local sorters = require "telescope.sorters"
|
||||
local themes = require "telescope.themes"
|
||||
|
||||
local M = {}
|
||||
|
||||
local function enter(prompt_bufnr, action)
|
||||
local selected = action_state.get_selected_entry()
|
||||
actions.close(prompt_bufnr)
|
||||
action(selected[1])
|
||||
end
|
||||
|
||||
function M.tab_change_dir(opts)
|
||||
opts = opts or {}
|
||||
local action = opts.action or vim.cmd.tc
|
||||
local prompt_title = opts.prompt_title or "Tab change directory"
|
||||
local cmd = { 'find', os.getenv('HOME'), '-maxdepth', '5', '-type', 'd', '-not', '-path', '*/.git*' }
|
||||
local dropdown = themes.get_dropdown();
|
||||
local picker_opts = {
|
||||
prompt_title = prompt_title,
|
||||
finder = finders.new_oneshot_job(cmd, {}),
|
||||
sorter = sorters.get_fuzzy_file({}),
|
||||
attach_mappings = function(_, map)
|
||||
map({ "i", "n" }, "<CR>", function(prompt_bufnr) enter(prompt_bufnr, action) end)
|
||||
return true
|
||||
end
|
||||
}
|
||||
local change_dir = pickers.new(dropdown, picker_opts)
|
||||
change_dir:find()
|
||||
end
|
||||
|
||||
local function tabnew_tcd(dir)
|
||||
vim.cmd.tabnew(dir)
|
||||
vim.cmd.tc(dir)
|
||||
end
|
||||
|
||||
function M.tab_change_dir_newtab()
|
||||
M.tab_change_dir({ action = tabnew_tcd, prompt_title = "Tab change directory (new tab)" })
|
||||
end
|
||||
|
||||
local function append_text(text)
|
||||
text = string.gsub(text, "^ + %w+%.([%w%p]+) +.*", "%1")
|
||||
local row, col = unpack(vim.api.nvim_win_get_cursor(0))
|
||||
vim.api.nvim_buf_set_text(0, row - 1, col, row - 1, col, { text })
|
||||
end
|
||||
|
||||
function M.find_translation_key(opts)
|
||||
opts = opts or {}
|
||||
local action = opts.action or append_text
|
||||
local prompt_title = opts.prompt_title or "Get translation key"
|
||||
local cmd = { 'list-translation-keys' }
|
||||
local dropdown = themes.get_dropdown();
|
||||
local picker_opts = {
|
||||
prompt_title = prompt_title,
|
||||
finder = finders.new_oneshot_job(cmd, {}),
|
||||
sorter = sorters.get_fuzzy_file({}),
|
||||
attach_mappings = function(_, map)
|
||||
map({ "i", "n" }, "<CR>", function(prompt_bufnr) enter(prompt_bufnr, action) end)
|
||||
return true
|
||||
end
|
||||
}
|
||||
local find_translation_key = pickers.new(dropdown, picker_opts)
|
||||
find_translation_key:find()
|
||||
end
|
||||
|
||||
return M
|
||||
@@ -1,53 +0,0 @@
|
||||
local M = {}
|
||||
|
||||
local filename = os.getenv('HOME') .. '/.config/alacritty/alacritty.toml'
|
||||
|
||||
local colorschemes = nil
|
||||
|
||||
function M.set_color_schemes(dark, light)
|
||||
colorschemes = { dark = dark, light = light }
|
||||
end
|
||||
|
||||
function M.terminalbg()
|
||||
local ok, lines = pcall(io.lines, filename)
|
||||
if ok then
|
||||
for line in lines do
|
||||
if string.find(line, 'light.toml') then
|
||||
return "light"
|
||||
end
|
||||
end
|
||||
end
|
||||
return "dark"
|
||||
end
|
||||
|
||||
function M.update_color_scheme()
|
||||
vim.o.background = M.terminalbg()
|
||||
if colorschemes then
|
||||
vim.cmd.colorscheme(colorschemes[vim.o.background])
|
||||
end
|
||||
end
|
||||
|
||||
function M.toggle_color_scheme()
|
||||
if vim.o.background == "dark" then
|
||||
vim.o.background = "light"
|
||||
else
|
||||
vim.o.background = "dark"
|
||||
end
|
||||
if colorschemes then
|
||||
vim.cmd.colorscheme(colorschemes[vim.o.background])
|
||||
end
|
||||
end
|
||||
|
||||
local w = vim.uv.new_fs_event()
|
||||
|
||||
local function watch(fname)
|
||||
w:start(filename, {}, vim.schedule_wrap(function(...)
|
||||
M.update_color_scheme()
|
||||
w:stop()
|
||||
watch(fname)
|
||||
end))
|
||||
end
|
||||
|
||||
watch(filename)
|
||||
|
||||
return M
|
||||
@@ -1,52 +0,0 @@
|
||||
return {
|
||||
{
|
||||
"ramojus/mellifluous.nvim",
|
||||
branch = "v1",
|
||||
},
|
||||
{
|
||||
'rmehri01/onenord.nvim',
|
||||
},
|
||||
{
|
||||
'AlexvZyl/nordic.nvim',
|
||||
},
|
||||
{
|
||||
"savq/melange-nvim",
|
||||
},
|
||||
{
|
||||
'ronisbr/nano-theme.nvim',
|
||||
config = function()
|
||||
local nano = require('nano-theme.colors')
|
||||
local nano_get = nano.get
|
||||
function nano.get()
|
||||
local t = nano_get()
|
||||
local light = vim.o.background == 'light'
|
||||
if not light then
|
||||
t.nano_strong.fg = '#ECEFF4'
|
||||
end
|
||||
return t
|
||||
end
|
||||
|
||||
require('lupan.utils').set_color_schemes('nano-theme', 'nano-theme')
|
||||
require('lupan.utils').update_color_scheme()
|
||||
end
|
||||
},
|
||||
{
|
||||
-- Indentation guides (see `:help indent_blankline.txt`)
|
||||
'lukas-reineke/indent-blankline.nvim',
|
||||
main = "ibl",
|
||||
opts = {},
|
||||
},
|
||||
|
||||
{
|
||||
--- Create Color Code
|
||||
'uga-rosa/ccc.nvim',
|
||||
config = function(_, opts)
|
||||
require('ccc').setup(opts)
|
||||
end,
|
||||
cmd = { 'CccPick', 'CccHighlighterToggle' },
|
||||
keys = {
|
||||
{ "<leader>ct", "<cmd>CccHighlighterToggle<cr>", desc = "[C]olorizer [T]oggle" },
|
||||
{ "<leader>cp", "<cmd>CccPick<cr>", desc = "[C]olor [P]ick" },
|
||||
},
|
||||
},
|
||||
}
|
||||
12
nvim/.config/nvim/lua/plugins/arrow.lua
Normal file
12
nvim/.config/nvim/lua/plugins/arrow.lua
Normal file
@@ -0,0 +1,12 @@
|
||||
vim.pack.add({ "https://github.com/otavioschwanck/arrow.nvim" })
|
||||
|
||||
local ok, arrow = pcall(require, "arrow")
|
||||
if ok then
|
||||
arrow.setup({
|
||||
show_icons = false,
|
||||
leader_key = "_",
|
||||
buffer_leader_key = " m",
|
||||
})
|
||||
else
|
||||
print("plugin arrow missing")
|
||||
end
|
||||
12
nvim/.config/nvim/lua/plugins/auto-session.lua
Normal file
12
nvim/.config/nvim/lua/plugins/auto-session.lua
Normal file
@@ -0,0 +1,12 @@
|
||||
vim.pack.add({ "https://github.com/rmagatti/auto-session" })
|
||||
|
||||
vim.keymap.set("n", "<leader>wy", "<cmd>AutoSession search<cr>")
|
||||
|
||||
local ok, sess = pcall(require, "auto-session")
|
||||
if ok then
|
||||
sess.setup({
|
||||
suppressed_dirs = { "~/", "~/src", "~/Downloads", "/" },
|
||||
})
|
||||
else
|
||||
print("plugin auto-session missing")
|
||||
end
|
||||
@@ -1,78 +0,0 @@
|
||||
return {
|
||||
'hrsh7th/nvim-cmp',
|
||||
event = 'InsertEnter',
|
||||
dependencies = {
|
||||
-- Snippet Engine & its associated nvim-cmp source
|
||||
{
|
||||
'L3MON4D3/LuaSnip',
|
||||
build = (function()
|
||||
if vim.fn.has 'win32' == 1 or vim.fn.executable 'make' == 0 then
|
||||
return
|
||||
end
|
||||
return 'make install_jsregexp'
|
||||
end)(),
|
||||
},
|
||||
'saadparwaiz1/cmp_luasnip',
|
||||
|
||||
-- Adds LSP completion capabilities
|
||||
'hrsh7th/cmp-nvim-lsp',
|
||||
'hrsh7th/cmp-path',
|
||||
|
||||
-- Adds a number of user-friendly snippets
|
||||
'rafamadriz/friendly-snippets',
|
||||
},
|
||||
config = function()
|
||||
-- See `:help cmp`
|
||||
local cmp = require 'cmp'
|
||||
local luasnip = require 'luasnip'
|
||||
require('luasnip.loaders.from_vscode').lazy_load()
|
||||
require('luasnip.loaders.from_lua').lazy_load({ paths = '~/.config/nvim/snippets' })
|
||||
luasnip.config.setup {}
|
||||
luasnip.filetype_extend('templ', { "html" })
|
||||
|
||||
cmp.setup {
|
||||
snippet = {
|
||||
expand = function(args)
|
||||
luasnip.lsp_expand(args.body)
|
||||
end,
|
||||
},
|
||||
-- completion = { autocomplete = false },
|
||||
completion = { completeopt = 'menu,menuone,noinsert' },
|
||||
|
||||
-- See `:help ins-completion`
|
||||
mapping = cmp.mapping.preset.insert {
|
||||
-- ['<C-l>'] = cmp.mapping.confirm({ select = true }),
|
||||
['<C-n>'] = cmp.mapping.select_next_item(),
|
||||
['<C-p>'] = cmp.mapping.select_prev_item(),
|
||||
['<C-d>'] = cmp.mapping.scroll_docs(-4),
|
||||
['<C-f>'] = cmp.mapping.scroll_docs(4),
|
||||
['<C-y>'] = cmp.mapping.confirm { select = true },
|
||||
['<C-Space>'] = cmp.mapping.complete {},
|
||||
|
||||
-- <c-l> will move you to the right of each of the expansion locations.
|
||||
-- <c-h> is similar, except moving you backwards.
|
||||
['<C-l>'] = cmp.mapping(function()
|
||||
if luasnip.expand_or_locally_jumpable() then
|
||||
luasnip.expand_or_jump()
|
||||
end
|
||||
end, { 'i', 's' }),
|
||||
['<C-h>'] = cmp.mapping(function()
|
||||
if luasnip.locally_jumpable(-1) then
|
||||
luasnip.jump(-1)
|
||||
end
|
||||
end, { 'i', 's' }),
|
||||
},
|
||||
sources = {
|
||||
{ name = 'nvim_lsp' },
|
||||
{ name = 'luasnip' },
|
||||
{ name = 'path' },
|
||||
},
|
||||
}
|
||||
cmp.setup.filetype('sql', {
|
||||
sources = {
|
||||
{ name = 'vim-dadbod-completion' },
|
||||
{ name = 'buffer' },
|
||||
},
|
||||
})
|
||||
end,
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
return {
|
||||
{
|
||||
"chentoast/marks.nvim",
|
||||
event = "VeryLazy",
|
||||
config = true,
|
||||
keys = {
|
||||
{ '<leader>ma', '<cmd>MarksListAll<CR>' },
|
||||
{ '<leader>mb', '<cmd>MarksListBuf<CR>' },
|
||||
{ '<leader>mg', '<cmd>MarksListGlobal<CR>' },
|
||||
},
|
||||
},
|
||||
}
|
||||
12
nvim/.config/nvim/lua/plugins/colorscheme.lua
Normal file
12
nvim/.config/nvim/lua/plugins/colorscheme.lua
Normal file
@@ -0,0 +1,12 @@
|
||||
vim.pack.add({
|
||||
"https://github.com/EdenEast/nightfox.nvim",
|
||||
"https://github.com/rebelot/kanagawa.nvim",
|
||||
"https://github.com/kepano/flexoki-neovim",
|
||||
"https://github.com/rktjmp/lush.nvim",
|
||||
"https://github.com/zenbones-theme/zenbones.nvim",
|
||||
"https://github.com/xero/miasma.nvim",
|
||||
})
|
||||
|
||||
local cs = require("config.colorscheme")
|
||||
cs.set_colorschemes("lupanbones", "lupanbones")
|
||||
cs.update_colorscheme()
|
||||
36
nvim/.config/nvim/lua/plugins/conform.lua
Normal file
36
nvim/.config/nvim/lua/plugins/conform.lua
Normal file
@@ -0,0 +1,36 @@
|
||||
vim.pack.add({ "https://github.com/stevearc/conform.nvim" })
|
||||
|
||||
local ok, conform = pcall(require, "conform")
|
||||
if ok then
|
||||
conform.setup({
|
||||
formatters_by_ft = {
|
||||
lua = { "stylua" },
|
||||
},
|
||||
format_on_save = function(bufnr)
|
||||
-- Disable with a global or buffer-local variable
|
||||
if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then
|
||||
return
|
||||
end
|
||||
return { timeout_ms = 500, lsp_format = "fallback" }
|
||||
end,
|
||||
})
|
||||
vim.api.nvim_create_user_command("FormatDisable", function(args)
|
||||
if args.bang then
|
||||
-- FormatDisable! will disable formatting just for this buffer
|
||||
vim.b.disable_autoformat = true
|
||||
else
|
||||
vim.g.disable_autoformat = true
|
||||
end
|
||||
end, {
|
||||
desc = "Disable autoformat-on-save",
|
||||
bang = true,
|
||||
})
|
||||
vim.api.nvim_create_user_command("FormatEnable", function()
|
||||
vim.b.disable_autoformat = false
|
||||
vim.g.disable_autoformat = false
|
||||
end, {
|
||||
desc = "Re-enable autoformat-on-save",
|
||||
})
|
||||
else
|
||||
print("plugin conform missing")
|
||||
end
|
||||
@@ -1,51 +0,0 @@
|
||||
return {
|
||||
{
|
||||
'folke/which-key.nvim',
|
||||
event = 'VimEnter',
|
||||
opts = {
|
||||
preset = 'helix',
|
||||
delay = 1000,
|
||||
},
|
||||
config = function(_, opts)
|
||||
require('which-key').setup(opts)
|
||||
|
||||
-- Document existing key chains
|
||||
require('which-key').add {
|
||||
{ "<leader>c", group = "[C]ode/Color" },
|
||||
{ "<leader>d", group = "[D]ocument" },
|
||||
{ "<leader>g", group = "[G]it" },
|
||||
{ "<leader>r", group = "[R]ename" },
|
||||
{ "<leader>s", group = "[S]earch" },
|
||||
{ "<leader>w", group = "[W]orkspace" },
|
||||
}
|
||||
end,
|
||||
},
|
||||
{
|
||||
"max397574/better-escape.nvim",
|
||||
config = function(_, opts)
|
||||
require("better_escape").setup(opts)
|
||||
end,
|
||||
},
|
||||
{
|
||||
"folke/zen-mode.nvim",
|
||||
opts = {
|
||||
window = { width = 180 },
|
||||
plugins = {
|
||||
tmux = { enabled = true },
|
||||
},
|
||||
on_open = function()
|
||||
vim.opt.laststatus = 1
|
||||
require('incline').disable()
|
||||
vim.system({ 'hyprctl', 'dispatch', 'fullscreen' })
|
||||
vim.system({ 'awesome-client', 'client.focus.fullscreen = true' })
|
||||
end,
|
||||
on_close = function()
|
||||
vim.opt.laststatus = 3
|
||||
require('incline').enable()
|
||||
vim.system({ 'hyprctl', 'dispatch', 'fullscreen' })
|
||||
vim.system({ 'awesome-client', 'client.focus.fullscreen = false' })
|
||||
end
|
||||
},
|
||||
keys = { { "<leader>z", "<cmd>ZenMode<CR>" } },
|
||||
},
|
||||
}
|
||||
@@ -1,94 +0,0 @@
|
||||
return {
|
||||
-- "gc" to comment visual regions/lines
|
||||
{
|
||||
'numToStr/Comment.nvim',
|
||||
opts = {}
|
||||
},
|
||||
|
||||
-- Undo browsing
|
||||
'mbbill/undotree',
|
||||
|
||||
-- Tabstops autodetected
|
||||
'tpope/vim-sleuth',
|
||||
|
||||
{
|
||||
"kylechui/nvim-surround",
|
||||
version = "^3.0.0", -- Use for stability; omit to use `main` branch for the latest features
|
||||
event = "VeryLazy",
|
||||
config = true,
|
||||
},
|
||||
|
||||
{
|
||||
'inkarkat/vim-ReplaceWithRegister',
|
||||
keys = {
|
||||
{ 'gp', '<Plug>ReplaceWithRegisterOperator' },
|
||||
{ 'gpp', '<Plug>ReplaceWithRegisterLine' },
|
||||
{ 'gp', '<Plug>ReplaceWithRegisterVisual', mode = 'x' },
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
'ggandor/leap.nvim',
|
||||
opts = {
|
||||
safe_labels = {},
|
||||
},
|
||||
dependencies = {
|
||||
"tpope/vim-repeat",
|
||||
},
|
||||
keys = {
|
||||
{ '\\', '<Plug>(leap)', mode = { 'n', 'x', 'o' } },
|
||||
{ 'gs', '<Plug>(leap-from-window)', mode = { 'n', 'x', 'o' } },
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
'Wansmer/treesj',
|
||||
dependencies = { 'nvim-treesitter/nvim-treesitter' },
|
||||
opts = {
|
||||
use_default_keymaps = false,
|
||||
},
|
||||
keys = {
|
||||
{ '<leader>tg', function() require('treesj').toggle() end, desc = "[T]ree to[g]gle one-line" },
|
||||
{ '<leader>tj', function() require('treesj').join() end, desc = "[T]ree [J]oin one-line" },
|
||||
{ '<leader>ts', function() require('treesj').split() end, desc = "[T]ree [S]plit one-line" },
|
||||
},
|
||||
},
|
||||
|
||||
-- rehighlight search on n or N
|
||||
{
|
||||
'nvimdev/hlsearch.nvim',
|
||||
event = 'BufRead',
|
||||
config = true,
|
||||
},
|
||||
|
||||
{
|
||||
'mizlan/iswap.nvim',
|
||||
event = 'VeryLazy',
|
||||
keys = {
|
||||
{ '<leader>cs', '<cmd>ISwapWith<CR>', desc = 'I[S]wap' },
|
||||
{ '<leader>cS', '<cmd>ISwap<CR>', desc = 'I[S]wapWith' },
|
||||
{ '<leader>cn', '<cmd>ISwapNodeWith<CR>', desc = 'ISwap[N]ode' },
|
||||
{ '<leader>cN', '<cmd>ISwapNode<CR>', desc = 'ISwap[N]ode' },
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
'aaronik/treewalker.nvim',
|
||||
keys = {
|
||||
{ '<leader>ch', '<cmd>Treewalker Left<CR>', desc = 'Tree Left' },
|
||||
{ '<leader>cj', '<cmd>Treewalker Down<CR>', desc = 'Tree Down' },
|
||||
{ '<leader>ck', '<cmd>Treewalker Up<CR>', desc = 'Tree Up' },
|
||||
{ '<leader>cl', '<cmd>Treewalker Right<CR>', desc = 'Tree Right' },
|
||||
{ '<leader>cJ', '<cmd>Treewalker SwapDown<CR>', desc = 'Tree Swap Down' },
|
||||
{ '<leader>cK', '<cmd>Treewalker SwapUp<CR>', desc = 'Tree Swap Up' },
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
'echasnovski/mini.nvim',
|
||||
version = '*',
|
||||
config = function()
|
||||
require('mini.ai').setup()
|
||||
end
|
||||
},
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
return {
|
||||
{
|
||||
'stevearc/oil.nvim',
|
||||
dependencies = { "nvim-tree/nvim-web-devicons" },
|
||||
opts = {
|
||||
default_file_explorer = true,
|
||||
delete_to_trash = true,
|
||||
},
|
||||
keys = {
|
||||
{ "<leader>-", "<cmd>Oil<CR>", desc = "Open parent directory" },
|
||||
},
|
||||
},
|
||||
}
|
||||
30
nvim/.config/nvim/lua/plugins/flash.lua
Normal file
30
nvim/.config/nvim/lua/plugins/flash.lua
Normal file
@@ -0,0 +1,30 @@
|
||||
vim.pack.add({ "https://github.com/folke/flash.nvim" })
|
||||
|
||||
local ok, flash = pcall(require, "flash")
|
||||
|
||||
if ok then
|
||||
flash.setup({
|
||||
modes = {
|
||||
char = {
|
||||
enabled = false,
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
local set = vim.keymap.set
|
||||
|
||||
set({ "n", "x", "o" }, "\\", function()
|
||||
require("flash").jump()
|
||||
end, { desc = "Flash" })
|
||||
set({ "n", "x", "o" }, "=", function()
|
||||
require("flash").treesitter()
|
||||
end, { desc = "Flash Treesitter" })
|
||||
set({ "o" }, "r", function()
|
||||
require("flash").remote()
|
||||
end, { desc = "Remote Flash" })
|
||||
set({ "n", "x", "o" }, " t", function()
|
||||
require("flash").treesitter_search()
|
||||
end, { desc = "Treesitter Search" })
|
||||
else
|
||||
print("plugin flash missing")
|
||||
end
|
||||
232
nvim/.config/nvim/lua/plugins/fzf-lua.lua
Normal file
232
nvim/.config/nvim/lua/plugins/fzf-lua.lua
Normal file
@@ -0,0 +1,232 @@
|
||||
vim.pack.add({
|
||||
"https://github.com/ibhagwan/fzf-lua",
|
||||
"https://github.com/elanmed/fzf-lua-frecency.nvim",
|
||||
})
|
||||
|
||||
local ok, fzf = pcall(require, "fzf-lua")
|
||||
local ok2, frecency = pcall(require, "fzf-lua-frecency")
|
||||
if ok then
|
||||
fzf.setup({
|
||||
keymap = {
|
||||
builtin = {
|
||||
true,
|
||||
["<M-m>"] = "toggle-fullscreen",
|
||||
},
|
||||
fzf = {
|
||||
true,
|
||||
-- Use <c-q> to select all items and add them to the quickfix list
|
||||
["ctrl-q"] = "select-all+accept",
|
||||
},
|
||||
}
|
||||
})
|
||||
fzf.register_ui_select()
|
||||
local odin_pkg = "~/cloned/Odin"
|
||||
local function go_root()
|
||||
return vim.fn.trim(vim.fn.system("go env GOROOT"))
|
||||
end
|
||||
local go_root_pkg = nil
|
||||
local function go_mod()
|
||||
return vim.fs.joinpath(vim.fn.trim(vim.fn.system("go env GOPATH")), "pkg/mod")
|
||||
end
|
||||
local go_mod_pkg = nil
|
||||
local function go_grep(cwd)
|
||||
local input = vim.fn.input("Go grep declarations> ")
|
||||
if #input == 0 then
|
||||
return
|
||||
end
|
||||
local search1 = "^(func|type) .*(?<= )(?=[A-Z])[a-zA-Z0-9_]*" .. input .. "[a-zA-Z0-9_]*( |\\()"
|
||||
local search2 = "^[\\t]+(?=[A-Z])[a-zA-Z0-9_]*" .. input .. "[a-zA-Z0-9_]* +="
|
||||
local search = "(" .. search1 .. "|" .. search2 .. ")"
|
||||
fzf.grep({
|
||||
cwd = cwd,
|
||||
cmd = "rg -P -g '*.go'",
|
||||
search = search,
|
||||
no_esc = true,
|
||||
profile = 'ivy',
|
||||
})
|
||||
end
|
||||
local function odin_grep(cwd)
|
||||
local input = vim.fn.input("Odin grep declarations> ")
|
||||
if #input == 0 then
|
||||
return
|
||||
end
|
||||
local search = "^[ \\t]*[a-zA-Z0-9_]*" .. input .. "[a-zA-Z0-9_]* +::"
|
||||
fzf.grep({
|
||||
cwd = cwd,
|
||||
cmd = "rg -g '*.odin'",
|
||||
search = search,
|
||||
no_esc = true,
|
||||
profile = 'ivy',
|
||||
})
|
||||
end
|
||||
local set = vim.keymap.set
|
||||
set("n", "<leader>ba", fzf.buffers, { desc = "FzfLua buffers" })
|
||||
set("n", "<leader>bh", fzf.history, { desc = "FzfLua history" })
|
||||
set("n", "<leader>bj", fzf.jumps, { desc = "FzfLua jumps" })
|
||||
set("n", "<leader>ca", fzf.lsp_code_actions, { desc = "FzfLua LSP code actions" })
|
||||
set("n", "<leader>cb", fzf.complete_bline, { desc = "FzfLua complete buffer line" })
|
||||
set("n", "<leader>cc", fzf.commands, { desc = "FzfLua commands" })
|
||||
set("n", "<leader>cf", fzf.complete_file, { desc = "FzfLua complete file" })
|
||||
set("n", "<leader>cF", fzf.complete_path, { desc = "FzfLua complete path" })
|
||||
set("n", "<leader>ch", fzf.command_history, { desc = "FzfLua command history" })
|
||||
set("n", "<leader>cH", fzf.highlights, { desc = "FzfLua color highlights" })
|
||||
set("n", "<leader>cl", fzf.complete_line, { desc = "FzfLua complete line" })
|
||||
set("n", "<leader>co", fzf.nvim_options, { desc = "FzfLua nvim options" })
|
||||
set("n", "<leader>cr", fzf.profiles, { desc = "FzfLua fzf profiles" })
|
||||
set("n", "<leader>cs", fzf.colorschemes, { desc = "FzfLua color schemes" })
|
||||
set("n", "<leader>ct", fzf.tabs, { desc = "FzfLua tabs" })
|
||||
set("n", "<leader>da", fzf.diagnostics_document, { desc = "FzfLua document diagnostics" })
|
||||
set("n", "<leader>dw", fzf.diagnostics_workspace, { desc = "FzfLua workspace diagnostics" })
|
||||
set("n", "<leader>ec", function()
|
||||
fzf.files({ cwd = vim.fn.stdpath("config") })
|
||||
end, { desc = "FzfLua nvim config files" })
|
||||
set("n", "<leader>ep", function()
|
||||
fzf.files({ cwd = vim.fs.joinpath(vim.fn.stdpath("data"), "site") })
|
||||
end, { desc = "FzfLua find files" })
|
||||
set("n", "<leader>es", function()
|
||||
fzf.files({ cwd = '~/.config/kitty/sessions' })
|
||||
end, { desc = "FzfLua kitty sessions" })
|
||||
set("n", "<leader>eS", "<cmd>Oil ~/.config/kitty/sessions<cr>", { desc = "Kitty sessions (dir)" })
|
||||
set("n", "<leader>fa", fzf.git_files, { desc = "FzfLua git files" })
|
||||
set("n", "<leader>ff", fzf.files, { desc = "FzfLua find files" })
|
||||
set("n", "<leader>fg", fzf.global, { desc = "FzfLua global" })
|
||||
set("n", "<leader>fo", frecency.frecency, { desc = "FzfLua frecency oldfiles" })
|
||||
set("n", "<leader>ft", fzf.filetypes, { desc = "FzfLua file types" })
|
||||
set("n", "<leader>;", function()
|
||||
frecency.frecency({ cwd_only = true })
|
||||
end, { desc = "FzfLua frecency files" })
|
||||
set("n", "<leader>gb", fzf.git_branches, { desc = "FzfLua git branches" })
|
||||
set("n", "<leader>gB", fzf.git_blame, { desc = "FzfLua git blame" })
|
||||
set("n", "<leader>gc", fzf.git_bcommits, { desc = "FzfLua git buffer commits" })
|
||||
set("n", "<leader>gC", fzf.git_commits, { desc = "FzfLua git commits" })
|
||||
set("n", "<leader>gd", fzf.git_diff, { desc = "FzfLua git diff" })
|
||||
set("n", "<leader>gh", fzf.git_hunks, { desc = "FzfLua git hunks" })
|
||||
set("n", "<leader>gC", fzf.git_commits, { desc = "FzfLua git commits" })
|
||||
set("n", "<leader>gs", fzf.git_status, { desc = "FzfLua git status" })
|
||||
set("n", "<leader>gS", fzf.git_stash, { desc = "FzfLua git stash" })
|
||||
set("n", "<leader>gt", fzf.git_tags, { desc = "FzfLua git tags" })
|
||||
set("n", "<leader>gw", fzf.git_worktrees, { desc = "FzfLua git worktrees" })
|
||||
set("n", "<leader>ha", fzf.helptags, { desc = "FzfLua help tags" })
|
||||
set("n", "<leader>hk", fzf.keymaps, { desc = "FzfLua keymaps" })
|
||||
set("n", "<leader>ma", fzf.marks, { desc = "FzfLua marks" })
|
||||
set("n", "<leader>mp", fzf.manpages, { desc = "FzfLua man pages" })
|
||||
set("n", "<leader>qa", fzf.quickfix, { desc = "FzfLua quickfix" })
|
||||
set("n", "<leader>qs", fzf.quickfix_stack, { desc = "FzfLua quickfix stack" })
|
||||
set("n", "<leader>ql", fzf.loclist, { desc = "FzfLua loclist" })
|
||||
set("n", "<leader>qh", fzf.loclist_stack, { desc = "FzfLua loclist stack" })
|
||||
set("n", "<leader>ra", fzf.resume, { desc = "FzfLua resume" })
|
||||
set("n", "<leader>rr", fzf.registers, { desc = "FzfLua registers" })
|
||||
set("n", "<leader>ta", fzf.treesitter, { desc = "FzfLua treesitter symbols" })
|
||||
set("n", "<leader>sa", fzf.live_grep, { desc = "FzfLua live grep" })
|
||||
set("n", "<leader>sb", fzf.blines, { desc = "FzfLua buffer lines" })
|
||||
set("n", "<leader>sB", fzf.grep_curbuf, { desc = "FzfLua grep current buffer" })
|
||||
set("n", "<leader>sg", fzf.grep, { desc = "FzfLua grep" })
|
||||
set("n", "<leader>sh", fzf.search_history, { desc = "FzfLua search history" })
|
||||
set("n", "<leader>sl", fzf.grep_loclist, { desc = "FzfLua grep loclist" })
|
||||
set("n", "<leader>sn", fzf.live_grep_native, { desc = "FzfLua live grep native" })
|
||||
set("n", "<leader>so", fzf.lines, { desc = "FzfLua open buffers lines" })
|
||||
set("n", "<leader>sp", fzf.grep_project, { desc = "FzfLua grep project" })
|
||||
set("n", "<leader>sq", fzf.grep_quickfix, { desc = "FzfLua grep quickfix" })
|
||||
set("n", "<leader>sr", function() fzf.grep({ resume = true }) end, { desc = "FzfLua grep resume" })
|
||||
set("n", "<leader>sc", fzf.spellcheck, { desc = "FzfLua spell check" })
|
||||
set("n", "<leader>ss", fzf.spell_suggest, { desc = "FzfLua spell suggest" })
|
||||
set({ "n", "v" }, "<leader>sv", fzf.grep_visual, { desc = "FzfLua grep visual" })
|
||||
set("n", "<leader>sw", fzf.grep_cword, { desc = "FzfLua grep cword" })
|
||||
set("n", "<leader>sW", fzf.grep_cWORD, { desc = "FzfLua grep cword" })
|
||||
set("n", "<leader>U", fzf.undotree, { desc = "FzfLua undo tree" })
|
||||
set("n", "<leader>wa", fzf.lsp_live_workspace_symbols, { desc = "FzfLua document symbols" })
|
||||
set("n", "<leader>wd", fzf.lsp_document_symbols, { desc = "FzfLua document symbols" })
|
||||
set("n", "<leader>wf", fzf.lsp_finder, { desc = "FzfLua LSP finder" })
|
||||
set("n", "<leader>wp", fzf.lsp_workspace_symbols, { desc = "FzfLua workspace symbols" })
|
||||
set("n", "<leader>wz", fzf.zoxide, { desc = "FzfLua zoxide" })
|
||||
set("n", "gd", fzf.lsp_definitions, { desc = "Goto Definition" })
|
||||
set("n", "gD", fzf.lsp_declarations, { desc = "Goto Declarations" })
|
||||
set("n", "grr", fzf.lsp_references, { desc = "References" })
|
||||
set("n", "gri", fzf.lsp_implementations, { desc = "Goto Implementation" })
|
||||
set("n", "grI", fzf.lsp_incoming_calls, { desc = "Incomming calls" })
|
||||
set("n", "grO", fzf.lsp_outgoing_calls, { desc = "Outgouing calls" })
|
||||
set("n", "grs", fzf.lsp_type_sub, { desc = "Outgouing calls" })
|
||||
set("n", "grp", fzf.lsp_type_super, { desc = "Outgouing calls" })
|
||||
set("n", "grt", fzf.lsp_typedefs, { desc = "Goto Type Definition" })
|
||||
|
||||
set("n", "<leader>Gf", function()
|
||||
fzf.files({ cwd = go_root(), cmd = "fd --type f -e go" })
|
||||
end, { desc = "FzfLua Go files" })
|
||||
set("n", "<leader>GF", function()
|
||||
fzf.files({ cwd = go_mod(), cmd = "fd --type f -e go" })
|
||||
end, { desc = "FzfLua Go mod files" })
|
||||
set("n", "<leader>Gl", function()
|
||||
fzf.files({ cmd = "fd --type f -e go" })
|
||||
end, { desc = "FzfLua Go current dir files" })
|
||||
set("n", "<leader>Gs", function()
|
||||
go_grep(go_root())
|
||||
end, { desc = "FzfLua Go grep declarations" })
|
||||
set("n", "<leader>GS", function()
|
||||
go_grep(go_mod())
|
||||
end, { desc = "FzfLua Go grep mod declarations" })
|
||||
set("n", "<leader>Gd", function()
|
||||
go_grep(nil)
|
||||
end, { desc = "FzfLua Go current dir grep declarations" })
|
||||
set("n", "<leader>Gm", function()
|
||||
go_grep(go_mod_pkg or go_mod())
|
||||
end, { desc = "FzfLua Go grep mod declarations" })
|
||||
set("n", "<leader>GM", function()
|
||||
fzf.zoxide({
|
||||
cmd = "fd '' --type d " .. vim.fn.shellescape(go_mod()) .. [[ | awk '{print "\t"$1}']],
|
||||
actions = {
|
||||
["enter"] = function(a)
|
||||
go_mod_pkg = vim.fn.trim(a[1])
|
||||
go_grep(go_mod_pkg)
|
||||
end
|
||||
}
|
||||
})
|
||||
end, { desc = "FzfLua Go select package and grep package declarations" })
|
||||
set("n", "<leader>Gp", function()
|
||||
go_grep(go_root_pkg or go_root())
|
||||
end, { desc = "FzfLua Go grep package declarations" })
|
||||
set("n", "<leader>GP", function()
|
||||
fzf.zoxide({
|
||||
cmd = "fd '' --type d " .. vim.fn.shellescape(go_root()) .. [[ | awk '{print "\t"$1}']],
|
||||
actions = {
|
||||
["enter"] = function(a)
|
||||
go_root_pkg = vim.fn.trim(a[1])
|
||||
go_grep(go_root_pkg)
|
||||
end
|
||||
}
|
||||
})
|
||||
end, { desc = "FzfLua Go select package and grep package declarations" })
|
||||
|
||||
set("n", "<leader>of", function()
|
||||
fzf.files({ cwd = "~/cloned/Odin", cmd = "fd --type f -e odin" })
|
||||
end, { desc = "FzfLua Odin files" })
|
||||
set("n", "<leader>ol", function()
|
||||
fzf.files({ cmd = "fd --type f -e odin" })
|
||||
end, { desc = "FzfLua Odin current dir files" })
|
||||
set("n", "<leader>os", function()
|
||||
odin_grep("~/cloned/Odin")
|
||||
end, { desc = "FzfLua Odin grep declarations" })
|
||||
set("n", "<leader>od", function()
|
||||
odin_grep(nil)
|
||||
end, { desc = "FzfLua Odin grep declarations" })
|
||||
set("n", "<leader>op", function()
|
||||
odin_grep(odin_pkg)
|
||||
end, { desc = "FzfLua Odin grep package declarations" })
|
||||
set("n", "<leader>oP", function()
|
||||
fzf.zoxide({
|
||||
cmd = [[fd '' --type d ~/cloned/Odin | awk '{print "\t"$1}']],
|
||||
actions = {
|
||||
["enter"] = function(a)
|
||||
odin_pkg = vim.fn.trim(a[1])
|
||||
odin_grep(odin_pkg)
|
||||
end
|
||||
}
|
||||
})
|
||||
end, { desc = "FzfLua Odin select package and grep package declarations" })
|
||||
else
|
||||
print("plugin fzf-lua missing")
|
||||
end
|
||||
if not ok2 then
|
||||
print("plugin fzf-lua-frecency missing")
|
||||
end
|
||||
|
||||
--vim.keymap.set("n", "<leader>-", "<cmd>Oil<cr>", { desc = "Oil file manager" })
|
||||
@@ -1,74 +0,0 @@
|
||||
return {
|
||||
-- Git
|
||||
{
|
||||
'NeogitOrg/neogit',
|
||||
dependencies = {
|
||||
'nvim-lua/plenary.nvim',
|
||||
'sindrets/diffview.nvim',
|
||||
'nvim-telescope/telescope.nvim',
|
||||
},
|
||||
opts = {
|
||||
graph_style = 'unicode',
|
||||
use_per_project_settings = false,
|
||||
},
|
||||
keys = {
|
||||
{
|
||||
'<leader>go',
|
||||
function() require('neogit').open() end,
|
||||
desc = 'Neo[g]it [O]pen'
|
||||
},
|
||||
{
|
||||
'<leader>g.',
|
||||
function() require('neogit').open({ cwd = '%:p:h' }) end,
|
||||
desc = 'Neo[g]it open in current file repository'
|
||||
},
|
||||
{
|
||||
'<leader>gh',
|
||||
function() require('diffview').file_history() end,
|
||||
desc = '[G]it [H]istory',
|
||||
},
|
||||
{
|
||||
'<leader>g%',
|
||||
function() require('diffview').file_history(nil, { '%' }) end,
|
||||
desc = '[G]it history for [%] current file'
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
'FabijanZulj/blame.nvim',
|
||||
config = true,
|
||||
cmd = 'BlameToggle',
|
||||
keys = {
|
||||
{ '<leader>gb', '<cmd>BlameToggle<cr>', desc = '[G]it [B]lame toggle' },
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
-- Adds git releated signs to the gutter, as well as utilities for managing changes
|
||||
'lewis6991/gitsigns.nvim',
|
||||
opts = {
|
||||
-- See `:help gitsigns.txt`
|
||||
signs = {
|
||||
add = { text = '+' },
|
||||
change = { text = '~' },
|
||||
delete = { text = '_' },
|
||||
topdelete = { text = '‾' },
|
||||
changedelete = { text = '~' },
|
||||
},
|
||||
on_attach = function(bufnr)
|
||||
local gs = require('gitsigns')
|
||||
vim.keymap.set('n', '<leader>gp', gs.prev_hunk,
|
||||
{ buffer = bufnr, desc = '[G]o to [P]revious Hunk' })
|
||||
vim.keymap.set('n', '<leader>gn', gs.next_hunk,
|
||||
{ buffer = bufnr, desc = '[G]o to [N]ext Hunk' })
|
||||
vim.keymap.set('n', '<leader>ph', gs.preview_hunk,
|
||||
{ buffer = bufnr, desc = '[P]review [H]unk' })
|
||||
vim.keymap.set('n', '<leader>sh', gs.stage_hunk,
|
||||
{ buffer = bufnr, desc = '[S]tage [H]unk' })
|
||||
vim.keymap.set('n', '<leader>HD', function() gs.diffthis('~') end,
|
||||
{ buffer = bufnr, desc = '[H]unk [D]iff' })
|
||||
end,
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
return {
|
||||
'backdround/global-note.nvim',
|
||||
keys = {
|
||||
{
|
||||
"<leader>n",
|
||||
function()
|
||||
require('global-note').toggle_note()
|
||||
end,
|
||||
desc = 'Toggle global [N]ote',
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
return {
|
||||
"ray-x/go.nvim",
|
||||
dependencies = {
|
||||
"ray-x/guihua.lua",
|
||||
"neovim/nvim-lspconfig",
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
},
|
||||
config = function(_, opts)
|
||||
require("go").setup(opts)
|
||||
end,
|
||||
event = { "CmdlineEnter" },
|
||||
ft = { "go", 'gomod' },
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
return {
|
||||
{
|
||||
'fredrikaverpil/godoc.nvim',
|
||||
version = '*',
|
||||
dependencies = {
|
||||
{ 'nvim-telescope/telescope.nvim' },
|
||||
{
|
||||
'nvim-treesitter/nvim-treesitter',
|
||||
opts = {
|
||||
ensure_installed = { 'go' },
|
||||
},
|
||||
},
|
||||
},
|
||||
event = 'VeryLazy',
|
||||
cmd = 'GoDoc',
|
||||
keys = {
|
||||
{ '<leader>gd', '<cmd>GoDoc<CR>', desc = '[G]o[D]oc' },
|
||||
},
|
||||
build = 'go install github.com/lotusirous/gostdsym/stdsym@latest',
|
||||
opts = {
|
||||
picker = { type = 'telescope' },
|
||||
},
|
||||
},
|
||||
}
|
||||
8
nvim/.config/nvim/lua/plugins/guess-indent.lua
Normal file
8
nvim/.config/nvim/lua/plugins/guess-indent.lua
Normal file
@@ -0,0 +1,8 @@
|
||||
vim.pack.add({ "https://github.com/NMAC427/guess-indent.nvim" })
|
||||
|
||||
local ok, guess_indent = pcall(require, "guess-indent")
|
||||
if ok then
|
||||
guess_indent.setup()
|
||||
else
|
||||
print("plugin guess-indent missing")
|
||||
end
|
||||
@@ -1,7 +0,0 @@
|
||||
return {
|
||||
{
|
||||
"m4xshen/hardtime.nvim",
|
||||
dependencies = { "MunifTanjim/nui.nvim" },
|
||||
opts = {}
|
||||
},
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
return {
|
||||
{
|
||||
"rest-nvim/rest.nvim",
|
||||
dependencies = {
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
opts = function(_, opts)
|
||||
opts.ensure_installed = opts.ensure_installed or {}
|
||||
table.insert(opts.ensure_installed, "http")
|
||||
end,
|
||||
},
|
||||
ft = 'http',
|
||||
keys = {
|
||||
{ '<leader>S', '<cmd>Rest run<CR>', ft = 'http' },
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
vim.opt.fillchars = {
|
||||
stl = "─",
|
||||
}
|
||||
|
||||
return {
|
||||
{
|
||||
"sschleemilch/slimline.nvim",
|
||||
opts = {
|
||||
spaces = {
|
||||
components = "─",
|
||||
left = "─",
|
||||
right = "─",
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
'b0o/incline.nvim',
|
||||
config = function()
|
||||
require('incline').setup()
|
||||
end,
|
||||
-- Optional: Lazy load Incline
|
||||
event = 'VeryLazy',
|
||||
},
|
||||
}
|
||||
@@ -1,173 +0,0 @@
|
||||
return {
|
||||
{
|
||||
'neovim/nvim-lspconfig',
|
||||
dependencies = {
|
||||
-- Automatically install LSPs and related tools to stdpath for neovim
|
||||
'williamboman/mason.nvim',
|
||||
'williamboman/mason-lspconfig.nvim',
|
||||
'WhoIsSethDaniel/mason-tool-installer.nvim',
|
||||
'folke/neodev.nvim',
|
||||
|
||||
-- Useful status updates for LSP.
|
||||
{ 'j-hui/fidget.nvim', opts = {} },
|
||||
},
|
||||
config = function()
|
||||
vim.api.nvim_create_autocmd('LspAttach', {
|
||||
group = vim.api.nvim_create_augroup('my-lsp-attach', { clear = true }),
|
||||
callback = function(event)
|
||||
local map = function(keys, func, desc)
|
||||
vim.keymap.set('n', keys, func, { buffer = event.buf, desc = 'LSP: ' .. desc })
|
||||
end
|
||||
|
||||
map('gd', require('telescope.builtin').lsp_definitions, '[G]oto [D]efinition')
|
||||
map('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences')
|
||||
map('gI', require('telescope.builtin').lsp_implementations, '[G]oto [I]mplementation')
|
||||
map('<leader>D', require('telescope.builtin').lsp_type_definitions, 'Type [D]efinition')
|
||||
map('<leader>ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols')
|
||||
map('<leader>ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols')
|
||||
map('<leader>rn', '<cmd>Lspsaga rename<CR>', '[R]e[n]ame')
|
||||
map('<leader>ca', vim.lsp.buf.code_action, '[C]ode [A]ction')
|
||||
map('K', '<cmd>Lspsaga hover_doc<CR>', 'Hover Documentation')
|
||||
map('<leader>K', vim.lsp.buf.signature_help, 'Signature Documentation')
|
||||
map('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration')
|
||||
|
||||
-- Highlight references under cursor (clear highlight when cursor moves).
|
||||
local client = vim.lsp.get_client_by_id(event.data.client_id)
|
||||
if client and client.server_capabilities.documentHighlightProvider then
|
||||
vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, {
|
||||
buffer = event.buf,
|
||||
callback = function()
|
||||
local clients = vim.lsp.get_clients({ bufnr = event.buf })
|
||||
for _, cl in ipairs(clients) do
|
||||
if cl.name == 'unocss' then
|
||||
return -- skip highlight if unocss is attached (workaround)
|
||||
end
|
||||
end
|
||||
vim.lsp.buf.document_highlight()
|
||||
end
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd({ 'CursorMoved', 'CursorMovedI' }, {
|
||||
buffer = event.buf,
|
||||
callback = vim.lsp.buf.clear_references,
|
||||
})
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||
capabilities = vim.tbl_deep_extend('force', capabilities, require('cmp_nvim_lsp').default_capabilities())
|
||||
|
||||
local servers = {
|
||||
clangd = {},
|
||||
gopls = {},
|
||||
-- pyright = {},
|
||||
rust_analyzer = {},
|
||||
ts_ls = {},
|
||||
|
||||
lua_ls = {
|
||||
settings = {
|
||||
Lua = {
|
||||
runtime = { version = 'LuaJIT' },
|
||||
workspace = { checkThirdParty = false },
|
||||
telemetry = { enable = false },
|
||||
completion = {
|
||||
callSnippet = 'Replace',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
html = {},
|
||||
htmx = {},
|
||||
unocss = {},
|
||||
}
|
||||
|
||||
require 'lspconfig'.html.setup {
|
||||
filetypes = { "html", "templ" },
|
||||
}
|
||||
|
||||
require 'lspconfig'.htmx.setup {
|
||||
filetypes = { "html", "templ" },
|
||||
}
|
||||
|
||||
require 'lspconfig'.unocss.setup {
|
||||
filetypes = { "html", "templ" },
|
||||
}
|
||||
|
||||
-- Setup neovim lua configuration
|
||||
require('neodev').setup()
|
||||
|
||||
require('mason').setup()
|
||||
|
||||
local ensure_installed = vim.tbl_keys(servers or {})
|
||||
vim.list_extend(ensure_installed, {
|
||||
'stylua', -- Used to format lua code
|
||||
})
|
||||
require('mason-tool-installer').setup { ensure_installed = ensure_installed }
|
||||
|
||||
require('mason-lspconfig').setup {
|
||||
handlers = {
|
||||
function(server_name)
|
||||
local server = servers[server_name] or {}
|
||||
-- This handles overriding only values explicitly passed
|
||||
-- by the server configuration above. Useful when disabling
|
||||
-- certain features of an LSP (for example, turning off formatting for tsserver)
|
||||
server.capabilities = vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {})
|
||||
require('lspconfig')[server_name].setup(server)
|
||||
end,
|
||||
},
|
||||
}
|
||||
end,
|
||||
},
|
||||
|
||||
{
|
||||
'nvimdev/lspsaga.nvim',
|
||||
dependencies = {
|
||||
'nvim-treesitter/nvim-treesitter',
|
||||
'nvim-tree/nvim-web-devicons',
|
||||
},
|
||||
opts = {
|
||||
lightbulb = { enable = false }
|
||||
},
|
||||
config = function(_, opts)
|
||||
require('lspsaga').setup(opts)
|
||||
vim.keymap.set('n', '<leader>la', '<cmd>Lspsaga code_action<CR>', { desc = "[L]spsaga code [A]ction" })
|
||||
vim.keymap.set('n', '<leader>lb', '<cmd>Lspsaga show_buf_diagnostics<CR>',
|
||||
{ desc = "[L]spsaga [B]uffer diagnostics" })
|
||||
vim.keymap.set('n', '<leader>lc', '<cmd>Lspsaga show_cursor_diagnostics<CR>',
|
||||
{ desc = "[L]spsaga [C]ursor diagnostics" })
|
||||
vim.keymap.set('n', '<leader>ld', '<cmd>Lspsaga goto_definition<CR>', { desc = "[L]spsaga goto [D]efinition" })
|
||||
vim.keymap.set('n', '<leader>lD', '<cmd>Lspsaga goto_type_definition<CR>',
|
||||
{ desc = "[L]spsaga goto type [D]efinition" })
|
||||
vim.keymap.set('n', '<leader>lf', '<cmd>Lspsaga finder<CR>', { desc = "[L]spsaga [F]inder" })
|
||||
vim.keymap.set('n', '<leader>lI', '<cmd>Lspsaga finder imp<CR>', { desc = "[L]spsaga finder [I]mplementations" })
|
||||
vim.keymap.set('n', '<leader>li', '<cmd>Lspsaga incoming_calls<CR>', { desc = "[L]spsaga [I]ncomping calls" })
|
||||
vim.keymap.set('n', '<leader>ll', '<cmd>Lspsaga show_line_diagnostics<CR>',
|
||||
{ desc = "[L]spsaga [L]ine diagnostics" })
|
||||
vim.keymap.set('n', '<leader>lo', '<cmd>Lspsaga outgoing_calls<CR>', { desc = "[L]spsaga [O]utgoing calls" })
|
||||
vim.keymap.set('n', '<leader>lO', '<cmd>Lspsaga outline<CR>', { desc = "[L]spsaga [O]utline" })
|
||||
vim.keymap.set('n', '<leader>lp', '<cmd>Lspsaga peek_definition<CR>', { desc = "[L]spsaga [P]eek definition" })
|
||||
vim.keymap.set('n', '<leader>lP', '<cmd>Lspsaga peek_type_definition<CR>',
|
||||
{ desc = "[L]spsaga [P]eek type definition" })
|
||||
vim.keymap.set('n', '<leader>lw', '<cmd>Lspsaga show_workspace_diagnostics<CR>',
|
||||
{ desc = "[L]spsaga [W]orkspace diagnostics" })
|
||||
vim.keymap.set({ 'n', 't' }, '<C-_>', '<cmd>Lspsaga term_toggle<CR>', { desc = "[L]spsaga [T]erm toggle" })
|
||||
end,
|
||||
},
|
||||
|
||||
{
|
||||
"folke/trouble.nvim",
|
||||
dependencies = { "nvim-tree/nvim-web-devicons" },
|
||||
opts = {},
|
||||
cmd = 'Trouble'
|
||||
},
|
||||
|
||||
{
|
||||
"ray-x/lsp_signature.nvim",
|
||||
event = "InsertEnter",
|
||||
opts = {
|
||||
-- cfg options
|
||||
},
|
||||
}
|
||||
}
|
||||
48
nvim/.config/nvim/lua/plugins/luasnip.lua
Normal file
48
nvim/.config/nvim/lua/plugins/luasnip.lua
Normal file
@@ -0,0 +1,48 @@
|
||||
vim.api.nvim_create_autocmd("PackChanged", {
|
||||
group = vim.api.nvim_create_augroup("luasnip-update", { clear = true }),
|
||||
callback = function(ev)
|
||||
local name, kind = ev.data.spec.name, ev.data.kind
|
||||
if name == "luasnip" and (kind == "install" or kind == "update") then
|
||||
vim.system({ "make install_jsregexp" }, { cwd = ev.data.path }):wait()
|
||||
print("luasnip make done.")
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
vim.pack.add({ { src = "https://github.com/L3MON4D3/LuaSnip", version = vim.version.range("^2.0.0") } })
|
||||
local ok, ls = pcall(require, "luasnip")
|
||||
|
||||
if ok then
|
||||
vim.keymap.set({ "i" }, "<C-K>", function()
|
||||
ls.expand()
|
||||
end, { silent = true })
|
||||
vim.keymap.set({ "i", "s" }, "<C-L>", function(fallback)
|
||||
if ls.locally_jumpable() then
|
||||
ls.jump(1)
|
||||
else
|
||||
local key = vim.api.nvim_replace_termcodes("<C-L>", true, false, true)
|
||||
vim.api.nvim_feedkeys(key, "n", false)
|
||||
end
|
||||
end, { silent = true })
|
||||
vim.keymap.set({ "i", "s" }, "<C-J>", function()
|
||||
if ls.locally_jumpable() then
|
||||
ls.jump(-1)
|
||||
else
|
||||
local key = vim.api.nvim_replace_termcodes("<C-J>", true, false, true)
|
||||
vim.api.nvim_feedkeys(key, "n", false)
|
||||
end
|
||||
end, { silent = true })
|
||||
|
||||
vim.keymap.set({ "i", "s" }, "<C-E>", function()
|
||||
if ls.choice_active() then
|
||||
ls.change_choice(1)
|
||||
else
|
||||
local key = vim.api.nvim_replace_termcodes("<C-E>", true, false, true)
|
||||
vim.api.nvim_feedkeys(key, "n", false)
|
||||
end
|
||||
end, { silent = true })
|
||||
|
||||
require("luasnip.loaders.from_lua").load({ paths = vim.fs.joinpath(vim.fn.stdpath("config"), "lua", "snippets") })
|
||||
else
|
||||
print("plugin luasnip missing")
|
||||
end
|
||||
76
nvim/.config/nvim/lua/plugins/multicursor.lua
Normal file
76
nvim/.config/nvim/lua/plugins/multicursor.lua
Normal file
@@ -0,0 +1,76 @@
|
||||
vim.pack.add({ { src = "https://github.com/jake-stewart/multicursor.nvim", version = "1.0" } })
|
||||
|
||||
local ok, mc = pcall(require, "multicursor-nvim")
|
||||
if ok then
|
||||
mc.setup()
|
||||
|
||||
local set = vim.keymap.set
|
||||
|
||||
-- Add or skip cursor above/below the main cursor.
|
||||
set({ "n", "x" }, "<c-k>", function()
|
||||
mc.lineAddCursor(-1)
|
||||
end)
|
||||
set({ "n", "x" }, "<c-j>", function()
|
||||
mc.lineAddCursor(1)
|
||||
end)
|
||||
set({ "n", "x" }, "<leader><c-k>", function()
|
||||
mc.lineSkipCursor(-1)
|
||||
end)
|
||||
set({ "n", "x" }, "<leader><c-j>", function()
|
||||
mc.lineSkipCursor(1)
|
||||
end)
|
||||
|
||||
-- Add or skip adding a new cursor by matching word/selection
|
||||
set({ "n", "x" }, "<c-n>", function()
|
||||
mc.matchAddCursor(1)
|
||||
end)
|
||||
set({ "n", "x" }, "<leader><c-n>", function()
|
||||
mc.matchSkipCursor(1)
|
||||
end)
|
||||
set({ "n", "x" }, "<c-p>", function()
|
||||
mc.matchAddCursor(-1)
|
||||
end)
|
||||
set({ "n", "x" }, "<leader><c-p>", function()
|
||||
mc.matchSkipCursor(-1)
|
||||
end)
|
||||
|
||||
-- Add and remove cursors with control + left click.
|
||||
set("n", "<c-leftmouse>", mc.handleMouse)
|
||||
set("n", "<c-leftdrag>", mc.handleMouseDrag)
|
||||
set("n", "<c-leftrelease>", mc.handleMouseRelease)
|
||||
|
||||
-- Disable and enable cursors.
|
||||
set({ "n", "x" }, "<leader><c-q>", mc.toggleCursor)
|
||||
|
||||
-- Mappings defined in a keymap layer only apply when there are
|
||||
-- multiple cursors. This lets you have overlapping mappings.
|
||||
mc.addKeymapLayer(function(layerSet)
|
||||
-- Select a different cursor as the main one.
|
||||
layerSet({ "n", "x" }, "<left>", mc.prevCursor)
|
||||
layerSet({ "n", "x" }, "<right>", mc.nextCursor)
|
||||
|
||||
-- Delete the main cursor.
|
||||
layerSet({ "n", "x" }, "<leader>x", mc.deleteCursor)
|
||||
|
||||
-- Enable and clear cursors using escape.
|
||||
layerSet("n", "<esc>", function()
|
||||
if not mc.cursorsEnabled() then
|
||||
mc.enableCursors()
|
||||
else
|
||||
mc.clearCursors()
|
||||
end
|
||||
end)
|
||||
end)
|
||||
|
||||
-- Customize how cursors look.
|
||||
local hl = vim.api.nvim_set_hl
|
||||
hl(0, "MultiCursorCursor", { reverse = true })
|
||||
hl(0, "MultiCursorVisual", { link = "Visual" })
|
||||
hl(0, "MultiCursorSign", { link = "SignColumn" })
|
||||
hl(0, "MultiCursorMatchPreview", { link = "Search" })
|
||||
hl(0, "MultiCursorDisabledCursor", { reverse = true })
|
||||
hl(0, "MultiCursorDisabledVisual", { link = "Visual" })
|
||||
hl(0, "MultiCursorDisabledSign", { link = "SignColumn" })
|
||||
else
|
||||
print("plugin multicursor-nvim missing")
|
||||
end
|
||||
9
nvim/.config/nvim/lua/plugins/nvim-various-textobjs.lua
Normal file
9
nvim/.config/nvim/lua/plugins/nvim-various-textobjs.lua
Normal file
@@ -0,0 +1,9 @@
|
||||
vim.pack.add({ "https://github.com/chrisgrieser/nvim-various-textobjs" })
|
||||
|
||||
local ok, vto = pcall(require, "various-textobjs")
|
||||
if ok then
|
||||
vto.setup({ keymaps = { useDefaults = true, diabledDefaults = { 'r' } } })
|
||||
vim.keymap.set({ 'o', 'x' }, ' }', vto.restOfParagraph)
|
||||
else
|
||||
print("plugin nvim-various-textobjs missing")
|
||||
end
|
||||
10
nvim/.config/nvim/lua/plugins/oil.lua
Normal file
10
nvim/.config/nvim/lua/plugins/oil.lua
Normal file
@@ -0,0 +1,10 @@
|
||||
vim.pack.add({ "https://github.com/stevearc/oil.nvim" })
|
||||
|
||||
local ok, oil = pcall(require, "oil")
|
||||
if ok then
|
||||
oil.setup()
|
||||
else
|
||||
print("plugin oil missing")
|
||||
end
|
||||
|
||||
vim.keymap.set("n", "<leader>-", "<cmd>Oil<cr>", { desc = "Oil file manager" })
|
||||
@@ -1,17 +0,0 @@
|
||||
return {
|
||||
"olimorris/persisted.nvim",
|
||||
lazy = false, -- make sure the plugin is always loaded at startup
|
||||
opts = {
|
||||
autoload = true,
|
||||
ignored_dirs = {
|
||||
"~/.config",
|
||||
"~/tmp",
|
||||
"/tmp",
|
||||
{ "~", exact = true },
|
||||
{ "/", exact = true },
|
||||
},
|
||||
},
|
||||
keys = {
|
||||
{ "<leader>sp", "<cmd>:Telescope persisted<cr>", desc = "Search [P]ersisted" },
|
||||
},
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
return {
|
||||
'stevearc/quicker.nvim',
|
||||
event = "FileType qf",
|
||||
---@module "quicker"
|
||||
---@type quicker.SetupOptions
|
||||
opts = {},
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
local function rabbit_select(n)
|
||||
require('rabbit').Switch('harpoon').func.select(n)
|
||||
end
|
||||
|
||||
return {
|
||||
'VoxelPrismatic/rabbit.nvim',
|
||||
event = 'VeryLazy',
|
||||
opts = {
|
||||
window = {
|
||||
float = 'center',
|
||||
plugin_name_position = 'title',
|
||||
},
|
||||
default_keys = {
|
||||
open = { '-', '<leader>;' },
|
||||
},
|
||||
plugin_opts = {
|
||||
history = { switch = ';' },
|
||||
harpoon = { switch = 'f' },
|
||||
},
|
||||
colors = {
|
||||
file = '#EBCB8B',
|
||||
},
|
||||
},
|
||||
keys = {
|
||||
{ '<leader>1', function() rabbit_select(1) end },
|
||||
{ '<leader>2', function() rabbit_select(2) end },
|
||||
{ '<leader>3', function() rabbit_select(3) end },
|
||||
{ '<leader>4', function() rabbit_select(4) end },
|
||||
{ '<leader>5', function() rabbit_select(5) end },
|
||||
{ '<leader>6', function() rabbit_select(6) end },
|
||||
{ '<leader>7', function() rabbit_select(7) end },
|
||||
{ '<leader>8', function() rabbit_select(8) end },
|
||||
{ '<leader>9', function() rabbit_select(9) end },
|
||||
{ '<leader>0', function() rabbit_select(10) end },
|
||||
},
|
||||
}
|
||||
8
nvim/.config/nvim/lua/plugins/slimline.lua
Normal file
8
nvim/.config/nvim/lua/plugins/slimline.lua
Normal file
@@ -0,0 +1,8 @@
|
||||
vim.pack.add({ "https://github.com/sschleemilch/slimline.nvim" })
|
||||
|
||||
local ok, slimline = pcall(require, "slimline")
|
||||
if ok then
|
||||
slimline.setup()
|
||||
else
|
||||
print("plugin slimline missing")
|
||||
end
|
||||
98
nvim/.config/nvim/lua/plugins/snacks.lua
Normal file
98
nvim/.config/nvim/lua/plugins/snacks.lua
Normal file
@@ -0,0 +1,98 @@
|
||||
vim.pack.add({ "https://github.com/folke/snacks.nvim" })
|
||||
|
||||
local ok, snacks = pcall(require, "snacks")
|
||||
if ok then
|
||||
snacks.setup({
|
||||
picker = { enabled = false },
|
||||
})
|
||||
else
|
||||
print("plugin snacks missing")
|
||||
end
|
||||
|
||||
local set = vim.keymap.set
|
||||
|
||||
set("n", "<leader>ea", function()
|
||||
Snacks.explorer()
|
||||
end, { desc = "File Explorer" })
|
||||
|
||||
set("n", "<leader>gl", function()
|
||||
Snacks.picker.git_log_line()
|
||||
end, { desc = "Git Log Line" })
|
||||
|
||||
set({ "n", "v" }, "<leader>gx", function()
|
||||
Snacks.gitbrowse()
|
||||
end, { desc = "Git Browse" })
|
||||
|
||||
set("n", "<leader>xR", function()
|
||||
Snacks.picker.resume()
|
||||
end, { desc = "Resume" })
|
||||
|
||||
set("n", "<leader>n", function()
|
||||
Snacks.notifier.show_history()
|
||||
end, { desc = "Notification History" })
|
||||
|
||||
set("n", "<leader>N", function()
|
||||
Snacks.picker.notifications()
|
||||
end, { desc = "Notifications" })
|
||||
|
||||
set("n", "<leader>$", function()
|
||||
Snacks.rename.rename_file()
|
||||
end, { desc = "Rename File" })
|
||||
|
||||
set("n", "<leader>z", function()
|
||||
Snacks.zen.zoom()
|
||||
end, { desc = "Toggle Zoom" })
|
||||
|
||||
set("n", "<leader>.", function()
|
||||
Snacks.scratch()
|
||||
end, { desc = "Toggle Scratch Buffer" })
|
||||
|
||||
set("n", "<leader>x.", function()
|
||||
Snacks.scratch.select()
|
||||
end, { desc = "Select Scratch Buffer" })
|
||||
|
||||
-- Terminal
|
||||
|
||||
set({ "n", "t" }, "<c-/>", function()
|
||||
Snacks.terminal()
|
||||
end, { desc = "Toggle Terminal" })
|
||||
|
||||
set({ "n", "t" }, "<c-_>", function()
|
||||
Snacks.terminal()
|
||||
end, { desc = "which_key_ignore" })
|
||||
|
||||
vim.api.nvim_create_autocmd("VimEnter", {
|
||||
callback = function()
|
||||
-- Setup some globals for debugging (lazy-loaded)
|
||||
_G.dd = function(...)
|
||||
Snacks.debug.inspect(...)
|
||||
end
|
||||
_G.bt = function()
|
||||
Snacks.debug.backtrace()
|
||||
end
|
||||
|
||||
-- Override print to use snacks for `:=` command
|
||||
if vim.fn.has("nvim-0.11") == 1 then
|
||||
vim._print = function(_, ...)
|
||||
dd(...)
|
||||
end
|
||||
else
|
||||
vim.print = _G.dd
|
||||
end
|
||||
|
||||
-- Create some toggle mappings
|
||||
Snacks.toggle.option("spell", { name = "Spelling" }):map("<leader>us")
|
||||
Snacks.toggle.option("wrap", { name = "Wrap" }):map("<leader>uw")
|
||||
Snacks.toggle.option("relativenumber", { name = "Relative Number" }):map("<leader>uL")
|
||||
Snacks.toggle.diagnostics():map("<leader>ud")
|
||||
Snacks.toggle.line_number():map("<leader>ul")
|
||||
Snacks.toggle
|
||||
.option("conceallevel", { off = 0, on = vim.o.conceallevel > 0 and vim.o.conceallevel or 2 })
|
||||
:map("<leader>uc")
|
||||
Snacks.toggle.treesitter():map("<leader>uT")
|
||||
Snacks.toggle.option("background", { off = "light", on = "dark", name = "Dark Background" }):map("<leader>ub")
|
||||
Snacks.toggle.inlay_hints():map("<leader>uh")
|
||||
Snacks.toggle.indent():map("<leader>ug")
|
||||
Snacks.toggle.dim():map("<leader>uD")
|
||||
end,
|
||||
})
|
||||
@@ -1,17 +0,0 @@
|
||||
return {
|
||||
'kristijanhusak/vim-dadbod-ui',
|
||||
dependencies = {
|
||||
{ 'tpope/vim-dadbod', lazy = true },
|
||||
{ 'kristijanhusak/vim-dadbod-completion', ft = { 'sql', 'mysql', 'plsql' }, lazy = true },
|
||||
},
|
||||
cmd = {
|
||||
'DBUI',
|
||||
'DBUIToggle',
|
||||
'DBUIAddConnection',
|
||||
'DBUIFindBuffer',
|
||||
},
|
||||
init = function()
|
||||
-- Your DBUI configuration
|
||||
vim.g.db_ui_use_nerd_fonts = 1
|
||||
end,
|
||||
}
|
||||
13
nvim/.config/nvim/lua/plugins/surround.lua
Normal file
13
nvim/.config/nvim/lua/plugins/surround.lua
Normal file
@@ -0,0 +1,13 @@
|
||||
vim.pack.add({
|
||||
{
|
||||
src = "https://github.com/kylechui/nvim-surround",
|
||||
version = vim.version.range("^4.0.0"),
|
||||
},
|
||||
})
|
||||
|
||||
local ok, surround = pcall(require, "nvim-surround")
|
||||
if ok then
|
||||
surround.setup()
|
||||
else
|
||||
print("plugin surround missing")
|
||||
end
|
||||
@@ -1,5 +0,0 @@
|
||||
return {
|
||||
'fredeeb/tardis.nvim',
|
||||
dependencies = { 'nvim-lua/plenary.nvim' },
|
||||
config = true,
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
local function get_tab_idx(tab_id)
|
||||
for i, tabnr in ipairs(vim.api.nvim_list_tabpages()) do
|
||||
if tabnr == tab_id then
|
||||
return i
|
||||
end
|
||||
end
|
||||
return -1
|
||||
end
|
||||
|
||||
return {
|
||||
'LukasPietzschmann/telescope-tabs',
|
||||
dependencies = { 'nvim-telescope/telescope.nvim' },
|
||||
lazy = true,
|
||||
config = function()
|
||||
require 'telescope-tabs'.setup {
|
||||
entry_formatter = function(tab_id, buffer_ids, file_names, file_paths, is_current)
|
||||
local cwd = vim.fn.getcwd(-1, get_tab_idx(tab_id))
|
||||
local entry_string = table.concat(file_names, ', ')
|
||||
return string.format('%d: %s %s%s', tab_id, cwd, entry_string, is_current and ' <' or '')
|
||||
end,
|
||||
entry_ordinal = function(tab_id, buffer_ids, file_names, file_paths, is_current)
|
||||
local cwd = vim.fn.getcwd(-1, get_tab_idx(tab_id))
|
||||
local entry_string = table.concat(file_names, ', ')
|
||||
return string.format('%s %s', cwd, entry_string)
|
||||
end,
|
||||
}
|
||||
end
|
||||
}
|
||||
@@ -1,102 +0,0 @@
|
||||
return {
|
||||
{ -- Fuzzy Finder (files, lsp, etc)
|
||||
'nvim-telescope/telescope.nvim',
|
||||
event = 'VimEnter',
|
||||
branch = '0.1.x',
|
||||
dependencies = {
|
||||
'nvim-lua/plenary.nvim',
|
||||
{ -- If encountering errors, see telescope-fzf-native README for install instructions
|
||||
'nvim-telescope/telescope-fzf-native.nvim',
|
||||
build = 'make',
|
||||
cond = function()
|
||||
return vim.fn.executable 'make' == 1
|
||||
end,
|
||||
},
|
||||
{ 'nvim-telescope/telescope-ui-select.nvim' },
|
||||
|
||||
|
||||
-- change directory with telescope from a list of directories
|
||||
{
|
||||
"SalOrak/whaler",
|
||||
opts = {
|
||||
directories = { "/home/lupan/src" },
|
||||
oneoff_directories = { "/home/lupan/dotfiles" },
|
||||
auto_file_explorer = false,
|
||||
auto_cwd = true,
|
||||
}
|
||||
},
|
||||
|
||||
-- Icons, requires Nerd font.
|
||||
{ 'nvim-tree/nvim-web-devicons' },
|
||||
|
||||
'davvid/telescope-git-grep.nvim',
|
||||
},
|
||||
config = function()
|
||||
local telescope = require 'telescope'
|
||||
-- To list available key bindings inside given telescope picker:
|
||||
-- - Insert mode: <c-/>
|
||||
-- - Normal mode: ?
|
||||
telescope.setup {
|
||||
extensions = {
|
||||
['ui-select'] = {
|
||||
require('telescope.themes').get_dropdown(),
|
||||
},
|
||||
whaler = {
|
||||
directories = { "/home/lupan/src" },
|
||||
oneoff_directories = { "/home/lupan/dotfiles" },
|
||||
auto_file_explorer = false,
|
||||
auto_cwd = true,
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
pcall(telescope.load_extension, 'fzf')
|
||||
pcall(telescope.load_extension, 'ui-select')
|
||||
pcall(telescope.load_extension, 'whaler')
|
||||
pcall(telescope.load_extension, 'git_grep')
|
||||
pcall(telescope.load_extension, 'persisted')
|
||||
|
||||
-- See `:help telescope.builtin`
|
||||
local builtin = require 'telescope.builtin'
|
||||
vim.keymap.set('n', '<leader>sh', builtin.help_tags, { desc = '[S]earch [H]elp' })
|
||||
vim.keymap.set('n', '<leader>sk', builtin.keymaps, { desc = '[S]earch [K]eymaps' })
|
||||
vim.keymap.set('n', '<leader>sf', builtin.find_files, { desc = '[S]earch [F]iles' })
|
||||
vim.keymap.set('n', '<leader>ss', builtin.builtin, { desc = '[S]earch [S]elect Telescope' })
|
||||
vim.keymap.set('n', '<leader>sw', builtin.grep_string, { desc = '[S]earch current [W]ord' })
|
||||
vim.keymap.set('n', '<leader>sg', builtin.live_grep, { desc = '[S]earch by [G]rep' })
|
||||
vim.keymap.set('n', '<leader>sd', builtin.diagnostics, { desc = '[S]earch [D]iagnostics' })
|
||||
vim.keymap.set('n', '<leader>sr', builtin.resume, { desc = '[S]earch [R]esume' })
|
||||
vim.keymap.set('n', '<leader>s.', builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' })
|
||||
vim.keymap.set('n', '<leader><leader>', builtin.buffers, { desc = '[ ] Find existing buffers' })
|
||||
vim.keymap.set('n', '<leader>sF', function() builtin.find_files { hidden = true } end,
|
||||
{ desc = '[S]earch [F]iles (with hidden)' })
|
||||
vim.keymap.set('n', '<leader>sl', function() telescope.extensions.whaler.whaler() end,
|
||||
{ desc = '[S]earch with wha[L]er' })
|
||||
vim.keymap.set('n', '<leader>gf', builtin.git_files, { desc = '[G]it [F]iles' })
|
||||
vim.keymap.set('n', '<leader>gs', builtin.git_status, { desc = '[G]it [S]tatus' })
|
||||
vim.keymap.set('n', '<leader>gg', function() telescope.extensions.git_grep.live_grep() end,
|
||||
{ desc = '[G]it [g]rep' })
|
||||
vim.keymap.set('n', '<leader>gw', function() telescope.extensions.git_grep.grep() end,
|
||||
{ desc = '[G]it grep current [W]ord' })
|
||||
|
||||
vim.keymap.set('n', '<leader>/', function()
|
||||
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', '<leader>s/', function()
|
||||
builtin.live_grep {
|
||||
grep_open_files = true,
|
||||
prompt_title = 'Live Grep in Open Files',
|
||||
}
|
||||
end, { desc = '[S]earch [/] in Open Files' })
|
||||
|
||||
vim.keymap.set('n', '<leader>sn', function()
|
||||
builtin.find_files { cwd = vim.fn.stdpath 'config' }
|
||||
end, { desc = '[S]earch [N]eovim files' })
|
||||
end,
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
return {
|
||||
{
|
||||
'aserowy/tmux.nvim',
|
||||
opts = {
|
||||
navigation = {
|
||||
enable_default_keybindings = false,
|
||||
},
|
||||
resize = {
|
||||
enable_default_keybindings = false,
|
||||
},
|
||||
},
|
||||
keys = {
|
||||
{ '<M-h>', [[<cmd>lua require("tmux").move_left()<cr>]] },
|
||||
{ '<M-j>', [[<cmd>lua require("tmux").move_bottom()<cr>]] },
|
||||
{ '<M-k>', [[<cmd>lua require("tmux").move_top()<cr>]] },
|
||||
{ '<M-l>', [[<cmd>lua require("tmux").move_right()<cr>]] },
|
||||
{ '<M-n>', [[<cmd>lua require("tmux").next_window()<cr>]] },
|
||||
{ '<M-p>', [[<cmd>lua require("tmux").previous_window()<cr>]] },
|
||||
{ '<M-H>', [[<cmd>lua require("tmux").resize_left()<cr>]] },
|
||||
{ '<M-J>', [[<cmd>lua require("tmux").resize_bottom()<cr>]] },
|
||||
{ '<M-K>', [[<cmd>lua require("tmux").resize_top()<cr>]] },
|
||||
{ '<M-L>', [[<cmd>lua require("tmux").resize_right()<cr>]] },
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
return {
|
||||
'akinsho/toggleterm.nvim',
|
||||
version = '*',
|
||||
config = true,
|
||||
keys = {
|
||||
{ '<F2>', '<cmd>ToggleTerm size=25<CR>', mode = { 'n', 'i', 't', }, },
|
||||
{ '<C-w>', [[<C-\><C-n><C-w>]], mode = 't' },
|
||||
}
|
||||
}
|
||||
@@ -1,95 +1,148 @@
|
||||
return {
|
||||
-- run ":TSUpdate" after plugin update
|
||||
-- If hooks need to run on install, run this before `vim.pack.add()`
|
||||
vim.api.nvim_create_autocmd("PackChanged", {
|
||||
group = vim.api.nvim_create_augroup("nvim-treesitter-update", { clear = true }),
|
||||
callback = function(ev)
|
||||
local name, kind = ev.data.spec.name, ev.data.kind
|
||||
if name == "nvim-treesitter" and kind == "update" then
|
||||
if not ev.data.active then
|
||||
vim.cmd.packadd("nvim-treesitter")
|
||||
end
|
||||
vim.cmd("TSUpdate")
|
||||
print("TSUpdate done.")
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
{ -- Highlight, edit, and navigate code
|
||||
'nvim-treesitter/nvim-treesitter',
|
||||
dependencies = {
|
||||
'nvim-treesitter/nvim-treesitter-textobjects',
|
||||
'nvim-orgmode/orgmode', -- as configured together
|
||||
'vrischmann/tree-sitter-templ',
|
||||
"nushell/tree-sitter-nu", -- additional parser
|
||||
},
|
||||
build = ':TSUpdate',
|
||||
config = function()
|
||||
-- See `:help nvim-treesitter`
|
||||
local org = require('orgmode')
|
||||
vim.pack.add({
|
||||
{ src = "https://github.com/nvim-treesitter/nvim-treesitter-textobjects", version = "main" },
|
||||
{ src = "https://github.com/nvim-treesitter/nvim-treesitter", version = "main" },
|
||||
})
|
||||
local ok = pcall(require, "nvim-treesitter")
|
||||
if ok then
|
||||
vim.api.nvim_create_autocmd('FileType', {
|
||||
pattern = { 'odin', 'go' },
|
||||
callback = function() vim.treesitter.start() end,
|
||||
})
|
||||
else
|
||||
print("plugin nvim-treesitter.configs missing")
|
||||
end
|
||||
|
||||
---@diagnostic disable-next-line: missing-fields
|
||||
require('nvim-treesitter.configs').setup {
|
||||
ensure_installed = { 'c', 'cpp', 'go', 'haskell', 'lua', 'python', 'rust', 'tsx', 'templ', 'typescript', 'vimdoc', 'vim' },
|
||||
auto_install = false,
|
||||
highlight = {
|
||||
enable = true,
|
||||
additional_vim_regex_highlighting = { 'org' },
|
||||
},
|
||||
indent = { enable = true },
|
||||
incremental_selection = {
|
||||
enable = true,
|
||||
keymaps = {
|
||||
init_selection = '<c-space>',
|
||||
node_incremental = '<c-space>',
|
||||
scope_incremental = '<c-s>',
|
||||
node_decremental = '<C-p>',
|
||||
},
|
||||
},
|
||||
textobjects = {
|
||||
select = {
|
||||
enable = true,
|
||||
lookahead = true,
|
||||
keymaps = {
|
||||
['aa'] = '@parameter.outer',
|
||||
['ia'] = '@parameter.inner',
|
||||
['af'] = '@function.outer',
|
||||
['if'] = '@function.inner',
|
||||
['ac'] = '@class.outer',
|
||||
['ic'] = '@class.inner',
|
||||
['al'] = '@call.outer',
|
||||
['il'] = '@call.inner',
|
||||
['ao'] = '@loop.outer',
|
||||
['io'] = '@loop.inner',
|
||||
['ad'] = '@conditional.outer',
|
||||
['id'] = '@conditional.inner',
|
||||
['ar'] = '@return.outer',
|
||||
['ir'] = '@return.inner',
|
||||
['as'] = '@statement.outer',
|
||||
['ag'] = '@assignment.outer',
|
||||
['ig'] = '@assignment.inner',
|
||||
},
|
||||
},
|
||||
move = {
|
||||
enable = true,
|
||||
set_jumps = true,
|
||||
goto_next_start = {
|
||||
[']m'] = '@function.outer',
|
||||
[']]'] = '@class.outer',
|
||||
},
|
||||
goto_next_end = {
|
||||
[']M'] = '@function.outer',
|
||||
[']['] = '@class.outer',
|
||||
},
|
||||
goto_previous_start = {
|
||||
['[m'] = '@function.outer',
|
||||
['[['] = '@class.outer',
|
||||
},
|
||||
goto_previous_end = {
|
||||
['[M'] = '@function.outer',
|
||||
['[]'] = '@class.outer',
|
||||
},
|
||||
},
|
||||
swap = {
|
||||
enable = true,
|
||||
swap_next = {
|
||||
['<leader>a'] = '@parameter.inner',
|
||||
},
|
||||
swap_previous = {
|
||||
['<leader>A'] = '@parameter.inner',
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
org.setup({
|
||||
org_agenda_files = { '~/org/*.org' },
|
||||
org_default_notes_file = '~/org/capture.org',
|
||||
})
|
||||
end,
|
||||
}
|
||||
}
|
||||
local textobjects
|
||||
ok, textobjects = pcall(require, "nvim-treesitter-textobjects")
|
||||
if ok then
|
||||
textobjects.setup {
|
||||
move = {
|
||||
set_jumps = true,
|
||||
},
|
||||
select = {
|
||||
-- Automatically jump forward to textobj, similar to targets.vim
|
||||
lookahead = true,
|
||||
-- You can choose the select mode (default is charwise 'v')
|
||||
--
|
||||
-- Can also be a function which gets passed a table with the keys
|
||||
-- * query_string: eg '@function.inner'
|
||||
-- * method: eg 'v' or 'o'
|
||||
-- and should return the mode ('v', 'V', or '<c-v>') or a table
|
||||
-- mapping query_strings to modes.
|
||||
selection_modes = {
|
||||
['@parameter.outer'] = 'v', -- charwise
|
||||
['@function.outer'] = 'V', -- linewise
|
||||
-- ['@class.outer'] = '<c-v>', -- blockwise
|
||||
},
|
||||
-- If you set this to `true` (default is `false`) then any textobject is
|
||||
-- extended to include preceding or succeeding whitespace. Succeeding
|
||||
-- whitespace has priority in order to act similarly to eg the built-in
|
||||
-- `ap`.
|
||||
--
|
||||
-- Can also be a function which gets passed a table with the keys
|
||||
-- * query_string: eg '@function.inner'
|
||||
-- * selection_mode: eg 'v'
|
||||
-- and should return true of false
|
||||
include_surrounding_whitespace = false,
|
||||
},
|
||||
}
|
||||
local function key_select(key, object)
|
||||
vim.keymap.set({ "x", "o" }, key, function()
|
||||
require "nvim-treesitter-textobjects.select".select_textobject(object, "textobjects")
|
||||
end)
|
||||
end
|
||||
key_select("aa", "@parameter.outer")
|
||||
key_select("ia", "@parameter.inner")
|
||||
key_select("af", "@function.outer")
|
||||
key_select("if", "@function.inner")
|
||||
key_select("ac", "@class.outer")
|
||||
key_select("ic", "@class.inner")
|
||||
key_select("al", "@call.outer")
|
||||
key_select("il", "@call.inner")
|
||||
key_select("ao", "@loop.outer")
|
||||
key_select("io", "@loop.inner")
|
||||
key_select("ad", "@conditional.outer")
|
||||
key_select("id", "@conditional.inner")
|
||||
key_select("ar", "@return.outer")
|
||||
key_select("ir", "@return.inner")
|
||||
key_select("as", "@statement.outer")
|
||||
key_select("ag", "@assignment.outer")
|
||||
key_select("ig", "@assignment.inner")
|
||||
|
||||
vim.keymap.set({ "x", "o" }, "ax", function()
|
||||
require "nvim-treesitter-textobjects.select".select_textobject("@local.scope", "locals")
|
||||
end)
|
||||
vim.keymap.set("n", "<leader>cp", function()
|
||||
require("nvim-treesitter-textobjects.swap").swap_next "@parameter.inner"
|
||||
end)
|
||||
vim.keymap.set("n", "<leader>cP", function()
|
||||
require("nvim-treesitter-textobjects.swap").swap_previous "@parameter.inner"
|
||||
end)
|
||||
|
||||
vim.keymap.set({ "n", "x", "o" }, "]m", function()
|
||||
require("nvim-treesitter-textobjects.move").goto_next_start("@function.outer", "textobjects")
|
||||
end)
|
||||
vim.keymap.set({ "n", "x", "o" }, "]]", function()
|
||||
require("nvim-treesitter-textobjects.move").goto_next_start("@class.outer", "textobjects")
|
||||
end)
|
||||
-- You can also pass a list to group multiple queries.
|
||||
vim.keymap.set({ "n", "x", "o" }, "]o", function()
|
||||
require("nvim-treesitter-textobjects.move").goto_next_start({ "@loop.inner", "@loop.outer" },
|
||||
"textobjects")
|
||||
end)
|
||||
-- You can also use captures from other query groups like `locals.scm` or `folds.scm`
|
||||
vim.keymap.set({ "n", "x", "o" }, "]s", function()
|
||||
require("nvim-treesitter-textobjects.move").goto_next_start("@local.scope", "locals")
|
||||
end)
|
||||
vim.keymap.set({ "n", "x", "o" }, "]z", function()
|
||||
require("nvim-treesitter-textobjects.move").goto_next_start("@fold", "folds")
|
||||
end)
|
||||
|
||||
vim.keymap.set({ "n", "x", "o" }, "]M", function()
|
||||
require("nvim-treesitter-textobjects.move").goto_next_end("@function.outer", "textobjects")
|
||||
end)
|
||||
vim.keymap.set({ "n", "x", "o" }, "][", function()
|
||||
require("nvim-treesitter-textobjects.move").goto_next_end("@class.outer", "textobjects")
|
||||
end)
|
||||
|
||||
vim.keymap.set({ "n", "x", "o" }, "[m", function()
|
||||
require("nvim-treesitter-textobjects.move").goto_previous_start("@function.outer", "textobjects")
|
||||
end)
|
||||
vim.keymap.set({ "n", "x", "o" }, "[[", function()
|
||||
require("nvim-treesitter-textobjects.move").goto_previous_start("@class.outer", "textobjects")
|
||||
end)
|
||||
|
||||
vim.keymap.set({ "n", "x", "o" }, "[M", function()
|
||||
require("nvim-treesitter-textobjects.move").goto_previous_end("@function.outer", "textobjects")
|
||||
end)
|
||||
vim.keymap.set({ "n", "x", "o" }, "[]", function()
|
||||
require("nvim-treesitter-textobjects.move").goto_previous_end("@class.outer", "textobjects")
|
||||
end)
|
||||
|
||||
-- Go to either the start or the end, whichever is closer.
|
||||
-- Use if you want more granular movements
|
||||
vim.keymap.set({ "n", "x", "o" }, "]d", function()
|
||||
require("nvim-treesitter-textobjects.move").goto_next("@conditional.outer", "textobjects")
|
||||
end)
|
||||
vim.keymap.set({ "n", "x", "o" }, "[d", function()
|
||||
require("nvim-treesitter-textobjects.move").goto_previous("@conditional.outer", "textobjects")
|
||||
end)
|
||||
else
|
||||
print("plugin nvim-treesitter-textobjects missing")
|
||||
end
|
||||
|
||||
8
nvim/.config/nvim/lua/plugins/which-key.lua
Normal file
8
nvim/.config/nvim/lua/plugins/which-key.lua
Normal file
@@ -0,0 +1,8 @@
|
||||
vim.pack.add({ "https://github.com/folke/which-key.nvim" })
|
||||
|
||||
local ok, whichkey = pcall(require, "which-key")
|
||||
if ok then
|
||||
whichkey.setup({ preset = "helix", delay = 1000 })
|
||||
else
|
||||
print("plugin whichkey missing")
|
||||
end
|
||||
@@ -1,12 +0,0 @@
|
||||
return {
|
||||
"ptdewey/yankbank-nvim",
|
||||
dependencies = "kkharji/sqlite.lua",
|
||||
config = function()
|
||||
require('yankbank').setup({
|
||||
persist_type = "sqlite",
|
||||
})
|
||||
end,
|
||||
keys = {
|
||||
{ "<leader>b", "<cmd>YankBank<CR>", desc = "Yank[B]ank" },
|
||||
},
|
||||
}
|
||||
43
nvim/.config/nvim/lua/snippets/go.lua
Normal file
43
nvim/.config/nvim/lua/snippets/go.lua
Normal file
@@ -0,0 +1,43 @@
|
||||
return {
|
||||
s(
|
||||
"ife",
|
||||
fmt(
|
||||
[[
|
||||
if err != nil {
|
||||
<>
|
||||
}
|
||||
]],
|
||||
{
|
||||
i(0),
|
||||
},
|
||||
{ delimiters = "<>" }
|
||||
)
|
||||
),
|
||||
|
||||
s(
|
||||
"ifse",
|
||||
fmt(
|
||||
[[
|
||||
if <><>err = <>; err != nil {
|
||||
<>
|
||||
}
|
||||
]],
|
||||
{
|
||||
i(1),
|
||||
f(function(args)
|
||||
local a = args[1][1]
|
||||
if string.sub(a, -2) == ", " or a == "" then
|
||||
return ""
|
||||
elseif string.sub(a, -1) == "," then
|
||||
return " "
|
||||
else
|
||||
return ", "
|
||||
end
|
||||
end, { 1 }),
|
||||
i(2),
|
||||
i(0),
|
||||
},
|
||||
{ delimiters = "<>" }
|
||||
)
|
||||
),
|
||||
}
|
||||
101
nvim/.config/nvim/nvim-pack-lock.json
Normal file
101
nvim/.config/nvim/nvim-pack-lock.json
Normal file
@@ -0,0 +1,101 @@
|
||||
{
|
||||
"plugins": {
|
||||
"LuaSnip": {
|
||||
"rev": "642b0c595e11608b4c18219e93b88d7637af27bc",
|
||||
"src": "https://github.com/L3MON4D3/LuaSnip",
|
||||
"version": "2.0.0 - 3.0.0"
|
||||
},
|
||||
"arrow.nvim": {
|
||||
"rev": "6e0f726f55f99332dd726a53effd6813786b6d49",
|
||||
"src": "https://github.com/otavioschwanck/arrow.nvim"
|
||||
},
|
||||
"auto-session": {
|
||||
"rev": "62437532b38495551410b3f377bcf4aaac574ebe",
|
||||
"src": "https://github.com/rmagatti/auto-session"
|
||||
},
|
||||
"conform.nvim": {
|
||||
"rev": "dca1a190aa85f9065979ef35802fb77131911106",
|
||||
"src": "https://github.com/stevearc/conform.nvim"
|
||||
},
|
||||
"flash.nvim": {
|
||||
"rev": "fcea7ff883235d9024dc41e638f164a450c14ca2",
|
||||
"src": "https://github.com/folke/flash.nvim"
|
||||
},
|
||||
"flexoki-neovim": {
|
||||
"rev": "c3e2251e813d29d885a7cbbe9808a7af234d845d",
|
||||
"src": "https://github.com/kepano/flexoki-neovim"
|
||||
},
|
||||
"fzf-lua": {
|
||||
"rev": "2e29d5f233defe3c5587df0e4dd29af2bd95a5a7",
|
||||
"src": "https://github.com/ibhagwan/fzf-lua"
|
||||
},
|
||||
"fzf-lua-frecency.nvim": {
|
||||
"rev": "5726403e132fe8699d670c7ef8d59dbed887b4e6",
|
||||
"src": "https://github.com/elanmed/fzf-lua-frecency.nvim"
|
||||
},
|
||||
"guess-indent.nvim": {
|
||||
"rev": "84a4987ff36798c2fc1169cbaff67960aed9776f",
|
||||
"src": "https://github.com/NMAC427/guess-indent.nvim"
|
||||
},
|
||||
"kanagawa.nvim": {
|
||||
"rev": "8ad3b4cdcc804b332c32db8f9743667e1bb82b99",
|
||||
"src": "https://github.com/rebelot/kanagawa.nvim"
|
||||
},
|
||||
"lush.nvim": {
|
||||
"rev": "9c60ec2279d62487d942ce095e49006af28eed6e",
|
||||
"src": "https://github.com/rktjmp/lush.nvim"
|
||||
},
|
||||
"miasma.nvim": {
|
||||
"rev": "627f2e1cac91de0d1d4dd7472b506a30f41b2b7d",
|
||||
"src": "https://github.com/xero/miasma.nvim"
|
||||
},
|
||||
"multicursor.nvim": {
|
||||
"rev": "704b99f10a72cc05d370cfeb294ff83412a8ab55",
|
||||
"src": "https://github.com/jake-stewart/multicursor.nvim",
|
||||
"version": "'1.0'"
|
||||
},
|
||||
"nightfox.nvim": {
|
||||
"rev": "ba47d4b4c5ec308718641ba7402c143836f35aa9",
|
||||
"src": "https://github.com/EdenEast/nightfox.nvim"
|
||||
},
|
||||
"nvim-surround": {
|
||||
"rev": "61319d4bd1c5e336e197defa15bd104c51f0fb29",
|
||||
"src": "https://github.com/kylechui/nvim-surround",
|
||||
"version": "4.0.0 - 5.0.0"
|
||||
},
|
||||
"nvim-treesitter": {
|
||||
"rev": "4916d6592ede8c07973490d9322f187e07dfefac",
|
||||
"src": "https://github.com/nvim-treesitter/nvim-treesitter",
|
||||
"version": "'main'"
|
||||
},
|
||||
"nvim-treesitter-textobjects": {
|
||||
"rev": "851e865342e5a4cb1ae23d31caf6e991e1c99f1e",
|
||||
"src": "https://github.com/nvim-treesitter/nvim-treesitter-textobjects",
|
||||
"version": "'main'"
|
||||
},
|
||||
"nvim-various-textobjs": {
|
||||
"rev": "ad78e9d925c95d675b32dd7ba6d253f96ce063fe",
|
||||
"src": "https://github.com/chrisgrieser/nvim-various-textobjs"
|
||||
},
|
||||
"oil.nvim": {
|
||||
"rev": "0fcc83805ad11cf714a949c98c605ed717e0b83e",
|
||||
"src": "https://github.com/stevearc/oil.nvim"
|
||||
},
|
||||
"slimline.nvim": {
|
||||
"rev": "6e1387e69e222957ff87e5ddc61470d4e04ac683",
|
||||
"src": "https://github.com/sschleemilch/slimline.nvim"
|
||||
},
|
||||
"snacks.nvim": {
|
||||
"rev": "ad9ede6a9cddf16cedbd31b8932d6dcdee9b716e",
|
||||
"src": "https://github.com/folke/snacks.nvim"
|
||||
},
|
||||
"which-key.nvim": {
|
||||
"rev": "3aab2147e74890957785941f0c1ad87d0a44c15a",
|
||||
"src": "https://github.com/folke/which-key.nvim"
|
||||
},
|
||||
"zenbones.nvim": {
|
||||
"rev": "22b7fb75593412e0dc81b4bdefae718e9e84aa82",
|
||||
"src": "https://github.com/zenbones-theme/zenbones.nvim"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
return {
|
||||
s("tr", { t "i18n.T(ctx, \"", i(1), t "\")" })
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
return {
|
||||
s("ct", t "-- TODO: ")
|
||||
}
|
||||
5
oxwm/.config/oxwm/.luarc.json
Normal file
5
oxwm/.config/oxwm/.luarc.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"workspace.library" : [
|
||||
"/usr/local/share/oxwm"
|
||||
]
|
||||
}
|
||||
321
oxwm/.config/oxwm/config.lua
Normal file
321
oxwm/.config/oxwm/config.lua
Normal file
@@ -0,0 +1,321 @@
|
||||
---@meta
|
||||
|
||||
---Load type definitions for LSP
|
||||
---@module 'oxwm'
|
||||
|
||||
-- Modifier key: "Mod4" is the Super/Windows key, "Mod1" is Alt
|
||||
local modkey = "Mod4"
|
||||
|
||||
-- Terminal emulator command (defaults to alacritty)
|
||||
local terminal = "st"
|
||||
|
||||
local colors
|
||||
local f = io.open(os.getenv("HOME") .. "/.lightmode")
|
||||
if f ~= nil then
|
||||
io.close(f)
|
||||
colors = require("light")
|
||||
else
|
||||
colors = require("dark")
|
||||
end
|
||||
os.execute("hsetroot -solid '" .. colors.bg .. "'")
|
||||
|
||||
-- Workspace tags - can be numbers, names, or icons (requires a Nerd Font)
|
||||
local tags = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }
|
||||
|
||||
-- Font for the status bar (use "fc-list" to see available fonts)
|
||||
local bar_font = "monospace:style=Bold:size=10"
|
||||
|
||||
-- Define your blocks
|
||||
-- Similar to widgets in qtile, or dwmblocks
|
||||
local blocks = {
|
||||
oxwm.bar.block.ram({
|
||||
format = "Ram: {used}/{total} GB",
|
||||
interval = 5,
|
||||
color = colors.light_blue,
|
||||
underline = false,
|
||||
}),
|
||||
oxwm.bar.block.static({
|
||||
text = " │ ",
|
||||
interval = 999999999,
|
||||
color = colors.lavender,
|
||||
underline = false,
|
||||
}),
|
||||
oxwm.bar.block.shell({
|
||||
format = "{}",
|
||||
command = "uname -r",
|
||||
interval = 999999999,
|
||||
color = colors.red,
|
||||
underline = false,
|
||||
}),
|
||||
-- oxwm.bar.block.static({
|
||||
-- text = " │ ",
|
||||
-- interval = 999999999,
|
||||
-- color = colors.lavender,
|
||||
-- underline = false,
|
||||
-- }),
|
||||
-- oxwm.bar.block.battery({
|
||||
-- format = "Bat: {}%",
|
||||
-- charging = "⚡ Bat: {}%",
|
||||
-- discharging = "- Bat: {}%",
|
||||
-- full = "✓ Bat: {}%",
|
||||
-- interval = 30,
|
||||
-- color = colors.green,
|
||||
-- underline = false,
|
||||
-- }),
|
||||
oxwm.bar.block.static({
|
||||
text = " │ ",
|
||||
interval = 999999999,
|
||||
color = colors.lavender,
|
||||
underline = false,
|
||||
}),
|
||||
oxwm.bar.block.datetime({
|
||||
format = "{}",
|
||||
date_format = "%a, %b %d - %H:%M",
|
||||
interval = 1,
|
||||
color = colors.cyan,
|
||||
underline = false,
|
||||
}),
|
||||
}
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
-- Basic Settings
|
||||
-------------------------------------------------------------------------------
|
||||
oxwm.set_terminal(terminal)
|
||||
oxwm.set_modkey(modkey) -- This is for Mod + mouse binds, such as drag/resize
|
||||
oxwm.set_tags(tags)
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
-- Layouts
|
||||
-------------------------------------------------------------------------------
|
||||
-- Set custom symbols for layouts (displayed in the status bar)
|
||||
-- Available layouts: "tiling", "normie" (floating), "grid", "monocle", "tabbed"
|
||||
oxwm.set_layout_symbol("tiling", "[T]")
|
||||
oxwm.set_layout_symbol("normie", "[F]")
|
||||
oxwm.set_layout_symbol("tabbed", "[=]")
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
-- Appearance
|
||||
-------------------------------------------------------------------------------
|
||||
-- Border configuration
|
||||
|
||||
-- Width in pixels
|
||||
oxwm.border.set_width(3)
|
||||
-- Color of focused window border
|
||||
oxwm.border.set_focused_color(colors.orange)
|
||||
-- Color of unfocused window borders
|
||||
oxwm.border.set_unfocused_color(colors.grey)
|
||||
|
||||
-- Smart Enabled = No border if 1 window
|
||||
oxwm.gaps.set_smart(true)
|
||||
-- Inner gaps (horizontal, vertical) in pixels
|
||||
oxwm.gaps.set_inner(5, 5)
|
||||
-- Outer gaps (horizontal, vertical) in pixels
|
||||
oxwm.gaps.set_outer(5, 5)
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
-- Window Rules
|
||||
-------------------------------------------------------------------------------
|
||||
-- Rules allow you to automatically configure windows based on their properties
|
||||
-- You can match windows by class, instance, title, or role
|
||||
-- Available properties: floating, tag, fullscreen, etc.
|
||||
--
|
||||
-- Common use cases:
|
||||
-- - Force floating for certain applications (dialogs, utilities)
|
||||
-- - Send specific applications to specific workspaces
|
||||
-- - Configure window behavior based on title or class
|
||||
|
||||
-- Examples (uncomment to use):
|
||||
oxwm.rule.add({ instance = "gimp", floating = true })
|
||||
-- oxwm.rule.add({ class = "Alacritty", tag = 9, focus = true })
|
||||
-- oxwm.rule.add({ class = "firefox", title = "Library", floating = true })
|
||||
-- oxwm.rule.add({ class = "firefox", tag = 2 })
|
||||
-- oxwm.rule.add({ instance = "mpv", floating = true })
|
||||
|
||||
-- To find window properties, use xprop and click on the window
|
||||
-- WM_CLASS(STRING) shows both instance and class (instance, class)
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
-- Status Bar Configuration
|
||||
-------------------------------------------------------------------------------
|
||||
-- Font configuration
|
||||
oxwm.bar.set_font(bar_font)
|
||||
|
||||
-- Set your blocks here (defined above)
|
||||
oxwm.bar.set_blocks(blocks)
|
||||
|
||||
-- Bar color schemes (for workspace tag display)
|
||||
-- Parameters: foreground, background, border
|
||||
|
||||
-- Unoccupied tags
|
||||
oxwm.bar.set_scheme_normal(colors.fg, colors.bg, "#444444")
|
||||
-- Occupied tags
|
||||
oxwm.bar.set_scheme_occupied(colors.cyan, colors.bg, colors.cyan)
|
||||
-- Currently selected tag
|
||||
oxwm.bar.set_scheme_selected(colors.orange, colors.bg, colors.orange)
|
||||
-- Urgent tags (windows requesting attention)
|
||||
oxwm.bar.set_scheme_urgent(colors.red, colors.bg, colors.red)
|
||||
|
||||
-- Hide tags that have no windows and are not selected
|
||||
-- oxwm.bar.set_hide_vacant_tags(true)
|
||||
--
|
||||
function shell_quote(s)
|
||||
return '"' .. string.gsub(s, '[$"!`\\]', "\\%1") .. '"'
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
-- Keybindings
|
||||
-------------------------------------------------------------------------------
|
||||
-- Keybindings are defined using oxwm.key.bind(modifiers, key, action)
|
||||
-- Modifiers: {"Mod4"}, {"Mod1"}, {"Shift"}, {"Control"}, or combinations like {"Mod4", "Shift"}
|
||||
-- Keys: Use uppercase for letters (e.g., "Return", "H", "J", "K", "L")
|
||||
-- Actions: Functions that return actions (e.g., oxwm.spawn(), oxwm.client.kill())
|
||||
--
|
||||
-- A list of available keysyms can be found in the X11 keysym definitions.
|
||||
-- Common keys: Return, Space, Tab, Escape, Backspace, Delete, Left, Right, Up, Down
|
||||
|
||||
-- Basic window management
|
||||
|
||||
oxwm.key.bind({ modkey }, "Return", oxwm.spawn_terminal())
|
||||
-- Launch Dmenu
|
||||
oxwm.key.bind(
|
||||
{ modkey },
|
||||
"P",
|
||||
oxwm.spawn({
|
||||
"sh",
|
||||
"-c",
|
||||
"dmenu_run -l 10 -fn " .. shell_quote(bar_font) .. " -nb " .. shell_quote(colors.bg) .. " -nf " .. shell_quote(
|
||||
colors.fg
|
||||
) .. " -sb " .. shell_quote(colors.orange) .. " -sf " .. shell_quote(colors.black),
|
||||
})
|
||||
)
|
||||
-- Copy screenshot to clipboard
|
||||
oxwm.key.bind({ modkey }, "S", oxwm.spawn({ "sh", "-c", "maim -s | xclip -selection clipboard -t image/png" }))
|
||||
oxwm.key.bind({ modkey }, "X", oxwm.client.kill())
|
||||
|
||||
-- Keybind overlay - Shows important keybindings on screen
|
||||
oxwm.key.bind({ modkey, "Shift" }, "Slash", oxwm.show_keybinds())
|
||||
|
||||
-- Window state toggles
|
||||
oxwm.key.bind({ modkey }, "F", oxwm.client.toggle_fullscreen())
|
||||
oxwm.key.bind({ modkey, "Shift" }, "Space", oxwm.client.toggle_floating())
|
||||
|
||||
-- Layout management
|
||||
oxwm.key.bind({ modkey, "Shift" }, "F", oxwm.layout.set("normie"))
|
||||
oxwm.key.bind({ modkey }, "T", oxwm.layout.set("tiling"))
|
||||
oxwm.key.bind({ modkey }, "G", oxwm.layout.set("grid"))
|
||||
oxwm.key.bind({ modkey }, "M", oxwm.layout.set("monocle"))
|
||||
oxwm.key.bind({ modkey }, "B", oxwm.layout.set("tabbed"))
|
||||
oxwm.key.bind({ modkey, "Shift" }, "S", oxwm.layout.set("scrolling"))
|
||||
oxwm.key.bind({ modkey }, "N", oxwm.layout.cycle())
|
||||
|
||||
oxwm.key.bind({ modkey, "Shift" }, "T", oxwm.spawn({ "lupan-set-theme", "toggle" }))
|
||||
|
||||
-- Master area controls (tiling layout)
|
||||
|
||||
-- Decrease/Increase master area width
|
||||
oxwm.key.bind({ modkey }, "H", oxwm.set_master_factor(-5))
|
||||
oxwm.key.bind({ modkey }, "L", oxwm.set_master_factor(5))
|
||||
-- Increment/Decrement number of master windows
|
||||
oxwm.key.bind({ modkey }, "I", oxwm.inc_num_master(1))
|
||||
oxwm.key.bind({ modkey, "Shift" }, "I", oxwm.inc_num_master(-1))
|
||||
|
||||
-- Gaps toggle
|
||||
oxwm.key.bind({ modkey }, "A", oxwm.toggle_gaps())
|
||||
|
||||
-- Window manager controls
|
||||
oxwm.key.bind({ modkey, "Shift" }, "Q", oxwm.quit())
|
||||
oxwm.key.bind({ modkey, "Shift" }, "R", oxwm.restart())
|
||||
|
||||
-- Focus movement [1 for up in the stack, -1 for down]
|
||||
oxwm.key.bind({ modkey }, "J", oxwm.client.focus_stack(1))
|
||||
oxwm.key.bind({ modkey }, "K", oxwm.client.focus_stack(-1))
|
||||
|
||||
-- Window movement (swap position in stack)
|
||||
oxwm.key.bind({ modkey, "Shift" }, "J", oxwm.client.move_stack(1))
|
||||
oxwm.key.bind({ modkey, "Shift" }, "K", oxwm.client.move_stack(-1))
|
||||
|
||||
-- Multi-monitor support
|
||||
|
||||
-- Focus next/previous Monitors
|
||||
oxwm.key.bind({ modkey }, "Comma", oxwm.monitor.focus(-1))
|
||||
oxwm.key.bind({ modkey }, "Period", oxwm.monitor.focus(1))
|
||||
-- Move window to next/previous Monitors
|
||||
oxwm.key.bind({ modkey, "Shift" }, "Comma", oxwm.monitor.tag(-1))
|
||||
oxwm.key.bind({ modkey, "Shift" }, "Period", oxwm.monitor.tag(1))
|
||||
|
||||
-- Workspace (tag) navigation
|
||||
-- Switch to workspace N (tags are 0-indexed, so tag "1" is index 0)
|
||||
oxwm.key.bind({ modkey }, "1", oxwm.tag.view(0))
|
||||
oxwm.key.bind({ modkey }, "2", oxwm.tag.view(1))
|
||||
oxwm.key.bind({ modkey }, "3", oxwm.tag.view(2))
|
||||
oxwm.key.bind({ modkey }, "4", oxwm.tag.view(3))
|
||||
oxwm.key.bind({ modkey }, "5", oxwm.tag.view(4))
|
||||
oxwm.key.bind({ modkey }, "6", oxwm.tag.view(5))
|
||||
oxwm.key.bind({ modkey }, "7", oxwm.tag.view(6))
|
||||
oxwm.key.bind({ modkey }, "8", oxwm.tag.view(7))
|
||||
oxwm.key.bind({ modkey }, "9", oxwm.tag.view(8))
|
||||
|
||||
-- Move focused window to workspace N
|
||||
oxwm.key.bind({ modkey, "Shift" }, "1", oxwm.tag.move_to(0))
|
||||
oxwm.key.bind({ modkey, "Shift" }, "2", oxwm.tag.move_to(1))
|
||||
oxwm.key.bind({ modkey, "Shift" }, "3", oxwm.tag.move_to(2))
|
||||
oxwm.key.bind({ modkey, "Shift" }, "4", oxwm.tag.move_to(3))
|
||||
oxwm.key.bind({ modkey, "Shift" }, "5", oxwm.tag.move_to(4))
|
||||
oxwm.key.bind({ modkey, "Shift" }, "6", oxwm.tag.move_to(5))
|
||||
oxwm.key.bind({ modkey, "Shift" }, "7", oxwm.tag.move_to(6))
|
||||
oxwm.key.bind({ modkey, "Shift" }, "8", oxwm.tag.move_to(7))
|
||||
oxwm.key.bind({ modkey, "Shift" }, "9", oxwm.tag.move_to(8))
|
||||
|
||||
-- Combo view (view multiple tags at once) {argos_nothing}
|
||||
-- Example: Mod+Ctrl+2 while on tag 1 will show BOTH tags 1 and 2
|
||||
oxwm.key.bind({ modkey, "Control" }, "1", oxwm.tag.toggleview(0))
|
||||
oxwm.key.bind({ modkey, "Control" }, "2", oxwm.tag.toggleview(1))
|
||||
oxwm.key.bind({ modkey, "Control" }, "3", oxwm.tag.toggleview(2))
|
||||
oxwm.key.bind({ modkey, "Control" }, "4", oxwm.tag.toggleview(3))
|
||||
oxwm.key.bind({ modkey, "Control" }, "5", oxwm.tag.toggleview(4))
|
||||
oxwm.key.bind({ modkey, "Control" }, "6", oxwm.tag.toggleview(5))
|
||||
oxwm.key.bind({ modkey, "Control" }, "7", oxwm.tag.toggleview(6))
|
||||
oxwm.key.bind({ modkey, "Control" }, "8", oxwm.tag.toggleview(7))
|
||||
oxwm.key.bind({ modkey, "Control" }, "9", oxwm.tag.toggleview(8))
|
||||
|
||||
-- Multi tag (window on multiple tags)
|
||||
-- Example: Mod+Ctrl+Shift+2 puts focused window on BOTH current tag and tag 2
|
||||
oxwm.key.bind({ modkey, "Control", "Shift" }, "1", oxwm.tag.toggletag(0))
|
||||
oxwm.key.bind({ modkey, "Control", "Shift" }, "2", oxwm.tag.toggletag(1))
|
||||
oxwm.key.bind({ modkey, "Control", "Shift" }, "3", oxwm.tag.toggletag(2))
|
||||
oxwm.key.bind({ modkey, "Control", "Shift" }, "4", oxwm.tag.toggletag(3))
|
||||
oxwm.key.bind({ modkey, "Control", "Shift" }, "5", oxwm.tag.toggletag(4))
|
||||
oxwm.key.bind({ modkey, "Control", "Shift" }, "6", oxwm.tag.toggletag(5))
|
||||
oxwm.key.bind({ modkey, "Control", "Shift" }, "7", oxwm.tag.toggletag(6))
|
||||
oxwm.key.bind({ modkey, "Control", "Shift" }, "8", oxwm.tag.toggletag(7))
|
||||
oxwm.key.bind({ modkey, "Control", "Shift" }, "9", oxwm.tag.toggletag(8))
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
-- Advanced: Keychords
|
||||
-------------------------------------------------------------------------------
|
||||
-- Keychords allow you to bind multiple-key sequences (like Emacs or Vim)
|
||||
-- Format: {{modifiers}, key1}, {{modifiers}, key2}, ...
|
||||
-- Example: Press Mod4+Space, then release and press T to spawn a terminal
|
||||
oxwm.key.chord({
|
||||
{ { modkey }, "Space" },
|
||||
{ {}, "T" },
|
||||
}, oxwm.spawn_terminal())
|
||||
oxwm.key.chord({
|
||||
{ { modkey }, "Space" },
|
||||
{ {}, "F" },
|
||||
}, oxwm.spawn({ "firefox" }))
|
||||
oxwm.key.chord({
|
||||
{ { modkey }, "Space" },
|
||||
{ {}, "L" },
|
||||
}, oxwm.spawn({ "slock" }))
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
-- Autostart
|
||||
-------------------------------------------------------------------------------
|
||||
-- Commands to run once when OXWM starts
|
||||
-- Uncomment and modify these examples, or add your own
|
||||
|
||||
-- oxwm.autostart("picom")
|
||||
-- oxwm.autostart("feh --bg-scale ~/wallpaper.jpg")
|
||||
-- oxwm.autostart("dunst")
|
||||
-- oxwm.autostart("nm-applet")
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user