Initial config

This commit is contained in:
Wekuz 2026-03-29 00:11:55 +02:00
commit 5f8413e341
Signed by: Wekuz
GPG key ID: 2E502F2AABD32DF9
43 changed files with 4549 additions and 0 deletions

2
.chezmoiignore Normal file
View file

@ -0,0 +1,2 @@
.config/zsh/plugins/*
.config/nvim/lazy-lock.json

View file

@ -0,0 +1,55 @@
[global]
origin = top-right
offset = (10, 20)
notification_limit = 20
progress_bar = true
progress_bar_corner_radius = 2
progress_bar_corners = all
highlight = "#00bb00ff"
icon_corner_radius = 2
icon_corners = all
indicate_hidden = yes
frame_color = "#909090"
sort = true
idle_threshold = 5m
font = JetBrainsMonoNL Nerd Font 10
markup = full
# format =
alignment = left
vertical_alignment = center
show_age_threshold = 60
ignore_newline = no
stack_duplicates = true
hide_duplicate_count = false
show_indicators = yes
icon_theme = Papirus-Dark
enable_recursive_icon_lookup = true
icon_position = left
history_length = 25
dmenu = "/usr/bin/fuzzel -d"
mouse_middle_click = context
browser = /usr/bin/xdg-open
corner_radius = 4
corners = all
layer = overlay
[urgency_low]
background = "#222222"
foreground = "#ffffff"
timeout = 10
default_icon = dialog-information
[urgency_normal]
background = "#222222"
foreground = "#ffffff"
timeout = 10
override_pause_level = 30
default_icon = dialog-information
[urgency_critical]
background = "#900000"
foreground = "#ffffff"
frame_color = "#ff0000"
timeout = 0
override_pause_level = 60
default_icon = dialog-warning

View file

@ -0,0 +1,23 @@
font=monospace
prompt="> "
lines=15
width=40
horizontal-pad=10
vertical-pad=10
line-height=18
layer = top
exit-on-keyboard-focus-loss = yes
launch-prefix="uwsm app -- "
[colors]
background=222222f0
text=ffffffff
match=00bb00ff
selection-match=00bb00ff
selection=666666dd
selection-text=ffffffff
border=646464ff
[border]
width=2
radius=10

View file

@ -0,0 +1,19 @@
[user]
name = Wekuz
email = wekuz@duck.com
signingkey = 2E502F2AABD32DF9
[commit]
gpgsign = true
verbose = true
cleanup = scissors
[init]
defaultBranch = main
[diff]
algorithm = histogram
colorMoved = plain
[merge]
conflictstyle = zdiff3
[tag]
sort = version:refname
[help]
autoCorrect = prompt

View file

@ -0,0 +1,17 @@
[Settings]
gtk-theme-name=Adwaita-dark
gtk-icon-theme-name=Adwaita
gtk-font-name=JetBrainsMono Nerd Font 12
gtk-cursor-theme-name=Nordzy-cursors
gtk-cursor-theme-size=24
gtk-toolbar-style=GTK_TOOLBAR_ICONS
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
gtk-button-images=0
gtk-menu-images=0
gtk-enable-event-sounds=1
gtk-enable-input-feedback-sounds=0
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle=hintslight
gtk-xft-rgba=rgb
gtk-application-prefer-dark-theme=1

View file

@ -0,0 +1,7 @@
[Settings]
gtk-theme-name=Adwaita-dark
gtk-icon-theme-name=Adwaita
gtk-font-name=JetBrainsMono Nerd Font 12
gtk-cursor-theme-name=Nordzy-cursors
gtk-cursor-theme-size=24
gtk-application-prefer-dark-theme=1

View file

@ -0,0 +1,27 @@
general {
lock_cmd = pidof hyprlock || hyprlock
before_sleep_cmd = loginctl lock-session
after_sleep_cmd = hyprctl dispatch dpms on
}
# listener {
# timeout = 300
# on-timeout = brightnessctl -s s 1%
# on-resume = brightnessctl -r
# }
listener {
timeout = 480
on-timeout = hyprctl dispatch dpms off
on-resume = hyprctl dispatch dpms on
}
#listener {
# timeout = 600
# on-timeout = loginctl lock-session
#}
# listener {
# timeout = 900
# on-timeout = systemctl suspend
# }

View file

@ -0,0 +1,55 @@
$font = JetBrainsMono Nerd Font
general {
ignore_empty_input = true
no_fade_out = true
hide_cursor = true
}
background {
monitor =
color = rgba(0, 0, 0, 1.0)
}
label {
monitor =
text = $TIME
font_family = $font
font_size = 90
color = rgba(170, 170, 170, 1.0)
position = 0, -10%
halign = center
valign = top
}
input-field {
monitor =
size = 15%, 5%
outline_thickness = 3
inner_color = rgba(0, 0, 0, 1.0)
placeholder_text =
font_family = $font
font_color = rgba(150, 150, 150, 1.0)
fade_on_empty = false
rounding = 15
position = 0, 0
halign = center
valign = center
}
label {
monitor =
text = Failed attempts: $ATTEMPTS
font_family = $font
font_size = 12
color = rgba(100, 100, 100, 1.0)
position = 0, -3.5%
halign = center
valign = center
}

View file

@ -0,0 +1,5 @@
wallpaper {
monitor =
path = /home/wekuz/.config/wallpapers/wallpaper.png
fit_mode = contain
}

View file

@ -0,0 +1,315 @@
################
### MONITORS ###
################
monitor=DP-2,3840x2160@160,0x0,1.5
xwayland {
force_zero_scaling = true
}
###################
### MY PROGRAMS ###
###################
$terminal = uwsm app -- kitty
$browser = uwsm app -- zen-browser
$hyprlock = uwsm app -- hyprlock
$hyprshot = uwsm app -- hyprshot
$menu = uwsm app -- fuzzel
#################
### AUTOSTART ###
#################
exec-once = uwsm app -- udiskie
exec-once = uwsm app -- waybar
exec-once = uwsm app -- dunst
exec-once = uwsm app -- wl-paste --watch cliphist store
exec-once = uwsm app -- hypridle
exec-once = uwsm app -- hyprpaper
exec-once = uwsm app -- hyprsunset
exec-once = [workspace 1] $terminal
exec-once = [workspace 2 silent] $browser
#############################
### ENVIRONMENT VARIABLES ###
#############################
# See https://wiki.hyprland.org/Configuring/Environment-variables/
# Environment variables stored in ~/.config/uwsm/env and ~/.config/uwsm/env-hyprland
#####################
### LOOK AND FEEL ###
#####################
# Refer to https://wiki.hyprland.org/Configuring/Variables/
# https://wiki.hyprland.org/Configuring/Variables/#general
general {
gaps_in = 0
gaps_out = 0
border_size = 1
col.active_border = rgba(00dd00ff) rgba(006600ff) 90deg
col.inactive_border = rgba(646464ff)
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
allow_tearing = true
layout = dwindle
snap {
enabled = true
window_gap = 4
monitor_gap = 6
respect_gaps = true
}
}
# https://wiki.hyprland.org/Configuring/Variables/#decoration
decoration {
rounding = 0
active_opacity = 1.0
inactive_opacity = 1.0
shadow {
enabled = false
range = 4
render_power = 3
color = rgba(151515ee)
}
# https://wiki.hyprland.org/Configuring/Variables/#blur
blur {
enabled = false
size = 3
passes = 1
vibrancy = 0.1696
}
}
# https://wiki.hyprland.org/Configuring/Variables/#animations
animations {
enabled = yes
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
bezier = easeOutQuint,0.23,1,0.32,1
bezier = easeInOutCubic,0.65,0.05,0.36,1
bezier = linear,0,0,1,1
bezier = almostLinear,0.5,0.5,0.75,1.0
bezier = quick,0.15,0,0.1,1
animation = windows, 1, 1, quick
animation = windowsOut, 1, 0.5, linear, slide
animation = layers, 1, 1, quick
animation = fade, 0, 2, linear
animation = fadeDpms, 1, 4, linear
animation = fadeLayersOut, 0, 1, almostLinear
animation = workspacesIn, 1, 0.5, quick
animation = workspacesOut, 1, 0.7, quick
}
# Smart gaps: https://wiki.hyprland.org/Configuring/Workspace-Rules/#smart-gaps
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
dwindle {
preserve_split = true
}
# https://wiki.hyprland.org/Configuring/Variables/#misc
misc {
disable_hyprland_logo = true
vfr = true
vrr = 2
enable_swallow = true
swallow_regex = ^(kitty)$
swallow_exception_regex = ^(xev|wev|vkcube|glxgears|kitty).*
allow_session_lock_restore = 1
on_focus_under_fullscreen = 1
}
ecosystem {
enforce_permissions = true
}
permission = /usr/bin/grim, screencopy, allow
permission = /usr/(lib|lib64)/xdg-desktop-portal-hyprland, screencopy, allow
#############
### INPUT ###
#############
# https://wiki.hyprland.org/Configuring/Variables/#input
input {
kb_layout = ee
kb_variant =
kb_model =
kb_options = fkeys:basic_13-24
kb_rules =
follow_mouse = 1
sensitivity = -0.05 # -1.0 - 1.0, 0 means no modification.
touchpad {
natural_scroll = true
scroll_factor = 0.6
disable_while_typing = false
}
}
device {
name = falbatech-redox
kb_layout = us
kb_options = fkeys:basic_13-24
}
device {
name = falbatech-redox-mouse
sensitivity = -0.5
accel_profile = flat
}
# https://wiki.hyprland.org/Configuring/Variables/#gestures
gestures {
gesture = 3, horizontal, workspace
gesture = 3, up, mod: SUPER, fullscreen
}
###################
### KEYBINDINGS ###
###################
# See https://wiki.hyprland.org/Configuring/Keywords/
$mainMod = SUPER
bind = $mainMod, RETURN, exec, $terminal
bind = $mainMod, Q, exec, $browser
bind = $mainMod, W, killactive,
bind = $mainMod CTRL SHIFT, Q, exit,
bind = $mainMod, C, togglefloating,
bind = $mainMod, SPACE, exec, $menu
bind = $mainMod SHIFT, J, togglesplit, # dwindle
bind = $mainMod, F, fullscreen, 1
bind = $mainMod SHIFT, F, fullscreen, 0
# Hyprlock
bind = $mainMod SHIFT, L, exec, $hyprlock
# Cliphist
bind = $mainMod, V, exec, cliphist list | fuzzel -d -w 75 --select-index 1 | cliphist decode | wl-copy
# Hyprshot
bind = $mainMod SHIFT, S, exec, $hyprshot -m region --clipboard-only
bind = $mainMod SHIFT CTRL, S, exec, $hyprshot -m window --clipboard-only
bind = $mainMod SHIFT ALT, S, exec, $hyprshot -m output --clipboard-only
bind = $mainMod SHIFT, B, exec, bluetoothctl -- connect "$(bluetoothctl -- devices Paired | cut -f2- -d ' ' | fuzzel -d -l 8 | cut -f1 -d ' ')"
bind = $mainMod SHIFT, A, exec, ~/scripts/select-audio-sink.sh
# Move focus
bind = $mainMod, H, movefocus, l
bind = $mainMod, L, movefocus, r
bind = $mainMod, K, movefocus, u
bind = $mainMod, J, movefocus, d
bind = $mainMod, period, layoutmsg, move +col
bind = $mainMod, comma, layoutmsg, move -col
# Switch workspaces
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
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 SHIFT CTRL, TAB, movecurrentworkspacetomonitor, +1
# Move/resize windows
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# Laptop multimedia keys for volume and LCD brightness
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%+ && ~/scripts/volume-control.sh
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%- && ~/scripts/volume-control.sh
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle && ~/scripts/volume-control.sh
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+
bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%-
# Requires playerctl
bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPause, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous
# Laptop lid
bindl = , switch:on:Lid Switch, exec, hyprctl keyword monitor "HDMI-A-1, 1920x1080@120, 0x0, 1"
bindl = , switch:on:Lid Switch, exec, hyprctl keyword monitor "eDP-1, disable"
bindl = , switch:off:Lid Switch, exec, hyprctl keyword monitor "eDP-1, 1920x1080@60, 0x0, 1.25"
bindl = , switch:off:Lid Switch, exec, hyprctl keyword monitor "HDMI-A-1, disable"
##############################
### WINDOWS AND WORKSPACES ###
##############################
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
# No border when only 1 window or window is fullscreen
windowrule = match:workspace w[1], match:class negative:^(steam)$, match:title negative:Steam, border_size 0
windowrule = match:workspace f[1-2], border_size 0
windowrule {
name = pavucontrol-float
match:class = ^(org.pulseaudio.pavucontrol)$
match:title = ^(Volume Control)$
float = 1
center = 1
size = (0.35*monitor_w) (0.4*monitor_h)
}
windowrule {
name = showmethekey-float
match:class = ^(showmethekey-gtk)$
float = 1
border_size = 0
}
windowrule {
name = steam-popup-float
match:class = ^(steam)$
match:title = negative:Steam
float = 1
}
windowrule {
name = gaming
match:class = ^(steam_app_\d+|cs2)$
workspace = 10
immediate = 1
fullscreen = 1
}

View file

@ -0,0 +1,9 @@
profile {
time = 7:30
identity = true
}
profile {
time = 01:00
temperature = 5500
}

File diff suppressed because it is too large Load diff

37
dot_config/mimeapps.list Normal file
View file

@ -0,0 +1,37 @@
[Default Applications]
x-scheme-handler/http=zen.desktop
x-scheme-handler/https=zen.desktop
x-scheme-handler/chrome=zen.desktop
text/html=zen.desktop
application/x-extension-htm=zen.desktop
application/x-extension-html=zen.desktop
application/x-extension-shtml=zen.desktop
application/xhtml+xml=zen.desktop
application/x-extension-xhtml=zen.desktop
application/x-extension-xht=zen.desktop
x-scheme-handler/fdm=freedownloadmanager_fdm_up.desktop
image/jpeg=imv.desktop
image/png=imv.desktop
image/avif=imv.desktop
image/bmp=imv.desktop
image/gif=imv.desktop
image/svg+xml=imv.desktop
image/webp=imv.desktop
image/vnd.microsoft.icon=imv.desktop
video/mp4=vlc.desktop
video/mkv=vlc.desktop
video/mpeg=vlc.desktop
video/quicktime=vlc.desktop
video/webm=vlc.desktop
[Added Associations]
x-scheme-handler/http=zen.desktop;
x-scheme-handler/https=zen.desktop;
x-scheme-handler/chrome=zen.desktop;
text/html=zen.desktop;
application/x-extension-htm=zen.desktop;
application/x-extension-html=zen.desktop;
application/x-extension-shtml=zen.desktop;
application/xhtml+xml=zen.desktop;
application/x-extension-xhtml=zen.desktop;
application/x-extension-xht=zen.desktop;

View file

@ -0,0 +1 @@
require("wekuz")

View file

@ -0,0 +1,25 @@
local markdown_format = vim.api.nvim_create_augroup("markdown_format", { clear = true })
vim.api.nvim_create_autocmd({"BufEnter", "BufWinEnter"}, {
group = markdown_format,
pattern = { "*.md" },
callback = function()
vim.opt_local.spell = true
vim.opt_local.wrap = true
vim.opt_local.linebreak = true
vim.opt_local.colorcolumn = "0"
vim.opt_local.conceallevel = 2
end
})
-- vim.api.nvim_create_autocmd({"BufEnter", "BufWinEnter", "VimResized", "WinResized"}, {
-- group = markdown_format,
-- callback = function()
-- if vim.bo.filetype == 'markdown' then
-- local width = vim.api.nvim_win_get_width(0)
-- if width > 120 then
-- vim.opt_local.columns = 120
-- end
-- end
-- end
-- })

View file

@ -0,0 +1,5 @@
require("wekuz.opts")
require("wekuz.remap")
require("wekuz.autocmds")
require("wekuz.lazy")
require("wekuz.server")

View file

@ -0,0 +1,24 @@
-- Bootstrap lazy.nvim
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)
-- Setup lazy.nvim
require("lazy").setup({
spec = {{ import = "wekuz.plugins" }},
install = { colorscheme = { "cyberdream" } },
checker = { enabled = false },
change_detection = { notify = false }
})

View file

@ -0,0 +1,22 @@
vim.o.number = true
vim.o.relativenumber = true
vim.o.cursorline = true
vim.o.colorcolumn = "110"
vim.o.tabstop = 4
vim.o.shiftwidth = 4
vim.o.expandtab = true
vim.o.smartindent = true
vim.o.wrap = false
vim.o.termguicolors = true
vim.o.hlsearch = false
vim.o.swapfile = false
vim.o.backup = false
vim.o.undodir = os.getenv("HOME") .. "/.nvim/undodir"
vim.o.undofile = true
vim.o.updatetime = 2000
vim.o.clipboard = "unnamedplus"
vim.o.spelllang= "en_gb,en_us"

View file

@ -0,0 +1,592 @@
return {
{
"scottmckendry/cyberdream.nvim",
lazy = false,
priority = 1000,
config = function()
require("cyberdream").setup({
highlights = {
Comment = { fg = "#89ca78", bg = "NONE" },
},
colors = {
bg = "#000000",
green = "#00cc00",
purple = "#5ef1ff",
cyan = "#bd5eff"
}
})
vim.cmd.colorscheme("cyberdream")
end
},
{
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
main = "nvim-treesitter.configs",
opts = {
ensure_installed = {
"vimdoc", "lua", "markdown", "markdown_inline", "c", "cpp", "rust", "javascript",
"typescript", "html", "python", "json", "hyprlang"
},
highlight = {
enable = true,
additional_vim_regex_highlighting = false,
},
sync_install = false,
auto_install = true
}
},
{
"nvim-treesitter/nvim-treesitter-textobjects",
event = "VeryLazy"
},
{
"williamboman/mason-lspconfig.nvim",
dependencies = {
"williamboman/mason.nvim",
"neovim/nvim-lspconfig",
"saghen/blink.cmp"
},
event = { "BufReadPre", "BufNewFile" },
config = function()
require("mason").setup()
require("mason-lspconfig").setup({
automatic_installation = true,
ensure_installed = { "lua_ls", "clangd", "rust_analyzer", "pyright", "marksman", "tailwindcss" }
})
local blinkCapabilities = require("blink.cmp").get_lsp_capabilities()
vim.lsp.config("lua_ls", {
settings = {
Lua = {
diagnostics = {
globals = { "vim" }
},
workspace = {
library = vim.api.nvim_get_runtime_file("", true)
},
telemetry = {
enable = false
}
}
},
capabilities = blinkCapabilities
})
vim.lsp.config("clangd", { capabilities = blinkCapabilities })
vim.lsp.config("rust_analyzer", { capabilities = blinkCapabilities })
vim.lsp.config("pyright", { capabilities = blinkCapabilities })
vim.lsp.config("marksman", { capabilities = blinkCapabilities })
vim.lsp.config("tailwindcss", {
filetypes = { "html", "css", "less", "postcss", "sass", "scss", "stylus", "sugarss" },
capabilities = blinkCapabilities
})
vim.lsp.config("nil_ls", { capabilities = blinkCapabilities })
end
},
{
"stevearc/conform.nvim",
config = function()
vim.g.enable_autoformat = true
require("conform").setup({
formatters_by_ft = {
nix = { "nixfmt" },
-- TODO: More formatters by filetype
},
format_on_save = function(bufnr)
if vim.g.enable_autoformat or vim.b[bufnr].enable_autoformat then
return { timeout_ms = 500, lsp_format = "fallback" }
end
end
})
vim.api.nvim_create_user_command("Format", function(args)
local range = nil
if args.count ~= -1 then
local end_line = vim.api.nvim_buf_get_lines(0, args.line2 - 1, args.line2, true)[1]
range = {
start = { args.line1, 0 },
["end"] = { args.line2, end_line:len() },
}
end
require("conform").format({ async = true, range = range })
end, { range = true })
vim.api.nvim_create_user_command("FormatDisable", function(args)
if args.bang then
vim.b.enable_autoformat = false
else
vim.g.enable_autoformat = false
end
end, { desc = "Disable autoformat-on-save", bang = true })
vim.api.nvim_create_user_command("FormatEnable", function(args)
if args.bang then
vim.b.enable_autoformat = true
else
vim.g.enable_autoformat = true
end
end, { desc = "Re-enable autoformat-on-save", bang = true })
vim.o.formatexpr = "v:lua.require'conform'.formatexpr()"
end
},
{
"saghen/blink.cmp",
dependencies = { "rafamadriz/friendly-snippets" },
version = "*",
opts = {
enabled = function()
return not vim.tbl_contains({ "text" }, vim.bo.filetype)
and vim.bo.buftype ~= "prompt"
and vim.b.completion ~= false
end,
keymap = { preset = "default" },
appearance = {
nerd_font_variant = "mono"
},
signature = { enabled = true },
cmdline = {
enabled = true,
keymap = { preset = "cmdline" },
sources = function()
local type = vim.fn.getcmdtype()
if type == "/" or type == "?" then return { "buffer" } end
if type == ":" or type == "@" then return { "cmdline" } end
return {}
end,
completion = {
trigger = {
show_on_blocked_trigger_characters = {},
show_on_x_blocked_trigger_characters = {},
},
list = {
selection = {
preselect = true,
auto_insert = true,
},
},
menu = { auto_show = true },
ghost_text = { enabled = true }
}
}
}
},
{
"windwp/nvim-autopairs",
event = "InsertEnter",
opts = {}
},
{
"windwp/nvim-ts-autotag",
dependencies = { "nvim-treesitter/nvim-treesitter" },
opts = {}
},
{
"folke/trouble.nvim",
opts = {},
cmd = "Trouble",
keys = {
{
"<leader>xx",
"<cmd>Trouble diagnostics toggle<cr>",
desc = "Diagnostics (Trouble)",
},
{
"<leader>xX",
"<cmd>Trouble diagnostics toggle filter.buf=0<cr>",
desc = "Buffer Diagnostics (Trouble)"
},
{
"<leader>cs",
"<cmd>Trouble symbols toggle focus=false<cr>",
desc = "Symbols (Trouble)"
},
{
"<leader>cl",
"<cmd>Trouble lsp toggle focus=false win.position=right<cr>",
desc = "LSP Definitions / references / ... (Trouble)"
},
{
"<leader>xL",
"<cmd>Trouble loclist toggle<cr>",
desc = "Location List (Trouble)"
},
{
"<leader>xQ",
"<cmd>Trouble qflist toggle<cr>",
desc = "Quickfix List (Trouble)"
},
}
},
{
"mluders/comfy-line-numbers.nvim",
config = function()
require("comfy-line-numbers").setup({
hidden_file_types = {}
})
vim.api.nvim_create_autocmd("CmdlineEnter", {
group = "ComfyLineNumbers",
pattern = "*",
callback = function()
pcall(require("comfy-line-numbers").disable_line_numbers)
end
})
vim.api.nvim_create_autocmd("CmdlineLeave", {
group = "ComfyLineNumbers",
pattern = "*",
callback = function()
pcall(require("comfy-line-numbers").enable_line_numbers)
end
})
end
},
{
"winston0410/range-highlight.nvim",
event = { "CmdlineEnter" },
opts = {},
},
{
"nvim-pack/nvim-spectre",
config = function()
local spectre = require("spectre")
vim.keymap.set("n", "<leader>ss", function() spectre.toggle() end, { desc = "Spectre toggle" })
vim.keymap.set("n", "<leader>sw", function() require("spectre").open_visual({ select_word = true }) end,
{ desc = "Spectre search current word" })
vim.keymap.set("v", "<leader>sw", function() require("spectre").open_visual() end,
{ desc = "Spectre search current word" })
vim.keymap.set("n", "<leader>sf", function() require("spectre").open_file_search({ select_word = true }) end,
{ desc = "Spectre search current word in current file" })
vim.keymap.set("v", "<leader>sf", function() require("spectre").open_file_search() end,
{ desc = "Spectre search current word in current file" })
spectre.setup({
is_block_ui_break = true
})
end
},
{
"kdheepak/lazygit.nvim",
lazy = true,
cmd = {
"LazyGit",
"LazyGitConfig",
"LazyGitCurrentFile",
"LazyGitFilter",
"LazyGitFilterCurrentFile",
},
dependencies = {
"nvim-lua/plenary.nvim",
},
keys = {
{ "<leader>lg", "<cmd>LazyGit<cr>", desc = "LazyGit" }
}
},
{
"nvim-telescope/telescope.nvim",
branch = "0.1.x",
dependencies = { "nvim-lua/plenary.nvim", "nvim-telescope/telescope-fzf-native.nvim" },
config = function()
require("telescope").load_extension("fzf")
local builtin = require("telescope.builtin")
vim.keymap.set("n", "<leader>ff", builtin.find_files, { desc = "Telescope find files" })
vim.keymap.set("n", "<leader>fg", builtin.git_files, { desc = "Telescope git files" })
vim.keymap.set("n", "<leader>fs", builtin.live_grep, { desc = "Telescope live grep" })
vim.keymap.set("n", "<leader>fw", function()
local word = vim.fn.expand("<cword>")
builtin.grep_string({ search = word })
end, { desc = "Telescope grep current word" })
vim.keymap.set("n", "<leader>fW", function()
local word = vim.fn.expand("<cWORD>")
builtin.grep_string({ search = word })
end, { desc = "Telescope grep current WORD" })
end
},
{
"nvim-telescope/telescope-fzf-native.nvim",
build =
"cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release -DCMAKE_POLICY_VERSION_MINIMUM=3.5 && cmake --build build --config Release"
},
{
"mbbill/undotree"
},
{
"mikavilpas/yazi.nvim",
version = "*",
event = "VeryLazy",
dependencies = {
{ "nvim-lua/plenary.nvim", lazy = true },
},
keys = {
{
"<leader>-",
mode = { "n", "v" },
"<cmd>Yazi<cr>",
desc = "Open yazi at the current file",
},
{
"<leader>cw",
"<cmd>Yazi cwd<cr>",
desc = "Open the file manager in nvim's working directory",
},
{
"<c-up>",
"<cmd>Yazi toggle<cr>",
desc = "Resume the last yazi session",
},
},
---@type YaziConfig | {}
opts = {
open_for_directories = true,
keymaps = {
show_help = "<f1>",
},
},
init = function()
vim.g.loaded_netrwPlugin = 1
end,
},
{
"lukas-reineke/indent-blankline.nvim",
event = "BufReadPost",
dependencies = { "nvim-treesitter/nvim-treesitter" },
config = function()
vim.api.nvim_set_hl(0, "IblScope", { link = "Function", nocombine = true })
require("ibl").setup({
scope = {
char = "",
enabled = true,
show_start = true,
show_end = false,
show_exact_scope = true
},
indent = {
char = ""
},
})
end
},
{
"folke/todo-comments.nvim",
dependencies = { "nvim-lua/plenary.nvim" },
config = function(_, opts)
require("todo-comments").setup(opts)
vim.keymap.set("n", "Tn", function() require("todo-comments").jump_next() end, { desc = "Next todo comment" })
vim.keymap.set("n", "TN", function() require("todo-comments").jump_prev() end,
{ desc = "Previous todo comment" })
end,
opts = {
signs = true, -- show icons in the signs column
sign_priority = 8, -- sign priority
keywords = {
BUG = {
icon = "", -- icon used for the sign, and in search results
color = "error", -- can be a hex color, or a named color (see below)
alt = { "FIX", "FIXME", "FIXIT", "ISSUE" }
},
TODO = { icon = "", color = "info" },
HACK = { icon = "", color = "warning" },
WARN = { icon = "", color = "warning", alt = { "WARNING", "XXX" } },
PERF = { icon = "", alt = { "OPTIM", "PERFORMANCE", "OPTIMIZE" } },
NOTE = { icon = "", color = "hint", alt = { "INFO" } },
TEST = { icon = "", color = "test", alt = { "TESTING", "PASSED", "FAILED" } }
},
gui_style = {
fg = "NONE", -- The gui style to use for the fg highlight group.
bg = "BOLD" -- The gui style to use for the bg highlight group.
},
merge_keywords = true, -- when true, custom keywords will be merged with the defaults
highlight = {
multiline = true, -- enable multine todo comments
multiline_pattern = "^.", -- lua pattern to match the next multiline from the start of the matched keyword
multiline_context = 10, -- extra lines that will be re-evaluated when changing a line
before = "", -- "fg" or "bg" or empty
keyword = "bg", -- "fg", "bg", "wide", "wide_bg", "wide_fg" or empty. (wide and wide_bg is the same as bg, but will also highlight surrounding characters, wide_fg acts accordingly but with fg)
after = "fg", -- "fg" or "bg" or empty
pattern = [[.*<(KEYWORDS)\s*:]], -- pattern or table of patterns, used for highlighting (vim regex)
comments_only = true, -- uses treesitter to match keywords in comments only
max_line_len = 400, -- ignore lines longer than this
exclude = {}, -- list of file types to exclude highlighting
},
colors = {
error = { "DiagnosticError", "ErrorMsg", "#DC2626" },
warning = { "DiagnosticWarn", "WarningMsg", "#FBBF24" },
info = { "DiagnosticInfo", "#2563EB" },
hint = { "DiagnosticHint", "#10B981" },
default = { "Identifier", "#7C3AED" },
test = { "Identifier", "#FF00FF" }
},
search = {
command = "rg",
args = {
"--color=never",
"--no-heading",
"--with-filename",
"--line-number",
"--column"
},
pattern = [[\b(KEYWORDS):]]
}
}
},
{
"folke/flash.nvim",
event = "VeryLazy",
---@type Flash.Config
opts = {},
keys = {
-- { "s", mode = { "n", "x", "o" }, function() require("flash").jump() end, desc = "Flash" },
{ "S", mode = { "n", "x", "o" }, function() require("flash").treesitter() end, desc = "Flash Treesitter" },
{ "R", mode = { "o", "x" }, function() require("flash").treesitter_search() end, desc = "Treesitter Search" },
{ "<c-s>", mode = { "c" }, function() require("flash").toggle() end, desc = "Toggle Flash Search" },
},
},
{
"j-hui/fidget.nvim",
opts = {
progress = {
display = {
done_ttl = 0.5
}
}
}
},
{
"norcalli/nvim-colorizer.lua",
main = "colorizer",
config = function()
require("colorizer").setup({
css = {
css = true,
},
"html",
"javascript",
"markdown",
},
{
RGB = true,
RRGGBB = true,
RRGGBBAA = true,
names = false,
mode = "background",
}
)
end
},
{
"nvim-tree/nvim-web-devicons",
lazy = true
},
{
"obsidian-nvim/obsidian.nvim",
version = "*",
lazy = true,
event = {
"BufEnter " .. vim.fn.expand "~" .. "/Obsidian*"
},
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-telescope/telescope.nvim",
"nvim-treesitter/nvim-treesitter",
"saghen/blink.cmp"
},
opts = {
legacy_commands = false,
workspaces = {
{
name = "personal",
path = "~/Obsidian/personal",
}
},
notes_subdir = "Notes",
daily_notes = {
folder = "Notes/Daily",
date_format = "%Y-%m-%d",
alias_format = "%B %-d, %Y",
default_tags = { "daily-notes" }
},
completion = {
nvim_cmp = false,
blink = true,
min_chars = 1,
},
new_notes_location = "notes_subdir",
note_path_func = function(spec)
local path = spec.dir / spec.id
return path:with_suffix(".md")
end,
preferred_link_style = "wiki",
frontmatter = {
enabled = false,
},
templates = {
folder = "Templates",
date_format = "%Y-%m-%d",
time_format = "%H:%M",
substitutions = {},
},
picker = {
name = "telescope.nvim",
note_mappings = {
new = "<C-x>",
insert_link = "<C-l>",
},
tag_mappings = {
tag_note = "<C-x>",
insert_tag = "<C-l>",
},
},
checkboxes = {
[" "] = { char = "󰄱", hl_group = "ObsidianTodo" },
["x"] = { char = "", hl_group = "ObsidianDone" },
[">"] = { char = "", hl_group = "ObsidianRightArrow" },
["~"] = { char = "󰰱", hl_group = "ObsidianTilde" },
["!"] = { char = "", hl_group = "ObsidianImportant" }
},
ui = {
enable = true,
update_debounce = 200,
max_file_length = 5000,
bullets = { char = "", hl_group = "ObsidianBullet" },
external_link_icon = { char = "", hl_group = "ObsidianExtLinkIcon" },
reference_text = { hl_group = "ObsidianRefText" },
highlight_text = { hl_group = "ObsidianHighlightText" },
tags = { hl_group = "ObsidianTag" },
block_ids = { hl_group = "ObsidianBlockID" },
hl_groups = {
ObsidianTodo = { bold = true, fg = "#f78c6c" },
ObsidianDone = { bold = true, fg = "#89ddff" },
ObsidianRightArrow = { bold = true, fg = "#f78c6c" },
ObsidianTilde = { bold = true, fg = "#ff5370" },
ObsidianImportant = { bold = true, fg = "#d73128" },
ObsidianBullet = { bold = true, fg = "#89ddff" },
ObsidianRefText = { underline = true, fg = "#c792ea" },
ObsidianExtLinkIcon = { fg = "#c792ea" },
ObsidianTag = { italic = true, fg = "#89ddff" },
ObsidianBlockID = { italic = true, fg = "#89ddff" },
ObsidianHighlightText = { bg = "#75662e" }
},
}
},
keys = {
{
"fn",
"<cmd>Obsidian quick_switch<cr>",
desc = "Switch between Obsidian notes"
}
}
},
{
"Kicamon/markdown-table-mode.nvim",
main = "markdown-table-mode",
opts = {}
},
{
"Thiago4532/mdmath.nvim",
dependencies = {
"nvim-treesitter/nvim-treesitter",
},
opts = {
filetypes = { "markdown" },
update_interval = 500
}
}
}

View file

@ -0,0 +1,19 @@
vim.g.mapleader = " "
vim.g.maplocalleader = ","
vim.keymap.set("n", "<leader>ex", vim.cmd.Ex)
vim.keymap.set("n", "<leader>u", vim.cmd.UndotreeToggle)
vim.keymap.set("x", "J", ":m '>+1<CR>gv=gv")
vim.keymap.set("x", "K", ":m '<-2<CR>gv=gv")
vim.keymap.set({ "n", "x" }, "j", "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true })
vim.keymap.set({ "n", "x" }, "<Down>", "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true })
vim.keymap.set({ "n", "x" }, "k", "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true })
vim.keymap.set({ "n", "x" }, "<Up>", "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true })
vim.keymap.set({ "n", "x" }, "x", "\"_x")
vim.keymap.set({ "n", "x" }, "s", "\"_s")
vim.keymap.set("n", "dd", "\"_dd")
vim.keymap.set("x", "p", "P")

View file

@ -0,0 +1,14 @@
function start_server(args)
local address = "0.0.0.0:5656"
if args.args ~= "" then
address = args.args
end
vim.fn.serverstart(address)
print("NVim server started on " .. address)
end
vim.api.nvim_create_user_command(
"StartServer",
start_server,
{ nargs = "?" }
)

View file

@ -0,0 +1,76 @@
[user]
keyboard = redox/rev1
keymap = wekuz
[config]
[console]
[c2json]
[compile]
[docs]
[find]
keymap = default
[flash]
[format_c]
[format_python]
[format_text]
[generate_autocorrect_data]
[generate_compilation_database]
[generate_develop_pr_list]
[generate_dfu_header]
[generate_info_json]
[generate_make_dependencies]
[git_submodule]
[hello]
[info]
[license_check]
[lint]
[kle2json]
[list_keymaps]
[list_layouts]
[mass_compile]
keymap = default
[new_keyboard]
[new_keymap]
[painter_convert_graphics]
[painter_make_font_image]
[painter_convert_font_image]
[test_c]
[userspace_add]
[userspace_remove]
[userspace_compile]
[general]

View file

View file

View file

@ -0,0 +1,32 @@
[Appearance]
color_scheme_path=/usr/share/qt5ct/colors/darker.conf
custom_palette=true
icon_theme=Papirus-Dark
standard_dialogs=default
style=Adwaita-Dark
[Fonts]
fixed="JetBrainsMono Nerd Font Mono,12,-1,5,50,0,0,0,0,0,Regular"
general="JetBrainsMono Nerd Font,12,-1,5,50,0,0,0,0,0,Regular"
[Interface]
activate_item_on_single_click=1
buttonbox_layout=0
cursor_flash_time=1000
dialog_buttons_have_icons=1
double_click_interval=400
gui_effects=@Invalid()
keyboard_scheme=2
menus_have_icons=true
show_shortcuts_in_context_menus=true
stylesheets=@Invalid()
toolbutton_style=4
underline_shortcut=1
wheel_scroll_lines=3
[SettingsWindow]
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x2\xa4\0\0\x3\v\0\0\0\0\0\0\0\0\0\0\x2\xa4\0\0\x3\v\0\0\0\0\x2\0\0\0\n\0\0\0\0\0\0\0\0\0\0\0\x2\xa4\0\0\x3\v)
[Troubleshooting]
force_raster_widgets=1
ignored_applications=@Invalid()

View file

View file

View file

@ -0,0 +1,32 @@
[Appearance]
color_scheme_path=/usr/share/qt6ct/colors/darker.conf
custom_palette=true
icon_theme=Papirus-Dark
standard_dialogs=default
style=Adwaita-Dark
[Fonts]
fixed="JetBrainsMono Nerd Font Mono,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,Regular"
general="JetBrainsMono Nerd Font,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,Regular"
[Interface]
activate_item_on_single_click=1
buttonbox_layout=0
cursor_flash_time=1000
dialog_buttons_have_icons=1
double_click_interval=400
gui_effects=@Invalid()
keyboard_scheme=2
menus_have_icons=true
show_shortcuts_in_context_menus=true
stylesheets=@Invalid()
toolbutton_style=4
underline_shortcut=1
wheel_scroll_lines=3
[SettingsWindow]
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\t\xfd\0\0\x5\x85\0\0\0\0\0\0\0\0\0\0\t\xfd\0\0\x5\x85\0\0\0\0\x2\0\0\0\n\0\0\0\0\0\0\0\0\0\0\0\t\xfd\0\0\x5\x85)
[Troubleshooting]
force_raster_widgets=1
ignored_applications=@Invalid()

View file

@ -0,0 +1 @@
{"email":"patrickjelsukov@gmail.com","sso_id":null,"base_url":"https://vw.wekuz.localplayer.dev","identity_url":null,"ui_url":null,"notifications_url":null,"lock_timeout":3600,"sync_interval":3600,"pinentry":"pinentry","client_cert_path":null}

View file

@ -0,0 +1 @@
hyprland-uwsm.desktop

View file

@ -0,0 +1,17 @@
export XCURSOR_THEME=Nordzy-cursors
export XCURSOR_SIZE=24
export ELECTRON_OZONE_PLATFORM_HINT=auto
export QT_QPA_PLATFORM=wayland;xcb
export QT_QPA_PLATFORMTHEME=qt6ct
export QT_WAYLAND_DISABLE_WINDOWDECORATION=1
export QT_AUTO_SCREEN_SCALE_FACTOR=1
export GDK_BACKEND=wayland,x11,*
export SDL_VIDEODRIVER=wayland
export CLUTTER_BACKEND=wayland
export XDG_CURRENT_DESKTOP=Hyprland
export XDG_SESSION_TYPE=wayland
export XDG_SESSION_DESKTOP=Hyprland

View file

@ -0,0 +1,2 @@
export HYPRCURSOR_THEME=Nordzy-cursors
export HYPRCURSOR_SIZE=24

View file

@ -0,0 +1,78 @@
// -*- mode: jsonc -*-
{
"layer": "top",
"position": "top",
"height": 24,
"spacing": 2,
"modules-left": ["hyprland/workspaces"],
"modules-center": ["hyprland/window"],
"modules-right": [ "network", "wireplumber", "cpu", "memory", "temperature", "battery", "clock" ],
"hyprland/workspaces": {
"workspace-taskbar": {
"enable": true,
"format": "{icon}",
"icon-size": 16,
"orientation": "horizontal",
},
"format": "{id} {windows}",
},
"hyprland/window": {
"icon": true,
"icon-size": 18,
},
"network": {
"interval": 15,
"format-wifi": "",
"format-ethernet": "",
"format-disconnected": "⚠",
"format-linked": "",
"tooltip-format": "{ifname}: {ipaddr}/{cidr}",
"tooltip-format-wifi": "{ifname}: {ipaddr}/{cidr}\n{essid} ({signalStrength}%)",
"tooltip-format-disconnected": "Disconnected",
"tooltip-format-linked": "No IP"
},
"wireplumber": {
"format": "{volume}% {icon}",
"format-icons": ["󰕿", "󰖀", "󰕾"],
"format-muted": "{volume}% 󰝟",
"scroll-step": 0.2,
"on-click": "pavucontrol",
"reverse-scrolling": 1
},
"cpu": {
"interval": 5,
"format": "{usage}% "
},
"memory": {
"interval": 5,
"format": "{}% "
},
"temperature": {
"interval": 5,
"hwmon-path": "/sys/class/hwmon/hwmon3/temp1_input",
"critical-threshold": 70,
"format": "{temperatureC}°C {icon}",
"format-critical": "{temperatureC}°C {icon}",
"format-icons": ["", "", "", "", ""],
},
"battery": {
"interval": 10,
"states": {
"warning": 30,
"critical": 15
},
"format": "{capacity}% {icon}",
"format-plugged": "{capacity}% 󰚥",
"format-icons": {
"default": ["󰂎", "󱊡", "󱊢", "󱊣"],
"charging": ["󰢟", "󱊤", "󱊥", "󱊦"]
},
"tooltip-format": "{time}"
},
"clock": {
"interval": 1,
"format": "{:%H:%M:%S}",
"tooltip-format": "{:%a %d/%m/%Y}"
}
}

View file

@ -0,0 +1,160 @@
* {
font-family: JetBrainsMonoNL Nerd Font;
font-size: 14px;
}
window#waybar {
background: linear-gradient(#333333, rgba(34, 34, 34, 0.4));
/* background-color: #333333; */
/* border-bottom: 2px solid rgba(100, 100, 100, 0.7); */
color: #ffffff;
transition-property: background-color;
transition-duration: .5s;
}
label.module {
box-shadow: inset 0 -2px;
}
button {
/* Use box-shadow instead of border so the text isn't offset */
/* Avoid rounded borders under each button name */
border: none;
border-radius: 0;
}
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
button:hover {
box-shadow: inherit;
text-shadow: inherit;
background: inherit;
}
#workspaces button {
padding: 0 4px;
background-color: transparent;
color: #ffffff;
}
#workspaces button:hover {
background: rgba(0, 0, 0, 0.3);
}
#workspaces button.focused {
background: linear-gradient(#64727D, rgba(100, 114, 125, 0.7));
/* background-color: #64727D; */
}
#workspaces button.urgent {
background: linear-gradient(#ee0202, rgba(238, 2, 2, 0.7));
/* background-color: #ee0202; */
}
#workspaces button.active {
background: linear-gradient(rgba(0, 170, 0, 0.8), rgba(0, 136, 0, 0.4));
/* background-color: #00aa00; */
}
#network,
#wireplumber,
#cpu,
#memory,
#temperature,
#battery,
#clock {
padding: 0 4px;
color: #ffffff;
}
#window {
margin: 0 40px;
}
#workspaces {
margin: 0 6px;
}
.modules-left > widget:first-child > #workspaces {
margin-left: 0;
}
.modules-right > widget:last-child > #workspaces {
margin-right: 0;
}
#clock {
padding: 0 8px;
background-color: transparent;
}
#clock:hover {
background: rgba(0, 0, 0, 0.3);
}
#battery {
background-color: transparent;
}
#battery:hover {
background: rgba(0, 0, 0, 0.3);
}
#battery.critical:not(.charging) {
box-shadow: inset 0 -2px;
color: #ee0202;
}
label:focus {
background-color: #000000;
}
#cpu {
padding-right: 10px;
background-color: transparent;
}
#cpu:hover {
background: rgba(0, 0, 0, 0.3);
}
#memory {
padding-right: 10px;
background-color: transparent;
}
#memory:hover {
background: rgba(0, 0, 0, 0.3);
}
#network {
padding-right: 8px;
background-color: transparent;
}
#network:hover {
background: rgba(0, 0, 0, 0.3);
}
#network.disconnected {
box-shadow: inset 0 -2px;
color: #ee0202;
}
#network.linked {
box-shadow: inset 0 -2px;
color: #ece81a;
}
#wireplumber {
padding-right: 6px;
background-color: transparent;
}
#wireplumber:hover {
background: rgba(0, 0, 0, 0.3);
}
#wireplumber.muted {
box-shadow: inset 0 -2px;
color: #ee0202;
}
#temperature {
background-color: transparent;
}
#temperature:hover {
background: rgba(0, 0, 0, 0.3);
}
#temperature.critical {
box-shadow: inset 0 -2px;
color: #ee0202;
}

View file

@ -0,0 +1,32 @@
# Sources (if empty, use all available)
sources =
# Fuzzy finder
fuzzy_finder = fzf
# Quick search mode (only by title)
quick_search = false
# AND operator mode (must contain all keywords)
and_operator = false
# Raw output (for developers)
raw_output = false
# Manpages language(s)
man_lang = en
# Wiki language(s)
wiki_lang = en
# Show previews in TUI
tui_preview = true
# Keep open after viewing a result
tui_keep_open = false
# Show source column
tui_source_column = true
# Viewer for HTML pages
tui_html = w3m

View file

@ -0,0 +1,2 @@
[mgr]
show_hidden = true

View file

@ -0,0 +1,14 @@
alias ls="lsd"
alias l="ls -l"
alias la="ls -la"
alias rp="rip"
alias rm="read -q 'choice?Use rm instead of rip? [y/N] ' && rm"
alias nv="nvim"
alias sudo="sudo "
alias umount="sync && umount"
alias kssh="kitten ssh"
alias ipy="ipython"
alias zsh_debug_startup="time ZSH_DEBUGRC=1 zsh -i -c exit"
eval $(thefuck --alias)
eval $(thefuck --alias fck)

View file

@ -0,0 +1,7 @@
# ssh-agent
if ! pgrep -u "$USER" ssh-agent > /dev/null; then
ssh-agent -t 2h > "$XDG_RUNTIME_DIR/ssh-agent.env"
fi
if [[ ! -f "$SSH_AUTH_SOCK" ]]; then
source "$XDG_RUNTIME_DIR/ssh-agent.env" >/dev/null
fi

View file

@ -0,0 +1,8 @@
source <(fzf --zsh)
source <(rip completions zsh | sed "s/'::targets/':targets/")
source <(rbw gen-completions zsh)
eval "$(zoxide init zsh)"
function load-completions {
source $QMK_LOCATION/util/qmk_tab_complete.sh
}

View file

@ -0,0 +1,50 @@
# Source: https://wiki.archlinux.org/title/Zsh#Key_bindings
typeset -g -A key
key[Home]="${terminfo[khome]}"
key[End]="${terminfo[kend]}"
key[Insert]="${terminfo[kich1]}"
key[Backspace]="${terminfo[kbs]}"
key[Delete]="${terminfo[kdch1]}"
key[Up]="${terminfo[kcuu1]}"
key[Down]="${terminfo[kcud1]}"
key[Left]="${terminfo[kcub1]}"
key[Right]="${terminfo[kcuf1]}"
key[PageUp]="${terminfo[kpp]}"
key[PageDown]="${terminfo[knp]}"
key[Shift-Tab]="${terminfo[kcbt]}"
[[ -n "${key[Home]}" ]] && bindkey -- "${key[Home]}" beginning-of-line
[[ -n "${key[End]}" ]] && bindkey -- "${key[End]}" end-of-line
[[ -n "${key[Insert]}" ]] && bindkey -- "${key[Insert]}" overwrite-mode
[[ -n "${key[Backspace]}" ]] && bindkey -- "${key[Backspace]}" backward-delete-char
[[ -n "${key[Delete]}" ]] && bindkey -- "${key[Delete]}" delete-char
[[ -n "${key[Up]}" ]] && bindkey -- "${key[Up]}" up-line-or-history
[[ -n "${key[Down]}" ]] && bindkey -- "${key[Down]}" down-line-or-history
[[ -n "${key[Left]}" ]] && bindkey -- "${key[Left]}" backward-char
[[ -n "${key[Right]}" ]] && bindkey -- "${key[Right]}" forward-char
[[ -n "${key[PageUp]}" ]] && bindkey -- "${key[PageUp]}" beginning-of-buffer-or-history
[[ -n "${key[PageDown]}" ]] && bindkey -- "${key[PageDown]}" end-of-buffer-or-history
[[ -n "${key[Shift-Tab]}" ]] && bindkey -- "${key[Shift-Tab]}" reverse-menu-complete
if (( ${+terminfo[smkx]} && ${+terminfo[rmkx]} )); then
autoload -Uz add-zle-hook-widget
function zle_application_mode_start { echoti smkx }
function zle_application_mode_stop { echoti rmkx }
add-zle-hook-widget -Uz zle-line-init zle_application_mode_start
add-zle-hook-widget -Uz zle-line-finish zle_application_mode_stop
fi
autoload -Uz up-line-or-beginning-search down-line-or-beginning-search
zle -N up-line-or-beginning-search
zle -N down-line-or-beginning-search
[[ -n "${key[Up]}" ]] && bindkey -- "${key[Up]}" up-line-or-beginning-search
[[ -n "${key[Down]}" ]] && bindkey -- "${key[Down]}" down-line-or-beginning-search
key[Control-Left]="${terminfo[kLFT5]}"
key[Control-Right]="${terminfo[kRIT5]}"
[[ -n "${key[Control-Left]}" ]] && bindkey -- "${key[Control-Left]}" backward-word
[[ -n "${key[Control-Right]}" ]] && bindkey -- "${key[Control-Right]}" forward-word

View file

@ -0,0 +1,5 @@
unsetopt beep
setopt inc_append_history
setopt share_history
setopt hist_ignore_dups
setopt hist_ignore_all_dups

106
executable_dot_zshrc Normal file
View file

@ -0,0 +1,106 @@
if [ -n "${ZSH_DEBUG_STARTUP+1}" ]; then
zmodload zsh/zprof
fi
HISTFILE=~/.histfile
HISTSIZE=10000
SAVEHIST=10000
setopt INC_APPEND_HISTORY
export EDITOR=nvim
export MANPAGER='nvim +Man!'
PROMPT="
[%n@%m %~]%(?..%F{red})>%f "
zstyle :compinstall filename '/home/wekuz/.zshrc'
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'
zstyle ':completion:*' menu select
autoload -Uz compinit
compinit
autoload -Uz bashcompinit
bashcompinit
export PATH="$PATH:/home/wekuz/.local/bin"
export PATH="$PATH:$HOME/.cargo/bin"
QMK_LOCATION="/home/wekuz/qmk"
ZSH_CONFIG_FILES=(
fixkeys
options
aliases
completions
autostart
)
for filename in "${ZSH_CONFIG_FILES[@]}"; do
[ -r "$XDG_CONFIG_HOME/zsh/config/$filename.zsh" ] && source "$XDG_CONFIG_HOME/zsh/config/$filename.zsh"
done
function plugin-compile {
ZPLUGINDIR=${ZPLUGINDIR:-$HOME/.config/zsh/plugins}
autoload -U zrecompile
local f
for f in $ZPLUGINDIR/**/*.zsh{,-theme}(N); do
zrecompile -pq "$f"
done
}
function plugin-clone {
local repo plugdir initfile initfiles=()
ZPLUGINDIR=${ZPLUGINDIR:-${ZDOTDIR:-$HOME/.config/zsh}/plugins}
for repo in $@; do
plugdir=$ZPLUGINDIR/${repo:t}
initfile=$plugdir/${repo:t}.plugin.zsh
if [[ ! -d $plugdir ]]; then
echo "Cloning $repo..."
git clone -q --depth 1 --recursive --shallow-submodules \
https://github.com/$repo $plugdir
fi
if [[ ! -e $initfile ]]; then
initfiles=($plugdir/*.{plugin.zsh,zsh-theme,zsh,sh}(N))
(( $#initfiles )) && ln -sf $initfiles[1] $initfile
fi
done
plugin-compile
}
function plugin-source {
local plugdir
ZPLUGINDIR=${ZPLUGINDIR:-${ZDOTDIR:-$HOME/.config/zsh}/plugins}
for plugdir in $@; do
[[ $plugdir = /* ]] || plugdir=$ZPLUGINDIR/$plugdir
fpath+=$plugdir
local initfile=$plugdir/${plugdir:t}.plugin.zsh
(( $+functions[zsh-defer] )) && zsh-defer . $initfile || . $initfile
done
}
function plugin-update {
ZPLUGINDIR=${ZPLUGINDIR:-$HOME/.config/zsh/plugins}
for d in $ZPLUGINDIR/*/.git(/); do
echo "Updating ${d:h:t}..."
command git -C "${d:h}" pull --ff --recurse-submodules --depth 1 --rebase --autostash
done
plugin-compile
echo "Plugins updated"
}
ZSH_PLUGIN_REPOS=(
hlissner/zsh-autopair
zsh-users/zsh-syntax-highlighting
zsh-users/zsh-autosuggestions
)
ZSH_PLUGINS=(
zsh-autopair
zsh-syntax-highlighting
zsh-autosuggestions
)
# plugin-clone $ZSH_PLUGIN_REPOS
plugin-source $ZSH_PLUGINS
if [ -n "${ZSH_DEBUG_STARTUP+1}" ]; then
zprof
fi

14
private_dot_ssh/config Normal file
View file

@ -0,0 +1,14 @@
AddKeysToAgent yes
Match host github.com user git
IdentityFile ~/.ssh/id_ed25519_github
IdentitiesOnly yes
Match host git.wekuz.localplayer.dev user git
Port 15837
IdentityFile ~/.ssh/id_ed25519_github
IdentitiesOnly yes
Match host 192.168.1.111 user wekuz
IdentityFile ~/.ssh/id_ed25519_raspberrypie
IdentitiesOnly yes