Compare commits

..

1 Commits

Author SHA1 Message Date
ddc98c747c use zsh-vi-plugin 2023-07-26 01:38:31 +02:00
154 changed files with 3425 additions and 10152 deletions

6
.gitignore vendored
View File

@@ -1,14 +1,8 @@
bspwm/.config/bspwm/themes/theme.sh bspwm/.config/bspwm/themes/theme.sh
shell/.config/zsh/plugins/zsh-autosuggestions shell/.config/zsh/plugins/zsh-autosuggestions
shell/.config/zsh/plugins/zsh-syntax-highlighting shell/.config/zsh/plugins/zsh-syntax-highlighting
shell/.config/zsh/plugins/zsh-vi-mode
qtile/.config/qtile/theme.txt qtile/.config/qtile/theme.txt
lupan-clock/lupan-clock lupan-clock/lupan-clock
lupan-clock/stdout-clock
lupan-wm/target lupan-wm/target
*~ *~
__pycache__ __pycache__
/dwm
/st
/vis/.config/vis/plugins/
/tools/.local/bin/

View File

@@ -1,51 +0,0 @@
all:
@echo "run: make clone build install"
clone: dwm st
build: build-dwm build-st build-lupan-clock
install: install-dwm install-st install-lupan-clock install-other
~/.local/share/zap:
mkdir -p ~/.local/share
cd ~/.local/share && \
git clone https://github.com/zap-zsh/zap.git --branch=release-v1
dwm:
git clone https://git.suckless.org/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/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-5 --track lupan.pl/patched-5
build-st:
make -C st
install-st:
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/stow/lupan-clock"
stow -d ~/.local/stow lupan-clock
install-other:
stow -Rv lazygit shell tmux nvim vis xsession

View File

@@ -1,55 +1,54 @@
Lupan's config files Lupan's config files
==================== ====================
Screenshots
-----------
Short answer: [screenshots here](https://lupan.pl/lupan-themes/).
My configuration allows to switch between my 6 themes using a shell
script bound to a key stroke (`super + F6` for switching themes in a
cycle and `super + shift + F6` for selecting one with `dmenu`). The
theme is applied to *bspwm*, *Polybar*, *Alacritty*, *Emacs*, and
*Gtk3* (with support for reloading themes in active *Gtk3*
applications, but I currently use only two *Gtk3* themes: one dark and
one light).
You can see the screenshots of my whole workspace with each of the
themes applied on the page describing [my Emacs
themes](https://lupan.pl/lupan-themes/). For the Emacs theme
reloading I use simple helper Emacs function `my-select-theme`
available from [Toggle between dark and light themes with a
key](https://lupan.pl/dotemacs/#toggle-between-dark-and-light-themes-with-a-key)
section of my Emacs config (also available in corresponding [GitHub
repo](https://github.com/lukpank/.emacs.d).
Installation Installation
------------ ------------
Install Hyprland
----------------
To reproduce my environment clone this repo into `~/dotfiles` and check To reproduce my environment clone this repo into `~/dotfiles` and check
that you have required programs in your `PATH` with that you have required programs in your `PATH` with
``` ```
$ sh check_dependencies.sh hypr $ sh check_dependencies.sh
``` ```
Install font `ttf-firacode-nerd` (https://github.com/ryanoasis/nerd-fonts/releases/download/v3.0.2/FiraCode.zip). For [qtile](http://www.qtile.org/) configuration run
Install proper configurations with
``` ```
$ stow shell hyprland alacritty xsession nvim yazi $ stow -v alacritty xsession qtile music shell tmux
``` ```
Where `xsession` is just to install `lupan-set-theme` script, `nvim` and `yazi` may be skipped if you do not use them. For [bspwm](https://github.com/baskerville/bspwm) configuration run
Change to `zsh` as your login shell with
``` ```
$ chsh -s /usr/bin/zsh $ stow -v alacritty xsession bspwm music shell tmux
``` ```
Install DWM (old) but if you want [i3](https://i3wm.org/) config (left as a fallback)
----------------- instead of *qtile* or *bspwm* then *also* run
To reproduce my environment clone this repo into `~/dotfiles` and check
that you have required programs in your `PATH` with
``` ```
$ sh check_dependencies.sh dwm $ stow -v i3
```
Install font `ttf-firacode-nerd` (https://github.com/ryanoasis/nerd-fonts/releases/download/v3.0.2/FiraCode.zip).
Install `st`, `dwm`, `lupan-clock`, and config files with
```
$ make clone build install
```
Change to `zsh` as your login shell with
```
$ chsh -s /usr/bin/zsh
``` ```

View File

@@ -1,266 +0,0 @@
# 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

View File

@@ -1,17 +0,0 @@
[colors]
draw_bold_text_with_bright_colors = false
[env]
TERM = "xterm-256color"
[font]
size = 10
[font.bold]
family = "HurmitNerdFont"
[font.normal]
family = "HurmitNerdFont"
[general]
import = ["~/.config/alacritty/dark.toml"]

View File

@@ -0,0 +1,126 @@
# See: /usr/share/doc/alacritty/example/alacritty.yml
env:
TERM: xterm-256color
# (format t "~A" (cl-base16:apply-scheme (merge-pathnames "schemes/mexico-light/mexico-light.yaml" cl-base16:*source-dir*) "alacritty" "default"))
# (format t "~A" (cl-base16:apply-scheme (merge-pathnames "schemes/mexico-light/mexico-light.yaml" cl-base16:*source-dir*) "alacritty" "default"))
# Base16 Espresso - alacritty color config
# Unknown. Maintained by Alex Mirrington (https://github.com/alexmirrington)
colors-dark: &dark
# Default colors
primary:
background: '0x2d2d2d'
foreground: '0xcccccc'
# Colors the cursor will use if `custom_cursor_colors` is true
cursor:
text: '0x2d2d2d'
cursor: '0xcccccc'
# Normal colors
normal:
black: '0x2d2d2d'
red: '0xd25252'
green: '0xa5c261'
yellow: '0xffc66d'
blue: '0x6c99bb'
magenta: '0xd197d9'
cyan: '0xbed6ff'
white: '0xcccccc'
# Bright colors
bright:
black: '0x777777'
red: '0xf9a959'
green: '0x393939'
yellow: '0x515151'
blue: '0xb4b7b4'
magenta: '0xe0e0e0'
cyan: '0xf97394'
white: '0xffffff'
colors1:
# Default colors
primary:
background: '0x3C4C55'
foreground: '0xC5D4DD'
# Colors the cursor will use if `custom_cursor_colors` is true
cursor:
text: '0x3C4C55'
cursor: '0xC5D4DD'
# Normal colors
normal:
black: '0x3C4C55'
red: '0x83AFE5'
green: '0x7FC1CA'
yellow: '0xA8CE93'
blue: '0x83AFE5'
magenta: '0x9A93E1'
cyan: '0xF2C38F'
white: '0xC5D4DD'
# Bright colors
bright:
black: '0x899BA6'
red: '0x7FC1CA'
green: '0x556873'
yellow: '0x6A7D89'
blue: '0x899BA6'
magenta: '0x899BA6'
cyan: '0xF2C38F'
white: '0x556873'
# Base16 Mexico Light - alacritty color config
# Sheldon Johnson
colors-light: &light
# Default colors
primary:
background: '0xf8f8f8'
foreground: '0x383838'
# Colors the cursor will use if `custom_cursor_colors` is true
cursor:
text: '0xf8f8f8'
cursor: '0x383838'
# Normal colors
normal:
black: '0xf8f8f8'
red: '0xab4642'
green: '0x538947'
yellow: '0xf79a0e'
blue: '0x7cafc2'
magenta: '0x96609e'
cyan: '0x4b8093'
white: '0x383838'
# Bright colors
bright:
black: '0xb8b8b8'
red: '0xdc9656'
green: '0xe8e8e8'
yellow: '0xd8d8d8'
blue: '0x585858'
magenta: '0x282828'
cyan: '0xa16946'
white: '0x181818'
draw_bold_text_with_bright_colors: false
colors: *dark
font:
size: 12
normal:
family: Iosevka Fixed Slab
bold:
family: Iosevka Fixed Slab heavy
key_bindings:
- key: F6
mods: Control|Shift
command: { program: "/bin/sh", args: ["-c", "~/.config/alacritty/set_theme.sh --next"] }

View File

@@ -1,31 +0,0 @@
# https://github.com/alacritty/alacritty-theme/blob/master/themes/nordic.toml
# Colors (Nordic)
[colors.primary]
background = '#242933'
foreground = '#BBBDAF'
[colors.normal]
black = '#191C1D'
red = '#BD6062'
green = '#A3D6A9'
yellow = '#F0DFAF'
blue = '#8FB4D8'
magenta = '#C7A9D9'
cyan = '#B6D7A8'
white = '#BDC5BD'
[colors.bright]
black = '#727C7C'
red = '#D18FAF'
green = '#B7CEB0'
yellow = '#BCBCBC'
blue = '#E0CF9F'
magenta = '#C7A9D9'
cyan = '#BBDA97'
white = '#BDC5BD'
[colors.selection]
text = '#000000'
background = '#F0DFAF'

View File

@@ -1,35 +0,0 @@
# https://github.com/alacritty/alacritty-theme/blob/master/themes/night_owlish_light.toml
# Colors (Night Owlish Light)
[colors.primary]
background = '#ffffff'
foreground = '#403f53'
[colors.normal]
black = '#011627'
red = '#d3423e'
green = '#2aa298'
yellow = '#daaa01'
blue = '#4876d6'
magenta = '#403f53'
cyan = '#08916a'
white = '#7a8181'
[colors.bright]
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'

View File

@@ -0,0 +1,30 @@
#!/bin/sh
case "$1" in
lupan-dark|lupan-dark-blue|lupan-dark-gray|lupan-light|lupan-material-dark|lupan-material-light)
sed -i "s/^colors: [*].*/colors: *$1/" ~/.config/alacritty/alacritty.yml
;;
--next)
case $(grep colors: ~/.config/alacritty/alacritty.yml) in
'colors: *lupan-dark')
THEME=lupan-dark-blue
;;
'colors: *lupan-dark-blue')
THEME=lupan-dark-gray
;;
'colors: *lupan-dark-gray')
THEME=lupan-light
;;
'colors: *lupan-light')
THEME=lupan-material-dark
;;
'colors: *lupan-material-dark')
THEME=lupan-material-light
;;
*)
THEME=lupan-dark
;;
esac
sed -i "s/^colors: [*].*/colors: *$THEME/" ~/.config/alacritty/alacritty.yml
;;
esac

View File

@@ -1,158 +0,0 @@
#!/bin/sh
wlr-randr --output DP-1 --mode 3840x2160 --scale 2
wlr-randr --output HDMI-A-1 --mode 3840x2160 --scale 2 --left-of DP-1
foot --server &
argenctl config set label-mode modifier
# Terminal
#argenctl binding set normal Super Return sh "kitty --single-instance --instance-group default"
argenctl binding set normal Super Return sh "
if [ -e ~/.lightmode ]; then
exec footclient -o initial-color-theme=light
else
exec footclient -o initial-color-theme=dark
fi
"
# Reload config
argenctl binding set normal Super+Shift R exec "$0"
argenctl binding set normal Super P exec fuzzel
argenctl binding set normal Super+Shift L exec waylock
argenctl binding set normal Super+Shift T sh "lupan-set-theme toggle"
# Window focus and swap
argenctl binding set normal Super J window focus next
argenctl binding set normal Super K window focus prev
argenctl binding set normal Super+Shift J window swap next
argenctl binding set normal Super+Shift K window swap prev
argenctl binding set normal Super F window fullscreen
argenctl binding set normal Super W window float
argenctl binding set normal Super+Shift C window close
argenctl binding set normal Super+Shift X window detach
# Output focus and send
argenctl binding set normal Super Period output focus next
argenctl binding set normal Super Comma output focus prev
argenctl binding set normal Super+Shift Period window send next
argenctl binding set normal Super+Shift Comma window send prev
# Layout
argenctl binding set normal Super M layout switch monocle
argenctl binding set normal Super S layout switch stacktile
argenctl binding set normal Super H layout set primary-ratio -0.05
argenctl binding set normal Super L layout set primary-ratio +0.05
argenctl binding set normal Super+Control K layout set secondary-ratio -0.05
argenctl binding set normal Super+Control J layout set secondary-ratio +0.05
# Pointer
argenctl pointer-binding set normal Super BTN_LEFT move-window
argenctl pointer-binding set normal Super BTN_RIGHT resize-window
# Context
argenctl binding set normal Super+Shift+Control X context close
argenctl binding set normal Super Tab context switch --last
# Switch contexts interactively
argenctl binding set normal Super Space sh 'argenctl context switch "$(argenctl context list | fuzzel -d)"'
# Create new context interactively
argenctl binding set normal Super+Shift Space sh '
set -eu
prompt="$(fuzzel -dl0 -p"new > ")"
argenctl context new "$prompt"
'
# Rename current context interactively
argenctl binding set normal Super+Control Space sh '
set -eu
prompt="$(fuzzel -dl0 -p"rename > ")"
argenctl context rename "$prompt"
'
# Assign currently focused window to be toggled with Super U
argenctl binding set normal Super+Shift U sh '
set -eu
window_id=$(argenctl window list --json | jq -r ".[] | select(.focused) | .id")
argenctl binding set normal Super U window toggle $window_id
'
# Attach window interactively
argenctl binding set normal Super+Shift D sh '
set -eu
id=$(argenctl window list | fuzzel -d --with-nth 2 --accept-nth 1)
argenctl window attach "$id"
'
# Adopt all orphans
argenctl binding set normal Super+Control D sh '
argenctl window list --json | jq -r ".[] | select(.contexts | length == 0) | .id" | while read -r id; do
argenctl window attach "$id"
done
'
# Quit after confirmed with 'yes'
argenctl binding set normal Super+Shift Q sh '
set -eu
confirm="$(fuzzel -dl0 -p"quit? > ")"
if [ "$confirm" = yes ]; then
argenctl exit
fi
'
# Audio and brightness controls
VOL_DEC='wpctl set-volume @DEFAULT_SINK@ --limit 1.5 5%-'
VOL_INC='wpctl set-mute @DEFAULT_SINK@ 0 && wpctl set-volume @DEFAULT_SINK@ --limit 1.5 5%+'
VOL_TOGGLE='wpctl set-mute @DEFAULT_SINK@ toggle'
for mode in normal locked; do
argenctl binding set $mode Super Bracketleft sh "$VOL_DEC"
argenctl binding set $mode Super Bracketright sh "$VOL_INC"
argenctl binding set $mode Super+Shift M sh "$VOL_TOGGLE"
argenctl binding set $mode None XF86AudioLowerVolume sh "$VOL_DEC"
argenctl binding set $mode None XF86AudioRaiseVolume sh "$VOL_INC"
argenctl binding set $mode None XF86AudioMute sh "$VOL_TOGGLE"
argenctl binding set $mode None XF86MonBrightnessDown sh "brightnessctl s 5%-"
argenctl binding set $mode None XF86MonBrightnessUp sh "brightnessctl s +5%"
argenctl binding set $mode Super+Shift Bracketleft sh "brightnessctl s 5%-"
argenctl binding set $mode Super+Shift Bracketright sh "brightnessctl s +5%"
done
# Passthrough mode
argenctl mode declare passthrough
argenctl binding set normal Super Grave mode enter passthrough
argenctl binding set passthrough Super Grave mode enter normal
# Select/swap window by index
for num in 1 2 3 4 5 6 7 8 9; do
idx=$((num - 1))
argenctl binding set normal Super $num sh "
argenctl window focus \$(argenctl context list --json | jq -r '.[] | select(.current) | .windows | .[$idx]')
"
argenctl binding set normal Super+Shift $num sh "
context_id=\$(argenctl context list --json | jq -r '.[] | select(.current) | .id')
length=\$(argenctl context list --json | jq -r '.[] | select(.current) | .windows | length')
focused_window=\$(argenctl context list --json | jq -r '.[] | select(.current) | .focused_window')
dest_window=\$(argenctl context list --json | jq -r '.[] | select(.current) | .windows | .[$idx]')
focused_output_id=\$(argenctl window list --json | jq -r \".[] | select(.id == \\\"\$focused_window\\\") | .contexts[] | select(.id = \$context_id) | .output_id\")
dest_output_id=\$(argenctl window list --json | jq -r \".[] | select(.id == \\\"\$dest_window\\\") | .contexts[] | select(.id = \$context_id) | .output_id\")
if [ -n \"\$focused_output_id\" -a \"\$focused_output_id\" = \"\$dest_output_id\" ]; then
for i in \$(seq \$length); do
if [ \"\$focused_window\" = \"\$dest_window\" ]; then
break
fi
argenctl window swap next
dest_window=\$(argenctl context list --json | jq -r '.[] | select(.current) | .windows | .[$idx]')
done
fi
"
done
argenctl binding set normal Super+Shift S exec ~/.config/argen/session.sh
# Rules
argenctl rule add float --app-id "my-app"

View File

@@ -1,29 +0,0 @@
#!/bin/sh
set -eu
id=$(for name in $(ls ~/.config/argen/sessions/*.sh); do echo $(basename "${name%.sh}"); done | fuzzel -d -p'session> ')
if argenctl context list | grep "^${id}\$"; then
argenctl context switch "${id}"
exit
fi
argenctl context new "$id"
first=$(argenctl output list --json | jq -r 'min_by(80000 * .y + .x).id')
length=$(argenctl output list --json | jq -r 'length')
for n in $(seq $length); do
current=$(argenctl output list --json | jq -r '.[] | select(.focused).id')
if [ "$current" = "$first" ]; then
break
fi
argenctl output focus next
done
if [ -e ~/.lightmode ]; then
THEME=light
else
THEME=dark
fi
export TERMINAL="footclient -o initial-color-theme=$THEME"
exec sh ~/.config/argen/sessions/"${id}.sh"

View File

@@ -1,3 +0,0 @@
argenctl output focus next
argenctl sh "$TERMINAL -D ~/dotfiles kak -s dotfiles"

View File

@@ -1,6 +0,0 @@
argenctl exec librewolf
sleep 1
argenctl output focus next
argenctl exec qutebrowser

View File

@@ -1,592 +0,0 @@
-- If LuaRocks is installed, make sure that packages installed through it are
-- found (e.g. lgi). If LuaRocks is not installed, do nothing.
pcall(require, "luarocks.loader")
-- Standard awesome library
local gears = require("gears")
local awful = require("awful")
require("awful.autofocus")
-- Widget and layout library
local wibox = require("wibox")
-- Theme handling library
local beautiful = require("beautiful")
-- Notification library
local naughty = require("naughty")
local menubar = require("menubar")
local hotkeys_popup = require("awful.hotkeys_popup")
-- Enable hotkeys help widget for VIM and other apps
-- when client with a matching name is opened:
require("awful.hotkeys_popup.keys")
---@diagnostic disable: undefined-global
-- {{{ Error handling
-- Check if awesome encountered an error during startup and fell back to
-- another config (This code will only ever execute for the fallback config)
if awesome.startup_errors then
naughty.notify({
preset = naughty.config.presets.critical,
title = "Oops, there were errors during startup!",
text = awesome.startup_errors
})
end
-- Handle runtime errors after startup
do
local in_error = false
awesome.connect_signal("debug::error", function(err)
-- Make sure we don't go into an endless error loop
if in_error then return end
in_error = true
naughty.notify({
preset = naughty.config.presets.critical,
title = "Oops, an error happened!",
text = tostring(err)
})
in_error = false
end)
end
-- }}}
-- {{{ Variable definitions
-- Themes define colours, icons, font and wallpapers.
local function read_theme()
local theme = "theme_dark.lua"
local f = io.open(os.getenv('HOME') .. '/.lightmode')
if f then
theme = 'theme_light.lua'
f:close()
end
return theme
end
local theme = read_theme()
beautiful.init(gears.filesystem.get_configuration_dir() .. theme)
local function set_wallpaper(s)
gears.wallpaper.set(beautiful.bg_wallpaper)
end
local function switch_theme()
if theme == "theme_dark.lua" then
theme = "theme_light.lua"
awful.spawn("lupan-set-theme light")
else
theme = "theme_dark.lua"
awful.spawn("lupan-set-theme dark")
end
beautiful.init(gears.filesystem.get_configuration_dir() .. theme)
set_wallpaper()
for s in screen do
awful.tag.viewtoggle(s.tags[1])
awful.tag.viewtoggle(s.tags[1])
end
end
-- This is used later as the default terminal and editor to run.
local terminal = "kitty --single-instance --instance-group default"
-- Default modkey.
local modkey = "Mod4"
-- Table of layouts to cover with awful.layout.inc, order matters.
awful.layout.layouts = {
awful.layout.suit.tile,
awful.layout.suit.tile.left,
awful.layout.suit.tile.bottom,
awful.layout.suit.tile.top,
awful.layout.suit.fair,
awful.layout.suit.fair.horizontal,
awful.layout.suit.spiral.dwindle,
awful.layout.suit.max,
awful.layout.suit.max.fullscreen,
awful.layout.suit.magnifier,
awful.layout.suit.corner.nw,
awful.layout.suit.floating,
-- awful.layout.suit.corner.ne,
-- awful.layout.suit.corner.sw,
-- awful.layout.suit.corner.se,
}
-- }}}
-- {{{ Menu
-- Menubar configuration
menubar.utils.terminal = terminal -- Set the terminal for applications that require it
-- }}}
-- Keyboard map indicator and switcher
local mykeyboardlayout = awful.widget.keyboardlayout()
-- {{{ Wibar
-- Create a textclock widget
local mytextclock = wibox.widget.textclock('%H:%M ')
-- Create a wibox for each screen and add it
local taglist_buttons = gears.table.join(
awful.button({}, 1, function(t) t:view_only() end),
awful.button({ modkey }, 1, function(t)
if client.focus then
client.focus:move_to_tag(t)
end
end),
awful.button({}, 3, awful.tag.viewtoggle),
awful.button({ modkey }, 3, function(t)
if client.focus then
client.focus:toggle_tag(t)
end
end),
awful.button({}, 4, function(t) awful.tag.viewnext(t.screen) end),
awful.button({}, 5, function(t) awful.tag.viewprev(t.screen) end)
)
local tasklist_buttons = gears.table.join(
awful.button({}, 1, function(c)
if c == client.focus then
c.minimized = true
else
c:emit_signal(
"request::activate",
"tasklist",
{ raise = true }
)
end
end),
awful.button({}, 3, function()
awful.menu.client_list({ theme = { width = 250 } })
end),
awful.button({}, 4, function()
awful.client.focus.byidx(1)
end),
awful.button({}, 5, function()
awful.client.focus.byidx(-1)
end))
-- Re-set wallpaper when a screen's geometry changes (e.g. different resolution)
screen.connect_signal("property::geometry", set_wallpaper)
awful.screen.connect_for_each_screen(function(s)
-- Wallpaper
set_wallpaper(s)
-- Each screen has its own tag table.
awful.tag({ "1", "2", "3", "4", "5", "6", "7", "8", "9" }, s, awful.layout.layouts[1])
-- Create a promptbox for each screen
s.mypromptbox = awful.widget.prompt()
-- Create an imagebox widget which will contain an icon indicating which layout we're using.
-- We need one layoutbox per screen.
s.mylayoutbox = awful.widget.layoutbox(s)
s.mylayoutbox:buttons(gears.table.join(
awful.button({}, 1, function() awful.layout.inc(1) end),
awful.button({}, 3, function() awful.layout.inc(-1) end),
awful.button({}, 4, function() awful.layout.inc(1) end),
awful.button({}, 5, function() awful.layout.inc(-1) end)))
-- Create a taglist widget
s.mytaglist = awful.widget.taglist {
screen = s,
filter = awful.widget.taglist.filter.all,
buttons = taglist_buttons
}
-- Create a tasklist widget
s.mytasklist = awful.widget.tasklist {
screen = s,
filter = awful.widget.tasklist.filter.currenttags,
buttons = tasklist_buttons
}
-- Create the wibox
s.mywibox = awful.wibar({ position = "top", screen = s })
-- Add widgets to the wibox
s.mywibox:setup {
layout = wibox.layout.align.horizontal,
{ -- Left widgets
layout = wibox.layout.fixed.horizontal,
s.mytaglist,
s.mypromptbox,
},
s.mytasklist, -- Middle widget
{ -- Right widgets
layout = wibox.layout.fixed.horizontal,
mykeyboardlayout,
wibox.widget.systray(),
mytextclock,
s.mylayoutbox,
},
}
end)
-- }}}
local function layout_menu()
local layouts = {}
for i, layout in pairs(awful.layout.layouts) do
layouts[i] =
{ layout.name,
function()
awful.layout.set(layout)
end,
beautiful["layout_" .. layout.name],
}
end
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,
{ description = "show help", group = "awesome" }),
awful.key({ modkey, }, "Left", awful.tag.viewprev,
{ description = "view previous", group = "tag" }),
awful.key({ modkey, }, "Right", awful.tag.viewnext,
{ description = "view next", group = "tag" }),
awful.key({ modkey, }, "Tab", awful.tag.history.restore,
{ description = "go back", group = "tag" }),
awful.key({ modkey, }, "j",
function()
awful.client.focus.byidx(1)
end,
{ description = "focus next by index", group = "client" }
),
awful.key({ modkey, }, "k",
function()
awful.client.focus.byidx(-1)
end,
{ description = "focus previous by index", group = "client" }
),
-- Layout manipulation
awful.key({ modkey, "Shift" }, "j", function() awful.client.swap.byidx(1) end,
{ description = "swap with next client by index", group = "client" }),
awful.key({ modkey, "Shift" }, "k", function() awful.client.swap.byidx(-1) end,
{ description = "swap with previous client by index", group = "client" }),
awful.key({ modkey, }, ".", function() awful.screen.focus_relative(1) end,
{ description = "focus the next screen", group = "screen" }),
awful.key({ modkey, }, ",", function() awful.screen.focus_relative(-1) end,
{ description = "focus the previous screen", group = "screen" }),
awful.key({ modkey, }, "u", awful.client.urgent.jumpto,
{ description = "jump to urgent client", group = "client" }),
awful.key({ modkey, }, "a",
function()
awful.client.focus.history.previous()
if client.focus then
client.focus:raise()
end
end,
{ description = "go back", group = "client" }),
-- Standard program
awful.key({ modkey, "Shift" }, "Return", function() awful.spawn(terminal) end,
{ description = "open a terminal", group = "launcher" }),
awful.key({ modkey, "Control", "Shift" }, "l", function() awful.spawn("slock") end,
{ 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, "Control", "Shift" }, "t", switch_theme,
{ description = "switch theme", group = "launcher" }),
awful.key({ modkey, }, "q", awesome.restart,
{ description = "reload awesome", group = "awesome" }),
awful.key({ modkey, "Control", "Shift" }, "q", awesome.quit,
{ description = "quit awesome", group = "awesome" }),
awful.key({ modkey, }, "l", function() awful.tag.incmwfact(0.05) end,
{ description = "increase master width factor", group = "layout" }),
awful.key({ modkey, }, "h", function() awful.tag.incmwfact(-0.05) end,
{ description = "decrease master width factor", group = "layout" }),
awful.key({ modkey, "Shift" }, "h", function() awful.tag.incnmaster(1, nil, true) end,
{ description = "increase the number of master clients", group = "layout" }),
awful.key({ modkey, "Shift" }, "l", function() awful.tag.incnmaster(-1, nil, true) end,
{ description = "decrease the number of master clients", group = "layout" }),
awful.key({ modkey, }, "i", function() awful.tag.incncol(1, nil, true) end,
{ description = "increase the number of columns", group = "layout" }),
awful.key({ modkey, }, "d", function() awful.tag.incncol(-1, nil, true) end,
{ description = "decrease the number of columns", group = "layout" }),
awful.key({ modkey, }, "space", function() awful.layout.inc(1) end,
{ description = "select next", group = "layout" }),
awful.key({ modkey, "Shift" }, "space", function() awful.layout.inc(-1) end,
{ description = "select previous", group = "layout" }),
awful.key({ modkey, "Control", "Shift", }, "space", layout_menu,
{ description = "select layout from menu", group = "layout" }),
awful.key({ modkey, "Control" }, "n",
function()
local c = awful.client.restore()
-- Focus restored client
if c then
c:emit_signal(
"request::activate", "key.unminimize", { raise = true }
)
end
end,
{ description = "restore minimized", group = "client" }),
-- Prompt
awful.key({ modkey, }, "r", function() awful.screen.focused().mypromptbox:run() end,
{ description = "run prompt", group = "launcher" }),
awful.key({ modkey, }, "x",
function()
awful.prompt.run {
prompt = "Run Lua code: ",
textbox = awful.screen.focused().mypromptbox.widget,
exe_callback = awful.util.eval,
history_path = awful.util.get_cache_dir() .. "/history_eval"
}
end,
{ description = "lua execute prompt", group = "awesome" }),
-- Menubar
awful.key({ modkey }, "p", function() awful.spawn("dmenu_run -fn 'HurmitNerdFont:size=16'") end,
{ description = "run command", group = "launcher" })
)
local clientkeys = gears.table.join(
awful.key({ modkey, }, "f",
function(c)
c.fullscreen = not c.fullscreen
c:raise()
end,
{ description = "toggle fullscreen", group = "client" }),
awful.key({ modkey, "Shift" }, "c", function(c) c:kill() end,
{ description = "close", group = "client" }),
awful.key({ modkey, "Control" }, "space", awful.client.floating.toggle,
{ description = "toggle floating", group = "client" }),
awful.key({ modkey, }, "Return", function(c) c:swap(awful.client.getmaster()) end,
{ description = "move to master", group = "client" }),
awful.key({ modkey, "Shift" }, ".", function(c) c:move_to_screen() end,
{ description = "move to screen", group = "client" }),
awful.key({ modkey, }, "t", function(c) c.ontop = not c.ontop end,
{ description = "toggle keep on top", group = "client" }),
awful.key({ modkey, }, "n",
function(c)
-- The client currently has the input focus, so it cannot be
-- minimized, since minimized clients can't have the focus.
c.minimized = true
end,
{ description = "minimize", group = "client" }),
awful.key({ modkey, }, "m",
function(c)
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",
function(c)
c.maximized_vertical = not c.maximized_vertical
c:raise()
end,
{ description = "(un)maximize vertically", group = "client" }),
awful.key({ modkey, }, "b",
function(c)
c.maximized_horizontal = not c.maximized_horizontal
c:raise()
end,
{ description = "(un)maximize horizontally", group = "client" })
)
-- Bind all key numbers to tags.
-- Be careful: we use keycodes to make it work on any keyboard layout.
-- This should map on the top row of your keyboard, usually 1 to 9.
for i = 1, 9 do
globalkeys = gears.table.join(globalkeys,
-- View tag only.
awful.key({ modkey }, "#" .. i + 9,
function()
local screen = awful.screen.focused()
local tag = screen.tags[i]
if tag then
tag:view_only()
end
end,
{ description = "view tag #" .. i, group = "tag" }),
-- Toggle tag display.
awful.key({ modkey, "Control" }, "#" .. i + 9,
function()
local screen = awful.screen.focused()
local tag = screen.tags[i]
if tag then
awful.tag.viewtoggle(tag)
end
end,
{ description = "toggle tag #" .. i, group = "tag" }),
-- Move client to tag.
awful.key({ modkey, "Shift" }, "#" .. i + 9,
function()
if client.focus then
local tag = client.focus.screen.tags[i]
if tag then
client.focus:move_to_tag(tag)
end
end
end,
{ description = "move focused client to tag #" .. i, group = "tag" }),
-- Toggle tag on focused client.
awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9,
function()
if client.focus then
local tag = client.focus.screen.tags[i]
if tag then
client.focus:toggle_tag(tag)
end
end
end,
{ 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
local clientbuttons = gears.table.join(
awful.button({}, 1, function(c)
c:emit_signal("request::activate", "mouse_click", { raise = true })
end),
awful.button({ modkey }, 1, function(c)
c:emit_signal("request::activate", "mouse_click", { raise = true })
awful.mouse.client.move(c)
end),
awful.button({ modkey }, 3, function(c)
c:emit_signal("request::activate", "mouse_click", { raise = true })
awful.mouse.client.resize(c)
end)
)
-- Set keys
root.keys(globalkeys)
-- }}}
-- {{{ Rules
-- Rules to apply to new clients (through the "manage" signal).
awful.rules.rules = {
-- All clients will match this rule.
{
rule = {},
properties = {
border_width = beautiful.border_width,
border_color = beautiful.border_normal,
focus = awful.client.focus.filter,
raise = true,
keys = clientkeys,
buttons = clientbuttons,
screen = awful.screen.preferred,
placement = awful.placement.no_overlap + awful.placement.no_offscreen,
size_hints_honor = false,
}
},
-- Floating clients.
{
rule_any = {
instance = {
"DTA", -- Firefox addon DownThemAll.
"copyq", -- Includes session name in class.
"pinentry",
},
class = {
"Arandr",
"Blueman-manager",
"Gpick",
"Kruler",
"MessageWin", -- kalarm.
"Sxiv",
"Tor Browser", -- Needs a fixed window size to avoid fingerprinting by screen size.
"Wpa_gui",
"veromix",
"xtightvncviewer" },
-- Note that the name property shown in xprop might be set slightly after creation of the client
-- and the name shown there might not match defined rules here.
name = {
"Event Tester", -- xev.
},
role = {
"AlarmWindow", -- Thunderbird's calendar.
"ConfigManager", -- Thunderbird's about:config.
"pop-up", -- e.g. Google Chrome's (detached) Developer Tools.
}
},
properties = { floating = true }
},
-- Add titlebars to normal clients and dialogs
{
rule_any = { type = { "normal", "dialog" }
},
properties = { titlebars_enabled = true }
},
-- Set Firefox to always map on the tag named "2" on screen 1.
-- { rule = { class = "Firefox" },
-- properties = { screen = 1, tag = "2" } },
}
-- }}}
-- {{{ 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,
-- i.e. put it at the end of others instead of setting it master.
-- if not awesome.startup then awful.client.setslave(c) end
if awesome.startup
and not c.size_hints.user_position
and not c.size_hints.program_position then
-- 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.
client.connect_signal("mouse::enter", function(c)
c:emit_signal("request::activate", "mouse_enter", { raise = false })
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)
-- }}}

View File

@@ -1,57 +0,0 @@
local themes_path = require("gears.filesystem").get_themes_dir()
local xresources = require("beautiful.xresources")
local dpi = xresources.apply_dpi
local theme = {}
theme.font = "HurmitNerdFont 10"
theme.tasklist_disable_icon = true
theme.wibar_height = 30
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 = "#1c3b4a" -- hsl(200 45% 20%)
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 = 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 = "#73848c" -- hsl(200 10% 50%)
theme.border_focus = "#b25e34" -- hsl(20 55% 45%)
theme.border_marked = "#3488b2" -- hsl(200 55% 45%)
theme.bg_wallpaper = "#454f54" -- hsl(200 10% 30%)
theme.hotkeys_font = theme.font
theme.hotkeys_description_font = theme.font
theme.hotkeys_bg = theme.bg_minimize
theme.hotkeys_modifiers_fg = theme.border_focus
-- You can use your own layout icons like this:
theme.layout_fairh = themes_path .. "default/layouts/fairhw.png"
theme.layout_fairv = themes_path .. "default/layouts/fairvw.png"
theme.layout_floating = themes_path .. "default/layouts/floatingw.png"
theme.layout_magnifier = themes_path .. "default/layouts/magnifierw.png"
theme.layout_max = themes_path .. "default/layouts/maxw.png"
theme.layout_fullscreen = themes_path .. "default/layouts/fullscreenw.png"
theme.layout_tilebottom = themes_path .. "default/layouts/tilebottomw.png"
theme.layout_tileleft = themes_path .. "default/layouts/tileleftw.png"
theme.layout_tile = themes_path .. "default/layouts/tilew.png"
theme.layout_tiletop = themes_path .. "default/layouts/tiletopw.png"
theme.layout_spiral = themes_path .. "default/layouts/spiralw.png"
theme.layout_dwindle = themes_path .. "default/layouts/dwindlew.png"
theme.layout_cornernw = themes_path .. "default/layouts/cornernww.png"
theme.layout_cornerne = themes_path .. "default/layouts/cornernew.png"
theme.layout_cornersw = themes_path .. "default/layouts/cornersww.png"
theme.layout_cornerse = themes_path .. "default/layouts/cornersew.png"
return theme

View File

@@ -1,57 +0,0 @@
local themes_path = require("gears.filesystem").get_themes_dir()
local xresources = require("beautiful.xresources")
local dpi = xresources.apply_dpi
local theme = {}
theme.font = "HurmitNerdFont 10"
theme.tasklist_disable_icon = true
theme.wibar_height = 30
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 = "#a6c7f2" -- hsl(214 75% 80%)
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 = theme.bg_minimize
theme.border_focus = "#df8c20" -- hsl(34 75% 50%)
theme.border_marked = "#2073df" -- hsl(214 75% 50%)
theme.bg_wallpaper = theme.fg_normal
theme.hotkeys_font = theme.font
theme.hotkeys_description_font = theme.font
theme.hotkeys_bg = theme.border_normal
theme.hotkeys_modifiers_fg = theme.bg_focus
-- You can use your own layout icons like this:
theme.layout_fairh = themes_path .. "default/layouts/fairhw.png"
theme.layout_fairv = themes_path .. "default/layouts/fairvw.png"
theme.layout_floating = themes_path .. "default/layouts/floatingw.png"
theme.layout_magnifier = themes_path .. "default/layouts/magnifierw.png"
theme.layout_max = themes_path .. "default/layouts/maxw.png"
theme.layout_fullscreen = themes_path .. "default/layouts/fullscreenw.png"
theme.layout_tilebottom = themes_path .. "default/layouts/tilebottomw.png"
theme.layout_tileleft = themes_path .. "default/layouts/tileleftw.png"
theme.layout_tile = themes_path .. "default/layouts/tilew.png"
theme.layout_tiletop = themes_path .. "default/layouts/tiletopw.png"
theme.layout_spiral = themes_path .. "default/layouts/spiralw.png"
theme.layout_dwindle = themes_path .. "default/layouts/dwindlew.png"
theme.layout_cornernw = themes_path .. "default/layouts/cornernww.png"
theme.layout_cornerne = themes_path .. "default/layouts/cornernew.png"
theme.layout_cornersw = themes_path .. "default/layouts/cornersww.png"
theme.layout_cornerse = themes_path .. "default/layouts/cornersew.png"
return theme

36
bspwm/.config/bspwm/bspwmrc Executable file
View File

@@ -0,0 +1,36 @@
#! /bin/sh
xdo kill $(xdo id -N Polybar)
i=0
monitors=$(bspc query -M --names)
for monitor in $monitors; do
MONITOR="$monitor" polybar panel &
i=$((i + 1))
done
if [ $i -eq 1 ]; then
bspc monitor -d 1 2 3 4 5 6 7 8 9 0
else
monitor1=$(echo $monitors | cut -d ' ' -f 1)
monitor2=$(echo $monitors | cut -d ' ' -f 2)
bspc monitor "$monitor2" -d 1 2 3 4 5 6 7 8 9
bspc monitor "$monitor1" -d 0
bspc monitor "$monitor1" -s "$monitor2"
bspc monitor "$monitor2" -f
fi
bspc config border_width 4
bspc config window_gap 12
sh ~/.config/bspwm/commands.sh theme --set
bspc config split_ratio 0.50
bspc config single_monocle false
bspc config borderless_monocle true
bspc config gapless_monocle true
bspc config pointer_follows_focus true
bspc config pointer_follows_monitor true
bspc config focus_follows_pointer true
bspc rule -a Gimp desktop='^8' state=floating follow=on
bspc rule -a jetbrains-studio:sun-awt-X11-XWindowPeer manage=off

View File

@@ -0,0 +1,94 @@
#!/bin/sh
THEMES_PATH=~/.config/bspwm/themes
CURRENT_THEME_PATH="${THEMES_PATH}/theme.sh"
DEFAULT_THEME=lupan-dark
FONT='Iosevka Slab Light-12'
BAR_FONT="${FONT};5"
CMD="$1"
shift
# Determine current theme
THEME=
if [ -e "${CURRENT_THEME_PATH}" ]; then
. "${CURRENT_THEME_PATH}"
fi
THEME="${THEME:-$DEFAULT_THEME}"
list_themes() {
( cd "$THEMES_PATH" && ls *-theme.sh | sed 's/-theme.sh$//' | sort )
}
# Select next or named theme
if [ "$CMD" = theme -a "$1" = --next ]; then
NEXT=$(list_themes | grep -A 1 "^${THEME}\$" | tail -1)
if [ "$NEXT" = "$THEME" ]; then
THEME=$(list_themes | head -1)
elif [ "$THEME" = "" ]; then
THEME="${DEFAULT_THEME}"
else
THEME="$NEXT"
fi
elif [ "$CMD" = theme -a "$1" != --set ]; then
if [ "$1" = "" ]; then
exit
elif [ -e "${THEMES_PATH}/$1-theme.sh" ]; then
THEME="$1"
else
THEME="${DEFAULT_THEME}"
fi
fi
# Load theme
THEME_PATH="${THEMES_PATH}/${THEME}-theme.sh"
if [ -e "${THEME_PATH}" ]; then
. "${THEME_PATH}"
else
. "${THEMES_PATH}/${DEFAULT_THEME}-theme.sh"
fi
dmenu() {
command dmenu -nb ${BAR_BG} -nf ${BAR_FG} -sb ${BAR_ACTIVE} -sf ${BAR_FG} -fn "${FONT}" $@
}
dmenu_run() {
command dmenu_run -nb ${BAR_BG} -nf ${BAR_FG} -sb ${BAR_ACTIVE} -sf ${BAR_FG} -fn "${FONT}" $@
}
set_theme() {
echo "THEME=${THEME}" > "${CURRENT_THEME_PATH}"
xrdb -merge <<EOF
polybar.background: ${BAR_BG}
polybar.foreground: ${BAR_FG}
polybar.active: ${BAR_ACTIVE}
polybar.urgent: ${BAR_URGENT}
polybar.empty: ${BAR_EMPTY}
polybar.font: ${BAR_FONT}
EOF
polybar-msg cmd restart
xsetroot -solid "${ROOT_BG}"
bspc config normal_border_color "${NORMAL_BORDER}"
bspc config focused_border_color "${FOCUS_BORDER}"
bspc config presel_feedback_color "${FOCUS_BORDER}"
sed -i "s/^colors: [*].*/colors: *$THEME/" ~/.config/alacritty/alacritty.yml
sed -i -E "s#(Net/ThemeName) .*#\1 \"${GTK_THEME}\"#" ~/.config/xsettingsd/xsettingsd.conf
pkill -HUP -x xsettingsd
emacsclient --eval "(my-select-theme '${EMACS_THEME})"
}
case "$CMD" in
theme)
set_theme
;;
dmenu|dmenu_run)
"$CMD" "$@"
;;
dmenu_window)
bspc node -f $(xtitle -f '%u %s\n' $(bspc query -N -n .window) \
| dmenu -l 20 -i -p Window: "$@" | cut -f 1 -d ' ')
;;
dmenu_theme)
sh "$0" theme $(list_themes | dmenu -p Theme: "$@")
esac

View File

@@ -0,0 +1,11 @@
ROOT_BG=#4c4c4c
BAR_BG=#394d5f
BAR_FG=#9fb3c5
BAR_ACTIVE=#4c677f
BAR_URGENT=#7f4c4c
BAR_EMPTY=#767f88
NORMAL_BORDER=#767f88
FOCUS_BORDER=#9fb3c5
ALACRITTY_THEME=lupan-dark-blue
EMACS_THEME=lupan-dark-blue
GTK_THEME=Materia-dark

View File

@@ -0,0 +1,11 @@
ROOT_BG=#4c4c4c
BAR_BG=#394c5f
BAR_FG=#9fb2c5
BAR_ACTIVE=#4c657f
BAR_URGENT=#7f4c4c
BAR_EMPTY=#767f88
NORMAL_BORDER=#767f88
FOCUS_BORDER=#4c657f
ALACRITTY_THEME=lupan-dark-gray
EMACS_THEME=lupan-dark-gray
GTK_THEME=Materia-dark

View File

@@ -0,0 +1,11 @@
ROOT_BG=#4c4c4c
BAR_BG=#395f58
BAR_FG=#9fc5be
BAR_ACTIVE=#4c7f75
BAR_URGENT=#7f4c4c
BAR_EMPTY=#768885
NORMAL_BORDER=#768885
FOCUS_BORDER=#9fc5be
ALACRITTY_THEME=lupan-dark
EMACS_THEME=lupan-dark
GTK_THEME=Materia-dark

View File

@@ -0,0 +1,11 @@
ROOT_BG=#e5e5e5
BAR_BG=#d8e0b7
BAR_FG=#5a6335
BAR_ACTIVE=#ebefdb
BAR_URGENT=#e0b7b7
BAR_EMPTY=#b0b0b0
NORMAL_BORDER=#b0b0b0
FOCUS_BORDER=#97a559
ALACRITTY_THEME=lupan-light
EMACS_THEME=lupan-light
GTK_THEME=Materia-light

View File

@@ -0,0 +1,11 @@
ROOT_BG=#212121
BAR_BG=#455a64
BAR_FG=#f2f6e1
BAR_ACTIVE=#78909c
BAR_URGENT=#ef5350
BAR_EMPTY=#757575
NORMAL_BORDER=#757575
FOCUS_BORDER=#78909c
ALACRITTY_THEME=lupan-material-dark
EMACS_THEME=lupan-material-dark
GTK_THEME=Materia-dark

View File

@@ -0,0 +1,11 @@
ROOT_BG=#fafafa
BAR_BG=#cfd8dc
BAR_FG=#424242
BAR_ACTIVE=#eceff1
BAR_URGENT=#ef5350
BAR_EMPTY=#bdbdbd
NORMAL_BORDER=#bdbdbd
FOCUS_BORDER=#b0bec5
ALACRITTY_THEME=lupan-material-light
EMACS_THEME=lupan-material-light
GTK_THEME=Materia-light

View File

@@ -0,0 +1,65 @@
[colors]
background = ${xrdb:polybar.background:#1a343a}
foreground = ${xrdb:polybar.foreground:#f2f6e1}
active = ${xrdb:polybar.active:#3585ce}
urgent = ${xrdb:polybar.urgent:#9b0640}
empty = ${xrdb:polybar.empty:#808080}
[bar/panel]
monitor = ${env:MONITOR:}
dpi = ${xrdb:Xft.dpi:160}
modules-left = bspwm xwindow
modules-right = mpd battery date
wm-restack = bspwm
enable-ipc = true
font-0 = ${xrdb:polybar.font:Iosevka-13.5;5}
height = ${xrdb:polybar.height:35}
background = ${colors.background}
foreground = ${colors.foreground}
padding-left = 2
padding-right = 2
module-margin-left = 1
module-margin-right = 1
line-size = 0
[module/bspwm]
type = internal/bspwm
label-focused = %name%
label-occupied = %name%
label-urgent = %name%
label-empty = %name%
label-focused-padding = 1
label-occupied-padding = 1
label-urgent-padding = 1
label-empty-padding = 1
label-focused-background = ${colors.active}
label-urgent-background = ${colors.urgent}
label-empty-foreground = ${colors.empty}
format = <label-state> <label-mode>
label-locked = l
label-marked = m
label-private = p
label-sticky = s
[module/xwindow]
type = internal/xwindow
label = %title%
[module/mpd]
type = internal/mpd
format-online = <label-song>
label-song-maxlen = 70
label-song-ellipsis = true
[module/battery]
type = internal/battery
battery = BAT1
adapter = ACAD
full-at = 98
format-charging-foreground = ${colors.empty}
format-full-foreground = ${colors.empty}
[module/date]
type = internal/date
time = %H:%M
label = %time%

169
bspwm/.config/sxhkd/sxhkdrc Normal file
View File

@@ -0,0 +1,169 @@
#
# wm independent hotkeys
#
# terminal emulator
super + Return
alacritty
# program launcher
super + @space
sh ~/.config/bspwm/commands.sh dmenu_run
# make sxhkd reload its configuration files:
super + Escape
pkill -USR1 -x sxhkd
super + e
emacsclient -n -c
super + semicolon ; {e,f,t}
{emacsclient -n -c,firefox,thunderbird}
super + semicolon ; shift + {h,l,s}
{systemctl hibernate,slock,systemctl suspend}
super + {_,shift + }F6
sh ~/.config/bspwm/commands.sh {theme --next,dmenu_theme}
XF86AudioPlay
mpc toggle
XF86Audio{Lower,Raise}Volume
pamixer -{d,i} 5
XF86AudioMute
pamixer -t
XF86MonBrightness{Down,Up}
xbacklight -{dec,inc} 3
#
# bspwm hotkeys
#
# quit/restart bspwm
super + alt + {q,r}
bspc {quit,wm -r}
# close and kill
super + {_,shift + }w
bspc node -{c,k}
# alternate between the tiled and monocle layout
super + m
bspc desktop -l next
# send the newest marked node to the newest preselected node
super + y
bspc node newest.marked.local -n newest.!automatic.local
# swap the current node and the biggest node on the same desktop
super + g
bspc node -s biggest.tiled.local
#
# state/flags
#
# set the window state
super + {t,shift + t,s,f}
bspc node -t {tiled,pseudo_tiled,floating,'~fullscreen'}
# set the node flags
super + ctrl + {m,x,y,z}
bspc node -g {marked,locked,sticky,private}
#
# focus/swap
#
# focus the node in the given direction
super + {_,shift + }{h,j,k,l}
bspc node -{f,s} {west,south,north,east}
# focus the node for the given path jump
super + {p,b,comma,period}
bspc node -f @{parent,brother,first,second}
# focus the next/previous node in the current desktop
super + {_,shift + }c
bspc node -f {next,prev}.local
# focus the next/previous desktop in the current monitor
super + bracket{left,right}
bspc desktop -f {prev,next}.local
# focus the last node/desktop
super + {grave,Tab}
bspc {node,desktop} -f last
# focus the older or newer node in the focus history
super + {o,i}
bspc wm -h off; \
bspc node {older,newer} -f; \
bspc wm -h on
# focus or send to the given desktop
super + {_,shift + }{1-9,0}
bspc {desktop -f,node -d} '^{1-9,10}'
# focus window by title
super + shift + @space
sh ~/.config/bspwm/commands.sh dmenu_window
#
# preselect
#
# preselect the direction
super + ctrl + {h,j,k,l}
bspc node -p {west,south,north,east}
# preselect the ratio
super + ctrl + {1-9}
bspc node -o 0.{1-9}
# cancel the preselection for the focused node
super + ctrl + space
bspc node -p cancel
# cancel the preselection for the focused desktop
super + ctrl + shift + space
bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel
#
# move/resize
#
# expand a window by moving one of its side outward
super + alt + {h,j,k,l}
bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0}
# contract a window by moving one of its side inward
super + alt + shift + {h,j,k,l}
bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0}
# move a floating window
super + {Left,Down,Up,Right}
bspc node -v {-20 0,0 20,0 -20,20 0}
#
# balance, equlize, rotate, and splitting ratio
#
# balance whole desktop or selected subtree
super + shift + b
if bspc query -N -n 'focused.leaf'; then bspc node @/ -B; else bspc node -B; fi
# equlize whole desktop or selected subtree
super + shift + e
if bspc query -N -n 'focused.leaf'; then bspc node @/ -E; else bspc node -E; fi
# rotate whole desktop or selected subtree
super + {_, ctrl + , shift + }r
A={90,180,270}; if bspc query -N -n 'focused.leaf'; then bspc node @/ -R $A; else bspc node -R $A; fi
# splitting ratio
super + alt + {1-9}
R={1-9}; if bspc query -N -n 'focused.leaf'; then bspc node @/ -r 0.$R; else bspc node -r 0.$R; fi

View File

@@ -1,53 +1,63 @@
#!/bin/sh #!/bin/sh
REQUIRED="$1" echo '# qtile:'
for CMD in \
check_dependency() { alacritty \
local CMD="$1" qtile \
shift emacsclient \
for REQ in "$@"; do setxkbmap \
if [ "$REQ" = "$REQUIRED" ]; then slock \
systemctl \
xmodmap \
xrandr \
xrdb \
xsetroot \
xsettingsd \
rofi; do
which "$CMD" which "$CMD"
break done
fi
done
}
echo '# required:' echo -e '\n# bspwm:'
for CMD in \
alacritty \
bspc \
bspwm \
dmenu \
dmenu_run \
emacsclient \
pkill \
polybar \
polybar-msg \
sed \
setxkbmap \
slock \
sxhkd \
systemctl \
xargs \
xdo \
xmodmap \
xrandr \
xrdb \
xsetroot \
xsettingsd \
xtitle \
xss-lock; do
which "$CMD"
done
check_dependency zsh dwm hypr echo -e '\n# bspwm (optional):'
check_dependency git dwm hypr for CMD in \
check_dependency cc dwm firefox \
check_dependency make dwm mpc \
check_dependency setxkbmap dwm mpd \
check_dependency slock dwm pamixer \
check_dependency systemctl dwm hypr sx \
check_dependency xmodmap dwm thunderbird \
check_dependency xrandr dwm xbacklight; do
check_dependency xrdb dwm which "$CMD"
check_dependency xset dwm done
check_dependency xsetroot dwm
check_dependency hsetroot dwm
check_dependency xsettingsd dwm
check_dependency sed dwm hypr
check_dependency pkill dwm
check_dependency dmenu dwm
check_dependency dmenu_run dwm
check_dependency xss-lock dwm
check_dependency exa dwm hypr
check_dependency fzf dwm hypr
check_dependency Hyprland hypr
check_dependency hyprctl hypr
check_dependency alacritty hypr
check_dependency swaylock hypr
check_dependency waybar hypr
check_dependency wofi hypr
echo -e '\n# optional:' echo -e '\n# shell:'
for CMD in emacsclient zsh; do
check_dependency sx dwm which "$CMD"
check_dependency picom dwm done
check_dependency compton dwm
check_dependency xbacklight dwm
check_dependency wl-copy hypr
check_dependency wl-paste hypr

View File

@@ -1,43 +0,0 @@
#!/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

View File

@@ -1,175 +0,0 @@
#!/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

View File

@@ -1,117 +0,0 @@
# 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

View File

@@ -1,60 +0,0 @@
[main]
font = HurmitNerdFont:size=10
initial-color-theme = dark
[colors-dark]
foreground = a29e98
background = 272117
cursor = 272117 73d0b1
selection-foreground = 272117
selection-background = 276c9a
regular0 = 85919b
regular1 = c37583
regular2 = 44a386
regular3 = af8842
regular4 = 5396c7
regular5 = a57cba
regular6 = 2da0ad
regular7 = b0bcc7
bright0 = 85919b
bright1 = f2a0ae
bright2 = 73d0b1
bright3 = dcb46e
bright4 = 7fc3f5
bright5 = d2a8e8
bright6 = 62cdda
bright7 = a29e98
[colors-light]
foreground = 696257
background = faf8f5
cursor = faf8f5 7ad6b7
selection-foreground = faf8f5
selection-background = 3a7ead
regular0 = 272117
regular1 = d0818f
regular2 = 52af92
regular3 = bc944f
regular4 = 60a3d4
regular5 = b289c7
regular6 = 3dadba
regular7 = b6c3cd
bright0 = 919da7
bright1 = 85c9fc
bright2 = 7ad6b7
bright3 = e3ba74
bright4 = 60a3d4
bright5 = d9aeee
bright6 = 85c9fc
bright7 = faf8f5
[key-bindings]
color-theme-toggle = Control+Shift+t
primary-paste = Shift+Insert Control+Shift+i
[search-bindings]
primary-paste = Shift+Insert Control+Shift+i

View File

@@ -1,4 +0,0 @@
monitor=DP-1,highres,0x0,2,transform,1
monitor=HDMI-A-2,highres,1080x0,2
# vim: ft=hyprlang

View File

@@ -1,4 +0,0 @@
monitor=DP-1,highres,0x0,2
monitor=HDMI-A-2,highres,1920x0,2
# vim: ft=hyprlang

View File

@@ -1,151 +0,0 @@
source = ~/.config/hypr/white.conf
input {
kb_layout = pl
kb_options = ctrl:nocaps
}
general {
gaps_in = 3
gaps_out = 4
layout = master
border_size = 3
col.inactive_border = 0xff5387ac
col.active_border = 0xffac7853
}
dwindle {
preserve_split = true
}
decoration {
rounding = 4
}
animations {
enabled = false
}
misc {
disable_hyprland_logo = true
disable_splash_rendering = true
disable_autoreload = true
background_color = 0xff808080
}
binds {
workspace_back_and_forth = true
}
$menu = wofi -S run
$terminal = alacritty || kitty
$mainMod = SUPER
bind = $mainMod, P, exec, $menu
bind = $mainMod SHIFT, Return, exec, $terminal
bind = $mainMod ALT, Return, exec, $terminal
bind = $mainMod, Return, layoutmsg,swapwithmaster master
bind = $mainMod CONTROL SHIFT, Q, exit
bind = $mainMod, Q, exec, hyprctl reload
bind = $mainMod CONTROL SHIFT, C, killactive
bind = $mainMod CONTROL SHIFT, L, exec, swaylock -c 263c59
bind = $mainMod ALT, O, exec, swaylock -c 263c59
bind = $mainMod CONTROL SHIFT, S, exec, swaylock -c 263c59
bind = $mainMod CONTROL SHIFT, S, exec, systemctl suspend
bind = $mainMod ALT, S, exec, swaylock -c 263c59
bind = $mainMod ALT, S, exec, systemctl suspend
bind = $mainMod CONTROL, Space, togglefloating
bind = $mainMod, D, exec, hyprctl keyword general:layout "dwindle"
bind = $mainMod, M, exec, hyprctl keyword general:layout "master"
bind = $mainMod, F, fullscreen, 0
bind = $mainMod SHIFT, F, fullscreen, 1
bind = $mainMod ALT, F, fullscreen, 1
bind = $mainMod, U, layoutmsg, togglesplit
bind = $mainMod, I, layoutmsg, cycleprev
bind = $mainMod, O, layoutmsg, cyclenext
bind = $mainMod, A, focuscurrentorlast
bind = $mainMod SHIFT, I, layoutmsg, swapprev
bind = $mainMod SHIFT, O, layoutmsg, swapnext
bind = $mainMod CONTROL, I, layoutmsg, removemaster
bind = $mainMod CONTROL, O, layoutmsg, addmaster
bind = $mainMod SHIFT, F6, exec, ~/bin/lupan-set-theme toggle
bind = $mainMod ALT, T, exec, ~/bin/lupan-set-theme toggle
bind = $mainMod, h, movefocus, l
bind = $mainMod, j, movefocus, d
bind = $mainMod, k, movefocus, u
bind = $mainMod, l, movefocus, r
bind = $mainMod SHIFT, h, swapwindow, l
bind = $mainMod SHIFT, j, swapwindow, d
bind = $mainMod SHIFT, k, swapwindow, u
bind = $mainMod SHIFT, l, swapwindow, r
bind = $mainMod ALT, h, swapwindow, l
bind = $mainMod ALT, j, swapwindow, d
bind = $mainMod ALT, k, swapwindow, u
bind = $mainMod ALT, l, swapwindow, r
bind = $mainMod CONTROL, h, layoutmsg, orientationleft
bind = $mainMod CONTROL, j, layoutmsg, orientationbottom
bind = $mainMod CONTROL, k, layoutmsg, orientationtop
bind = $mainMod CONTROL, l, layoutmsg, orientationright
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10
bind = $mainMod ALT, 1, movetoworkspace, 1
bind = $mainMod ALT, 2, movetoworkspace, 2
bind = $mainMod ALT, 3, movetoworkspace, 3
bind = $mainMod ALT, 4, movetoworkspace, 4
bind = $mainMod ALT, 5, movetoworkspace, 5
bind = $mainMod ALT, 6, movetoworkspace, 6
bind = $mainMod ALT, 7, movetoworkspace, 7
bind = $mainMod ALT, 8, movetoworkspace, 8
bind = $mainMod ALT, 9, movetoworkspace, 9
bind = $mainMod ALT, 0, movetoworkspace, 10
bind = $mainMod, right, workspace, m+1
bind = $mainMod, left, workspace, m-1
# Switch workspaces on current monitor with mainMod + Control + [0-9]
bind = $mainMod CONTROL, 1, focusworkspaceoncurrentmonitor, 1
bind = $mainMod CONTROL, 2, focusworkspaceoncurrentmonitor, 2
bind = $mainMod CONTROL, 3, focusworkspaceoncurrentmonitor, 3
bind = $mainMod CONTROL, 4, focusworkspaceoncurrentmonitor, 4
bind = $mainMod CONTROL, 5, focusworkspaceoncurrentmonitor, 5
bind = $mainMod CONTROL, 6, focusworkspaceoncurrentmonitor, 6
bind = $mainMod CONTROL, 7, focusworkspaceoncurrentmonitor, 7
bind = $mainMod CONTROL, 8, focusworkspaceoncurrentmonitor, 8
bind = $mainMod CONTROL, 9, focusworkspaceoncurrentmonitor, 9
bind = $mainMod CONTROL, 0, focusworkspaceoncurrentmonitor, 10
bindm = $mainMod,mouse:272,movewindow
bindm = $mainMod,mouse:273,resizewindow
exec-once = waybar
exec-once = swayidle -w timeout 300 'swaylock -f -c 263c59' before-sleep 'swaylock -f -c 263c59'
# vim: ft=hyprlang

View File

@@ -1,5 +0,0 @@
monitor=eDP-1,prefered,0x0,1.5
monitor=DP-1,highres,1280x0,2
monitor=HDMI-A-1,highres,3200x0,2
# vim: ft=hyprlang

View File

@@ -1,10 +0,0 @@
env = LIBVA_DRIVER_NAME,nvidia
env = XDG_SESSION_TYPE,wayland
env = GBM_BACKEND,nvidia-drm
env = __GLX_VENDOR_LIBRARY_NAME,nvidia
env = WLR_NO_HARDWARE_CURSORS,1
monitor=DP-1,highres,0x0,2
monitor=DP-2,highres,1920x0,2
# vim: ft=hyprlang

View File

@@ -1,13 +0,0 @@
{
"layer": "top",
"position": "top",
"modules-left": [
"hyprland/workspaces",
"hyprland/window"
],
"modules-right": [
"tray",
"clock"
],
"reload_style_on_change": true,
}

View File

@@ -1,12 +0,0 @@
* {
background-color: #3f4947;
color: #9bafac;
}
#workspaces button.active {
border-bottom: 3px solid #9bafac;
}
#workspaces button.urgent {
border-bottom: 3px solid #a65959;
}

View File

@@ -1,13 +0,0 @@
* {
background-color: #dde4e3;
color: #2c3131;
}
#workspaces button.active {
border-bottom: 3px solid #2c3131;
}
#workspaces button.urgent {
border-bottom: 3px solid #9e412e;
}

View File

@@ -1,25 +0,0 @@
@import url("file:///home/lupan/.config/waybar/dark.css");
* {
font-family: Fira Code Nerd Font;
font-size: 12px;
}
#workspaces {
padding: 0 0.5rem;
}
#workspaces button {
padding: 0 3px;
border-radius: 0;
border-bottom: 3px solid transparent;
}
#window {
border-bottom: 3px solid transparent;
}
#clock {
padding: 0 0.5rem;
border-bottom: 3px solid transparent;
}

189
i3/.config/i3/config Normal file
View File

@@ -0,0 +1,189 @@
# i3 config file (v4)
#
# Please see https://i3wm.org/docs/userguide.html for a complete reference!
set $mod Mod4
# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
font pango:Iosevka 30px
set $dmenu_font "Iosevka:pixelsize=30"
set $dmenu_colors -nb '#1a343a' -nf '#a0a0a0' -sb '#3585ce' -sf '#e0e0e0'
# Use pactl to adjust volume in PulseAudio.
set $refresh_i3status killall -SIGUSR1 i3status
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
bindsym XF86MonBrightnessDown exec --no-startup-id xbacklight -dec 3
bindsym XF86MonBrightnessUp exec --no-startup-id xbacklight -inc 3
# Use Mouse+$mod to drag floating windows to their wanted position
floating_modifier $mod
# start a terminal
bindsym $mod+Shift+Return exec alacritty
# start new Emacs frame
bindsym $mod+e exec "emacsclient -n -c"
# kill focused window
bindsym $mod+Shift+q kill
# start dmenu (a program launcher)
bindsym $mod+p exec dmenu_run -fn $dmenu_font $dmenu_colors
# change focus
bindsym $mod+h focus left
bindsym $mod+j focus down
bindsym $mod+k focus up
bindsym $mod+l focus right
# alternatively, you can use the cursor keys:
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
# move focused window
bindsym $mod+Shift+h move left
bindsym $mod+Shift+j move down
bindsym $mod+Shift+k move up
bindsym $mod+Shift+l move right
# alternatively, you can use the cursor keys:
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
# split in horizontal orientation
bindsym $mod+Ctrl+h split h
# split in vertical orientation
bindsym $mod+Ctrl+v split v
# enter fullscreen mode for the focused container
bindsym $mod+f fullscreen toggle
# change container layout (stacked, tabbed, toggle split)
bindsym $mod+Ctrl+s layout stacking
bindsym $mod+Ctrl+w layout tabbed
bindsym $mod+Ctrl+e layout toggle split
# toggle tiling / floating
bindsym $mod+Shift+space floating toggle
# change focus between tiling / floating windows
bindsym $mod+space focus mode_toggle
# focus the parent container
bindsym $mod+Ctrl+a focus parent
# focus the child container
bindsym $mod+Ctrl+d focus child
# Define names for default workspaces for which we configure key bindings later on.
# We use variables to avoid repeating the names in multiple places.
set $ws1 "1"
set $ws2 "2"
set $ws3 "3"
set $ws4 "4"
set $ws5 "5"
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9"
set $ws10 "10"
# switch to workspace
bindsym $mod+1 workspace number $ws1
bindsym $mod+2 workspace number $ws2
bindsym $mod+3 workspace number $ws3
bindsym $mod+4 workspace number $ws4
bindsym $mod+5 workspace number $ws5
bindsym $mod+6 workspace number $ws6
bindsym $mod+7 workspace number $ws7
bindsym $mod+8 workspace number $ws8
bindsym $mod+9 workspace number $ws9
bindsym $mod+0 workspace number $ws10
bindsym $mod+Tab workspace back_and_forth
# move focused container to workspace
bindsym $mod+Shift+1 move container to workspace number $ws1
bindsym $mod+Shift+2 move container to workspace number $ws2
bindsym $mod+Shift+3 move container to workspace number $ws3
bindsym $mod+Shift+4 move container to workspace number $ws4
bindsym $mod+Shift+5 move container to workspace number $ws5
bindsym $mod+Shift+6 move container to workspace number $ws6
bindsym $mod+Shift+7 move container to workspace number $ws7
bindsym $mod+Shift+8 move container to workspace number $ws8
bindsym $mod+Shift+9 move container to workspace number $ws9
bindsym $mod+Shift+0 move container to workspace number $ws10
bindsym $mod+Shift+Tab move container to workspace back_and_forth
# reload the configuration file
bindsym $mod+Ctrl+c reload
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
bindsym $mod+Ctrl+r restart
# exit i3 (logs you out of your X session)
bindsym $mod+Ctrl+End exec "i3-nagbar -t warning -m 'Exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'"
# resize window (you can also use the mouse for that)
mode "resize" {
# These bindings trigger as soon as you enter the resize mode
# Pressing left will shrink the windows width.
# Pressing right will grow the windows width.
# Pressing up will shrink the windows height.
# Pressing down will grow the windows height.
bindsym h resize shrink width 10 px or 2 ppt
bindsym j resize grow height 10 px or 2 ppt
bindsym k resize shrink height 10 px or 2 ppt
bindsym l resize grow width 10 px or 2 ppt
# same bindings, but for the arrow keys
bindsym Left resize shrink width 10 px or 2 ppt
bindsym Down resize grow height 10 px or 2 ppt
bindsym Up resize shrink height 10 px or 2 ppt
bindsym Right resize grow width 10 px or 2 ppt
# back to normal: Enter or Escape or $mod+r
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym Ctrl+g mode "default"
bindsym $mod+r mode "default"
}
bindsym $mod+r mode "resize"
set $mode_cmd [c st] [F firefox] [s-h hibernate] [s-l lock] [s-s suspend]
mode "$mode_cmd" {
bindsym c exec st; mode "default"
bindsym Shift+f exec "firefox"; mode "default"
bindsym --release $mod+h exec "systemctl hibernate"; mode "default"
bindsym --release $mod+l exec "slock"; mode "default"
bindsym --release $mod+s exec "systemctl suspend"; mode "default"
bindsym Escape mode "default"
bindsym Ctrl+g mode "default"
}
bindsym $mod+semicolon mode "$mode_cmd"
client.focused #29a6da #3585ce #e0e0e0 #6c6aef #3585ce
client.focused_inactive #333333 #5f676a #e0e0e0 #484e50 #5f676a
client.unfocused #333333 #2a5465 #a0a0a0 #292d2e #1a343a
# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
bar {
position top
status_command i3status
colors {
background #1a343a
inactive_workspace #505050 #1a343a #808080
focused_workspace #29a6da #3585ce #e0e0e0
}
}

View File

@@ -0,0 +1,16 @@
general {
output_format = "i3bar"
}
order += "volume master"
order += "tztime local"
volume master {
format = " ♪: %volume "
format_muted = " ♪: muted (%volume) "
device = "pulse:0"
}
tztime local {
format = " %H:%M "
}

View File

@@ -1,164 +0,0 @@
# 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"
}

View File

@@ -1,125 +0,0 @@
# 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
"
}

View File

@@ -1,125 +0,0 @@
# 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
"
}

View File

@@ -1,121 +0,0 @@
# 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
"
}

View File

@@ -1,121 +0,0 @@
# 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
"
}

View File

@@ -1,116 +0,0 @@
# 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}"

View File

@@ -1,117 +0,0 @@
# 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}"

View File

@@ -1,299 +0,0 @@
# 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"
}
map global -docstring 'Buffer' user ' ' ': buffer '
declare-user-mode file-mode
map global -docstring 'Search/open' user 's' ': enter-user-mode file-mode<ret>'
map global -docstring 'Open (fd)' file-mode 'a' ': file-open<ret>'
map global -docstring 'Open (fd -H)' file-mode 'h' ': file-open-with-hidden<ret>'
map global -docstring 'Open (recent)' file-mode 'r' ': file-open-recent<ret>'
map global -docstring 'Open (nnn)' file-mode 'd' ': nnn-open %val{buffile}<ret>'
map global -docstring 'Open (nnn)' file-mode 'D' ': nnn-open .<ret>'
map global -docstring 'Open/create in dir' file-mode 'c' ': open-create-in-dir<ret>'
map global -docstring 'ctags file symbols' file-mode 's' ': ctags-file-symbols<ret>'
map global -docstring 'ctags project symbols' file-mode 'w' ': ctags-project-symbols<ret>'
map global -docstring 'Grep' file-mode 'g' ':grep '
map global -docstring 'Grep next match' file-mode 'n' ': grep-next-match<ret>'
map global -docstring 'Grep previous match' file-mode 'p' ': grep-prev-match<ret>'
map global -docstring 'Grep current file' file-mode 'l' ':grep-file '
map global -docstring 'Grep current file' file-mode 'L' ': grep-file %val{selection}<ret>'
map global -docstring 'Delete buffer' file-mode 'x' ': delete-buffer '
declare-user-mode git-mode
map global -docstring 'Git' user 'g' ': enter-user-mode git-mode<ret>'
map global -docstring 'Open file' git-mode 'a' ': file-open-git<ret>'
map global -docstring 'Blame' git-mode 'b' ': git blame<ret>'
map global -docstring 'Blame' git-mode 'B' ': git blame-jump<ret>'
map global -docstring 'Diff file' git-mode 'd' ': git diff %val{buffile}<ret>'
map global -docstring 'Diff' git-mode 'D' ': git diff<ret>'
map global -docstring 'Grep' git-mode 'g' ':git grep '
map global -docstring 'Grep' git-mode 'G' ': git grep %val{selection}<ret>'
map global -docstring 'Log' git-mode 'l' ': git log -- %val{buffile}<ret>'
map global -docstring 'Log' git-mode 'L' ': git log<ret>'
map global -docstring 'Show branch' git-mode 'c' ': git show-branch<ret>'
map global -docstring 'Status' git-mode 't' ': git status<ret>'
map global -docstring 'Show diff' git-mode 's' ': git-show-diff<ret>'
map global -docstring 'Show' git-mode 'S' ': git show<ret>'
map global -docstring 'Hide diff' git-mode 'h' ': git-hide-diff<ret>'
map global -docstring 'Next hunk' git-mode 'n' ': git next-hunk<ret>'
map global -docstring 'Prev hunk' git-mode 'p' ': git prev-hunk<ret>'
declare-user-mode options-mode
map global -docstring 'Options' user 'o' ': enter-user-mode options-mode<ret>'
map global -docstring 'Five Dark mode' options-mode 'd' ': colorscheme five-colors-dark<ret>'
map global -docstring 'Five 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>'
declare-user-mode make-mode
map global -docstring 'Make' user 'k' ': enter-user-mode make-mode<ret>'
map global -docstring 'Make' make-mode 'a' ':make '
map global -docstring 'Next' make-mode 'n' ': make-next-error<ret>'
map global -docstring 'Previous' make-mode 'p' ': make-previous-error<ret>'
map global -docstring 'General messages' make-mode 'g' ': set window make_error_pattern "^([^:\n]+):(\d+):(?:(\d+):)? ([^\n]+)?"<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-with-hidden %{
prompt -menu -shell-script-candidates %{ fd -t f -H } '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 grep-file -params 1- %{
grep %arg{@} -- %val{buffile}
}
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"}/
}
define-command git-log-show-current-commit %{
execute-keys ';<a-/>^commit\s[0-9a-f]+<ret>b'
git show %val{selection}
}
define-command -override git-show-diff %{
hook buffer -group git-show-diff NormalIdle .* %{ git update-diff }
git show-diff
}
define-command -override git-hide-diff %{
remove-hooks buffer git-show-diff
git hide-diff
}
define-command -override ctags-file-symbols %{
prompt -menu -shell-script-candidates %{
ctags -uo - -x "$kak_buffile" | awk -f "$kak_config/scripts/filesymbols.awk"
} 'File symbols: ' %{
evaluate-commands %sh{ awk -f "$kak_config/scripts/filesymbolscmd.awk" # "$kak_text" }
}
}
define-command -override ctags-project-symbols %{
prompt -menu -shell-script-candidates %{
git ls-files | xargs wc | awk '$1 > 0 && $3/$1 < 1024 { print $4 }' | xargs ctags -uo - -x | awk -f "$kak_config/scripts/projectsymbols.awk"
} 'Project symbols: ' %{
evaluate-commands %sh{ awk -f "$kak_config/scripts/projectsymbolscmd.awk" # "$kak_text" }
}
}
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'
set-option window idle_timeout 500
}
hook global ModeChange pop:insert:.* %{
unset-face window StatusLine
unset-option window idle_timeout
}
# ODIN
hook global BufSetOption filetype=odin %{
set-option buffer formatcmd 'odinfmt -stdin'
}
hook global BufSetOption filetype=go %{
hook -group buf-write-pre-fmt buffer BufWritePre .* %{
lsp-formatting-sync
}
}
# 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 'f' ': 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 } %{ edit -- %arg{1} }
}
define-command peneira-files-with-hidden %{
peneira 'git files: ' %{ fd -t f -H } %{ edit -- %arg{1} }
}
define-command peneira-recent-files %{
peneira 'mru files: ' %{ cat ~/.cache/kak-mru } %{ edit -- %arg{1} }
}
map global -docstring 'Buffer' user ' ' ': buffers<ret>'
map global -docstring 'Git files' file-mode 'a' ': peneira-git-files<ret>'
map global -docstring 'Buffers' file-mode 'b' ': buffers<ret>'
map global -docstring 'Files' file-mode 'f' ': peneira-files<ret>'
map global -docstring 'Files' file-mode 'F' ': peneira-local-files<ret>'
map global -docstring 'Files (with hidden)' file-mode 'h' ': peneira-files-with-hidden<ret>'
map global -docstring 'Lines' file-mode 'l' ': peneira-lines<ret>'
map global -docstring 'Symbols' file-mode 's' ': peneira-symbols<ret>'
map global -docstring 'Recent files' file-mode 'r' ': peneira-recent-files<ret>'
}
# LOCAL
define-command set-dark-or-light-colorscheme %{
colorscheme %sh{
if [ -e ~/.lightmode ]; then
echo five-colors-light
else
echo five-colors-dark
fi
}
}
set-dark-or-light-colorscheme

View File

@@ -1,9 +0,0 @@
{
for (i = 3; i < NF; ++i) {
if ($i ~ /^[0-9]+$/) {
j = match($0, "[ ]+" $(i-1) "[ ]+" $i " ")
print substr($0, 0, j - 1) "\u00a0" $(i-1) "\u00a0" $i
break
}
}
}

View File

@@ -1,10 +0,0 @@
BEGIN {
n = split(ENVIRON["kak_text"], a, "\u00a0")
line = a[3]
if (n == 3 && line ~ /^[0-9]+/) {
pat = a[1]
gsub(/'/, "''", pat)
gsub(/\\/, "\\\\", pat)
print "execute-keys " line " g vv x s '/\\b\\Q" pat "\\E\\b|\\Q" pat "<ret>' <a-)>,"
}
}

View File

@@ -1,9 +0,0 @@
{
for (i = 3; i < NF; ++i) {
if ($i ~ /^[0-9]+$/) {
j = match($0, "[ ]+" $(i-1) "[ ]+" $i " ")
print substr($0, 0, j - 1) "\u00a0" $(i-1) "\u00a0" $i "\u00a0" $(i+1)
break
}
}
}

View File

@@ -1,11 +0,0 @@
BEGIN {
n = split(ENVIRON["kak_text"], a, "\u00a0")
line = a[3]
if (n == 4 && line ~ /^[0-9]+/) {
pat = a[1]
gsub(/'/, "''", pat)
gsub(/\\/, "\\\\", pat)
print "edit --", a[4], line
print "execute-keys vv x s %{/\\b\\Q" pat "\\E\\b|\\Q" pat "<ret>} <a-)>,"
}
}

View File

@@ -1,4 +0,0 @@
#!/bin/sh
cd "$(dirname $1)"
exec nnn -A -p - | awk "{print \"evaluate-commands -client $3 edit\", \$1 }" | kak -p "$2"

View File

@@ -1,73 +0,0 @@
font_family HurmitNerdFont
font_size 10
cursor_blink_interval 0
enable_audio_bell no
visual_bell_duration 1.0
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
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+6 no_op
map ctrl+shift+0 nth_window -1
map ctrl+alt+1 goto_tab 1
map ctrl+alt+2 goto_tab 2
map ctrl+alt+3 goto_tab 3
map ctrl+alt+4 goto_tab 4
map ctrl+alt+5 goto_tab 5
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 -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
# Five-Colors-Dark
include current-theme.conf
# END_KITTY_THEME

View File

@@ -1,35 +0,0 @@
# 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

View File

@@ -1,35 +0,0 @@
# 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

View File

@@ -1,33 +0,0 @@
# 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

View File

@@ -1,34 +0,0 @@
# 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

File diff suppressed because it is too large Load Diff

View File

@@ -1,13 +0,0 @@
os:
edit: 'kak {{filename}}'
editAtLine: 'kak +{{line}} {{filename}}'
editAtLineAndWait: 'kak +{{line}} {{filename}}'
editInTerminal: true
openDirInEditor: 'kak -e "nnn-open {{dir}}"'
gui:
nerdFontsVersion: "3"
theme:
selectedLineBgColor:
- reverse

View File

@@ -1,11 +1,2 @@
PREFIX = /usr/local
lupan-clock: lupan-clock.c lupan-clock: lupan-clock.c
${CC} -o $@ $< -lX11 -Wall ${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

View File

@@ -1,32 +0,0 @@
#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;
}

965
lupan-wm/Cargo.lock generated Normal file
View File

@@ -0,0 +1,965 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "anyhow"
version = "1.0.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "224afbd727c3d6e4b90103ece64b8d1b67fbb1973b1046c2281eed3f3803f800"
[[package]]
name = "anymap"
version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "33954243bd79057c2de7338850b85983a44588021f8a5fee574a8888c6de4344"
[[package]]
name = "atty"
version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
dependencies = [
"hermit-abi",
"libc",
"winapi",
]
[[package]]
name = "autocfg"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
[[package]]
name = "bitflags"
version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "cairo-rs"
version = "0.15.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c76ee391b03d35510d9fa917357c7f1855bd9a6659c95a1b392e33f49b3369bc"
dependencies = [
"bitflags",
"cairo-sys-rs",
"glib",
"libc",
"thiserror",
]
[[package]]
name = "cairo-sys-rs"
version = "0.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c55d429bef56ac9172d25fecb85dc8068307d17acd74b377866b7a1ef25d3c8"
dependencies = [
"glib-sys",
"libc",
"system-deps",
]
[[package]]
name = "cfg-expr"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b0357a6402b295ca3a86bc148e84df46c02e41f41fef186bda662557ef6328aa"
dependencies = [
"smallvec",
]
[[package]]
name = "cfg-if"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "chrono"
version = "0.4.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73"
dependencies = [
"libc",
"num-integer",
"num-traits",
"time",
"winapi",
]
[[package]]
name = "clap"
version = "3.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f6f34b09b9ee8c7c7b400fe2f8df39cafc9538b03d6ba7f4ae13e4cb90bfbb7d"
dependencies = [
"atty",
"bitflags",
"clap_derive",
"indexmap",
"lazy_static",
"os_str_bytes",
"strsim",
"termcolor",
"textwrap",
]
[[package]]
name = "clap_derive"
version = "3.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "41a0645a430ec9136d2d701e54a95d557de12649a9dd7109ced3187e648ac824"
dependencies = [
"heck 0.4.0",
"proc-macro-error",
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "futures-channel"
version = "0.3.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2e5317663a9089767a1ec00a487df42e0ca174b61b4483213ac24448e4664df5"
dependencies = [
"futures-core",
]
[[package]]
name = "futures-core"
version = "0.3.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec90ff4d0fe1f57d600049061dc6bb68ed03c7d2fbd697274c41805dcb3f8608"
[[package]]
name = "futures-executor"
version = "0.3.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e8de0a35a6ab97ec8869e32a2473f4b1324459e14c29275d14b10cb1fd19b50e"
dependencies = [
"futures-core",
"futures-task",
"futures-util",
]
[[package]]
name = "futures-task"
version = "0.3.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dcf79a1bf610b10f42aea489289c5a2c478a786509693b80cd39c44ccd936366"
[[package]]
name = "futures-util"
version = "0.3.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c1d6de3acfef38d2be4b1f543f553131788603495be83da675e180c8d6b7bd1"
dependencies = [
"futures-core",
"futures-task",
"pin-project-lite",
"pin-utils",
"slab",
]
[[package]]
name = "gethostname"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e"
dependencies = [
"libc",
"winapi",
]
[[package]]
name = "glib"
version = "0.15.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "edb0306fbad0ab5428b0ca674a23893db909a98582969c9b537be4ced78c505d"
dependencies = [
"bitflags",
"futures-channel",
"futures-core",
"futures-executor",
"futures-task",
"glib-macros",
"glib-sys",
"gobject-sys",
"libc",
"once_cell",
"smallvec",
"thiserror",
]
[[package]]
name = "glib-macros"
version = "0.15.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "25a68131a662b04931e71891fb14aaf65ee4b44d08e8abc10f49e77418c86c64"
dependencies = [
"anyhow",
"heck 0.4.0",
"proc-macro-crate",
"proc-macro-error",
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "glib-sys"
version = "0.15.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef4b192f8e65e9cf76cbf4ea71fa8e3be4a0e18ffe3d68b8da6836974cc5bad4"
dependencies = [
"libc",
"system-deps",
]
[[package]]
name = "gobject-sys"
version = "0.15.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0d57ce44246becd17153bd035ab4d32cfee096a657fc01f2231c9278378d1e0a"
dependencies = [
"glib-sys",
"libc",
"system-deps",
]
[[package]]
name = "hashbrown"
version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
[[package]]
name = "heck"
version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
dependencies = [
"unicode-segmentation",
]
[[package]]
name = "heck"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9"
[[package]]
name = "hermit-abi"
version = "0.1.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
dependencies = [
"libc",
]
[[package]]
name = "indexmap"
version = "1.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
dependencies = [
"autocfg",
"hashbrown",
]
[[package]]
name = "lazy_static"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libc"
version = "0.2.139"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79"
[[package]]
name = "log"
version = "0.4.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
dependencies = [
"cfg-if",
]
[[package]]
name = "lupan-wm"
version = "0.1.1"
dependencies = [
"clap",
"penrose",
"penrose_ui",
"simplelog",
"tracing",
"tracing-subscriber",
]
[[package]]
name = "matchers"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
dependencies = [
"regex-automata",
]
[[package]]
name = "memchr"
version = "2.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a"
[[package]]
name = "memoffset"
version = "0.6.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
dependencies = [
"autocfg",
]
[[package]]
name = "nix"
version = "0.24.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069"
dependencies = [
"bitflags",
"cfg-if",
"libc",
"memoffset",
]
[[package]]
name = "nix"
version = "0.25.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4"
dependencies = [
"autocfg",
"bitflags",
"cfg-if",
"libc",
"memoffset",
"pin-utils",
]
[[package]]
name = "nom8"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ae01545c9c7fc4486ab7debaf2aad7003ac19431791868fb2e8066df97fad2f8"
dependencies = [
"memchr",
]
[[package]]
name = "nu-ansi-term"
version = "0.46.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
dependencies = [
"overload",
"winapi",
]
[[package]]
name = "num-integer"
version = "0.1.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db"
dependencies = [
"autocfg",
"num-traits",
]
[[package]]
name = "num-traits"
version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290"
dependencies = [
"autocfg",
]
[[package]]
name = "once_cell"
version = "1.17.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
[[package]]
name = "os_str_bytes"
version = "6.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e22443d1643a904602595ba1cd8f7d896afe56d26712531c5ff73a15b2fbf64"
dependencies = [
"memchr",
]
[[package]]
name = "overload"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
[[package]]
name = "pango"
version = "0.15.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "22e4045548659aee5313bde6c582b0d83a627b7904dd20dc2d9ef0895d414e4f"
dependencies = [
"bitflags",
"glib",
"libc",
"once_cell",
"pango-sys",
]
[[package]]
name = "pango-sys"
version = "0.15.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2a00081cde4661982ed91d80ef437c20eacaf6aa1a5962c0279ae194662c3aa"
dependencies = [
"glib-sys",
"gobject-sys",
"libc",
"system-deps",
]
[[package]]
name = "pangocairo"
version = "0.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7876a45c1f1d1a75a2601dc6d9ef2cb5a8be0e3d76f909d82450759929035366"
dependencies = [
"bitflags",
"cairo-rs",
"glib",
"libc",
"pango",
"pangocairo-sys",
]
[[package]]
name = "pangocairo-sys"
version = "0.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "78cf746594916c81d5f739af9335c5f55a1f4606d80b3e1d821f18cf95a29494"
dependencies = [
"cairo-sys-rs",
"glib-sys",
"libc",
"pango-sys",
"system-deps",
]
[[package]]
name = "penrose"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e93c99e05bb9926a036cd391570dd142dc8d6522edc7b290c9e86beacf7e799"
dependencies = [
"anymap",
"bitflags",
"nix 0.25.1",
"penrose_keysyms",
"strum 0.24.1",
"strum_macros 0.24.3",
"thiserror",
"tracing",
"x11rb",
]
[[package]]
name = "penrose_keysyms"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a574df0fe3d7e0bb1fd297dd722d8aea8ea33a734d862451509814062bec2d6"
dependencies = [
"strum 0.20.0",
"strum_macros 0.20.1",
]
[[package]]
name = "penrose_ui"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "540c877ce9894a5c23a4aa9a21f2a061c22de530e47bbc4ac548e7a2acb30b7d"
dependencies = [
"cairo-rs",
"pango",
"pangocairo",
"penrose",
"thiserror",
"tracing",
"x11rb",
]
[[package]]
name = "pin-project-lite"
version = "0.2.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
[[package]]
name = "pin-utils"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
[[package]]
name = "pkg-config"
version = "0.3.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
[[package]]
name = "proc-macro-crate"
version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "66618389e4ec1c7afe67d51a9bf34ff9236480f8d51e7489b7d5ab0303c13f34"
dependencies = [
"once_cell",
"toml_edit",
]
[[package]]
name = "proc-macro-error"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
dependencies = [
"proc-macro-error-attr",
"proc-macro2",
"quote",
"syn",
"version_check",
]
[[package]]
name = "proc-macro-error-attr"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
dependencies = [
"proc-macro2",
"quote",
"version_check",
]
[[package]]
name = "proc-macro2"
version = "1.0.51"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5d727cae5b39d21da60fa540906919ad737832fe0b1c165da3a34d6548c849d6"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
version = "1.0.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "38bc8cc6a5f2e3655e0899c1b848643b2562f853f114bfec7be120678e3ace05"
dependencies = [
"proc-macro2",
]
[[package]]
name = "regex"
version = "1.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733"
dependencies = [
"regex-syntax",
]
[[package]]
name = "regex-automata"
version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
dependencies = [
"regex-syntax",
]
[[package]]
name = "regex-syntax"
version = "0.6.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848"
[[package]]
name = "rustversion"
version = "1.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2cc38e8fa666e2de3c4aba7edeb5ffc5246c1c2ed0e3d17e560aeeba736b23f"
[[package]]
name = "serde"
version = "1.0.152"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb"
[[package]]
name = "sharded-slab"
version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31"
dependencies = [
"lazy_static",
]
[[package]]
name = "simplelog"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b2736f58087298a448859961d3f4a0850b832e72619d75adc69da7993c2cd3c"
dependencies = [
"chrono",
"log",
"termcolor",
]
[[package]]
name = "slab"
version = "0.4.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef"
dependencies = [
"autocfg",
]
[[package]]
name = "smallvec"
version = "1.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
[[package]]
name = "strsim"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
[[package]]
name = "strum"
version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7318c509b5ba57f18533982607f24070a55d353e90d4cae30c467cdb2ad5ac5c"
dependencies = [
"strum_macros 0.20.1",
]
[[package]]
name = "strum"
version = "0.24.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f"
dependencies = [
"strum_macros 0.24.3",
]
[[package]]
name = "strum_macros"
version = "0.20.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ee8bc6b87a5112aeeab1f4a9f7ab634fe6cbefc4850006df31267f4cfb9e3149"
dependencies = [
"heck 0.3.3",
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "strum_macros"
version = "0.24.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59"
dependencies = [
"heck 0.4.0",
"proc-macro2",
"quote",
"rustversion",
"syn",
]
[[package]]
name = "syn"
version = "1.0.107"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5"
dependencies = [
"proc-macro2",
"quote",
"unicode-ident",
]
[[package]]
name = "system-deps"
version = "6.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2955b1fe31e1fa2fbd1976b71cc69a606d7d4da16f6de3333d0c92d51419aeff"
dependencies = [
"cfg-expr",
"heck 0.4.0",
"pkg-config",
"toml",
"version-compare",
]
[[package]]
name = "termcolor"
version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4"
dependencies = [
"winapi-util",
]
[[package]]
name = "textwrap"
version = "0.14.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0066c8d12af8b5acd21e00547c3797fde4e8677254a7ee429176ccebbe93dd80"
[[package]]
name = "thiserror"
version = "1.0.38"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
version = "1.0.38"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "thread_local"
version = "1.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152"
dependencies = [
"cfg-if",
"once_cell",
]
[[package]]
name = "time"
version = "0.1.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255"
dependencies = [
"libc",
"wasi",
"winapi",
]
[[package]]
name = "toml"
version = "0.5.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
dependencies = [
"serde",
]
[[package]]
name = "toml_datetime"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4553f467ac8e3d374bc9a177a26801e5d0f9b211aa1673fb137a403afd1c9cf5"
[[package]]
name = "toml_edit"
version = "0.18.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56c59d8dd7d0dcbc6428bf7aa2f0e823e26e43b3c9aca15bbc9475d23e5fa12b"
dependencies = [
"indexmap",
"nom8",
"toml_datetime",
]
[[package]]
name = "tracing"
version = "0.1.37"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"
dependencies = [
"cfg-if",
"log",
"pin-project-lite",
"tracing-attributes",
"tracing-core",
]
[[package]]
name = "tracing-attributes"
version = "0.1.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "tracing-core"
version = "0.1.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a"
dependencies = [
"once_cell",
"valuable",
]
[[package]]
name = "tracing-log"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922"
dependencies = [
"lazy_static",
"log",
"tracing-core",
]
[[package]]
name = "tracing-subscriber"
version = "0.3.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70"
dependencies = [
"matchers",
"nu-ansi-term",
"once_cell",
"regex",
"sharded-slab",
"smallvec",
"thread_local",
"tracing",
"tracing-core",
"tracing-log",
]
[[package]]
name = "unicode-ident"
version = "1.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc"
[[package]]
name = "unicode-segmentation"
version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b"
[[package]]
name = "valuable"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
[[package]]
name = "version-compare"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29"
[[package]]
name = "version_check"
version = "0.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe"
[[package]]
name = "wasi"
version = "0.10.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f"
[[package]]
name = "winapi"
version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
dependencies = [
"winapi-i686-pc-windows-gnu",
"winapi-x86_64-pc-windows-gnu",
]
[[package]]
name = "winapi-i686-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
[[package]]
name = "winapi-util"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
dependencies = [
"winapi",
]
[[package]]
name = "winapi-wsapoll"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "44c17110f57155602a80dca10be03852116403c9ff3cd25b079d666f2aa3df6e"
dependencies = [
"winapi",
]
[[package]]
name = "winapi-x86_64-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
name = "x11rb"
version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "592b4883219f345e712b3209c62654ebda0bb50887f330cbd018d0f654bfd507"
dependencies = [
"gethostname",
"libc",
"nix 0.24.3",
"winapi",
"winapi-wsapoll",
"x11rb-protocol",
]
[[package]]
name = "x11rb-protocol"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56b245751c0ac9db0e006dc812031482784e434630205a93c73cfefcaabeac67"
dependencies = [
"nix 0.24.3",
]

12
lupan-wm/Cargo.toml Normal file
View File

@@ -0,0 +1,12 @@
[package]
name = "lupan-wm"
version = "0.1.1"
edition = "2021"
[dependencies]
clap = { version = "3.0.5", features = ["derive"] }
penrose = "0.3.1"
penrose_ui = "0.1.1"
simplelog = "0.8"
tracing = { version = "0.1.37", features = ["attributes", "log"] }
tracing-subscriber = { version = "0.3.16", features = ["env-filter"] }

184
lupan-wm/src/main.rs Normal file
View File

@@ -0,0 +1,184 @@
use clap::Parser;
use penrose::{
builtin::{
actions::{exit, log_current_state, modify_with, send_layout_message, spawn, key_handler},
layout::{
messages::{ExpandMain, IncMain, ShrinkMain},
transformers::{Gaps, ReserveTop},
MainAndStack, Monocle,
},
},
core::{
bindings::{parse_keybindings_with_xmodmap, KeyEventHandler},
layout::LayoutStack,
Config, WindowManager,
},
extensions::{hooks::add_ewmh_hooks, actions::focus_or_spawn},
extensions::actions::toggle_fullscreen,
map, stack,
x11rb::RustConn,
Result,
util
};
use penrose_ui::{bar::Position, core::TextStyle, status_bar};
use std::collections::HashMap;
use tracing_subscriber::{self, prelude::*};
const FONT: &str = "Iosevka Slab Light";
const FONT_SIZE: i32 = 20;
const BLACK: u32 = 0x282828ff;
const WHITE: u32 = 0x7dd3fcff;
const GREY: u32 = 0x94a3b8ff;
const BLUE: u32 = 0x0c4a6eff;
const FOCUSED_BORDER: u32 = 0xd97706ff;
const NORMAL_BORDER: u32 = 0x64748ff;
const MAX_MAIN: u32 = 1;
const RATIO: f32 = 0.6;
const RATIO_STEP: f32 = 0.05;
const OUTER_PX: u32 = 5;
const INNER_PX: u32 = 5;
const TERMINAL: &str = "alacritty";
const EDITOR: &str = "emacsclient -c -n";
const SUSPEND: &str = "systemctl suspend";
const LOCK: &str = "slock";
const SET_THEME: &str = "lupan-set-theme";
const DMENU_ARGS: &[&str] = &["-fn", "Iosevka Slab Light"];
fn raw_key_bindings() -> HashMap<String, Box<dyn KeyEventHandler<RustConn>>> {
let mut theme = "dark";
let mut raw_bindings = map! {
map_keys: |k: &str| k.to_owned();
"M-j" => modify_with(|cs| cs.focus_down()),
"M-k" => modify_with(|cs| cs.focus_up()),
"M-S-j" => modify_with(|cs| cs.swap_down()),
"M-S-k" => modify_with(|cs| cs.swap_up()),
"M-S-c" => modify_with(|cs| cs.kill_focused()),
"M-a" => modify_with(|cs| cs.toggle_tag()),
"M-f" => toggle_fullscreen(),
"M-Return" => modify_with(|cs| cs.swap_focus_and_head()),
"M-m" => modify_with(|cs| cs.focus_head()),
"M-bracketright" => modify_with(|cs| cs.next_screen()),
"M-bracketleft" => modify_with(|cs| cs.previous_screen()),
"M-S-bracketright" => modify_with(|cs| {
let current_tag = cs.current_tag().to_string();
cs.next_screen();
cs.pull_tag_to_screen(current_tag);
}),
"M-S-bracketleft" => modify_with(|cs| {
let current_tag = cs.current_tag().to_string();
cs.previous_screen();
cs.pull_tag_to_screen(current_tag);
}),
"M-grave" => modify_with(|cs| cs.next_layout()),
"M-S-grave" => modify_with(|cs| cs.previous_layout()),
"M-comma" => send_layout_message(|| IncMain(1)),
"M-period" => send_layout_message(|| IncMain(-1)),
"M-l" => send_layout_message(|| ExpandMain),
"M-h" => send_layout_message(|| ShrinkMain),
"M-p" => key_handler(move |_, _| util::spawn_with_args("dmenu_run", DMENU_ARGS)),
"M-S-p" => spawn("rofi -theme Arc-Dark -show combi"),
"M-S-e" => spawn(EDITOR),
"M-S-s" => log_current_state(),
"M-S-Return" => spawn(TERMINAL),
"C-M-f" => focus_or_spawn("firefox", "firefox"),
"C-M-l" => spawn(LOCK),
"C-M-s" => spawn(SUSPEND),
"C-M-t" => focus_or_spawn("thunderbird", "thunderbird"),
"M-S-q" => exit(),
"M-i" => modify_with(|cs| cs.current_tag().parse::<i32>().map_or((), |i| cs.focus_tag((i - 1).to_string()))),
"M-o" => modify_with(|cs| cs.current_tag().parse::<i32>().map_or((), |i| cs.focus_tag((i + 1).to_string()))),
"M-S-i" => modify_with(|cs| cs.current_tag().parse::<i32>().map_or((), |i| cs.move_focused_to_tag((i - 1).to_string()))),
"M-S-o" => modify_with(|cs| cs.current_tag().parse::<i32>().map_or((), |i| cs.move_focused_to_tag((i + 1).to_string()))),
"M-C-i" => modify_with(|cs| cs.current_tag().parse::<i32>().map_or((), |i| cs.pull_tag_to_screen((i - 1).to_string()))),
"M-C-o" => modify_with(|cs| cs.current_tag().parse::<i32>().map_or((), |i| cs.pull_tag_to_screen((i + 1).to_string()))),
// Switch theme
"M-S-F6" => key_handler(move |_, _| {
theme = if theme == "dark" { "light" } else { "dark" };
util::spawn(format!("{} {}", SET_THEME, theme))
}),
};
for tag in &["1", "2", "3", "4", "5", "6", "7", "8", "9"] {
raw_bindings.extend([
(
format!("M-{tag}"),
modify_with(move |client_set| client_set.focus_tag(tag)),
),
(
format!("M-S-{tag}"),
modify_with(move |client_set| client_set.move_focused_to_tag(tag)),
),
(
format!("M-C-{tag}"),
modify_with(move |client_set| client_set.pull_tag_to_screen(tag)),
),
]);
}
raw_bindings
}
fn layouts(bar_height_px: u32) -> LayoutStack {
stack!(
MainAndStack::side(MAX_MAIN, RATIO, RATIO_STEP),
MainAndStack::side_mirrored(MAX_MAIN, RATIO, RATIO_STEP),
MainAndStack::bottom(MAX_MAIN, RATIO, RATIO_STEP),
Monocle::boxed()
)
.map(|layout| ReserveTop::wrap(Gaps::wrap(layout, OUTER_PX, INNER_PX), bar_height_px))
}
#[derive(Parser, Debug)]
#[clap(about, version, author)]
struct Args {
/// Font name
#[clap(short, long, default_value_t = FONT.to_string())]
font: String,
/// Font size
#[clap(short = 's', long, default_value_t = FONT_SIZE)]
font_size: i32,
}
fn main() -> Result<()> {
let args = Args::parse();
tracing_subscriber::fmt()
.with_env_filter("debug")
.finish()
.init();
let bar_height_px = 2 * args.font_size as u32;
let config = add_ewmh_hooks(Config {
default_layouts: layouts(bar_height_px),
normal_border: NORMAL_BORDER.into(),
focused_border: FOCUSED_BORDER.into(),
..Config::default()
});
let conn = RustConn::new()?;
let key_bindings = parse_keybindings_with_xmodmap(raw_key_bindings())?;
let style = TextStyle {
font: FONT.to_string(),
point_size: args.font_size,
fg: WHITE.into(),
bg: Some(BLACK.into()),
padding: (2.0, 2.0),
};
let bar = status_bar(bar_height_px, &style, BLUE, GREY, Position::Top).unwrap();
let wm = bar.add_to(WindowManager::new(
config,
key_bindings,
HashMap::new(),
conn,
)?);
wm.run()
}

View File

@@ -1,325 +0,0 @@
// This config is in the KDL format: https://kdl.dev
// https://niri-wm.github.io/niri/Configuration:-Introduction
spawn-at-startup "waybar"
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"; }
Mod+B hotkey-overlay-title="Toggle waybar" { spawn "killall" "-SIGUSR1" "waybar"; }
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; }
}
include "dark.kdl"

View File

@@ -1,9 +0,0 @@
layout {
background-color "#414853"
focus-ring {
width 4
active-color "#5396c7"
inactive-color "#505050"
}
}

View File

@@ -1,9 +0,0 @@
layout {
background-color "#c0c1c2"
focus-ring {
width 4
active-color "#85c9fc"
inactive-color "#505050"
}
}

View File

@@ -1,13 +0,0 @@
{
"layer": "top",
"position": "top",
"modules-left": [
"niri/workspaces",
"niri/window"
],
"modules-right": [
"tray",
"clock"
],
"reload_style_on_change": true,
}

View File

@@ -1,12 +0,0 @@
* {
background-color: #282e38;
color: #a29e98;
}
#workspaces button.active {
border-bottom: 3px solid #04785d;
}
#workspaces button.urgent {
border-bottom: 3px solid #c37583;
}

View File

@@ -1,12 +0,0 @@
* {
background-color: #f6ede0;
color: #696257;
}
#workspaces button.active {
border-bottom: 3px solid #278a6e;
}
#workspaces button.urgent {
border-bottom: 3px solid #d0818f;
}

View File

@@ -1,25 +0,0 @@
@import url("file:///home/lupan/.config/waybar/dark.css");
* {
font-family: HurmitNerdFont;
font-size: 12px;
}
#workspaces {
padding: 0 0.5rem;
}
#workspaces button {
padding: 0 3px;
border-radius: 0;
border-bottom: 3px solid transparent;
}
#window {
border-bottom: 3px solid transparent;
}
#clock {
padding: 0 0.5rem;
border-bottom: 3px solid transparent;
}

View File

@@ -1,55 +0,0 @@
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)

View File

@@ -1,55 +0,0 @@
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)

View File

@@ -1,20 +1,495 @@
require("config.options") -- Set <space> as the leader key (must be before plugins)
require("config.remap") -- See `:help mapleader`
require("config.lsp")
require("plugins.arrow") vim.g.mapleader = ' '
require("plugins.auto-session") vim.g.maplocalleader = ' '
require("plugins.colorscheme")
require("plugins.conform") -- Disable netrw: suggested for neovim-tree
require("plugins.flash") vim.g.loaded_netrw = 1
require("plugins.fzf-lua") vim.g.loaded_netrwPlugin = 1
require("plugins.guess-indent")
require("plugins.luasnip") -- Install package manager (`:help lazy.nvim.txt`)
require("plugins.multicursor") local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim'
require("plugins.nvim-various-textobjs") if not vim.loop.fs_stat(lazypath) then
require("plugins.oil") vim.fn.system {
require("plugins.slimline") 'git',
require("plugins.snacks") 'clone',
require("plugins.surround") '--filter=blob:none',
require("plugins.treesitter") 'https://github.com/folke/lazy.nvim.git',
require("plugins.which-key") '--branch=stable', -- latest stable release
lazypath,
}
end
vim.opt.rtp:prepend(lazypath)
-- Install and configure packages
require('lazy').setup({
-- Git related plugins
'tpope/vim-fugitive',
'tpope/vim-rhubarb',
-- Detect tabstop and shiftwidth automatically
'tpope/vim-sleuth',
{
-- LSP Configuration & Plugins
'neovim/nvim-lspconfig',
dependencies = {
-- Automatically install LSPs to stdpath for neovim
{ 'williamboman/mason.nvim', config = true },
'williamboman/mason-lspconfig.nvim',
-- Useful status updates for LSP
{ 'j-hui/fidget.nvim', tag = 'legacy', opts = {} },
-- Additional lua configuration, makes nvim stuff amazing!
'folke/neodev.nvim',
},
},
{
-- Autocompletion
'hrsh7th/nvim-cmp',
dependencies = {
-- Snippet Engine & its associated nvim-cmp source
'L3MON4D3/LuaSnip',
'saadparwaiz1/cmp_luasnip',
-- Adds LSP completion capabilities
'hrsh7th/cmp-nvim-lsp',
-- Adds a number of user-friendly snippets
'rafamadriz/friendly-snippets',
},
},
-- Useful plugin to show you pending keybinds.
{ 'folke/which-key.nvim', opts = {} },
{
-- 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)
vim.keymap.set('n', '<leader>gp', require('gitsigns').prev_hunk,
{ buffer = bufnr, desc = '[G]o to [P]revious Hunk' })
vim.keymap.set('n', '<leader>gn', require('gitsigns').next_hunk, { buffer = bufnr, desc = '[G]o to [N]ext Hunk' })
vim.keymap.set('n', '<leader>ph', require('gitsigns').preview_hunk, { buffer = bufnr, desc = '[P]review [H]unk' })
vim.keymap.set('n', '<leader>sh', require('gitsigns').stage_hunk, { buffer = bufnr, desc = '[S]tage [H]unk' })
end,
},
},
{
"rmehri01/onenord.nvim",
priority = 1000,
config = function()
vim.cmd.colorscheme 'onenord'
end
},
{
-- Set lualine as statusline
'nvim-lualine/lualine.nvim',
-- See `:help lualine.txt`
opts = {
options = {
icons_enabled = false,
theme = 'onenord',
component_separators = '|',
section_separators = '',
},
},
},
{
-- Add indentation guides even on blank lines
'lukas-reineke/indent-blankline.nvim',
-- Enable `lukas-reineke/indent-blankline.nvim`
-- See `:help indent_blankline.txt`
opts = {
char = '',
show_trailing_blankline_indent = false,
},
},
-- "gc" to comment visual regions/lines
{ 'numToStr/Comment.nvim', opts = {} },
-- Fuzzy Finder (files, lsp, etc)
{ 'nvim-telescope/telescope.nvim', branch = '0.1.x', dependencies = { 'nvim-lua/plenary.nvim' } },
-- Fuzzy Finder Algorithm which requires local dependencies to be built.
-- Only load if `make` is available. Make sure you have the system
-- requirements installed.
{
'nvim-telescope/telescope-fzf-native.nvim',
-- NOTE: If you are having trouble with this installation,
-- refer to the README for telescope-fzf-native for more instructions.
build = 'make',
cond = function()
return vim.fn.executable 'make' == 1
end,
},
{
-- Highlight, edit, and navigate code
'nvim-treesitter/nvim-treesitter',
dependencies = {
'nvim-treesitter/nvim-treesitter-textobjects',
},
build = ':TSUpdate',
},
{
'nvim-tree/nvim-tree.lua',
dependencies = {
'nvim-tree/nvim-web-devicons'
},
opts = {
hijack_cursor = true,
view = {
width = 40,
},
},
},
{ 'nvim-orgmode/orgmode' },
-- See: https://github.com/folke/lazy.nvim#-structuring-your-plugins
-- { import = 'custom.plugins' },
}, {})
-- [[ Org mode ]]
local org = require('orgmode')
org.setup_ts_grammar()
require('nvim-treesitter.configs').setup {
-- If TS highlights are not enabled at all, or disabled via `disable` prop,
-- highlighting will fallback to default Vim syntax highlighting
highlight = {
enable = true,
-- Required for spellcheck, some LaTex highlights and
-- code block highlights that do not have ts grammar
additional_vim_regex_highlighting = { 'org' },
},
ensure_installed = { 'org' }, -- Or run :TSUpdate org
}
org.setup({
org_agenda_files = { '~/org/*.org' },
org_default_notes_file = '~/org/capture.org',
})
-- [[ Setting options ]]
-- See `:help vim.o`
-- Set highlight on search
vim.o.hlsearch = false
-- Make line numbers default
vim.wo.number = true
-- Enable mouse mode
vim.o.mouse = 'a'
-- Sync clipboard between OS and Neovim.
-- Remove this option if you want your OS clipboard to remain independent.
-- See `:help 'clipboard'`
vim.o.clipboard = 'unnamedplus'
-- 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.timeoutlen = 300
-- 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
-- [[ Basic Keymaps ]]
-- Keymaps for better default experience
-- See `:help vim.keymap.set()`
vim.keymap.set({ 'n', 'v' }, '<Space>', '<Nop>', { silent = true })
-- Remap for dealing with word wrap
vim.keymap.set('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true })
vim.keymap.set('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true })
vim.keymap.set("n", "<leader>tt", ":NvimTreeToggle<cr>", { desc = "[T]oggle Nvim [T]ree" })
-- [[ Highlight on yank ]]
-- See `:help vim.highlight.on_yank()`
local highlight_group = vim.api.nvim_create_augroup('YankHighlight', { clear = true })
vim.api.nvim_create_autocmd('TextYankPost', {
callback = function()
vim.highlight.on_yank()
end,
group = highlight_group,
pattern = '*',
})
-- [[ Configure Telescope ]]
-- See `:help telescope` and `:help telescope.setup()`
require('telescope').setup {
defaults = {
mappings = {
i = {
['<C-u>'] = false,
['<C-d>'] = false,
},
},
},
}
-- Enable telescope fzf native, if installed
pcall(require('telescope').load_extension, 'fzf')
-- See `:help telescope.builtin`
vim.keymap.set('n', '<leader>?', require('telescope.builtin').oldfiles, { desc = '[?] Find recently opened files' })
vim.keymap.set('n', '<leader><space>', require('telescope.builtin').buffers, { desc = '[ ] Find existing buffers' })
vim.keymap.set('n', '<leader>/', function()
-- You can pass additional configuration to telescope to change theme, layout, etc.
require('telescope.builtin').current_buffer_fuzzy_find(require('telescope.themes').get_dropdown {
winblend = 10,
previewer = false,
})
end, { desc = '[/] Fuzzily search in current buffer' })
vim.keymap.set('n', '<leader>gf', require('telescope.builtin').git_files, { desc = 'Search [G]it [F]iles' })
vim.keymap.set('n', '<leader>sf', require('telescope.builtin').find_files, { desc = '[S]earch [F]iles' })
vim.keymap.set('n', '<leader>sh', require('telescope.builtin').help_tags, { desc = '[S]earch [H]elp' })
vim.keymap.set('n', '<leader>sw', require('telescope.builtin').grep_string, { desc = '[S]earch current [W]ord' })
vim.keymap.set('n', '<leader>sg', require('telescope.builtin').live_grep, { desc = '[S]earch by [G]rep' })
vim.keymap.set('n', '<leader>sd', require('telescope.builtin').diagnostics, { desc = '[S]earch [D]iagnostics' })
-- [[ Configure Treesitter ]]
-- See `:help nvim-treesitter`
require('nvim-treesitter.configs').setup {
-- Add languages to be installed here that you want installed for treesitter
ensure_installed = { 'c', 'cpp', 'go', 'lua', 'python', 'rust', 'tsx', 'typescript', 'vimdoc', 'vim' },
-- Autoinstall languages that are not installed. Defaults to false (but you can change for yourself!)
auto_install = false,
highlight = { enable = true },
indent = { enable = true },
incremental_selection = {
enable = true,
keymaps = {
init_selection = '<c-space>',
node_incremental = '<c-space>',
scope_incremental = '<c-s>',
node_decremental = '<M-space>',
},
},
textobjects = {
select = {
enable = true,
lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim
keymaps = {
-- You can use the capture groups defined in textobjects.scm
['aa'] = '@parameter.outer',
['ia'] = '@parameter.inner',
['af'] = '@function.outer',
['if'] = '@function.inner',
['ac'] = '@class.outer',
['ic'] = '@class.inner',
},
},
move = {
enable = true,
set_jumps = true, -- whether to set jumps in the jumplist
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',
},
},
},
}
-- Diagnostic keymaps
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous diagnostic message' })
vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next diagnostic message' })
vim.keymap.set('n', '<leader>e', vim.diagnostic.open_float, { desc = 'Open floating diagnostic message' })
vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnostics list' })
-- [[ Configure LSP ]]
-- This function gets run when an LSP connects to a particular buffer.
local on_attach = function(_, bufnr)
local nmap = function(keys, func, desc)
if desc then
desc = 'LSP: ' .. desc
end
vim.keymap.set('n', keys, func, { buffer = bufnr, desc = desc })
end
nmap('<leader>rn', vim.lsp.buf.rename, '[R]e[n]ame')
nmap('<leader>ca', vim.lsp.buf.code_action, '[C]ode [A]ction')
nmap('gd', vim.lsp.buf.definition, '[G]oto [D]efinition')
nmap('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences')
nmap('gI', vim.lsp.buf.implementation, '[G]oto [I]mplementation')
nmap('<leader>D', vim.lsp.buf.type_definition, 'Type [D]efinition')
nmap('<leader>ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols')
nmap('<leader>ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols')
-- See `:help K` for why this keymap
nmap('K', vim.lsp.buf.hover, 'Hover Documentation')
nmap('<C-k>', vim.lsp.buf.signature_help, 'Signature Documentation')
-- Lesser used LSP functionality
nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration')
nmap('<leader>wa', vim.lsp.buf.add_workspace_folder, '[W]orkspace [A]dd Folder')
nmap('<leader>wr', vim.lsp.buf.remove_workspace_folder, '[W]orkspace [R]emove Folder')
nmap('<leader>wl', function()
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
end, '[W]orkspace [L]ist Folders')
-- Create a command `:Format` local to the LSP buffer
vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_)
vim.lsp.buf.format()
end, { desc = 'Format current buffer with LSP' })
end
-- Enable the following language servers
-- Feel free to add/remove any LSPs that you want here. They will automatically be installed.
--
-- Add any additional override configuration in the following tables. They will be passed to
-- the `settings` field of the server config. You must look up that documentation yourself.
local servers = {
-- clangd = {},
-- gopls = {},
-- pyright = {},
-- rust_analyzer = {},
-- tsserver = {},
lua_ls = {
Lua = {
workspace = { checkThirdParty = false },
telemetry = { enable = false },
},
},
}
-- Setup neovim lua configuration
require('neodev').setup()
-- nvim-cmp supports additional completion capabilities, so broadcast that to servers
local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities)
-- Ensure the servers above are installed
local mason_lspconfig = require 'mason-lspconfig'
mason_lspconfig.setup {
ensure_installed = vim.tbl_keys(servers),
}
mason_lspconfig.setup_handlers {
function(server_name)
require('lspconfig')[server_name].setup {
capabilities = capabilities,
on_attach = on_attach,
settings = servers[server_name],
}
end,
}
-- [[ Configure nvim-cmp ]]
-- See `:help cmp`
local cmp = require 'cmp'
local luasnip = require 'luasnip'
require('luasnip.loaders.from_vscode').lazy_load()
luasnip.config.setup {}
cmp.setup {
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end,
},
mapping = cmp.mapping.preset.insert {
['<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-Space>'] = cmp.mapping.complete {},
['<CR>'] = cmp.mapping.confirm {
behavior = cmp.ConfirmBehavior.Replace,
select = true,
},
['<Tab>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.expand_or_locally_jumpable() then
luasnip.expand_or_jump()
else
fallback()
end
end, { 'i', 's' }),
['<S-Tab>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.locally_jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end, { 'i', 's' }),
},
sources = {
{ name = 'nvim_lsp' },
{ name = 'luasnip' },
},
}
vim.cmd('autocmd BufWritePre *.go :Format')
-- The line beneath this is called `modeline`. See `:help modeline`
-- vim: ts=2 sts=2 sw=2 et

View File

@@ -1,12 +0,0 @@
{
"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" }
}

View File

@@ -1,5 +0,0 @@
return {
cmd = { "clangd" },
filetypes = { "c", "cpp" },
root_markers = { ".git" },
}

View File

@@ -1,5 +0,0 @@
return {
cmd = { "gopls" },
filetypes = { "go", "gomod", "gowork", "gosum", "gotmpl" },
root_markers = { "go.mod", "go.work", ".git" },
}

View File

@@ -1,15 +0,0 @@
return {
cmd = { "lua-language-server" },
filetypes = { "lua" },
root_markers = { ".luarc.json", ".git" },
settings = {
Lua = {
runtime = {
version = "LuaJIT",
},
diagnostics = {
globals = { "vim" },
}
},
},
}

View File

@@ -1,5 +0,0 @@
return {
cmd = { "ols" },
filetypes = { "odin" },
root_markers = { ".git" },
}

View File

@@ -1,5 +0,0 @@
return {
cmd = { "templ", "lsp" },
filetypes = { "templ" },
root_markers = { "go.mod", "go.work", ".git" },
}

View File

@@ -1,5 +0,0 @@
return {
cmd = { "typescript-language-server", "--stdio" },
filetypes = { "javascript", "typescript", "javascriptreact", "typescriptreact" },
root_markers = { "package.json", "tsconfig.json", ".git" },
}

View File

@@ -1,57 +0,0 @@
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

View File

@@ -1,17 +0,0 @@
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" } })

View File

@@ -1,26 +0,0 @@
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,
})

View File

@@ -1,24 +0,0 @@
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',
},
})

View File

@@ -1,19 +0,0 @@
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>")

View File

@@ -1,12 +0,0 @@
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

View File

@@ -1,12 +0,0 @@
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

View File

@@ -1,12 +0,0 @@
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()

View File

@@ -1,36 +0,0 @@
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

View File

@@ -1,30 +0,0 @@
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

View File

@@ -1,232 +0,0 @@
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" })

View File

@@ -1,8 +0,0 @@
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

View File

@@ -1,48 +0,0 @@
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

View File

@@ -1,76 +0,0 @@
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

View File

@@ -1,9 +0,0 @@
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

View File

@@ -1,10 +0,0 @@
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" })

Some files were not shown because too many files have changed in this diff Show More