Compare commits
3 Commits
3f34f1c684
...
ebec63e48c
| Author | SHA1 | Date | |
|---|---|---|---|
| ebec63e48c | |||
| b600226065 | |||
| 4398125c7b |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -9,3 +9,4 @@ lupan-wm/target
|
|||||||
__pycache__
|
__pycache__
|
||||||
/dwm
|
/dwm
|
||||||
/st
|
/st
|
||||||
|
/vis/.config/vis/plugins/
|
||||||
|
|||||||
175
dk/.config/dk/dkrc
Executable file
175
dk/.config/dk/dkrc
Executable file
@@ -0,0 +1,175 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# determine where to place the log file
|
||||||
|
logfile="$HOME/.dkrc.log"
|
||||||
|
[ -d "$HOME/.local/share/xorg" ] && logfile="$HOME/.local/share/xorg/dkrc.log"
|
||||||
|
: > "$logfile"
|
||||||
|
|
||||||
|
# load sxhkd for keybinds
|
||||||
|
pgrep sxhkd || sxhkd -c "$HOME/.config/dk/sxhkdrc" &
|
||||||
|
|
||||||
|
# spawn a scratchpad terminal if not already (see sxhkdrc and rules for binds/setup)
|
||||||
|
# pgrep -f "st -c scratchpad" || st -c scratchpad &
|
||||||
|
|
||||||
|
# adjust border widths based on the DPI of the monitor
|
||||||
|
px=$(xrandr | grep ' connected' | tail -n1 | grep -o '[0-9]\+x[0-9]\+' | cut -d'x' -f2)
|
||||||
|
mm=$(xrandr | grep ' connected' | tail -n1 | grep -o '[0-9]\+mm' | tail -n1 | sed 's/mm//')
|
||||||
|
dpi=$(( (px / mm) * 25 ))
|
||||||
|
|
||||||
|
if [ $dpi -ge 140 ]; then
|
||||||
|
border_width=5
|
||||||
|
border_outer_width=3
|
||||||
|
elif [ $dpi -ge 120 ]; then
|
||||||
|
border_width=4
|
||||||
|
border_outer_width=2
|
||||||
|
else
|
||||||
|
border_width=2
|
||||||
|
border_outer_width=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
{ # compound command to redirect all output
|
||||||
|
|
||||||
|
# workspace settings
|
||||||
|
# ------------------------
|
||||||
|
|
||||||
|
# initialize 6 workspaces (1-6) (default: 1/monitor)
|
||||||
|
dkcmd set numws=10
|
||||||
|
|
||||||
|
# default workspace '_' values used when allocating new workspaces
|
||||||
|
# can be applied to all existing workspaces when passed 'apply' after ws=_
|
||||||
|
dkcmd set ws=_ apply layout=tile master=1 stack=3 gap=0 msplit=0.5 ssplit=0.5
|
||||||
|
|
||||||
|
# use grid layout, padding, and gaps on last workspace
|
||||||
|
#dkcmd set ws=6 layout=grid pad left=200 right=200 top=100 bottom=100 gap=50
|
||||||
|
|
||||||
|
# change workspace names (default: number == name -> 1:1, 2:2, 3:3....)
|
||||||
|
# dkcmd set \
|
||||||
|
# ws=1 name="edit" \
|
||||||
|
# ws=2 name="web" \
|
||||||
|
# ws=3 name="😀" \
|
||||||
|
# ws=4 name="😠" \
|
||||||
|
# ws=5 name="5" \
|
||||||
|
# ws=6 name="6" \
|
||||||
|
|
||||||
|
# enable static workspaces assigned to monitors (relevant for multiple monitors)
|
||||||
|
monitors=$(polybar -m | sed 's/+/:/g' | awk -F: '{print $3, $1}' | sort -n | cut -d' ' -f2 | xargs)
|
||||||
|
mon1=$(echo $monitors | cut -d' ' -f1)
|
||||||
|
mon2=$(echo $monitors | cut -d' ' -f2)
|
||||||
|
mon3=$(echo $monitors | cut -d' ' -f3)
|
||||||
|
if [ -z "$mon2" ]; then
|
||||||
|
mon2="$mon1"
|
||||||
|
mon3="$mon1"
|
||||||
|
elif [ -z "$mon3" ]; then
|
||||||
|
mon3="$mon1"
|
||||||
|
fi
|
||||||
|
dkcmd set static_ws=true \
|
||||||
|
ws=1 mon=$mon2 \
|
||||||
|
ws=2 mon=$mon2 \
|
||||||
|
ws=3 mon=$mon2 \
|
||||||
|
ws=4 mon=$mon2 \
|
||||||
|
ws=5 mon=$mon2 \
|
||||||
|
ws=6 mon=$mon2 \
|
||||||
|
ws=7 mon=$mon2 \
|
||||||
|
ws=8 mon=$mon2 \
|
||||||
|
ws=9 mon=$mon1 \
|
||||||
|
ws=10 mon=$mon3
|
||||||
|
|
||||||
|
# global settings
|
||||||
|
# ---------------------
|
||||||
|
|
||||||
|
# focus windows when receiving activation and enable focus-follows-mouse
|
||||||
|
dkcmd set focus_open=true focus_urgent=true focus_mouse=true
|
||||||
|
|
||||||
|
# place clients at the tail and ignore size hints on tiled windows
|
||||||
|
dkcmd set tile_tohead=0 tile_hints=false
|
||||||
|
|
||||||
|
# minimum width/height for resizing, and minimum allowed on-screen when moving
|
||||||
|
dkcmd set win_minwh=50 win_minxy=10
|
||||||
|
|
||||||
|
# disable gaps and borders in single window layouts
|
||||||
|
dkcmd set smart_gap=true smart_border=true
|
||||||
|
|
||||||
|
# define mouse mod and move/resize buttons
|
||||||
|
dkcmd set mouse mod=mod4 move=button1 resize=button3
|
||||||
|
|
||||||
|
# obey motif border hints on windows that draw their own (steam, easyeffects, etc.)
|
||||||
|
dkcmd set obey_motif=true
|
||||||
|
|
||||||
|
|
||||||
|
# borders
|
||||||
|
# ---------
|
||||||
|
|
||||||
|
# traditional
|
||||||
|
# set border width and colour for each window state
|
||||||
|
# dkcmd set border width=$border_width colour focus='#6699cc' unfocus='#000000' urgent='#ee5555'
|
||||||
|
|
||||||
|
# alternative
|
||||||
|
# enable split borders and colours, width is overall width, outer_width consumes some of width.
|
||||||
|
# outer_width must be less than width, outer_width of 0 will be single borders
|
||||||
|
dkcmd set border width=$border_width outer_width=$border_outer_width \
|
||||||
|
colour \
|
||||||
|
focus='#6699cc' \
|
||||||
|
unfocus='#444444' \
|
||||||
|
urgent='#ee5555' \
|
||||||
|
outer_focus='#222222' \
|
||||||
|
outer_unfocus='#222222' \
|
||||||
|
outer_urgent='#222222'
|
||||||
|
|
||||||
|
|
||||||
|
# window rules
|
||||||
|
# --------------
|
||||||
|
|
||||||
|
# rule class, instance, and title regex are *always* case INSENSITIVE
|
||||||
|
|
||||||
|
# open window(s) on a specific workspace (assigned monitor)
|
||||||
|
# dkcmd rule class="^gimp$" ws=2
|
||||||
|
|
||||||
|
# open window(s) on a monitor by number or name (active workspace on monitor)
|
||||||
|
# dkcmd rule class="^chromium$" mon="HDMI-A-0"
|
||||||
|
|
||||||
|
# open window(s) and use a callback function (user defined in config.h)
|
||||||
|
# we also ignore_cfg=true to stop the window from being resized on it's own from events
|
||||||
|
# eg. mpv --x11-name=albumart /path/to/media
|
||||||
|
# dkcmd rule class="^mpv$" instance="^albumart$" float=true ignore_cfg=true callback=albumart bw=0
|
||||||
|
|
||||||
|
# open window(s) in a floating state
|
||||||
|
dkcmd rule class="^(pavucontrol|transmission-gtk|steam|lxappearance)$" float=true
|
||||||
|
|
||||||
|
# open window(s) with a specific geometry and coordinates (floating only!)
|
||||||
|
# dkcmd rule class="^google-chrome$" title="^open files$" float=true w=1280 h=720
|
||||||
|
|
||||||
|
# open window(s) with ignore_msg=true to avoid focus being grabbed and changing workspace
|
||||||
|
# dkcmd rule class="^TelegramDesktop$" ignore_msg=true
|
||||||
|
|
||||||
|
# define some terminals and allow them to be absorbed by spawned windows
|
||||||
|
dkcmd rule class="^(st|st-256color|urxvt|kitty|alacritty|xterm|xterm-256color)$" terminal=true
|
||||||
|
|
||||||
|
# set a window to never absorb other windows, like the xev event tester
|
||||||
|
dkcmd rule title="^Event Tester$" no_absorb=true
|
||||||
|
|
||||||
|
# send a window to the scratchpad
|
||||||
|
dkcmd rule class="^scratchpad$" scratch=true
|
||||||
|
|
||||||
|
# focus window and workspace on opening
|
||||||
|
# dkcmd rule class="^firefox$" ws=1 focus=true
|
||||||
|
|
||||||
|
# update or remove an existing rule with the same match patterns
|
||||||
|
# dkcmd rule class="^firefox$" mon="HDMI-A-0"
|
||||||
|
# dkcmd rule remove class="^firefox$"
|
||||||
|
|
||||||
|
# apply current rule set to all existing windows (used mainly for WM restart)
|
||||||
|
dkcmd rule apply '*'
|
||||||
|
|
||||||
|
# delete all rules
|
||||||
|
# dkcmd rule remove '*'
|
||||||
|
|
||||||
|
} >> "$logfile" 2>&1 # append responses
|
||||||
|
|
||||||
|
# inform of any errors in a notification
|
||||||
|
if grep -q 'error:' "$logfile"; then
|
||||||
|
hash notify-send && notify-send -t 0 -u critical "dkrc has errors" \
|
||||||
|
"$(awk '/error:/ {sub(/^error: /, ""); gsub(/</, "\<"); print}' "$logfile")"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit 0
|
||||||
110
dk/.config/dk/sxhkdrc
Normal file
110
dk/.config/dk/sxhkdrc
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
# sxhkdrc for use with dk
|
||||||
|
#########################################################
|
||||||
|
|
||||||
|
# launcher
|
||||||
|
mod4 + p
|
||||||
|
dmenu_run -fn 'Fira Code Nerd Font Ret:size=13'
|
||||||
|
|
||||||
|
# terminal
|
||||||
|
mod4 + shift + Return
|
||||||
|
alacritty
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# vim:ft=sxhkdrc
|
||||||
@@ -8,7 +8,18 @@ return {
|
|||||||
show_icons = true,
|
show_icons = true,
|
||||||
leader_key = '-', -- Recommended to be a single key
|
leader_key = '-', -- Recommended to be a single key
|
||||||
buffer_leader_key = '+', -- Per Buffer Mappings
|
buffer_leader_key = '+', -- Per Buffer Mappings
|
||||||
}
|
},
|
||||||
|
keys = {
|
||||||
|
{ "<leader>1", function() require("arrow.persist").go_to(1) end, desc = "Arrow go to 1" },
|
||||||
|
{ "<leader>2", function() require("arrow.persist").go_to(2) end, desc = "Arrow go to 2" },
|
||||||
|
{ "<leader>3", function() require("arrow.persist").go_to(3) end, desc = "Arrow go to 3" },
|
||||||
|
{ "<leader>4", function() require("arrow.persist").go_to(4) end, desc = "Arrow go to 4" },
|
||||||
|
{ "<leader>5", function() require("arrow.persist").go_to(5) end, desc = "Arrow go to 5" },
|
||||||
|
{ "<leader>6", function() require("arrow.persist").go_to(6) end, desc = "Arrow go to 6" },
|
||||||
|
{ "<leader>7", function() require("arrow.persist").go_to(7) end, desc = "Arrow go to 7" },
|
||||||
|
{ "<leader>8", function() require("arrow.persist").go_to(8) end, desc = "Arrow go to 8" },
|
||||||
|
{ "<leader>9", function() require("arrow.persist").go_to(9) end, desc = "Arrow go to 9" },
|
||||||
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ return {
|
|||||||
config = true,
|
config = true,
|
||||||
cmd = 'BlameToggle',
|
cmd = 'BlameToggle',
|
||||||
keys = {
|
keys = {
|
||||||
{ '<leader>gb', '<cmd>BlameToggle<cr>', desc = '[G]it [B]lame toggle' },
|
{ '<leader>bt', '<cmd>BlameToggle<cr>', desc = 'Git [B]lame [T]oggle' },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
197
polybar/.config/polybar/config.ini
Normal file
197
polybar/.config/polybar/config.ini
Normal file
@@ -0,0 +1,197 @@
|
|||||||
|
;==========================================================
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; ██████╗ ██████╗ ██╗ ██╗ ██╗██████╗ █████╗ ██████╗
|
||||||
|
; ██╔══██╗██╔═══██╗██║ ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗
|
||||||
|
; ██████╔╝██║ ██║██║ ╚████╔╝ ██████╔╝███████║██████╔╝
|
||||||
|
; ██╔═══╝ ██║ ██║██║ ╚██╔╝ ██╔══██╗██╔══██║██╔══██╗
|
||||||
|
; ██║ ╚██████╔╝███████╗██║ ██████╔╝██║ ██║██║ ██║
|
||||||
|
; ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; To learn more about how to configure Polybar
|
||||||
|
; go to https://github.com/polybar/polybar
|
||||||
|
;
|
||||||
|
; The README contains a lot of information
|
||||||
|
;
|
||||||
|
;==========================================================
|
||||||
|
|
||||||
|
[common]
|
||||||
|
priv = false
|
||||||
|
|
||||||
|
[colors]
|
||||||
|
background = #282A2E
|
||||||
|
background-alt = #373B41
|
||||||
|
foreground = #C5C8C6
|
||||||
|
primary = #F0C674
|
||||||
|
secondary = #8ABEB7
|
||||||
|
alert = #A54242
|
||||||
|
disabled = #707880
|
||||||
|
|
||||||
|
[bar/bar]
|
||||||
|
monitor = ${env:MONITOR:}
|
||||||
|
width = 100%
|
||||||
|
height = 24pt
|
||||||
|
radius = 6
|
||||||
|
|
||||||
|
; dpi = 96
|
||||||
|
|
||||||
|
background = ${colors.background}
|
||||||
|
foreground = ${colors.foreground}
|
||||||
|
|
||||||
|
line-size = 3pt
|
||||||
|
|
||||||
|
border-size = 4pt
|
||||||
|
border-color = #00000000
|
||||||
|
|
||||||
|
padding-left = 0
|
||||||
|
padding-right = 1
|
||||||
|
|
||||||
|
module-margin = 1
|
||||||
|
|
||||||
|
separator = |
|
||||||
|
separator-foreground = ${colors.disabled}
|
||||||
|
|
||||||
|
font-0 = Fira Code Nerd Font:size=18;4
|
||||||
|
|
||||||
|
modules-left = xworkspaces xwindow
|
||||||
|
modules-right = filesystem pulseaudio xkeyboard memory cpu wlan eth date
|
||||||
|
|
||||||
|
cursor-click = pointer
|
||||||
|
cursor-scroll = ns-resize
|
||||||
|
|
||||||
|
enable-ipc = true
|
||||||
|
|
||||||
|
; wm-restack = generic
|
||||||
|
; wm-restack = bspwm
|
||||||
|
; wm-restack = i3
|
||||||
|
|
||||||
|
; override-redirect = true
|
||||||
|
|
||||||
|
; This module is not active by default (to enable it, add it to one of the
|
||||||
|
; modules-* list above).
|
||||||
|
; Please note that only a single tray can exist at any time. If you launch
|
||||||
|
; multiple bars with this module, only a single one will show it, the others
|
||||||
|
; will produce a warning. Which bar gets the module is timing dependent and can
|
||||||
|
; be quite random.
|
||||||
|
; For more information, see the documentation page for this module:
|
||||||
|
; https://polybar.readthedocs.io/en/stable/user/modules/tray.html
|
||||||
|
[module/systray]
|
||||||
|
type = internal/tray
|
||||||
|
|
||||||
|
format-margin = 8pt
|
||||||
|
tray-spacing = 16pt
|
||||||
|
|
||||||
|
[module/xworkspaces]
|
||||||
|
type = internal/xworkspaces
|
||||||
|
|
||||||
|
group-by-monitor = false
|
||||||
|
|
||||||
|
label-active = %name%
|
||||||
|
label-active-background = ${colors.background-alt}
|
||||||
|
label-active-underline= ${colors.primary}
|
||||||
|
label-active-padding = 1
|
||||||
|
|
||||||
|
label-occupied = %name%
|
||||||
|
label-occupied-padding = 1
|
||||||
|
|
||||||
|
label-urgent = %name%
|
||||||
|
label-urgent-background = ${colors.alert}
|
||||||
|
label-urgent-padding = 1
|
||||||
|
|
||||||
|
label-empty = %name%
|
||||||
|
label-empty-foreground = ${colors.disabled}
|
||||||
|
label-empty-padding = 1
|
||||||
|
|
||||||
|
[module/xwindow]
|
||||||
|
type = internal/xwindow
|
||||||
|
label = %title:0:60:...%
|
||||||
|
|
||||||
|
[module/filesystem]
|
||||||
|
type = internal/fs
|
||||||
|
interval = 25
|
||||||
|
|
||||||
|
mount-0 = /
|
||||||
|
|
||||||
|
label-mounted = %{F#F0C674}%mountpoint%%{F-} %percentage_used%%
|
||||||
|
|
||||||
|
label-unmounted = %mountpoint% not mounted
|
||||||
|
label-unmounted-foreground = ${colors.disabled}
|
||||||
|
|
||||||
|
[module/pulseaudio]
|
||||||
|
type = internal/pulseaudio
|
||||||
|
|
||||||
|
format-volume-prefix = "VOL "
|
||||||
|
format-volume-prefix-foreground = ${colors.primary}
|
||||||
|
format-volume = <label-volume>
|
||||||
|
|
||||||
|
label-volume = %percentage%%
|
||||||
|
|
||||||
|
label-muted = muted
|
||||||
|
label-muted-foreground = ${colors.disabled}
|
||||||
|
|
||||||
|
click-middle = "polybar-msg action eth module_toggle; polybar-msg action wlan module_toggle"
|
||||||
|
click-right = pavucontrol
|
||||||
|
|
||||||
|
[module/xkeyboard]
|
||||||
|
type = internal/xkeyboard
|
||||||
|
blacklist-0 = num lock
|
||||||
|
|
||||||
|
label-layout = %layout%
|
||||||
|
label-layout-foreground = ${colors.primary}
|
||||||
|
|
||||||
|
label-indicator-padding = 2
|
||||||
|
label-indicator-margin = 1
|
||||||
|
label-indicator-foreground = ${colors.background}
|
||||||
|
label-indicator-background = ${colors.secondary}
|
||||||
|
|
||||||
|
[module/memory]
|
||||||
|
type = internal/memory
|
||||||
|
interval = 2
|
||||||
|
format-prefix = "RAM "
|
||||||
|
format-prefix-foreground = ${colors.primary}
|
||||||
|
label = %percentage_used:2%%
|
||||||
|
|
||||||
|
[module/cpu]
|
||||||
|
type = internal/cpu
|
||||||
|
interval = 2
|
||||||
|
format-prefix = "CPU "
|
||||||
|
format-prefix-foreground = ${colors.primary}
|
||||||
|
label = %percentage:2%%
|
||||||
|
|
||||||
|
[module/temperature]
|
||||||
|
type = internal/temperature
|
||||||
|
|
||||||
|
[network-base]
|
||||||
|
type = internal/network
|
||||||
|
interval = 5
|
||||||
|
format-connected = <label-connected>
|
||||||
|
format-disconnected = <label-disconnected>
|
||||||
|
label-disconnected = %{F#F0C674}%ifname%%{F#707880} disconnected
|
||||||
|
hidden = ${common.priv}
|
||||||
|
|
||||||
|
[module/wlan]
|
||||||
|
inherit = network-base
|
||||||
|
interface-type = wireless
|
||||||
|
label-connected = %{F#F0C674}%ifname%%{F-} %essid% %local_ip%
|
||||||
|
|
||||||
|
[module/eth]
|
||||||
|
inherit = network-base
|
||||||
|
interface-type = wired
|
||||||
|
label-connected = %{F#F0C674}%ifname%%{F-} %local_ip%
|
||||||
|
|
||||||
|
[module/date]
|
||||||
|
type = internal/date
|
||||||
|
interval = 1
|
||||||
|
|
||||||
|
date = %H:%M
|
||||||
|
date-alt = %Y-%m-%d %H:%M:%S
|
||||||
|
|
||||||
|
label = %date%
|
||||||
|
label-foreground = ${colors.primary}
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
screenchange-reload = true
|
||||||
|
pseudo-transparency = true
|
||||||
|
|
||||||
|
; vim:ft=dosini
|
||||||
@@ -14,3 +14,11 @@ fi
|
|||||||
|
|
||||||
alias nocaps='setxkbmap pl -option ctrl:nocaps'
|
alias nocaps='setxkbmap pl -option ctrl:nocaps'
|
||||||
alias fixdp='xrandr --output DP-0 --right-of DP-2'
|
alias fixdp='xrandr --output DP-0 --right-of DP-2'
|
||||||
|
|
||||||
|
vf() {
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
vis $(fzf)
|
||||||
|
else
|
||||||
|
vis $(fzf -q $1)
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|||||||
71
vis/.config/vis/lexers/templ.lua
Normal file
71
vis/.config/vis/lexers/templ.lua
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
-- Copyright 2006-2025 Mitchell. See LICENSE.
|
||||||
|
-- Go LPeg lexer.
|
||||||
|
|
||||||
|
local lexer = lexer
|
||||||
|
local P, S = lpeg.P, lpeg.S
|
||||||
|
|
||||||
|
local lex = lexer.new(...)
|
||||||
|
|
||||||
|
-- Keywords.
|
||||||
|
lex:add_rule('keyword', lex:tag(lexer.KEYWORD, lex:word_match(lexer.KEYWORD)))
|
||||||
|
|
||||||
|
-- Constants.
|
||||||
|
lex:add_rule('constant', lex:tag(lexer.CONSTANT_BUILTIN, lex:word_match(lexer.CONSTANT_BUILTIN)))
|
||||||
|
|
||||||
|
-- Types.
|
||||||
|
lex:add_rule('type', lex:tag(lexer.TYPE, lex:word_match(lexer.TYPE)))
|
||||||
|
|
||||||
|
-- Functions.
|
||||||
|
local builtin_func = -lpeg.B('.') *
|
||||||
|
lex:tag(lexer.FUNCTION_BUILTIN, lex:word_match(lexer.FUNCTION_BUILTIN))
|
||||||
|
local func = lex:tag(lexer.FUNCTION, lexer.word)
|
||||||
|
local method = lpeg.B('.') * lex:tag(lexer.FUNCTION_METHOD, lexer.word)
|
||||||
|
lex:add_rule('function', (builtin_func + method + func) * #(lexer.space^0 * '('))
|
||||||
|
|
||||||
|
-- Identifiers.
|
||||||
|
lex:add_rule('identifier', lex:tag(lexer.IDENTIFIER, lexer.word))
|
||||||
|
|
||||||
|
-- Strings.
|
||||||
|
local sq_str = lexer.range("'", true)
|
||||||
|
local dq_str = lexer.range('"', true)
|
||||||
|
local raw_str = lexer.range('`', false, false)
|
||||||
|
lex:add_rule('string', lex:tag(lexer.STRING, sq_str + dq_str + raw_str))
|
||||||
|
|
||||||
|
-- Comments.
|
||||||
|
local line_comment = lexer.to_eol('//')
|
||||||
|
local block_comment = lexer.range('/*', '*/')
|
||||||
|
lex:add_rule('comment', lex:tag(lexer.COMMENT, line_comment + block_comment))
|
||||||
|
|
||||||
|
-- Numbers.
|
||||||
|
lex:add_rule('number', lex:tag(lexer.NUMBER, lexer.number * P('i')^-1))
|
||||||
|
|
||||||
|
-- Operators.
|
||||||
|
lex:add_rule('operator', lex:tag(lexer.OPERATOR, S('+-*/%&|^<>=!~:;.,()[]{}@')))
|
||||||
|
|
||||||
|
-- Fold points.
|
||||||
|
lex:add_fold_point(lexer.OPERATOR, '{', '}')
|
||||||
|
lex:add_fold_point(lexer.COMMENT, '/*', '*/')
|
||||||
|
|
||||||
|
-- Word lists.
|
||||||
|
lex:set_word_list(lexer.KEYWORD, {
|
||||||
|
'break', 'case', 'chan', 'const', 'continue', 'default', 'defer', 'else', 'fallthrough', 'for',
|
||||||
|
'func', 'go', 'goto', 'if', 'import', 'interface', 'map', 'package', 'range', 'return', 'select',
|
||||||
|
'struct', 'switch', 'type', 'var', 'templ'
|
||||||
|
})
|
||||||
|
|
||||||
|
lex:set_word_list(lexer.CONSTANT_BUILTIN, 'true false iota nil')
|
||||||
|
|
||||||
|
lex:set_word_list(lexer.TYPE, {
|
||||||
|
'any', 'bool', 'byte', 'comparable', 'complex64', 'complex128', 'error', 'float32', 'float64',
|
||||||
|
'int', 'int8', 'int16', 'int32', 'int64', 'rune', 'string', 'uint', 'uint8', 'uint16', 'uint32',
|
||||||
|
'uint64', 'uintptr'
|
||||||
|
})
|
||||||
|
|
||||||
|
lex:set_word_list(lexer.FUNCTION_BUILTIN, {
|
||||||
|
'append', 'cap', 'close', 'complex', 'copy', 'delete', 'imag', 'len', 'make', 'new', 'panic',
|
||||||
|
'print', 'println', 'real', 'recover'
|
||||||
|
})
|
||||||
|
|
||||||
|
lexer.property['scintillua.comment'] = '//'
|
||||||
|
|
||||||
|
return lex
|
||||||
204
vis/.config/vis/visrc.lua
Normal file
204
vis/.config/vis/visrc.lua
Normal file
@@ -0,0 +1,204 @@
|
|||||||
|
require('vis')
|
||||||
|
|
||||||
|
local plug = (function()
|
||||||
|
if not pcall(require, 'plugins/vis-plug') then
|
||||||
|
os.execute('git clone --quiet https://github.com/erf/vis-plug ' ..
|
||||||
|
(os.getenv('XDG_CONFIG_HOME') or os.getenv('HOME') .. '/.config')
|
||||||
|
.. '/vis/plugins/vis-plug')
|
||||||
|
end
|
||||||
|
return require('plugins/vis-plug')
|
||||||
|
end)()
|
||||||
|
|
||||||
|
plug = require('plugins/vis-plug')
|
||||||
|
|
||||||
|
local plugins = {
|
||||||
|
{
|
||||||
|
'scaramacai/vis-themes',
|
||||||
|
theme = true,
|
||||||
|
file = 'almostnord',
|
||||||
|
-- file = 'strange-morning',
|
||||||
|
},
|
||||||
|
{ 'https://gitlab.com/muhq/vis-lspc', alias = 'lspc' },
|
||||||
|
{ 'lutobler/vis-commentary' },
|
||||||
|
{ 'https://repo.or.cz/vis-surround.git' },
|
||||||
|
{ 'peaceant/vis-fzf-mru', file = 'fzf-mru', alias = 'fzfmru' },
|
||||||
|
{ 'https://gitlab.com/muhq/vis-build' },
|
||||||
|
{ 'erf/vis-cursors' },
|
||||||
|
}
|
||||||
|
|
||||||
|
plug.init(plugins, true)
|
||||||
|
|
||||||
|
vis.ftdetect.filetypes.templ = {
|
||||||
|
ext = { "%.templ$" },
|
||||||
|
}
|
||||||
|
|
||||||
|
plug.plugins.lspc.message_level = 2
|
||||||
|
|
||||||
|
plug.plugins.lspc.ls_map.templ = {
|
||||||
|
name = 'templ-lsp',
|
||||||
|
cmd = 'templ lsp',
|
||||||
|
}
|
||||||
|
|
||||||
|
plug.plugins.fzfmru.fzfmru_history = 60
|
||||||
|
|
||||||
|
local function open_file(file, cmd)
|
||||||
|
vis:command((cmd or 'o') .. ' ' .. file)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function nil_or_tonumber(s)
|
||||||
|
return s and tonumber(s)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function open_file_pos(line, open_cmd)
|
||||||
|
local iter = string.gmatch(line, '[^:]+')
|
||||||
|
local file = iter()
|
||||||
|
local line_num = nil_or_tonumber(iter())
|
||||||
|
local col = nil_or_tonumber(iter()) or 1
|
||||||
|
open_file(file, open_cmd)
|
||||||
|
if line_num ~= nil then
|
||||||
|
vis.win.selection:to(line_num, col)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function open_file_current_line(open_cmd)
|
||||||
|
local line = vis.win.file.lines[vis.win.selection.line]
|
||||||
|
vis:info(line)
|
||||||
|
open_file_pos(line)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function escape_and_quoted(s)
|
||||||
|
return "'" .. s:gsub("'", "\\'") .. "'"
|
||||||
|
end
|
||||||
|
|
||||||
|
local function search(cmd)
|
||||||
|
if cmd:match('^fzf ') and vis.register ~= '"' then
|
||||||
|
local reg = string.gsub(vis.registers[vis.register][1], '%z', '')
|
||||||
|
if reg ~= '' then
|
||||||
|
cmd = cmd .. ' --query=' .. escape_and_quoted(reg)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local code, out, err = vis:pipe(cmd, true)
|
||||||
|
if code == 0 then
|
||||||
|
open_file_pos(out, 'e')
|
||||||
|
elseif err ~= nil then
|
||||||
|
vis:info(err)
|
||||||
|
elseif code ~= 0 then
|
||||||
|
vis:info('Program exit code ' .. code)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local file_slots = {}
|
||||||
|
|
||||||
|
local function set_file_slot(num)
|
||||||
|
local file = vis.win.file.path
|
||||||
|
if file ~= nil then
|
||||||
|
file_slots[num] = file
|
||||||
|
vis:info('File slot [' .. num .. '] updated')
|
||||||
|
else
|
||||||
|
vis:info('Window has no file')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function open_file_slot(num, open_cmd)
|
||||||
|
local file = file_slots[num]
|
||||||
|
if file == nil then
|
||||||
|
vis:info('File slot [' .. num .. '] empty')
|
||||||
|
elseif file == vis.win.file.path then
|
||||||
|
vis:info('File slot [' .. num .. '] is the same file, no file change')
|
||||||
|
else
|
||||||
|
vis:info('File slot [' .. num .. '] open')
|
||||||
|
open_file(file, open_cmd)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function fzf_reload(cmd)
|
||||||
|
local prompt = escape_and_quoted('1. ' .. cmd:match('^%w*') .. '> ')
|
||||||
|
if not cmd:match('{q}') then
|
||||||
|
cmd = cmd .. ' {q}'
|
||||||
|
end
|
||||||
|
return 'fzf --ansi --bind "start:reload:' .. cmd .. '" --bind "change:reload:' .. cmd .. ' || true"' ..
|
||||||
|
' --prompt ' .. prompt ..
|
||||||
|
' --bind "alt-enter:unbind(change,alt-enter)+change-prompt(2. fzf> )+enable-search+clear-query"'
|
||||||
|
end
|
||||||
|
|
||||||
|
local ripgrep = 'rg --column --line-number --color=always --smart-case'
|
||||||
|
|
||||||
|
vis.events.subscribe(vis.events.INIT, function()
|
||||||
|
vis:command('set autoindent')
|
||||||
|
|
||||||
|
vis:command_register('search', function(argv, force, win, selection, range)
|
||||||
|
search(argv[1])
|
||||||
|
end)
|
||||||
|
|
||||||
|
vis:map(vis.modes.NORMAL, '<M-k>', '<vis-window-prev>')
|
||||||
|
vis:map(vis.modes.NORMAL, '<M-j>', '<vis-window-next>')
|
||||||
|
vis:map(vis.modes.NORMAL, ' K', '<vis-window-prev>:q<Enter>', 'close previous window')
|
||||||
|
vis:map(vis.modes.NORMAL, ' J', '<vis-window-next>:q<Enter><vis-window-prev>', 'close next window')
|
||||||
|
|
||||||
|
vis:map(vis.modes.NORMAL, ' l[', ':lspc-prev-diagnostic<Enter>')
|
||||||
|
vis:map(vis.modes.NORMAL, ' l]', ':lspc-next-diagnostic<Enter>')
|
||||||
|
vis:map(vis.modes.NORMAL, ' l=', ':lspc-format<Enter>')
|
||||||
|
|
||||||
|
for num = 1, 9 do
|
||||||
|
vis:map(vis.modes.NORMAL, ' s' .. num, function() set_file_slot(num) end, 'set file slot ' .. num)
|
||||||
|
vis:map(vis.modes.NORMAL, ' ' .. num, function() open_file_slot(num, 'e') end, 'open file slot ' .. num)
|
||||||
|
vis:map(vis.modes.NORMAL, ' h' .. num, function() open_file_slot(num, 'o') end, 'open file slot ' .. num)
|
||||||
|
vis:map(vis.modes.NORMAL, ' v' .. num, function() open_file_slot(num, 'vsplit') end,
|
||||||
|
'open file slot ' .. num)
|
||||||
|
end
|
||||||
|
|
||||||
|
vis:map(vis.modes.NORMAL, ' fg', function()
|
||||||
|
search(fzf_reload(ripgrep))
|
||||||
|
end, 'fzf: rg')
|
||||||
|
|
||||||
|
vis:map(vis.modes.NORMAL, ' ff', function()
|
||||||
|
search('fd --type f | fzf')
|
||||||
|
end, 'fzf: files')
|
||||||
|
|
||||||
|
vis:map(vis.modes.NORMAL, ' .', function()
|
||||||
|
local path = vis.win.file.path
|
||||||
|
if path then
|
||||||
|
local dir = path:match('^.*/')
|
||||||
|
local arg = escape_and_quoted(dir)
|
||||||
|
search('fd --type f "" ' .. arg .. ' | fzf')
|
||||||
|
else
|
||||||
|
search('fd --type f | fzf')
|
||||||
|
end
|
||||||
|
end, 'fzf: current dir files')
|
||||||
|
|
||||||
|
vis:map(vis.modes.NORMAL, ' gf', function()
|
||||||
|
search('git ls-files | fzf')
|
||||||
|
end, 'fzf: git files')
|
||||||
|
|
||||||
|
vis:map(vis.modes.NORMAL, ' gg', function()
|
||||||
|
search(fzf_reload('git grep --column --line-number --color=always'))
|
||||||
|
end, 'fzf: jj grep')
|
||||||
|
|
||||||
|
vis:map(vis.modes.NORMAL, ' gl', function()
|
||||||
|
vis:command('!lazygit')
|
||||||
|
end, 'lazygit')
|
||||||
|
|
||||||
|
vis:map(vis.modes.NORMAL, ' jf', function()
|
||||||
|
search('jj file list | fzf')
|
||||||
|
end, 'fzf: jj files')
|
||||||
|
|
||||||
|
vis:map(vis.modes.NORMAL, ' jg', function()
|
||||||
|
search(fzf_reload(ripgrep .. ' {q} $(jj file list | xargs)'))
|
||||||
|
end, 'fzf: jj grep')
|
||||||
|
|
||||||
|
vis:map(vis.modes.NORMAL, ' jl', function()
|
||||||
|
vis:command('!lazyjj')
|
||||||
|
end, 'fzf open')
|
||||||
|
|
||||||
|
vis:map(vis.modes.NORMAL, ' ', function()
|
||||||
|
vis:command('fzfmru')
|
||||||
|
end, 'fzf recent')
|
||||||
|
|
||||||
|
vis:map(vis.modes.NORMAL, 'gf', function()
|
||||||
|
open_file_current_line('o')
|
||||||
|
end, 'open file from current line (with line and col')
|
||||||
|
end)
|
||||||
|
|
||||||
|
vis.events.subscribe(vis.events.WIN_OPEN, function(win)
|
||||||
|
vis:command('set relativenumber')
|
||||||
|
end)
|
||||||
@@ -6,8 +6,8 @@ fi
|
|||||||
|
|
||||||
xset b off
|
xset b off
|
||||||
xrandr --auto
|
xrandr --auto
|
||||||
xrandr --output HDMI1 --right-of DP1
|
xrandr --output DP-0 --left-of DP-2 --primary
|
||||||
xrandr --output DP-0 --left-of DP-2
|
xrandr --output HDMI-0 --left-of DP-0
|
||||||
xrdb -merge ~/.Xresources
|
xrdb -merge ~/.Xresources
|
||||||
setxkbmap pl -option ctrl:nocaps
|
setxkbmap pl -option ctrl:nocaps
|
||||||
|
|
||||||
@@ -30,8 +30,12 @@ xsetroot -cursor_name left_ptr
|
|||||||
|
|
||||||
picom -b -I 1 -O 1 -i 1 -e 1 --no-fading-openclose || compton -b --no-fading-openclose
|
picom -b -I 1 -O 1 -i 1 -e 1 --no-fading-openclose || compton -b --no-fading-openclose
|
||||||
|
|
||||||
if which awesome > /dev/null; then
|
if which dk > /dev/null; then
|
||||||
exec awesome
|
for m in $(polybar --list-monitors | cut -d: -f1); do
|
||||||
|
MONITOR=$m polybar --reload bar &
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
exec dk
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if which dwm > /dev/null; then
|
if which dwm > /dev/null; then
|
||||||
@@ -39,6 +43,10 @@ if which dwm > /dev/null; then
|
|||||||
exec dwm
|
exec dwm
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if which awesome > /dev/null; then
|
||||||
|
exec awesome
|
||||||
|
fi
|
||||||
|
|
||||||
if which xmonad > /dev/null && test -f ~/.config/xmonad/xmonad.hs; then
|
if which xmonad > /dev/null && test -f ~/.config/xmonad/xmonad.hs; then
|
||||||
exec xmonad
|
exec xmonad
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user