Merge remote-tracking branch 'github/master'

This commit is contained in:
js0ny 2025-01-27 00:32:34 +00:00
commit 506f4fd54f
91 changed files with 13729 additions and 1331 deletions

View file

@ -143,7 +143,8 @@ Get-ChildItem -Force -Filter *owerShell | ForEach-Object { $_.Attributes += "Hid
# Windows Terminal # Windows Terminal
if (Get-Command wt -ErrorAction SilentlyContinue) { if (Get-Command wt -ErrorAction SilentlyContinue) {
Write-Output "Windows Terminal (wt) installed" Write-Output "Windows Terminal (wt) installed"
} else { }
else {
winget install -e --id Microsoft.WindowsTerminal winget install -e --id Microsoft.WindowsTerminal
} }
@ -185,6 +186,7 @@ scoop install extras/bandizip
scoop install main/pandoc scoop install main/pandoc
scoop install extras/sumatrapdf scoop install extras/sumatrapdf
winget install -e --id Google.GoogleDrive winget install -e --id Google.GoogleDrive
sudo scoop install nonportable/winbtrfs-np
# System Enhancements # System Enhancements
scoop install extras/fancontrol scoop install extras/fancontrol

View file

@ -23,7 +23,7 @@ $linkDots = @{
"$BASE_COMMON\NuGet.Config" = "$Env:AppData\NuGet\NuGet.Config" "$BASE_COMMON\NuGet.Config" = "$Env:AppData\NuGet\NuGet.Config"
"$BASE_COMMON\obsidian.vimrc" = "$Env:UserProfile\Obsidian\.obsidian.vimrc" "$BASE_COMMON\obsidian.vimrc" = "$Env:UserProfile\Obsidian\.obsidian.vimrc"
"$BASE_COMMON\pip.conf" = "$Env:AppData\pip\pip.ini" "$BASE_COMMON\pip.conf" = "$Env:AppData\pip\pip.ini"
"$BASE_COMMON\vimrc" = "$Env:Vim\_vimrc" "$BASE_COMMON\vimrc.noxdg.vimrc" = "$Env:Vim\_vimrc"
"$BASE_TOOLS\ipython" = "$Env:IPYTHONDIR" "$BASE_TOOLS\ipython" = "$Env:IPYTHONDIR"
"$BASE_TOOLS\nvim" = "$Env:XDG_CONFIG_HOME\nvim" "$BASE_TOOLS\nvim" = "$Env:XDG_CONFIG_HOME\nvim"
} }

View file

@ -0,0 +1,43 @@
mkdir -p ~/.tmp
# Bat
mkdir -p "$(bat --config-dir)/themes"
wget -P "$(bat --config-dir)/themes" https://github.com/catppuccin/bat/raw/main/themes/Catppuccin%20Latte.tmTheme
wget -P "$(bat --config-dir)/themes" https://github.com/catppuccin/bat/raw/main/themes/Catppuccin%20Frappe.tmTheme
wget -P "$(bat --config-dir)/themes" https://github.com/catppuccin/bat/raw/main/themes/Catppuccin%20Macchiato.tmTheme
wget -P "$(bat --config-dir)/themes" https://github.com/catppuccin/bat/raw/main/themes/Catppuccin%20Mocha.tmTheme
bat cache --build
# Tmux
mkdir -p ~/.config/tmux/plugins/catppuccin:w
git clone -b v2.1.2 https://github.com/catppuccin/tmux.git ~/.config/tmux/plugins/catppuccin/tmux
# Yazi
curl https://raw.githubusercontent.com/catppuccin/yazi/refs/heads/main/themes/mocha/catppuccin-mocha-lavender.toml -o ~/.config/yazi/theme.toml
# BTop
curl https://raw.githubusercontent.com/catppuccin/btop/refs/heads/main/themes/catppuccin_mocha.theme -o ~/.config/btop/themes/catppuccin_mocha.theme
curl https://raw.githubusercontent.com/catppuccin/btop/refs/heads/main/themes/catppuccin_latte.theme -o ~/.config/btop/themes/catppuccin_latte.theme
# Delta
curl https://raw.githubusercontent.com/catppuccin/delta/refs/heads/main/catppuccin.gitconfig -o ~/.config/git/catppuccin-delta.gitconfig
# Fzf
set -Ux FZF_DEFAULT_OPTS "\
--color=bg+:#313244,bg:#1e1e2e,spinner:#f5e0dc,hl:#f38ba8 \
--color=fg:#cdd6f4,header:#f38ba8,info:#cba6f7,pointer:#f5e0dc \
--color=marker:#b4befe,fg+:#cdd6f4,prompt:#cba6f7,hl+:#f38ba8 \
--color=selected-bg:#45475a \
--multi"
# LsD
curl https://raw.githubusercontent.com/catppuccin/lsd/refs/heads/main/themes/catppuccin-mocha/colors.yaml -o ~/.config/lsd/colors.yaml
curl https://raw.githubusercontent.com/catppuccin/lsd/refs/heads/main/themes/catppuccin-latte/colors.yaml -o ~/.config/lsd/colors-light.yaml
# Midnight Commander
# Change or add skin=catppuccin in the [Midnight-Commander] section inside ~/.config/mc/ini OR Choose the skin inside Midnight Commander through F9>Options>Appearance and Save setup through F9>Options/Save setup
mkdir -p $HOME/.local/share/mc/skins
curl https://raw.githubusercontent.com/catppuccin/mc/refs/heads/main/catppuccin.ini -o $HOME/.local/share/mc/skins/catppuccin.ini
# PowerShell
pwsh -C 'git clone https://github.com/catppuccin/powershell.git (Join-Path $Env:PSModulePath.split(":")[0] Catppuccin)'
# Fish
mkdir -p ~/.config/fish/themes
curl https://raw.githubusercontent.com/catppuccin/fish/refs/heads/main/themes/Catppuccin%20Mocha.theme -o ~/.config/fish/themes/Catppuccin\ Mocha.theme
curl https://raw.githubusercontent.com/catppuccin/fish/refs/heads/main/themes/Catppuccin%20Latte.theme -o ~/.config/fish/themes/Catppuccin\ Latte.theme
# fcitx5
git clone https://github.com/catppuccin/fcitx5.git ~/.tmp/fcitx5
cd ~/.tmp/fcitx5
mkdir -p ~/.local/share/fcitx5/themes
cp -r ./src/* ~/.local/share/fcitx5/themes

View file

@ -0,0 +1,3 @@
Install-Module CompletionPredictor
Install-Module PSFzf
Install-Module Posh-Git

35
common/bat.config Normal file
View file

@ -0,0 +1,35 @@
# $DOTFILES/common/bat.config
# Date: 2025-01-26
# Author: js0ny
# Location;
# Unix: $XDG_CONFIG_HOME/bat/config
# Windows: %AppData%\bat\config
# Linking:
# ln -sf $DOTFILES/common/bat.config $XDG_CONFIG_HOME/bat/config
# This is `bat`s configuration file. Each line either contains a comment or
# a command-line option that you want to pass to `bat` by default. You can
# run `bat --help` to get a list of all possible configuration options.
# Specify desired highlighting theme (e.g. "TwoDark"). Run `bat --list-themes`
# for a list of all available themes
--theme="Catppuccin Mocha"
# Enable this to use italic text on the terminal. This is not supported on all
# terminal emulators (like tmux, by default):
#--italic-text=always
# Uncomment the following line to disable automatic paging:
#--paging=never
# Uncomment the following line if you are using less version >= 551 and want to
# enable mouse scrolling support in `bat` when running inside tmux. This might
# disable text selection, unless you press shift.
--pager="less --RAW-CONTROL-CHARS --quit-if-one-screen --mouse"
# Syntax mappings: map a certain filename pattern to a language.
# Example 1: use the C++ syntax for Arduino .ino files
# Example 2: Use ".gitignore"-style highlighting for ".ignore" files
#--map-syntax "*.ino:C++"
#--map-syntax ".ignore:Git Ignore"

View file

@ -10,6 +10,7 @@
[user] # Modify the name and email [user] # Modify the name and email
name = whoami name = whoami
email = whoami@example.com email = whoami@example.com
<<<<<<< HEAD
[alias] [alias]
cl = clone cl = clone
clnh = clone --depth 1 clnh = clone --depth 1
@ -25,11 +26,20 @@
excludesfile = $XDG_CONFIG_HOME/git/ignore excludesfile = $XDG_CONFIG_HOME/git/ignore
quotePath = false # zh-CN: 解决中文路径问题 quotePath = false # zh-CN: 解决中文路径问题
eol = lf eol = lf
=======
[include]
path = ~/.config/git/catppuccin-delta.gitconfig
[core]
editor = nvim
pager = delta
autocrlf = input # Force End of Line in different platforms
>>>>>>> github/master
[interactive] [interactive]
diffFilter = delta --color-only diffFilter = delta --color-only
[delta] [delta]
navigate = true navigate = true
dark = true dark = true
<<<<<<< HEAD
[diff] [diff]
tool = nvimdiff tool = nvimdiff
[difftool] [difftool]
@ -48,13 +58,24 @@
ff = only ff = only
[init] [init]
defaultBranch = master defaultBranch = master
=======
features = catppuccin-mocha
>>>>>>> github/master
[filter "lfs"] [filter "lfs"]
clean = git-lfs clean -- %f clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f smudge = git-lfs smudge -- %f
process = git-lfs filter-process process = git-lfs filter-process
required = true required = true
<<<<<<< HEAD
# Force ssh # Force ssh
# [url "git@github.com:"] # [url "git@github.com:"]
# insteadOf = https://github.com/ # insteadOf = https://github.com/
[url "git@codeberg.org:"] [url "git@codeberg.org:"]
insteadOf = https://codeberg.org/ insteadOf = https://codeberg.org/
=======
[init]
defaultBranch = master
# [url "git@github.com:"] # Force ssh
# insteadOf = https://github.com/
>>>>>>> github/master

View file

@ -60,45 +60,37 @@ gui:
# Config relating to colors and styles. # Config relating to colors and styles.
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#color-attributes # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#color-attributes
theme: theme:
# Border color of focused window
activeBorderColor: activeBorderColor:
- green - '#b4befe'
- bold - bold
# Border color of non-focused windows
inactiveBorderColor: inactiveBorderColor:
- default - '#a6adc8'
# Border color of focused window when searching in that window
searchingActiveBorderColor:
- cyan
- bold
# Color of keybindings help text in the bottom line
optionsTextColor: optionsTextColor:
- blue - '#89b4fa'
# Background color of selected line.
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#highlighting-the-selected-line
selectedLineBgColor: selectedLineBgColor:
- blue - '#313244'
cherryPickedCommitBgColor:
- '#45475a'
cherryPickedCommitFgColor:
- '#b4befe'
unstagedChangesColor:
- '#f38ba8'
defaultFgColor:
- '#cdd6f4'
searchingActiveBorderColor:
- '#f9e2af'
authorColors:
'*': '#b4befe'
# Background color of selected line when view doesn't have focus. # Background color of selected line when view doesn't have focus.
inactiveViewSelectedLineBgColor: inactiveViewSelectedLineBgColor:
- bold - bold
# Foreground color of copied commit
cherryPickedCommitFgColor:
- blue
# Background color of copied commit
cherryPickedCommitBgColor:
- cyan
# Foreground color of marked base commit (for rebase) # Foreground color of marked base commit (for rebase)
markedBaseCommitFgColor: markedBaseCommitFgColor:
- blue - blue
# Background color of marked base commit (for rebase) # Background color of marked base commit (for rebase)
markedBaseCommitBgColor: markedBaseCommitBgColor:
- yellow - yellow
# Color for file with unstaged changes
unstagedChangesColor:
- red
# Default text color
defaultFgColor:
- default
# Config relating to the commit length indicator # Config relating to the commit length indicator
commitLength: commitLength:
# If true, show an indicator of commit message length # If true, show an indicator of commit message length

151
common/lsd.yaml Normal file
View file

@ -0,0 +1,151 @@
# Location: $XDG_CONFIG_HOME/lsd/config.yaml
# Linking:
# ln -sf $DOTFILES/common/lsd.yaml $XDG_CONFIG_HOME/lsd/config.yaml
# == Classic ==
# This is a shorthand to override some of the options to be backwards compatible
# with `ls`. It affects the "color"->"when", "sorting"->"dir-grouping", "date"
# and "icons"->"when" options.
# Possible values: false, true
classic: false
# == Blocks ==
# This specifies the columns and their order when using the long and the tree
# layout.
# Possible values: permission, user, group, context, size, date, name, inode, links, git
blocks:
- permission
- user
- group
- size
- date
- name
# == Color ==
# This has various color options. (Will be expanded in the future.)
color:
# When to colorize the output.
# When "classic" is set, this is set to "never".
# Possible values: never, auto, always
when: auto
# How to colorize the output.
# When "classic" is set, this is set to "no-color".
# Possible values: default, custom
# When "custom" is set, lsd will look in the config directory for `colors.yaml`.
theme: custom
# == Date ==
# This specifies the date format for the date column. The freeform format
# accepts a strftime like string.
# When "classic" is set, this is set to "date".
# Possible values: date, locale, relative, '+<date_format>'
# `date_format` will be a `strftime` formatted value. e.g. `date: '+%d %b %y %X'` will give you a date like this: 17 Jun 21 20:14:55
date: date
# == Dereference ==
# Whether to dereference symbolic links.
# Possible values: false, true
dereference: false
# == Display ==
# What items to display. Do not specify this for the default behavior.
# Possible values: all, almost-all, directory-only
# display: all
# == Icons ==
icons:
# When to use icons.
# When "classic" is set, this is set to "never".
# Possible values: always, auto, never
when: auto
# Which icon theme to use.
# Possible values: fancy, unicode
theme: fancy
# Separator between icon and the name
# Default to 1 space
separator: " "
# == Ignore Globs ==
# A list of globs to ignore when listing.
ignore-globs:
- .git
# == Indicators ==
# Whether to add indicator characters to certain listed files.
# Possible values: false, true
indicators: false
# == Layout ==
# Which layout to use. "oneline" might be a bit confusing here and should be
# called "one-per-line". It might be changed in the future.
# Possible values: grid, tree, oneline
layout: grid
# == Recursion ==
recursion:
# Whether to enable recursion.
# Possible values: false, true
enabled: false
# How deep the recursion should go. This has to be a positive integer. Leave
# it unspecified for (virtually) infinite.
# depth: 3
# == Size ==
# Specifies the format of the size column.
# Possible values: default, short, bytes
size: default
# == Permission ==
# Specify the format of the permission column
# Possible value: rwx, octal, attributes (windows only), disable
# permission: rwx
# == Sorting ==
sorting:
# Specify what to sort by.
# Possible values: extension, name, time, size, version
column: name
# Whether to reverse the sorting.
# Possible values: false, true
reverse: false
# Whether to group directories together and where.
# When "classic" is set, this is set to "none".
# Possible values: first, last, none
dir-grouping: none
# == No Symlink ==
# Whether to omit showing symlink targets
# Possible values: false, true
no-symlink: false
# == Total size ==
# Whether to display the total size of directories.
# Possible values: false, true
total-size: false
# == Hyperlink ==
# Attach hyperlink to filenames
# Possible values: always, auto, never
hyperlink: never
# == Symlink arrow ==
# Specifies how the symlink arrow display, chars in both ascii and utf8
symlink-arrow:
# == Header ==
# Whether to display block headers.
# Possible values: false, true
header: false
# == Literal ==
# Whether to show quotes on filenames.
# Possible values: false, true
literal: false
# == Truncate owner ==
# How to truncate the username and group names for a file if they exceed a certain
# number of characters.
truncate-owner:
# Number of characters to keep. By default, no truncation is done (empty value).
after:
# String to be appended to a name if truncated.
marker: ""

394
common/starship.toml Normal file
View file

@ -0,0 +1,394 @@
# $DOTFILES/common/starship.toml
# Date: 2025-01-26
# Description: Use one starship config for all shells
# Location: $XDG_CONFIG_HOME/starship.toml
# Linking: ln -s $DOTFILES/common/starship.toml $XDG_CONFIG_HOME/starship.toml
"$schema" = 'https://starship.rs/config-schema.json'
palette = "catppuccin_mocha"
# {{{ format
format = """
$jobs\
$os\
$time\
[](bg:#DA627D fg:#9A348E)\
$username\
$hostname\
[](fg:#DA627D bg:#FCA17D)\
$directory\
$git_branch\
$git_status\
[](fg:#FCA17D bg:#86BBD8)\
$custom\
$c\
$cmake\
$cobol\
$daml\
$dart\
$deno\
$dotnet\
$elixir\
$elm\
$erlang\
$fennel\
$gleam\
$golang\
$guix_shell\
$haskell\
$haxe\
$helm\
$java\
$julia\
$kotlin\
$gradle\
$lua\
$nim\
$nodejs\
$ocaml\
$opa\
$perl\
$php\
$pulumi\
$purescript\
$python\
$quarto\
$raku\
$rlang\
$red\
$ruby\
$rust\
$scala\
$solidity\
$swift\
$terraform\
$typst\
$vlang\
$vagrant\
$zig\
[](fg:#86BBD8)
$character\
$shell\
[](fg:#06969A)\
"""
# }}}
# {{{ TODO
#
# $buf\
# $nix_shell\
# $conda\
# $meson\
# $spack\
# $memory_usage\
# $aws\
# $gcloud\
# $openstack\
# $azure\
# $nats\
# $direnv\
# $env_var\
# $crystal\
# $custom\
# $sudo\
# $cmd_duration\
# $line_break\
# $battery\
# $container\
# }}}
# Disable the blank line at the start of the prompt
# add_newline = false
# You can also replace your username with a neat symbol like  or disable this
# and use the os module below
# {{{ Part 1
[jobs]
style = "bg:#9A348E"
format = '[$symbol $number]($style)'
[os]
style = "bg:#9A348E"
format = '[ $symbol ]($style)'
disabled = false # Disabled by default
[os.symbols]
Alpaquita = " "
Alpine = " "
AlmaLinux = " "
Amazon = " "
Android = " "
Arch = " "
Artix = " "
CentOS = " "
Debian = " "
DragonFly = " "
Emscripten = " "
EndeavourOS = " "
Fedora = " "
FreeBSD = " "
Garuda = "󰛓 "
Gentoo = " "
HardenedBSD = "󰞌 "
Illumos = "󰈸 "
Kali = " "
Linux = " "
Mabox = " "
Macos = " "
Manjaro = " "
Mariner = " "
MidnightBSD = " "
Mint = " "
NetBSD = " "
NixOS = " "
OpenBSD = "󰈺 "
openSUSE = " "
OracleLinux = "󰌷 "
Pop = " "
Raspbian = " "
Redhat = " "
RedHatEnterprise = " "
RockyLinux = " "
Redox = "󰀘 "
Solus = "󰠳 "
SUSE = " "
Ubuntu = " "
Unknown = " "
Void = " "
Windows = "󰍲 "
[time]
disabled = false
time_format = "%R" # Hour:Minute Format
# style = "bg:#33658A"
style = "bg:#9A348E"
format = '[$time ]($style)'
# }}}
# {{{ Part 2
[username]
show_always = true
style_user = "bg:#DA627D"
style_root = "bg:#DA627D"
# style_user = "bg:#9A348E"
# style_root = "bg:#9A348E"
format = '[ $user ]($style)'
disabled = false
[hostname]
ssh_only = false
# format = '[$ssh_symbol](bold blue) [$hostname](bold red) '
style = "bg:#DA627D"
format = '[@ $hostname ]($style)'
trim_at = '.companyname.com'
disabled = false
# }}}
# {{{ Part 3
[directory]
style = "bg:#FCA17D fg:#035E82"
format = "[ $path ]($style)"
fish_style_pwd_dir_length = 1
# truncation_length = 100
truncation_length = 2
truncation_symbol = ":"
truncate_to_repo = true
# Here is how you can shorten some long paths by text replacementtruncation_symbol = ":"
# similar to mapped_locations in Oh My Posh:
[directory.substitutions]
# "Documents" = "󰈙 "
# "Downloads" = " "
# "Music" = " "
# "Pictures" = " "
# "Source" = " "
# ".dotfiles" = " "
# Keep in mind that the order matters. For example:
# "Important Documents" = " 󰈙 "
# will not be replaced, because "Documents" was already substituted before.
# So either put "Important Documents" before "Documents" or use the substituted version:
# "Important 󰈙 " = " 󰈙 "
[git_branch]
symbol = ""
style = "bg:#FCA17D fg:#035E82"
format = '[ $symbol $branch ]($style)'
[git_status]
style = "bg:#FCA17D fg:#035E82"
renamed = " "
modified = " "
staged = " "
deleted = " "
format = '[$all_status$ahead_behind ]($style)'
# }}}
# {{{ Part 4
[c]
symbol = " "
style = "bg:#86BBD8 fg:#794427"
format = '[ $symbol ($version) ]($style)'
[cmake]
style = "bg:#86BBD8 fg:#794427"
format = '[ $symbol ($version) ]($style)'
[dart]
symbol = " "
style = "bg:#86BBD8 fg:#794427"
format = '[ $symbol ($version) ]($style)'
[deno]
symbol = " "
style = "bg:#86BBD8 fg:#794427"
format = '[ $symbol ($version) ]($style)'
[dotnet]
symbol = " "
style = "bg:#86BBD8 fg:#794427"
format = '[ $symbol ($version) ]($style)'
detect_extensions = [
"sln",
"csproj",
"fsproj",
"xproj",
"vbproj",
"cs",
"csx",
"fs",
"fsx",
]
[docker_context]
symbol = " "
style = "bg:#06969A"
format = '[ $symbol $context ]($style)'
[elixir]
symbol = " "
style = "bg:#86BBD8 fg:#794427"
format = '[ $symbol ($version) ]($style)'
[elm]
symbol = " "
style = "bg:#86BBD8 fg:#794427"
format = '[ $symbol ($version) ]($style)'
[golang]
symbol = " "
style = "bg:#86BBD8 fg:#794427"
format = '[ $symbol ($version) ]($style)'
[gradle]
style = "bg:#86BBD8 fg:#794427"
format = '[ $symbol ($version) ]($style)'
[haskell]
symbol = " "
style = "bg:#86BBD8 fg:#794427"
format = '[ $symbol ($version) ]($style)'
[java]
symbol = " "
style = "bg:#86BBD8 fg:#794427"
format = '[ $symbol ($version) ]($style)'
[julia]
symbol = " "
style = "bg:#86BBD8 fg:#794427"
format = '[ $symbol ($version) ]($style)'
[lua]
symbol = " "
style = "bg:#86BBD8 fg:#794427"
format = '[ $symbol ($version) ]($style)'
[nodejs]
symbol = ""
style = "bg:#86BBD8 fg:#794427"
format = '[ $symbol ($version) ]($style)'
[nim]
symbol = "󰆥 "
style = "bg:#86BBD8 fg:#794427"
format = '[ $symbol ($version) ]($style)'
[rust]
symbol = ""
style = "bg:#86BBD8 fg:#794427"
format = '[ $symbol ($version) ]($style)'
[scala]
symbol = " "
style = "bg:#86BBD8 fg:#794427"
format = '[ $symbol ($version) ]($style)'
# }}}
# {{{ Part 5
[shell]
style = "bg:#06969A"
format = '[ $indicator ]($style)'
fish_indicator = "󰈺 "
bash_indicator = '$ '
zsh_indicator = "% "
powershell_indicator = "PS"
cmd_indicator = "cm"
nu_indicator = "nu"
disabled = false
[character]
success_symbol = "[ ](bg:#33658A)[](fg:#33658A bg:#06969A)"
error_symbol = "[  ](fg:bold red bg:#33658A)[](fg:#33658A bg:#06969A)"
vimcmd_symbol = "[  ](fg:#32ff6c bg:#33658A)[](fg:#33658A bg:#06969A)"
vimcmd_visual_symbol = "[  ](fg:bold yellow bg:#33658A)[](fg:#33658A bg:#06969A)"
vimcmd_replace_symbol = "[  ](fg:bold purple bg:#33658A)[](fg:#33658A bg:#06969A)"
vimcmd_replace_one_symbol = "[  ](fg:bold purple bg:#33658A)[](fg:#33658A bg:#06969A)"
# success_symbol = "[ ](bg:#33658A)[](fg:#33658A bg:#06969A)"
# success_symbol = "[](fg:#86BBD8 bg:#33658A)"
format = "$symbol"
disabled = false
# }}}
# {{{ Misc
[palettes.catppuccin_mocha]
rosewater = "#f5e0dc"
flamingo = "#f2cdcd"
pink = "#f5c2e7"
mauve = "#cba6f7"
red = "#f38ba8"
maroon = "#eba0ac"
peach = "#fab387"
yellow = "#f9e2af"
green = "#a6e3a1"
teal = "#94e2d5"
sky = "#89dceb"
sapphire = "#74c7ec"
blue = "#89b4fa"
lavender = "#b4befe"
text = "#cdd6f4"
subtext1 = "#bac2de"
subtext0 = "#a6adc8"
overlay2 = "#9399b2"
overlay1 = "#7f849c"
overlay0 = "#6c7086"
surface2 = "#585b70"
surface1 = "#45475a"
surface0 = "#313244"
base = "#1e1e2e"
mantle = "#181825"
crust = "#11111b"
# }}}
[custom.just]
detect_files = ["Justfile", "justfile", ".Justfile", ".justfile"]
style = "bg:#86BBD8 fg:#794427"
format = "[Just]($style)"

View file

@ -8,6 +8,11 @@
# Linking: # Linking:
# ln -sf $DOTFILES/common/tmux.conf $XDG_CONFIG_HOME/tmux/tmux.conf # ln -sf $DOTFILES/common/tmux.conf $XDG_CONFIG_HOME/tmux/tmux.conf
# Theme
# -----------------
set -g @catppuccin_flavor "mocha"
run ~/.config/tmux/plugins/catppuccin/tmux/catppuccin.tmux
# Prefix # Prefix
# ----------------- # -----------------
set-option -g prefix C-a set-option -g prefix C-a
@ -61,17 +66,9 @@ bind ` resize-pane -Z
# Status Bar # Status Bar
# ----------------- # -----------------
set -g status-position top
set-option -g status-bg black
set-option -g status-fg white
set-option -g status-left '#[fg=green][#S] '
setw -g window-status-current-format '#[fg=colour236,bg=colour39] #I #W '
# set -g status-position top # set -g status-position top
# set -g @catppuccin_flavor "frappe" # set-option -g status-bg black
# run ~/.config/tmux/plugins/catppuccin/tmux/catppuccin.tmux # set-option -g status-fg white
# set -g status-right-length 100 # set-option -g status-left '#[fg=green][#S] '
# set -g status-left-length 100 # setw -g window-status-current-format '#[fg=colour236,bg=colour39] #I #W '
# set -g status-left ""
# set -g status-right "#{E:@catppuccin_status_application}"
# set -ag status-right "#{E:@catppuccin_status_session}"

View file

@ -1,59 +1,3 @@
" $VIMRUNTIME refers to the versioned system directory where Vim stores its
" system runtime files -- /usr/share/vim/vim<version>.
"
" Vim will load $VIMRUNTIME/defaults.vim if the user does not have a vimrc.
" This happens after /etc/vim/vimrc(.local) are loaded, so it will override
" any settings in these files.
"
" If you don't want that to happen, uncomment the below line to prevent
" defaults.vim from being loaded.
" let g:skip_defaults_vim = 1
"
" If you would rather _use_ default.vim's settings, but have the system or
" user vimrc override its settings, then uncomment the line below.
" source $VIMRUNTIME/defaults.vim
" All Debian-specific settings are defined in $VIMRUNTIME/debian.vim and
" sourced by the call to :runtime you can find below. If you wish to change
" any of those settings, you should do it in this file or
" /etc/vim/vimrc.local, since debian.vim will be overwritten everytime an
" upgrade of the vim packages is performed. It is recommended to make changes
" after sourcing debian.vim so your settings take precedence.
runtime! debian.vim
" Uncomment the next line to make Vim more Vi-compatible
" NOTE: debian.vim sets 'nocompatible'. Setting 'compatible' changes
" numerous options, so any other options should be set AFTER changing
" 'compatible'.
"set compatible
" Vim5 and later versions support syntax highlighting. Uncommenting the next
" line enables syntax highlighting by default.
syntax on
" If using a dark background within the editing area and syntax highlighting
" turn on this option as well
"set background=dark
" Uncomment the following to have Vim jump to the last position when
" reopening a file
"au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
" Uncomment the following to have Vim load indentation rules and plugins
" according to the detected filetype.
"filetype plugin indent on
" The following are commented out as they cause vim to behave a lot
" differently from regular Vi. They are highly recommended though.
set showcmd " Show (partial) command in status line.
set showmatch " Show matching brackets.
set ignorecase " Do case insensitive matching
set smartcase " Do smart case matching
set incsearch " Incremental search
"set autowrite " Automatically save before commands like :next and :make
" set hidden " Hide buffers when they are abandoned
"set mouse=a " Enable mouse usage (all modes)
" Source a global configuration file if available " Source a global configuration file if available
if filereadable("/etc/vim/vimrc.local") if filereadable("/etc/vim/vimrc.local")
@ -97,6 +41,8 @@ set hlsearch
set incsearch set incsearch
set ignorecase set ignorecase
set smartcase set smartcase
set showcmd
set mouse=a " Enable mouse usage (all modes)
set number set number
set relativenumber set relativenumber
@ -104,3 +50,5 @@ set relativenumber
set laststatus=2 set laststatus=2
set showcmd set showcmd
set statusline=%<%f\ %h%m%r\ %=\ [%l,%v]\ [%p%%]\ [\ %Y]\ [󱑉\ %{strftime('%H:%M:%S')}] set statusline=%<%f\ %h%m%r\ %=\ [%l,%v]\ [%p%%]\ [\ %Y]\ [󱑉\ %{strftime('%H:%M:%S')}]
syntax on

View file

@ -1,24 +1,407 @@
// ~/.config/zellij/config.kdl // If you'd like to override the default keybindings completely, be sure to change "keybinds" to "keybinds clear-defaults=true"
// ln -sf $DOTFILES/.config/zellij/config.kdl ~.config/zellij/config.kdl
// https://zellij.dev/documentation/configuration
keybinds { keybinds {
// keybinds are divided into modes
normal { normal {
// bind instructions can include one or more keys (both keys will be bound separately) // uncomment this and adjust key if using copy_on_select=false
// bind keys can include one or more actions (all actions will be performed with no sequential guarantees) // bind "Alt c" { Copy; }
bind "Ctrl g" { SwitchToMode "locked"; }
bind "Ctrl p" { SwitchToMode "pane"; }
bind "Alt n" { NewPane; }
bind "Alt h" "Alt Left" { MoveFocusOrTab "Left"; }
}
pane {
bind "h" "Left" { MoveFocus "Left"; }
bind "n" "Down" { MoveFocus "Down"; }
bind "e" "Up" { MoveFocus "Up"; }
bind "i" "Right" { MoveFocus "Right"; }
bind "p" { SwitchFocus; }
} }
locked { locked {
bind "Ctrl g" { SwitchToMode "normal"; } bind "Ctrl g" { SwitchToMode "Normal"; }
}
resize {
bind "Ctrl n" { SwitchToMode "Normal"; }
bind "h" "Left" { Resize "Increase Left"; }
bind "n" "Down" { Resize "Increase Down"; }
bind "e" "Up" { Resize "Increase Up"; }
bind "i" "Right" { Resize "Increase Right"; }
bind "H" { Resize "Decrease Left"; }
bind "N" { Resize "Decrease Down"; }
bind "E" { Resize "Decrease Up"; }
bind "I" { Resize "Decrease Right"; }
bind "=" "+" { Resize "Increase"; }
bind "-" { Resize "Decrease"; }
}
pane {
bind "Ctrl p" { SwitchToMode "Normal"; }
bind "h" "Left" { MoveFocus "Left"; }
bind "i" "Right" { MoveFocus "Right"; }
bind "n" "Down" { MoveFocus "Down"; }
bind "e" "Up" { MoveFocus "Up"; }
bind "p" { SwitchFocus; }
bind "c" { NewPane; SwitchToMode "Normal"; }
bind "N" { NewPane "Down"; SwitchToMode "Normal"; }
bind "I" { NewPane "Right"; SwitchToMode "Normal"; }
bind "x" { CloseFocus; SwitchToMode "Normal"; }
bind "f" { ToggleFocusFullscreen; SwitchToMode "Normal"; }
bind "z" { TogglePaneFrames; SwitchToMode "Normal"; }
bind "w" { ToggleFloatingPanes; SwitchToMode "Normal"; }
bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "Normal"; }
bind "r" { SwitchToMode "RenamePane"; PaneNameInput 0;}
}
move {
bind "Ctrl h" { SwitchToMode "Normal"; }
bind "h" "Left" { MovePane "Left"; }
bind "n" "Down" { MovePane "Down"; }
bind "e" "Up" { MovePane "Up"; }
bind "i" "Right" { MovePane "Right"; }
}
tab {
bind "Ctrl t" { SwitchToMode "Normal"; }
bind "r" { SwitchToMode "RenameTab"; TabNameInput 0; }
bind "h" "Left" "Up" "e" { GoToPreviousTab; }
bind "i" "Right" "Down" "n" { GoToNextTab; }
bind "c" { NewTab; SwitchToMode "Normal"; }
bind "x" { CloseTab; SwitchToMode "Normal"; }
bind "s" { ToggleActiveSyncTab; SwitchToMode "Normal"; }
bind "b" { BreakPane; SwitchToMode "Normal"; }
bind "]" { BreakPaneRight; SwitchToMode "Normal"; }
bind "[" { BreakPaneLeft; SwitchToMode "Normal"; }
bind "1" { GoToTab 1; SwitchToMode "Normal"; }
bind "2" { GoToTab 2; SwitchToMode "Normal"; }
bind "3" { GoToTab 3; SwitchToMode "Normal"; }
bind "4" { GoToTab 4; SwitchToMode "Normal"; }
bind "5" { GoToTab 5; SwitchToMode "Normal"; }
bind "6" { GoToTab 6; SwitchToMode "Normal"; }
bind "7" { GoToTab 7; SwitchToMode "Normal"; }
bind "8" { GoToTab 8; SwitchToMode "Normal"; }
bind "9" { GoToTab 9; SwitchToMode "Normal"; }
bind "Tab" { ToggleTab; }
}
scroll {
bind "Ctrl s" { SwitchToMode "Normal"; }
bind "r" { EditScrollback; SwitchToMode "Normal"; }
bind "s" { SwitchToMode "EnterSearch"; SearchInput 0; }
bind "Ctrl c" { ScrollToBottom; SwitchToMode "Normal"; }
bind "n" "Down" { ScrollDown; }
bind "e" "Up" { ScrollUp; }
bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; }
bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; }
bind "d" { HalfPageScrollDown; }
bind "u" { HalfPageScrollUp; }
// uncomment this and adjust key if using copy_on_select=false
// bind "Alt c" { Copy; }
}
search {
bind "Ctrl s" { SwitchToMode "Normal"; }
bind "Ctrl c" { ScrollToBottom; SwitchToMode "Normal"; }
bind "n" "Down" { ScrollDown; }
bind "e" "Up" { ScrollUp; }
bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; }
bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; }
bind "d" { HalfPageScrollDown; }
bind "u" { HalfPageScrollUp; }
bind "k" { Search "down"; }
bind "K" { Search "up"; }
bind "c" { SearchToggleOption "CaseSensitivity"; }
bind "w" { SearchToggleOption "Wrap"; }
bind "o" { SearchToggleOption "WholeWord"; }
}
entersearch {
bind "Ctrl c" "Esc" { SwitchToMode "Scroll"; }
bind "Enter" { SwitchToMode "Search"; }
}
renametab {
bind "Ctrl c" { SwitchToMode "Normal"; }
bind "Esc" { UndoRenameTab; SwitchToMode "Tab"; }
}
renamepane {
bind "Ctrl c" { SwitchToMode "Normal"; }
bind "Esc" { UndoRenamePane; SwitchToMode "Pane"; }
}
session {
bind "Ctrl o" { SwitchToMode "Normal"; }
bind "Ctrl s" { SwitchToMode "Scroll"; }
bind "d" { Detach; }
bind "w" {
LaunchOrFocusPlugin "session-manager" {
floating true
move_to_focused_tab true
};
SwitchToMode "Normal"
}
bind "c" {
LaunchOrFocusPlugin "configuration" {
floating true
move_to_focused_tab true
};
SwitchToMode "Normal"
}
bind "p" {
LaunchOrFocusPlugin "plugin-manager" {
floating true
move_to_focused_tab true
};
SwitchToMode "Normal"
} }
} }
tmux {
bind "[" { SwitchToMode "Scroll"; }
bind "Ctrl b" { Write 2; SwitchToMode "Normal"; }
bind "\"" { NewPane "Down"; SwitchToMode "Normal"; }
bind "%" { NewPane "Right"; SwitchToMode "Normal"; }
bind "z" { ToggleFocusFullscreen; SwitchToMode "Normal"; }
bind "c" { NewTab; SwitchToMode "Normal"; }
bind "," { SwitchToMode "RenameTab"; }
bind "p" { GoToPreviousTab; SwitchToMode "Normal"; }
bind "n" { GoToNextTab; SwitchToMode "Normal"; }
bind "Left" { MoveFocus "Left"; SwitchToMode "Normal"; }
bind "Right" { MoveFocus "Right"; SwitchToMode "Normal"; }
bind "Down" { MoveFocus "Down"; SwitchToMode "Normal"; }
bind "Up" { MoveFocus "Up"; SwitchToMode "Normal"; }
bind "h" { MoveFocus "Left"; SwitchToMode "Normal"; }
bind "l" { MoveFocus "Right"; SwitchToMode "Normal"; }
bind "j" { MoveFocus "Down"; SwitchToMode "Normal"; }
bind "k" { MoveFocus "Up"; SwitchToMode "Normal"; }
bind "o" { FocusNextPane; }
bind "d" { Detach; }
bind "Space" { NextSwapLayout; }
bind "x" { CloseFocus; SwitchToMode "Normal"; }
}
shared_except "locked" {
bind "Ctrl g" { SwitchToMode "Locked"; }
bind "Ctrl q" { Quit; }
bind "Alt f" { ToggleFloatingPanes; }
bind "Alt n" { NewPane; }
bind "Alt i" { MoveTab "Left"; }
bind "Alt o" { MoveTab "Right"; }
bind "Alt h" "Alt Left" { MoveFocusOrTab "Left"; }
bind "Alt l" "Alt Right" { MoveFocusOrTab "Right"; }
bind "Alt j" "Alt Down" { MoveFocus "Down"; }
bind "Alt k" "Alt Up" { MoveFocus "Up"; }
bind "Alt =" "Alt +" { Resize "Increase"; }
bind "Alt -" { Resize "Decrease"; }
bind "Alt [" { PreviousSwapLayout; }
bind "Alt ]" { NextSwapLayout; }
}
shared_except "normal" "locked" {
bind "Enter" "Esc" { SwitchToMode "Normal"; }
}
shared_except "pane" "locked" {
bind "Ctrl p" { SwitchToMode "Pane"; }
}
shared_except "resize" "locked" {
bind "Ctrl n" { SwitchToMode "Resize"; }
}
shared_except "scroll" "locked" {
bind "Ctrl s" { SwitchToMode "Scroll"; }
}
shared_except "session" "locked" {
bind "Ctrl o" { SwitchToMode "Session"; }
}
shared_except "tab" "locked" {
bind "Ctrl t" { SwitchToMode "Tab"; }
}
shared_except "move" "locked" {
bind "Ctrl h" { SwitchToMode "Move"; }
}
shared_except "tmux" "locked" {
bind "Ctrl b" { SwitchToMode "Tmux"; }
}
}
// Plugin aliases - can be used to change the implementation of Zellij
// changing these requires a restart to take effect
plugins {
tab-bar location="zellij:tab-bar"
status-bar location="zellij:status-bar"
strider location="zellij:strider"
compact-bar location="zellij:compact-bar"
session-manager location="zellij:session-manager"
welcome-screen location="zellij:session-manager" {
welcome_screen true
}
filepicker location="zellij:strider" {
cwd "/"
}
configuration location="zellij:configuration"
plugin-manager location="zellij:plugin-manager"
}
// Plugins to load in the background when a new session starts
load_plugins {
// "file:/path/to/my-plugin.wasm"
// "https://example.com/my-plugin.wasm"
}
// Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP
// eg. when terminal window with an active zellij session is closed
// (Requires restart)
// Options:
// - detach (Default)
// - quit
//
// on_force_close "quit"
// Send a request for a simplified ui (without arrow fonts) to plugins
// Options:
// - true
// - false (Default)
//
// simplified_ui true
// Choose the path to the default shell that zellij will use for opening new panes
// Default: $SHELL
//
// default_shell "fish"
// Choose the path to override cwd that zellij will use for opening new panes
//
// default_cwd ""
// Toggle between having pane frames around the panes
// Options:
// - true (default)
// - false
//
// pane_frames true
// Toggle between having Zellij lay out panes according to a predefined set of layouts whenever possible
// Options:
// - true (default)
// - false
//
// auto_layout true
// Whether sessions should be serialized to the cache folder (including their tabs/panes, cwds and running commands) so that they can later be resurrected
// (Requires restart)
// Options:
// - true (default)
// - false
//
// session_serialization false
// Whether pane viewports are serialized along with the session, default is false
// (Requires restart)
// Options:
// - true
// - false (default)
//
// serialize_pane_viewport true
// Scrollback lines to serialize along with the pane viewport when serializing sessions, 0
// defaults to the scrollback size. If this number is higher than the scrollback size, it will
// also default to the scrollback size. This does nothing if `serialize_pane_viewport` is not true.
// (Requires restart)
//
// scrollback_lines_to_serialize 10000
// Define color themes for Zellij
// For more examples, see: https://github.com/zellij-org/zellij/tree/main/example/themes
// Once these themes are defined, one of them should to be selected in the "theme" section of this file
//
// themes {
// dracula {
// fg 248 248 242
// bg 40 42 54
// red 255 85 85
// green 80 250 123
// yellow 241 250 140
// blue 98 114 164
// magenta 255 121 198
// orange 255 184 108
// cyan 139 233 253
// black 0 0 0
// white 255 255 255
// }
// }
// Choose the theme that is specified in the themes section.
// Default: default
//
theme "default"
// The name of the default layout to load on startup
// Default: "default"
// (Requires restart)
//
// default_layout "compact"
// Choose the mode that zellij uses when starting up.
// Default: normal
//
// default_mode "locked"
// Toggle enabling the mouse mode.
// On certain configurations, or terminals this could
// potentially interfere with copying text.
// (Requires restart)
// Options:
// - true (default)
// - false
//
// mouse_mode false
// Configure the scroll back buffer size
// This is the number of lines zellij stores for each pane in the scroll back
// buffer. Excess number of lines are discarded in a FIFO fashion.
// (Requires restart)
// Valid values: positive integers
// Default value: 10000
//
// scroll_buffer_size 10000
// Provide a command to execute when copying text. The text will be piped to
// the stdin of the program to perform the copy. This can be used with
// terminal emulators which do not support the OSC 52 ANSI control sequence
// that will be used by default if this option is not set.
// Examples:
//
// copy_command "xclip -selection clipboard" // x11
// copy_command "wl-copy" // wayland
// copy_command "pbcopy" // osx
// Choose the destination for copied text
// Allows using the primary selection buffer (on x11/wayland) instead of the system clipboard.
// Does not apply when using copy_command.
// Options:
// - system (default)
// - primary
//
// copy_clipboard "primary"
// Enable or disable automatic copy (and clear) of selection when releasing mouse
// Default: true
//
// copy_on_select false
// Path to the default editor to use to edit pane scrollbuffer
// Default: $EDITOR or $VISUAL
//
// scrollback_editor "/usr/bin/vim"
// When attaching to an existing session with other users,
// should the session be mirrored (true)
// or should each user have their own cursor (false)
// (Requires restart)
// Default: false
//
// mirror_session true
// The folder in which Zellij will look for layouts
// (Requires restart)
//
// layout_dir "/path/to/my/layout_dir"
// The folder in which Zellij will look for themes
// (Requires restart)
//
// theme_dir "/path/to/my/theme_dir"
// Enable or disable the rendering of styled and colored underlines (undercurl).
// May need to be disabled for certain unsupported terminals
// (Requires restart)
// Default: true
//
// styled_underlines false
// Enable or disable writing of session metadata to disk (if disabled, other sessions might not know
// metadata info on this session)
// (Requires restart)
// Default: false
//
// disable_session_metadata true
// Enable or disable support for the enhanced Kitty Keyboard Protocol (the host terminal must also support it)
// (Requires restart)
// Default: true (if the host terminal supports it)
//
// support_kitty_keyboard_protocol false

View file

@ -0,0 +1,604 @@
-- 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")
-- {{{ 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.
beautiful.init(gears.filesystem.get_themes_dir() .. "default/theme.lua")
-- This is used later as the default terminal and editor to run.
terminal = "wezterm"
editor = os.getenv("EDITOR") or "vim"
editor_cmd = terminal .. " -e " .. editor
-- Default modkey.
-- Usually, Mod4 is the key with a logo between Control and Alt.
-- If you do not like this or do not have such a key,
-- I suggest you to remap Mod4 to another key using xmodmap or other tools.
-- However, you can use another modifier like Mod1, but it may interact with others.
modkey = "Mod4"
-- Table of layouts to cover with awful.layout.inc, order matters.
awful.layout.layouts = {
awful.layout.suit.tile, -- Tile by default
awful.layout.suit.floating,
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,
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.corner.ne,
-- awful.layout.suit.corner.sw,
-- awful.layout.suit.corner.se,
}
-- }}}
-- {{{ Menu
-- Create a launcher widget and a main menu
myawesomemenu = {
{
"hotkeys",
function()
hotkeys_popup.show_help(nil, awful.screen.focused())
end,
},
{ "manual", terminal .. " -e man awesome" },
{ "edit config", editor_cmd .. " " .. awesome.conffile },
{ "restart", awesome.restart },
{
"quit",
function()
awesome.quit()
end,
},
}
mymainmenu = awful.menu({
items = {
{ "awesome", myawesomemenu, beautiful.awesome_icon },
{ "open terminal", terminal },
},
})
mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon, menu = mymainmenu })
-- Menubar configuration
menubar.utils.terminal = terminal -- Set the terminal for applications that require it
-- }}}
-- Keyboard map indicator and switcher
mykeyboardlayout = awful.widget.keyboardlayout()
-- {{{ Wibar
-- Create a textclock widget
mytextclock = wibox.widget.textclock()
-- 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)
)
local function set_wallpaper(s)
-- Wallpaper
if beautiful.wallpaper then
local wallpaper = beautiful.wallpaper
-- If wallpaper is a function, call it with the screen
if type(wallpaper) == "function" then
wallpaper = wallpaper(s)
end
gears.wallpaper.maximized(wallpaper, s, true)
end
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,
mylauncher,
s.mytaglist,
s.mypromptbox,
},
s.mytasklist, -- Middle widget
{ -- Right widgets
layout = wibox.layout.fixed.horizontal,
mykeyboardlayout,
wibox.widget.systray(),
mytextclock,
s.mylayoutbox,
},
})
end)
-- }}}
-- {{{ Mouse bindings
root.buttons(gears.table.join(
awful.button({}, 3, function()
mymainmenu:toggle()
end),
awful.button({}, 4, awful.tag.viewnext),
awful.button({}, 5, awful.tag.viewprev)
))
-- }}}
-- {{{ Key bindings
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 }, "Escape", awful.tag.history.restore, { description = "go back", group = "tag" }),
awful.key({ modkey }, "n", function()
awful.client.focus.byidx(1)
end, { description = "focus next by index", group = "client" }),
awful.key({ modkey }, "e", function()
awful.client.focus.byidx(-1)
end, { description = "focus previous by index", group = "client" }),
awful.key({ modkey }, "w", function()
mymainmenu:show()
end, { description = "show main menu", group = "awesome" }),
-- Layout manipulation
awful.key({ modkey, "Shift" }, "n", function()
awful.client.swap.byidx(1)
end, { description = "swap with next client by index", group = "client" }),
awful.key({ modkey, "Shift" }, "e", function()
awful.client.swap.byidx(-1)
end, { description = "swap with previous client by index", group = "client" }),
awful.key({ modkey, "Control" }, "n", function()
awful.screen.focus_relative(1)
end, { description = "focus the next screen", group = "screen" }),
awful.key({ modkey, "Control" }, "e", 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 }, "Tab", 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 }, "Return", function()
awful.spawn(terminal)
end, { description = "open a terminal", group = "launcher" }),
awful.key({ modkey, "Control" }, "r", awesome.restart, { description = "reload awesome", group = "awesome" }),
awful.key({ modkey, "Shift" }, "q", awesome.quit, { description = "quit awesome", group = "awesome" }),
awful.key({ modkey }, "i", 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" }, "i", function()
awful.tag.incnmaster(-1, nil, true)
end, { description = "decrease the number of master clients", group = "layout" }),
awful.key({ modkey, "Control" }, "h", function()
awful.tag.incncol(1, nil, true)
end, { description = "increase the number of columns", group = "layout" }),
awful.key({ modkey, "Control" }, "i", function()
awful.tag.incncol(-1, nil, true)
end, { description = "decrease the number of columns", group = "layout" }),
awful.key({ modkey }, "space", function()
awful.spawn.with_shell("albert show")
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" }, "k", 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()
menubar.show()
end, { description = "show the menubar", group = "launcher" })
)
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, "Control" }, "Return", function(c)
c:swap(awful.client.getmaster())
end, { description = "move to master", group = "client" }),
awful.key({ modkey }, "o", 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 }, "k", 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)
c.maximized = not c.maximized
c:raise()
end, { description = "(un)maximize", group = "client" }),
awful.key({ modkey, "Control" }, "m", function(c)
c.maximized_vertical = not c.maximized_vertical
c:raise()
end, { description = "(un)maximize vertically", group = "client" }),
awful.key({ modkey, "Shift" }, "m", 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" })
)
end
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,
},
},
-- 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
-- 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
end)
-- Add a titlebar if titlebars_enabled is set to true in the rules.
client.connect_signal("request::titlebars", function(c)
-- buttons for the titlebar
local buttons = gears.table.join(
awful.button({}, 1, function()
c:emit_signal("request::activate", "titlebar", { raise = true })
awful.mouse.client.move(c)
end),
awful.button({}, 3, function()
c:emit_signal("request::activate", "titlebar", { raise = true })
awful.mouse.client.resize(c)
end)
)
awful.titlebar(c):setup({
{ -- Left
awful.titlebar.widget.iconwidget(c),
buttons = buttons,
layout = wibox.layout.fixed.horizontal,
},
{ -- Middle
{ -- Title
align = "center",
widget = awful.titlebar.widget.titlewidget(c),
},
buttons = buttons,
layout = wibox.layout.flex.horizontal,
},
{ -- Right
awful.titlebar.widget.floatingbutton(c),
awful.titlebar.widget.maximizedbutton(c),
awful.titlebar.widget.stickybutton(c),
awful.titlebar.widget.ontopbutton(c),
awful.titlebar.widget.closebutton(c),
layout = wibox.layout.fixed.horizontal(),
},
layout = wibox.layout.align.horizontal,
})
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)
client.connect_signal("focus", function(c)
c.border_color = beautiful.border_focus
end)
client.connect_signal("unfocus", function(c)
c.border_color = beautiful.border_normal
end)
-- }}}
--
autorun = true
autorunApps = {
"fcitx5",
"albert",
}
if autorun then
for app = 1, #autorunApps do
awful.spawn(autorunApps[app])
end
end
awful.spawn.with_shell("setxkbmap -option caps:escape")
awful.spawn.with_shell("feh --bg-fill ~/Pictures/Wallpaper/current.jpg")

View file

@ -0,0 +1,13 @@
# $DOTFILES/platforms/linux/chromium-flags.conf
# Date: 2025-01-25
# Author: js0ny
# Force chromium apps to use kwallet6 for password storage
# This solves the issue of chromium apps not being able to access passwords in non-plasma environments
# Location:
# ~/.config/chromium-flags.conf
# ~/.var/app/com.vivaldi.Vivaldi/config/vivaldi-flags.conf (For flatpak)
# Linking:
# ln -sf $DOTFILES/platforms/linux/chromium-flags.conf ~/.var/app/com.vivaldi.Vivaldi/config/vivaldi-flags.conf
--password-store=kwallet6
--enable-wayland-ime

View file

@ -5,8 +5,10 @@
# Location: # Location:
# ~/.config/electron-flags.conf # ~/.config/electron-flags.conf
# ~/.config/code-flags.conf
# Linking: # Linking:
# ln -sf $DOTFILES/platforms/linux/hyprland/electron-flags.conf ~/.config/ # ln -sf $DOTFILES/platforms/linux/electron-flags.conf ~/.config/electron-flags.conf
# ln -sf $DOTFILES/platforms/linux/electron-flags.conf ~/.config/code-flags.conf
# --enable-features=UseOzonePlatform # --enable-features=UseOzonePlatform
# --ozone-platform=wayland # --ozone-platform=wayland

View file

@ -0,0 +1,30 @@
# $DOTFILES/platforms/linux/etc/environment
# Date: 2025-01-25
# Author: js0ny
# Description: Environment variables that defines the applications and IME
#
# Location:
# /etc/environment
# Linking:
# cp $DOTFILES/platforms/linux/etc/environment /etc/environment
#
# This file is parsed by pam_env module
#
# Syntax: simple "KEY=VAL" pairs on separate lines
#
#QT_QPA_PLATFORMTHEME=qt5ct
#QT_STYLE_OVERRIDE=kvantum
# Software
BROWSER="com.vivaldi.Vivaldi"
EDITOR=nvim
# IME
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
SDL_IM_MODULE=fcitx
XMODIFIFERS="@im=fcitx"
GLFW_IM_MODULE=fcitx
# Scaling
QT_SCALE_FACTOR=1.75
# 2 * 0.875 = 1.75
GDK_SCALE=2
GDK_DPI_SCALE=0.875

View file

@ -0,0 +1,78 @@
# Catppuccin Mocha (Dark)
$rosewater = rgb(f5e0dc)
$rosewaterAlpha = f5e0dc
$flamingo = rgb(f2cdcd)
$flamingoAlpha = f2cdcd
$pink = rgb(f5c2e7)
$pinkAlpha = f5c2e7
$mauve = rgb(cba6f7)
$mauveAlpha = cba6f7
$red = rgb(f38ba8)
$redAlpha = f38ba8
$maroon = rgb(eba0ac)
$maroonAlpha = eba0ac
$peach = rgb(fab387)
$peachAlpha = fab387
$yellow = rgb(f9e2af)
$yellowAlpha = f9e2af
$green = rgb(a6e3a1)
$greenAlpha = a6e3a1
$teal = rgb(94e2d5)
$tealAlpha = 94e2d5
$sky = rgb(89dceb)
$skyAlpha = 89dceb
$sapphire = rgb(74c7ec)
$sapphireAlpha = 74c7ec
$blue = rgb(89b4fa)
$blueAlpha = 89b4fa
$lavender = rgb(b4befe)
$lavenderAlpha = b4befe
$text = rgb(cdd6f4)
$textAlpha = cdd6f4
$subtext1 = rgb(bac2de)
$subtext1Alpha = bac2de
$subtext0 = rgb(a6adc8)
$subtext0Alpha = a6adc8
$overlay2 = rgb(9399b2)
$overlay2Alpha = 9399b2
$overlay1 = rgb(7f849c)
$overlay1Alpha = 7f849c
$overlay0 = rgb(6c7086)
$overlay0Alpha = 6c7086
$surface2 = rgb(585b70)
$surface2Alpha = 585b70
$surface1 = rgb(45475a)
$surface1Alpha = 45475a
$surface0 = rgb(313244)
$surface0Alpha = 313244
$base = rgb(1e1e2e)
$baseAlpha = 1e1e2e
$mantle = rgb(181825)
$mantleAlpha = 181825
$crust = rgb(11111b)
$crustAlpha = 11111b

View file

@ -6,7 +6,7 @@
# Location: # Location:
# $XDG_CONFIG_HOME/hypr/hyprland.conf # $XDG_CONFIG_HOME/hypr/hyprland.conf
# Linking: (Link the whole `hypr` directory) # Linking: (Link the whole `hypr` directory)
# ln -sf $DOTFILES/platforms/linux/hyprland/hypr $XDG_CONFIG_HOME/hypr # ln -sf $DOTFILES/platforms/linux/hypr $XDG_CONFIG_HOME/hypr
# ####################################################################################### # #######################################################################################
# AUTOGENERATED HYPRLAND CONFIG. # AUTOGENERATED HYPRLAND CONFIG.
@ -14,6 +14,8 @@
# OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS. # OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS.
# ####################################################################################### # #######################################################################################
source=~/.config/hypr/dark.conf
autogenerated = 0 # remove this line to remove the warning autogenerated = 0 # remove this line to remove the warning
# This is an example Hyprland config file. # This is an example Hyprland config file.
@ -38,7 +40,11 @@ xwayland {
################ ################
# See https://wiki.hyprland.org/Configuring/Monitors/ # See https://wiki.hyprland.org/Configuring/Monitors/
monitor=,preferred,auto,auto #
# monitor=,preferred,auto,auto
# Format:
# MONITOR_NAME,RESOLUTION@REFRESH_RATE,OFFSET_XxOFFSET_Y,SCALE
monitor=DP-2,3840x2160@59,0x0,1.666667
################### ###################
@ -48,9 +54,9 @@ monitor=,preferred,auto,auto
# See https://wiki.hyprland.org/Configuring/Keywords/ # See https://wiki.hyprland.org/Configuring/Keywords/
# Set programs that you use # Set programs that you use
$terminal = kitty $terminal = wezterm-gui
$fileManager = dolphin $fileManager = dolphin
$menu = wofi --show drun $menu = wofi
################# #################
@ -62,7 +68,15 @@ $menu = wofi --show drun
# exec-once = $terminal # exec-once = $terminal
# exec-once = nm-applet & # exec-once = nm-applet &
exec-once = waybar & hyprpaper & mako & systemctl --user start hyprpolkitagent & fcitx5 # exec-once = waybar & hyprpaper & mako & systemctl --user start hyprpolkitagent & fcitx5 & albert
exec-once = waybar &
exec-once = mako &
exec-once = hyprpaper &
exec-once = systemctl --user start hyprpolkitagent
exec-once = fcitx5 &
exec-once = wl-paste --watch cliphist store
# exec-once = QT_SCALE_FACTOR=1 albert &
############################# #############################
@ -71,7 +85,7 @@ exec-once = waybar & hyprpaper & mako & systemctl --user start hyprpolkitagent &
# See https://wiki.hyprland.org/Configuring/Environment-variables/ # See https://wiki.hyprland.org/Configuring/Environment-variables/
env = XCURSOR_SIZE,24 # env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24 env = HYPRCURSOR_SIZE,24
@ -86,19 +100,22 @@ general {
gaps_in = 5 gaps_in = 5
gaps_out = 20 gaps_out = 20
border_size = 2 border_size = 3
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg # col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
col.inactive_border = rgba(595959aa) col.active_border = $mauve
col.inactive_border = $overlay2
# Set to true enable resizing windows by clicking and dragging on borders and gaps # Set to true enable resizing windows by clicking and dragging on borders and gaps
resize_on_border = false resize_on_border = true
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
allow_tearing = false allow_tearing = false
layout = dwindle layout = dwindle
no_border_on_floating = true
} }
# https://wiki.hyprland.org/Configuring/Variables/#decoration # https://wiki.hyprland.org/Configuring/Variables/#decoration
@ -113,7 +130,7 @@ decoration {
enabled = true enabled = true
range = 4 range = 4
render_power = 3 render_power = 3
color = rgba(1a1a1aee) color = $base
} }
# https://wiki.hyprland.org/Configuring/Variables/#blur # https://wiki.hyprland.org/Configuring/Variables/#blur
@ -193,7 +210,7 @@ input {
kb_layout = us kb_layout = us
kb_variant = kb_variant =
kb_model = kb_model =
kb_options = kb_options = caps:escape
kb_rules = kb_rules =
follow_mouse = 1 follow_mouse = 1
@ -230,7 +247,9 @@ bind = $mainMod, R, exec, $terminal
bind = $mainMod, Q, killactive, bind = $mainMod, Q, killactive,
bind = $mainMod, M, exit, bind = $mainMod, M, exit,
bind = $mainMod, F, exec, $fileManager bind = $mainMod, F, exec, $fileManager
bind = $mainMod, V, togglefloating, bind = $mainMod, V, exec, cliphist list | wofi --dmenu | cliphist decode | wl-copy
bind = $mainMod SHIFT, V, togglefloating
bind = $mainMod, space, exec, $menu bind = $mainMod, space, exec, $menu
bind = $mainMod, P, pseudo, # dwindle bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod, X, togglesplit, # dwindle bind = $mainMod, X, togglesplit, # dwindle

View file

@ -6,7 +6,7 @@
# Location: # Location:
# $XDG_CONFIG_HOME/hypr/hyprpaper.conf # $XDG_CONFIG_HOME/hypr/hyprpaper.conf
# Linking: (Link the whole `hypr` directory) # Linking: (Link the whole `hypr` directory)
# ln -sf $DOTFILES/platforms/linux/hyprland/hypr $XDG_CONFIG_HOME/hypr # ln -sf $DOTFILES/platforms/linux/hypr $XDG_CONFIG_HOME/hypr
preload = ~/Pictures/Wallpaper/current.jpg preload = ~/Pictures/Wallpaper/current.jpg
wallpaper = DP-2, ~/Pictures/Wallpaper/current.jpg wallpaper = DP-2, ~/Pictures/Wallpaper/current.jpg

View file

@ -1,18 +1,9 @@
# $DOTFILES/platforms/linux/kde/dolphinrc
# Date: 2024-12-22
# Author: js0ny
# Dolphin - KDE File Explorer
# Location:
# $XDG_CONFIG_HOME/dolphinrc
# Linking:
# ln -sf $DOTFILES/platforms/linux/kde/dolphinrc $XDG_CONFIG_HOME/dolphinrc
[General] [General]
Version=202 Version=202
ViewPropsTimestamp=2024,12,10,0,19,35.931 ViewPropsTimestamp=2024,12,10,0,19,35.931
[IconsMode] [IconsMode]
PreviewSize=80 PreviewSize=48
[KFileDialog Settings] [KFileDialog Settings]
Places Icons Auto-resize=false Places Icons Auto-resize=false

View file

@ -0,0 +1,18 @@
# $DOTFILES/platforms/linux/kde/elisarc
# Date: 2024-12-22
# Author: js0ny
# Dolphin - KDE Music Player
# Location:
# $XDG_CONFIG_HOME/elisarc
# Linking:
# ln -sf $DOTFILES/platforms/linux/kde/elisarc $XDG_CONFIG_HOME/elisarc
[ElisaFileIndexer]
RootPath[$e]=$HOME/Music
[UiSettings]
ColorScheme=
[Views]
InitialFilesViewPath=/mnt/d/Media/Music

View file

@ -0,0 +1,25 @@
sort=-time
layer=overlay
background-color=#22222266
width=450
height=150
border-size=1
border-color=#d3e4c9
border-radius=12
icons=1
max-icon-size=64
default-timeout=5000
ignore-timeout=0
font=PingFangHK
margin=12
padding=12,20
[urgency=low]
border-color=#aaaaaa
[urgency=normal]
border-color=#cceeff
[urgency=critical]
border-color=#ff7777
default-timeout=0

View file

@ -0,0 +1,37 @@
{
"include": "~/.config/waybar/modules",
"name": "main-bar",
"id": "main-bar",
"layer": "top",
"mode": "dock",
"exclusive": true,
"passthrough": false,
"position": "top",
"output": "DP-2",
"height": 32,
"width": "",
"spacing": 6,
"margin": 0,
"margin-top": 0,
"margin-bottom": 0,
"margin-left": 0,
"margin-right": 0,
"fixed-center": true,
"ipc": true,
"modules-left": [
"custom/menu",
"hyprland/workspaces"
],
// "modules-center": [
// "hyprland/window",
// "mpd"
// ],
"modules-right": [
"tray",
"pulseaudio",
"custom/weather",
"battery",
"clock",
"custom/power"
]
}

View file

@ -0,0 +1,149 @@
// Waybar modules configuration
{
// waybar-backlight
"backlight": {
"interval": 2,
"align": 0,
"rotate": 0,
//"device": "amdgpu_bl0",
"format": "{icon} {percent}%",
"format-icons": [
"",
"",
"",
""
],
// Commands to execute on events
"on-click": "",
"on-click-middle": "",
"on-click-right": "",
"on-update": "",
"on-scroll-up": "light -A 5%",
"on-scroll-down": "light -U 5%",
"smooth-scrolling-threshold": 1
},
"hyprland/workspaces": {
"format": "{icon} {windows}",
"format-window-separator": " ",
"window-rewrite-default": "",
"window-rewrite": {
"title<.*youtube.*>": "",
"class<firefox>": "",
"class<.*wezterm>": "",
"class<kitty>": "",
"class<wofi>": "󱓞",
"class<firefox> title<.*github.*>": "",
"class<Vivaldi.*>": "󰰬",
"obsidian": "󱓩",
"foot": "",
"Cider": "",
"class<org.kde.dolphin>": "",
"code": "󰨞",
"class<.*telegram.*>": "",
"discord": "",
"neovide": "",
"class<org.kde.okular>": "",
"class<.*wechat.*>": "",
"QQ": "",
"class<Tor Browser>": "",
"Zotero": "",
"class<ticktick>": "",
"class<net.ankiweb.Anki>": "",
}
},
// waybar-battery
"battery": {
"interval": 60,
"align": 0,
"rotate": 0,
//"bat": "BAT1",
//"adapter": "ACAD",
"full-at": 100,
"design-capacity": false,
"states": {
"good": 95,
"warning": 30,
"critical": 15
},
"format": "{icon} {capacity}%",
"format-charging": " {capacity}%",
"format-plugged": " {capacity}%",
"format-full": "{icon} Full",
//"format-good": "",
"format-alt": "{icon} {time}",
"format-icons": [
"",
"",
"",
"",
""
],
"format-time": "{H}h {M}min",
"tooltip": true
},
// waybar-clock
"clock": {
"interval": 1,
"align": 0,
"rotate": 0,
"tooltip-format": "<big>{:%B %Y}</big>\n<tt><small>{calendar}</small></tt>",
"format": " {:%H:%M:%S}",
"format-alt": " {:%a %b %d, %G}"
},
// waybar-cpu
"cpu": {
"interval": 5,
"format": " {usage}%"
},
// waybar-custom
"custom/menu": {
"format": "󰣇 ",
"tooltip": false,
"on-click": "wofi"
},
"custom/power": {
"format": "⏻",
"tooltip": false,
"on-click": "wlogout"
},
// weather-custom
"custom/weather": {
"format": "{}",
"format-alt": "{alt}: {}",
"format-alt-click": "click-right",
"interval": 1800,
"return-type": "json",
"exec": "~/.config/hypr/scripts/weather.sh",
"exec-if": "ping wttr.in -c1"
},
// waybar-tray
"tray": {
"icon-size": 16,
"spacing": 10
},
"pulseaudio": {
"format": "{volume}% {icon}",
"format-bluetooth": "{volume}% {icon}",
"format-muted": "",
"format-icons": {
"alsa_output.pci-0000_00_1f.3.analog-stereo": "",
"alsa_output.pci-0000_00_1f.3.analog-stereo-muted": "",
"headphone": "",
"hands-free": "",
"headset": "",
"phone": "",
"phone-muted": "",
"portable": "",
"car": "",
"default": [
"",
""
]
},
"scroll-step": 1,
"on-click": "pavucontrol",
"ignored-sinks": [
"Easy Effects Sink"
]
}
}

View file

@ -0,0 +1,184 @@
/** ********** Fonts ********** **/
* {
font-family: "JetBrains Mono", "Iosevka Nerd Font", archcraft, sans-serif;
font-size: 12px;
}
/** ********** Waybar Window ********** **/
window#waybar {
background-color: #1e1e2e;
color: #1e1e2e;
border-bottom: 2px solid #313244;
transition-property: background-color;
transition-duration: .5s;
}
window#waybar.hidden {
opacity: 0.5;
}
/** ********** Backlight ********** **/
#backlight {
background-color: #cba6f7;
}
/** ********** Battery ********** **/
#battery {
background-color: #f9e2af;
}
#battery.charging {
}
#battery.plugged {
}
@keyframes blink {
to {
color: #000000;
}
}
#battery.critical:not(.charging) {
background-color: #f38ba8;
color: #f38ba8;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
/** ********** Clock ********** **/
#clock {
background-color: #a6e3a1;
}
/** ********** CPU ********** **/
#cpu {
background-color: #89dceb;
}
/** ********** Memory ********** **/
#memory {
background-color: #eba0ac;
}
/** ********** Disk ********** **/
#disk {
background-color: #b4befe;
}
/** ********** Tray ********** **/
#tray {
background-color: #cdd6f4;
}
#tray > .passive {
-gtk-icon-effect: dim;
}
#tray > .needs-attention {
-gtk-icon-effect: highlight;
}
#tray > .active {
}
/** ********** MPD ********** **/
#mpd {
background-color: #94e2d5;
}
#mpd.disconnected {
background-color: #f38ba8;
}
#mpd.stopped {
background-color: #f5c2e7;
}
#mpd.playing {
background-color: #74c7ec;
}
#mpd.paused {
}
/** ********** Pulseaudio ********** **/
#pulseaudio {
background-color: #fab387;
}
#pulseaudio.bluetooth {
background-color: #f5c2e7;
}
#pulseaudio.muted {
background-color: #313244;
color: #cdd6f4;
}
/** ********** Network ********** **/
#network {
background-color: #89b4fa;
}
#network.disconnected,#network.disabled {
background-color: #313244;
color: #cdd6f4;
}
#network.linked {
}
#network.ethernet {
}
#network.wifi {
}
/** ********** Custom ********** **/
#custom-menu, #custom-power, #custom-weather, #custom-updater {
border-radius: 4px;
margin: 6px 0px;
padding: 2px 8px;
}
#custom-menu {
background-color: #f5c2e7;
margin-left: 6px;
padding: 2px 6px;
font-size: 16px;
}
#custom-power {
background-color: #f38ba8;
margin-right: 6px;
padding: 2px 8px;
font-size: 16px;
}
#custom-updater {
background-color: #e6ed7b;
margin-right: 6px;
padding: 2px 8px;
font-size: 12px;
}
#custom-weather {
background-color: #cba6f7;
margin-right: 6px;
padding: 2px 8px;
font-size: 12px;
}
/** Common style **/
#backlight,
#battery,
#clock,
#cpu,
#disk,
#mode,
#memory,
#mpd,
#tray,
#pulseaudio,
#network {
border-radius: 4px;
margin: 6px 0px;
padding: 2px 8px;
}

View file

@ -1,14 +0,0 @@
# $DOTFILES/platforms/linux/hyprland/code-flags.conf
# Date: 2024-12-22
# Author: js0ny
# Force VSCode to use Wayland
# Location:
# ~/.config/code-flags.conf
# Linking:
# ln -sf $DOTFILES/platforms/linux/hyprland/code-flags.conf ~/.config/
# --enable-features=UseOzonePlatform
# --ozone-platform=wayland
--ozone-platform-hint=auto
--enable-wayland-ime

View file

@ -0,0 +1,50 @@
#!/usr/bin/env bash
## wlogout actions
# Ask for confirmation
cdialog () {
yad --title='Confirm?' --borders=15 --center --fixed --undecorated --button=Yes:0 --button=No:1 --text="Are you sure?" --text-align=center
}
if [[ "$1" == '--shutdown' ]]; then
cdialog
if [[ "$?" == 0 ]]; then
systemctl poweroff
else
exit
fi
elif [[ "$1" == '--reboot' ]]; then
cdialog
if [[ "$?" == 0 ]]; then
systemctl reboot
else
exit
fi
elif [[ "$1" == '--hibernate' ]]; then
cdialog
if [[ "$?" == 0 ]]; then
systemctl hibernate
else
exit
fi
elif [[ "$1" == '--lock' ]]; then
~/.config/hypr/scripts/lockscreen
elif [[ "$1" == '--suspend' ]]; then
cdialog
if [[ "$?" == 0 ]]; then
mpc -q pause
amixer set Master mute
~/.config/hypr/scripts/lockscreen
systemctl suspend
else
exit
fi
elif [[ "$1" == '--logout' ]]; then
cdialog
if [[ "$?" == 0 ]]; then
kill -9 -1
else
exit
fi
fi

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7 KiB

View file

@ -0,0 +1,30 @@
{
"label" : "suspend",
"text" : "Suspend",
"action" : "~/.config/hypr/wlogout/actions --suspend",
"keybind" : "u"
}
{
"label" : "logout",
"text" : "Logout",
"action" : "~/.config/hypr/wlogout/actions --logout",
"keybind" : "e"
}
{
"label" : "lock",
"text" : "Lock",
"action" : "~/.config/hypr/wlogout/actions --lock",
"keybind" : "l"
}
{
"label" : "reboot",
"text" : "Reboot",
"action" : "~/.config/hypr/wlogout/actions --reboot",
"keybind" : "r"
}
{
"label" : "shutdown",
"text" : "Shutdown",
"action" : "~/.config/hypr/wlogout/actions --shutdown",
"keybind" : "s"
}

View file

@ -0,0 +1,52 @@
/** ********** Fonts ********** **/
* {
font-family: "JetBrains Mono", "Iosevka Nerd Font", archcraft, sans-serif;
font-size: 14px;
font-weight: bold;
}
/** ********** Main Window ********** **/
window {
background-color: #1E1E2E;
}
/** ********** Buttons ********** **/
button {
background-color: #242434;
color: #FFFFFF;
border: 2px solid #282838;
border-radius: 20px;
background-repeat: no-repeat;
background-position: center;
background-size: 35%;
}
button:focus, button:active, button:hover {
background-color: #89B4FA;
outline-style: none;
}
/** ********** Icons ********** **/
#lock {
background-image: image(url("icons/lock.png"), url("/usr/share/wlogout/icons/lock.png"));
}
#logout {
background-image: image(url("icons/logout.png"), url("/usr/share/wlogout/icons/logout.png"));
}
#suspend {
background-image: image(url("icons/suspend.png"), url("/usr/share/wlogout/icons/suspend.png"));
}
#hibernate {
background-image: image(url("icons/hibernate.png"), url("/usr/share/wlogout/icons/hibernate.png"));
}
#shutdown {
background-image: image(url("icons/shutdown.png"), url("/usr/share/wlogout/icons/shutdown.png"));
}
#reboot {
background-image: image(url("icons/reboot.png"), url("/usr/share/wlogout/icons/reboot.png"));
}

View file

@ -16,6 +16,6 @@ vsync = true
wsl = false wsl = false
[font] [font]
normal = ["CaskaydiaCove Nerd Font"] # Will use the bundled Fira Code Nerd Font by default normal = ["CaskaydiaCove Nerd Font", "霞鹜文楷等宽"] # Will use the bundled Fira Code Nerd Font by default
size = 14.0 size = 14.0

View file

@ -0,0 +1,10 @@
#!/usr/bin/env bash
# make sure it's executable with:
# chmod +x ~/.config/sketchybar/plugins/aerospace.sh
if [ "$1" = "$FOCUSED_WORKSPACE" ]; then
sketchybar --set $NAME background.drawing=on
else
sketchybar --set $NAME background.drawing=off
fi

View file

@ -100,3 +100,19 @@ sketchybar --set music \
##### Force all scripts to run the first time (never do this in a script) ##### ##### Force all scripts to run the first time (never do this in a script) #####
sketchybar --update sketchybar --update
sketchybar --add event aerospace_workspace_change
for sid in $(aerospace list-workspaces --all); do
sketchybar --add item space.$sid left \
--subscribe space.$sid aerospace_workspace_change \
--set space.$sid \
background.color=0x44ffffff \
background.corner_radius=5 \
background.height=20 \
background.drawing=off \
label="$sid" \
click_script="aerospace workspace $sid" \
script="$CONFIG_DIR/plugins/aerospace.sh $sid"
done

View file

@ -32,44 +32,44 @@
# # minimize window # # minimize window
# alt - m : yabai -m window --minimize # alt - m : yabai -m window --minimize
# # float / unfloat window and center on screen # float / unfloat window and center on screen
# alt - f : yabai -m window --toggle float ctrl - f : yabai -m window --toggle float
# # toggle window native fullscreen # toggle window native fullscreen
# shift + alt - f : yabai -m window --toggle native-fullscreen shift + ctrl - f : yabai -m window --toggle native-fullscreen
# # send window to a space # send window to a space
# shift + ctrl - 1 : yabai -m window --space 1 shift + ctrl - 1 : yabai -m window --space 1
# shift + ctrl - 2 : yabai -m window --space 2 shift + ctrl - 2 : yabai -m window --space 2
# shift + ctrl - 3 : yabai -m window --space 3 shift + ctrl - 3 : yabai -m window --space 3
# shift + ctrl - 4 : yabai -m window --space 4 shift + ctrl - 4 : yabai -m window --space 4
# shift + ctrl - 5 : yabai -m window --space 5 shift + ctrl - 5 : yabai -m window --space 5
# shift + ctrl - 6 : yabai -m window --space 6 shift + ctrl - 6 : yabai -m window --space 6
# shift + ctrl - 7 : yabai -m window --space 7 shift + ctrl - 7 : yabai -m window --space 7
# shift + ctrl - 8 : yabai -m window --space 8 shift + ctrl - 8 : yabai -m window --space 8
# shift + ctrl - 9 : yabai -m window --space 9 shift + ctrl - 9 : yabai -m window --space 9
# shift + ctrl - 0 : yabai -m window --space 10 shift + ctrl - 0 : yabai -m window --space 10
# open terminal # open terminal
ctrl - r : open -n -a "Kitty" ctrl - r : open -n -a "Kitty"
# moves focus between windows in the current focused display # moves focus between windows in the current focused display
alt - h : yabai -m window --focus west ctrl - h : yabai -m window --focus west
alt - n : yabai -m window --focus south ctrl - n : yabai -m window --focus south
alt - e : yabai -m window --focus north ctrl - e : yabai -m window --focus north
alt - i : yabai -m window --focus east ctrl - i : yabai -m window --focus east
# moves focus between spaces # moves focus between spaces
alt - 1 : yabai -m space --focus 1 ctrl - 1 : yabai -m space --focus 1
alt - 2 : yabai -m space --focus 2 ctrl - 2 : yabai -m space --focus 2
alt - 3 : yabai -m space --focus 3 ctrl - 3 : yabai -m space --focus 3
alt - 4 : yabai -m space --focus 4 ctrl - 4 : yabai -m space --focus 4
alt - 5 : yabai -m space --focus 5 ctrl - 5 : yabai -m space --focus 5
alt - 6 : yabai -m space --focus 6 ctrl - 6 : yabai -m space --focus 6
alt - 7 : yabai -m space --focus 7 ctrl - 7 : yabai -m space --focus 7
alt - 8 : yabai -m space --focus 8 ctrl - 8 : yabai -m space --focus 8
alt - 9 : yabai -m space --focus 9 ctrl - 9 : yabai -m space --focus 9
alt - 0 : yabai -m space --focus 10 ctrl - 0 : yabai -m space --focus 10
# delete focused space # delete focused space
alt - q : yabai -m space --destroy alt - q : yabai -m space --destroy

View file

@ -60,4 +60,11 @@ ${function:winr} = { winget uninstall $args }
${function:wins} = { winget search $args } ${function:wins} = { winget search $args }
${function:winu} = { winget upgrade $args } ${function:winu} = { winget upgrade $args }
${function:pkill} = { ps *$args* | kill -Force } ${function:pkill} = { Get-Process *$args* | Stop-Process -Force }
${function:tmux} = { wsl.exe tmux $args }
if (Get-Command "sfsu.exe" -ErrorAction SilentlyContinue) {
Invoke-Expression (&sfsu.exe hook)
}

Binary file not shown.

Binary file not shown.

View file

@ -21,7 +21,7 @@ general:
config_reload_commands: [] config_reload_commands: []
# Whether to automatically focus windows underneath the cursor. # Whether to automatically focus windows underneath the cursor.
focus_follows_cursor: true focus_follows_cursor: false
# Whether to switch back and forth between the previously focused # Whether to switch back and forth between the previously focused
# workspace when focusing the current workspace. # workspace when focusing the current workspace.
@ -89,7 +89,7 @@ window_effects:
enabled: false enabled: false
color: "#a1a1a1" color: "#a1a1a1"
hide_title_bar: hide_title_bar:
enabled: true enabled: false
corner_style: corner_style:
enabled: false enabled: false
style: "square" style: "square"

View file

@ -19,9 +19,12 @@ api.unmap('<ctrl-i>');
*/ */
// #endregion // #endregion
// Settings
// #region Settings
settings.language = "zh-CN"; settings.language = "zh-CN";
settings.showModeStatus = false; settings.showModeStatus = false;
// #endregion
// #region Helper // #region Helper
const { const {
aceVimMap, aceVimMap,
@ -168,6 +171,17 @@ const _addSearchAlias = function (
parseResponse, parseResponse,
); );
}; };
var q = (selector) => document.querySelector(selector);
var qs = (selector) => document.querySelectorAll(selector);
var mapkeyFeed = function (key, desc, target, options) {
mapkey(key, desc, function () {
api.Normal.feedkeys(target)
});
}
// #endregion // #endregion
// #region Keymap // #region Keymap
@ -240,6 +254,17 @@ forwardFactory.pull(mapLists);
vForwardFactory.pull(vMapLists); vForwardFactory.pull(vMapLists);
// #endregion // #endregion
// #region Omnibar
// api.cmap("<Ctrl-a>", "<Ctrl-ArrowUp>");
// api.cmap("<Ctrl-e>", "<Ctrl-ArrowDown>");
// api.cmap("<Ctrl-f>", "<ArrowRight>");
// api.cmap("<Ctrl-b>", "<ArrowLeft>");
// api.cmap("<Alt-f>", "<Ctrl-ArrowRight>");
// api.cmap("<Alt-b>", "<Ctrl-ArrowLeft>");
// api.cmap("<Ctrl-h>", "<Backspace>");
// api.cmap("<Ctrl-d>", "<Delete>");
// #endregion
// #region Search Alias // #region Search Alias
removeSearchAlias("s"); // StackOverflow removeSearchAlias("s"); // StackOverflow
removeSearchAlias("d"); // DuckDuckGo removeSearchAlias("d"); // DuckDuckGo
@ -324,41 +349,182 @@ _addSearchAlias("bl", "Bilibili", "https://search.bilibili.com/all?keyword=");
// #endregion // #endregion
// #region Site-specific // #region Site-specific
// chatgpt.com
// #region chatgpt.com
const chatgptNewChat = function () { const chatgptNewChat = function () {
var btn = document.querySelector( var btn = q(
"div.no-draggable:nth-child(3) > span:nth-child(1) > button:nth-child(1)", "div.no-draggable:nth-child(3) > span:nth-child(1) > button:nth-child(1)",
); );
btn.click(); btn.click();
}; };
const chatgptStartStop = function () { const chatgptStartStop = function () {
var btn = document.querySelector("button.h-8:nth-child(2)"); var btn = q("button.h-8:nth-child(2)");
btn.click(); btn.click();
}; };
api.unmap("t", /chatgpt.com/); mapkey(",n", "New Chat", chatgptNewChat, { domain: /chatgpt.com/ });
api.mapkey("tn", "New Chat", chatgptNewChat, { domain: /chatgpt.com/ }); mapkey(",s", "Start/Stop Generating", chatgptStartStop, {
api.mapkey("ts", "Start/Stop Generating", chatgptStartStop, {
domain: /chatgpt.com/,
});
api.mapkey("S", "Start/Stop Generating", chatgptStartStop, {
domain: /chatgpt.com/,
});
api.mapkey("an", "New Chat", chatgptNewChat, { domain: /chatgpt.com/ });
api.mapkey("as", "Start/Stop Generating", chatgptStartStop, {
domain: /chatgpt.com/, domain: /chatgpt.com/,
}); });
// #endregion
//api.mapkey('tm', 'Toggle Model', function () { // #region chat.deepseek.com
// var btn = document.querySelector('#radix -\: r2i\:'); mapkey(",s", "Toggle Sidebar", function () {
// btn.click(); var btn = qs("div.ds-icon-button");
//}, { domain: /chatgpt.com/ }); btn[0].click();
// perplexity.ai }, { domain: /chat.deepseek.com/ });
api.unmap("<Ctrl-i>", /perplexity.ai/); // allows to use perplexity web keybindings mapkey(",e", "Edit last input", function () {
api.mapkey("aB", "Add Perplexity Bookmark", function () { var btn = qs("div.ds-icon-button");
btn[btn.length - 5].click();
}, { domain: /chat.deepseek.com/ });
mapkey(",y", "Yank last oupput", function () {
var btn = qs("div.ds-icon-button");
btn[btn.length - 4].click();
}, { domain: /chat.deepseek.com/ });
mapkey(",r", "Regenerate last output", function () {
var btn = qs("div.ds-icon-button");
btn[btn.length - 3].click();
}, { domain: /chat.deepseek.com/ });
mapkey(",n", "New Chat", function () {
window.location.href = 'https://chat.deepseek.com/';
}, { domain: /chat.deepseek.com/ });
mapkey(",t", "Toggle Thinking (R1)", function () {
var btns = qs("div.ds-button");
btns[0].click();
}, { domain: /chat.deepseek.com/ });
mapkey(",w", "Toggle Web Search", function () {
var btns = qs("div.ds-button");
btns[1].click();
}, { domain: /chat.deepseek.com/ });
// #endregion
// #region app.follow.is
mapkey(",t", "Toggle ", function () {
var btn = qs("button.no-drag-region")
btn[btn.length - 4].click();
}, { domain: /app.follow.is/ });
mapkey(",a", "Toggle AI Summary", function () {
var btn = qs("button.no-drag-region")
btn[btn.length - 3].click();
}, { domain: /app.follow.is/ });
mapkey(",o", "Toggle Original Website", function () {
var btn = qs("button.no-drag-region")
btn[btn.length - 4].click();
}, { domain: /app.follow.is/ });
// #endregion
// #region GitHub
// utils
const gh = {}
gh.repoLink = (owner, repo) => `https://github.com/${owner}/${repo}`;
gh.pageLink = (owner, repo) => `https://${owner}.github.io/${repo}/`;
gh.sourceLink = (owner, repo, path) => `${gh.repoLink(owner, repo)}/tree/${path}`;
gh.rawToSource = (url) => {
const ps = url.split('/').slice(3)
return gh.sourceLink(ps[0], ps[1], ps.slice(4).join('/'));
}
// github.com
mapkey(",e", "Use Web Editor", function () {
const url = new URL(window.location.href);
url.hostname = "github.dev";
window.location.href = url.href;
}, { domain: /github.com/ });
mapkey(",E", "Use Web Editor (New Page)", function () {
const url = new URL(window.location.href);
url.hostname = "github.dev";
tabOpenLink(url.href);
}, { domain: /github.com/ });
mapkey(",p", "Switch to GitHub Page", function () {
href = window.location.href;
owner = href.split("/")[3];
repo = href.split("/")[4];
window.location.href = gh.pageLink(owner, repo);
}, { domain: /github.com/ });
// github.dev
mapkey(",r", "Switch to GitHub Repo", function () {
const url = new URL(window.location.href);
url.hostname = "github.com";
window.location.href = url.href;
}, { domain: /github.dev/ });
// github.io
mapkey(",r", "Switch to GitHub Repo", function () {
const href = window.location.href;
owner = href.split("/")[2].split(".")[0];
repo = href.split("/")[3];
tabOpenLink(gh.repoLink(owner, repo));
}, { domain: /github.io/ });
mapkey(",R", "Go to GitHub Repo (New tab)", function () {
const href = window.location.href;
owner = href.split("/")[2].split(".")[0];
repo = href.split("/")[3];
tabOpenLink(gh.repoLink(owner, repo));
}, { domain: /github.io/ });
// raw.githubusercontent.com
mapkey(",r", "Switch to GitHub Repo", function () {
const url = new URL(window.location.href);
var owner, repo;
owner, repo = url.pathname.split('/').slice(1, 3)
window.location.href = gh.repoLink(owner, repo);
}, { domain: /raw.githubusercontent.com/ });
mapkey(",R", "Switch to GitHub Repo", function () {
const url = new URL(window.location.href);
var owner, repo;
owner, repo = url.pathname.split('/').slice(1, 3)
tabOpenLink(gh.repoLink(owner, repo));
}, { domain: /raw.githubusercontent.com/ });
mapkey(",s", "Open Source in GitHub", function () {
window.location.href = gh.rawToSource(window.location.href);
}, { domain: /raw.githubusercontent.com/ });
mapkey(",S", "Open Source in GitHub (New Page)", function () {
tabOpenLink(gh.rawToSource(window.location.href));
}, { domain: /raw.githubusercontent.com/ });
// #endregion GitHub
// #region perplexity.ai
/**
* 0 - 网络
* 1 - 学术
* 2 - 数学
* 3 - 写作
* 4 - 视频
* 5 - 社交
*/
const perplexityFocusOn = function (n) {
qs("span.grow button")[0].click()
setTimeout(() => { // Wait for the DOM to update
qs("div.shadow-subtle div.group\\/item")[n].click();
}, 100);
}
unmap("<Ctrl-i>", /perplexity.ai/); // allows to use perplexity web keybindings
mapkey(",b", "Add Perplexity Bookmark", function () {
// button.border:nth-child(2) // button.border:nth-child(2)
var btn = document.querySelector("button.border:nth-child(2)"); var btn = q("button.border:nth-child(2)");
btn.click(); btn.click();
}); }, { domain: /perplexity.ai/ });
mapkey(",w", "Toggle Writing/Web Search", function () {
perplexityFocusOn(3);
}, { domain: /perplexity.ai/ });
mapkey(",s", "Start Generating", function () {
var btns = qs("span.grow button")
btns[btns.length - 1].click();
}, { domain: /perplexity.ai/ });
mapkey(",y", "Yank Last Output", function () {
var toolbars = qs("div.mt-sm")
var last = toolbars[toolbars.length - 1]
var btns = last.querySelectorAll("button")
btns[4].click();
}, { domain: /perplexity.ai/ });
mapkey(",r", "Change model to regenerate last output", function () {
var toolbars = qs("div.mt-sm")
var last = toolbars[toolbars.length - 1]
var btns = last.querySelectorAll("button")
btns[1].click();
}, { domain: /perplexity.ai/ });
// #endregion
// #endregion // #endregion
@ -476,4 +642,5 @@ addVimMapKey(
// #endregion // #endregion
// #region Hints // #region Hints
api.Hints.setCharacters('qwfpgarstdcv')
// #endregion // #endregion

View file

@ -1,2 +1,3 @@
fish_variables fish_variables
completions completions
themes/

View file

@ -0,0 +1 @@
fish_config theme choose "Catppuccin Mocha"

View file

@ -8,6 +8,6 @@
# ln -sf $DOTFILES/tools/fish ~/.config/fish # ln -sf $DOTFILES/tools/fish ~/.config/fish
if command -v starship > /dev/null if command -v starship > /dev/null
set -gx STARSHIP_CONFIG "~/.dotfiles/tools/starship/starship_fish.toml"
starship init fish | source starship init fish | source
end end

View file

@ -10,3 +10,4 @@ require("config.options")
require("config.plugins") require("config.plugins")
require("config.colorscheme") require("config.colorscheme")
require("config.keymaps") require("config.keymaps")
require("config.diagnostics")

View file

@ -1,47 +1,54 @@
{ {
"LuaSnip": { "branch": "master", "commit": "c9b9a22904c97d0eb69ccb9bab76037838326817" }, "LuaSnip": { "branch": "master", "commit": "2592b91577136dbb355a4708be1e60619456b7f6" },
"alpha-nvim": { "branch": "main", "commit": "de72250e054e5e691b9736ee30db72c65d560771" }, "alpha-nvim": { "branch": "main", "commit": "de72250e054e5e691b9736ee30db72c65d560771" },
"auto-session": { "branch": "main", "commit": "021b64ed7d4ac68a37be3ad28d8e1cba5bec582c" }, "auto-session": { "branch": "main", "commit": "021b64ed7d4ac68a37be3ad28d8e1cba5bec582c" },
"betterTerm.nvim": { "branch": "main", "commit": "6f03af3a1ed4d054ecbcb0aa8266ddaf610aa657" }, "betterTerm.nvim": { "branch": "main", "commit": "6f03af3a1ed4d054ecbcb0aa8266ddaf610aa657" },
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" }, "bufferline.nvim": { "branch": "main", "commit": "261a72b90d6db4ed8014f7bda976bcdc9dd7ce76" },
"catppuccin": { "branch": "main", "commit": "f67b886d65a029f12ffa298701fb8f1efd89295d" }, "catppuccin": { "branch": "main", "commit": "faf15ab0201b564b6368ffa47b56feefc92ce3f4" },
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
"cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" }, "cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" },
"cmp-nvim-lsp": { "branch": "main", "commit": "99290b3ec1322070bcfb9e846450a46f6efa50f0" }, "cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" },
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
"code_runner.nvim": { "branch": "main", "commit": "65218f8f646fe61e506090522df357539642ae83" }, "code_runner.nvim": { "branch": "main", "commit": "65218f8f646fe61e506090522df357539642ae83" },
"conform.nvim": { "branch": "master", "commit": "70019124aa4f2e6838be9fbd2007f6d13b27a96d" }, "conform.nvim": { "branch": "master", "commit": "70019124aa4f2e6838be9fbd2007f6d13b27a96d" },
"copilot.vim": { "branch": "release", "commit": "87038123804796ca7af20d1b71c3428d858a9124" }, "copilot.vim": { "branch": "release", "commit": "87038123804796ca7af20d1b71c3428d858a9124" },
"friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" }, "flash.nvim": { "branch": "main", "commit": "34c7be146a91fec3555c33fe89c7d643f6ef5cf1" },
"gitsigns.nvim": { "branch": "main", "commit": "76d88f3b584e1f83b2aa51663a32cc6ee8d97eff" }, "friendly-snippets": { "branch": "main", "commit": "de8fce94985873666bd9712ea3e49ee17aadb1ed" },
"gitsigns.nvim": { "branch": "main", "commit": "9541f5e8e24571723cb02a5c2bf078aeacc5a711" },
"grug-far.nvim": { "branch": "main", "commit": "635e69adf3a714621bd0a289314bc23c5848babb" },
"hover.nvim": { "branch": "main", "commit": "140c4d0ae9397b76baa46b87c574f5377de09309" }, "hover.nvim": { "branch": "main", "commit": "140c4d0ae9397b76baa46b87c574f5377de09309" },
"kanagawa.nvim": { "branch": "master", "commit": "988082eb00b845e4afbcaa4fd8e903da8a3ab3b9" }, "kanagawa.nvim": { "branch": "master", "commit": "988082eb00b845e4afbcaa4fd8e903da8a3ab3b9" },
"lazy.nvim": { "branch": "main", "commit": "d8f26efd456190241afd1b0f5235fe6fdba13d4a" }, "lazy.nvim": { "branch": "main", "commit": "56ead98e05bb37a4ec28930a54d836d033cf00f2" },
"lazydev.nvim": { "branch": "main", "commit": "a1b78b2ac6f978c72e76ea90ae92a94edf380cfc" },
"lazygit.nvim": { "branch": "main", "commit": "77a0d42943d8265271e6e6beaed72da54eeb17e7" },
"lualine.nvim": { "branch": "master", "commit": "2a5bae925481f999263d6f5ed8361baef8df4f83" }, "lualine.nvim": { "branch": "master", "commit": "2a5bae925481f999263d6f5ed8361baef8df4f83" },
"luasnip-latex-snippets.nvim": { "branch": "main", "commit": "cab134611eb755abe9ba95f5d86969f5cece448d" }, "luasnip-latex-snippets.nvim": { "branch": "main", "commit": "cab134611eb755abe9ba95f5d86969f5cece448d" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "e942edf5c85b6a2ab74059ea566cac5b3e1514a4" }, "mason-lspconfig.nvim": { "branch": "main", "commit": "8e46de9241d3997927af12196bd8faa0ed08c29a" },
"mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" }, "mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" },
"mini.pairs": { "branch": "main", "commit": "7e834c5937d95364cc1740e20d673afe2d034cdb" }, "mini.pairs": { "branch": "main", "commit": "7e834c5937d95364cc1740e20d673afe2d034cdb" },
"nvim-cmp": { "branch": "main", "commit": "8c82d0bd31299dbff7f8e780f5e06d2283de9678" }, "nvim-cmp": { "branch": "main", "commit": "ca4d3330d386e76967e53b85953c170658255ecb" },
"nvim-lspconfig": { "branch": "master", "commit": "339ccc81e08793c3af9b83882a6ebd90c9cc0d3b" }, "nvim-lspconfig": { "branch": "master", "commit": "7b0a2f6b14485bb5a237fc1328a487ff3e4a08c5" },
"nvim-tree.lua": { "branch": "master", "commit": "d529a99f88e0dff02e0aa275db2f595cd252a2c8" }, "nvim-surround": { "branch": "main", "commit": "ae298105122c87bbe0a36b1ad20b06d417c0433e" },
"nvim-treesitter": { "branch": "master", "commit": "f0c928dbe93533b7e35894a8f957f40150d1f663" }, "nvim-tree.lua": { "branch": "master", "commit": "c7639482a1598f4756798df1b2d72f79fe5bb34f" },
"nvim-treesitter": { "branch": "master", "commit": "454354e5998edb448111574e58d5f5f2d6a940bd" },
"nvim-treesitter-context": { "branch": "master", "commit": "d0dd7ce5a9d0be1f28086e818e52fdc5c78975df" }, "nvim-treesitter-context": { "branch": "master", "commit": "d0dd7ce5a9d0be1f28086e818e52fdc5c78975df" },
"nvim-web-devicons": { "branch": "master", "commit": "aafa5c187a15701a7299a392b907ec15d9a7075f" }, "nvim-web-devicons": { "branch": "master", "commit": "203da76ecfbb4b192cf830665b03eb651b635c94" },
"obsidian.nvim": { "branch": "main", "commit": "ae1f76a75c7ce36866e1d9342a8f6f5b9c2caf9b" }, "obsidian.nvim": { "branch": "main", "commit": "ae1f76a75c7ce36866e1d9342a8f6f5b9c2caf9b" },
"onedarkpro.nvim": { "branch": "main", "commit": "0feb5f55dd777352f2dddd7478dd13d050864ee3" }, "onedarkpro.nvim": { "branch": "main", "commit": "0feb5f55dd777352f2dddd7478dd13d050864ee3" },
"orgmode": { "branch": "master", "commit": "4e4a14a7dd613953eddacbc0f0ff1583817d7de1" }, "plenary.nvim": { "branch": "master", "commit": "2d9b06177a975543726ce5c73fca176cedbffe9d" },
"plenary.nvim": { "branch": "master", "commit": "3707cdb1e43f5cea73afb6037e6494e7ce847a66" },
"project.nvim": { "branch": "main", "commit": "8c6bad7d22eef1b71144b401c9f74ed01526a4fb" }, "project.nvim": { "branch": "main", "commit": "8c6bad7d22eef1b71144b401c9f74ed01526a4fb" },
"render-markdown.nvim": { "branch": "main", "commit": "f0eb5893556200e9f945c0f0ea3c83bbd20dd963" }, "render-markdown.nvim": { "branch": "main", "commit": "634acd5da964c32f6947cd0c7802d7a116662665" },
"telescope.nvim": { "branch": "master", "commit": "415af52339215926d705cccc08145f3782c4d132" }, "telescope.nvim": { "branch": "master", "commit": "2eca9ba22002184ac05eddbe47a7fe2d5a384dfc" },
"todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" },
"trouble.nvim": { "branch": "main", "commit": "50481f414bd3c1a40122c1d759d7e424d5fafe84" },
"vim-floaterm": { "branch": "master", "commit": "4e28c8dd0271e10a5f55142fb6fe9b1599ee6160" }, "vim-floaterm": { "branch": "master", "commit": "4e28c8dd0271e10a5f55142fb6fe9b1599ee6160" },
"vim-illuminate": { "branch": "master", "commit": "5eeb7951fc630682c322e88a9bbdae5c224ff0aa" }, "vim-illuminate": { "branch": "master", "commit": "5eeb7951fc630682c322e88a9bbdae5c224ff0aa" },
"vim-just": { "branch": "main", "commit": "ed67f198e981f555c0f9e9ed5b69b4b06543a9e1" }, "vim-just": { "branch": "main", "commit": "ed67f198e981f555c0f9e9ed5b69b4b06543a9e1" },
"vim-visual-multi-colemak-hnei": { "branch": "master", "commit": "2cc37d77590d6569d991ebd8d96ab5867eb5a47a" },
"vim-wakatime": { "branch": "master", "commit": "cf51327a9e08935569614d1cb24e779ee9f45519" }, "vim-wakatime": { "branch": "master", "commit": "cf51327a9e08935569614d1cb24e779ee9f45519" },
"vimtex": { "branch": "master", "commit": "c8412f444bfaf447981242d685c40e45b1c96b82" }, "vimtex": { "branch": "master", "commit": "a707d39e77cb27a6d02922f269875d1727860dcf" },
"which-key.nvim": { "branch": "main", "commit": "1f8d414f61e0b05958c342df9b6a4c89ce268766" }, "which-key.nvim": { "branch": "main", "commit": "9b365a6428a9633e3eeb34dbef1b791511c54f70" },
"winbar.nvim": { "branch": "main", "commit": "13739fdb31be51a1000486189662596f07a59a31" }, "winbar.nvim": { "branch": "main", "commit": "13739fdb31be51a1000486189662596f07a59a31" },
"yanky.nvim": { "branch": "main", "commit": "f9b905994cccf3c55f41af3a0a1f4c76c844e411" } "yanky.nvim": { "branch": "main", "commit": "f9b905994cccf3c55f41af3a0a1f4c76c844e411" }
} }

View file

@ -0,0 +1,16 @@
local colors = {
bg = "#202328",
fg = "#bbc2cf",
yellow = "#ECBE7B",
cyan = "#008080",
darkblue = "#081633",
green = "#98be65",
orange = "#FF8800",
violet = "#a9a1e1",
magenta = "#c678dd",
purple = "#c678dd",
blue = "#51afef",
red = "#ec5f67",
}
return colors

View file

@ -1 +1 @@
vim.cmd.colorscheme("kanagawa") vim.cmd.colorscheme("catppuccin-mocha")

View file

@ -0,0 +1,6 @@
local signs = require("config.icons").diagnostics
for type, icon in pairs(signs) do
local hl = "DiagnosticSign" .. type
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" })
end

View file

@ -0,0 +1,19 @@
local M = {
diagnostics = {
Error = "",
Warning = "",
Hint = "",
Information = "",
},
lsp = "",
indent = "",
git = {
Change = "",
Add = "",
Delete = "",
Rename = "",
Branch = "",
},
}
return M

View file

@ -3,15 +3,30 @@
--- for available server and name --- for available server and name
local M = {} local M = {}
M.servers = { M.servers = {
"ast_grep",
"bashls", -- Bash
"clangd", -- C/C++ "clangd", -- C/C++
"cssls", -- CSS
"denols", -- Deno
-- "cmake", -- CMake -- "cmake", -- CMake
"eslint", -- JavaScript "eslint", -- JavaScript
"gopls", -- Go
"hls", -- Haskell
"html", -- HTML "html", -- HTML
"jsonls", -- JSON
"lua_ls", -- Lua "lua_ls", -- Lua
"markdown_oxide", -- Markdown
"omnisharp", -- C# & F# "omnisharp", -- C# & F#
"powershell_es", -- PowerShell "powershell_es", -- PowerShell
"pyright", -- Python "pyright", -- Python
"rust_analyzer", -- Rust
"svelte", -- Svelte
"svlangserver", -- SystemVerilog
"tailwindcss", -- TailwindCSS
"taplo", -- TOML
"ts_ls", -- TypeScript
"vimls", -- vimscript "vimls", -- vimscript
"yamlls", -- YAML
} }
M.server_config = { M.server_config = {

View file

@ -56,8 +56,8 @@ local keymaps_basic = { -- Modification of Original Keymap - Colemak
{ mode = mode_arrow, keys = "i", cmd = "l", opts = { desc = "Right", silent = true } }, { mode = mode_arrow, keys = "i", cmd = "l", opts = { desc = "Right", silent = true } },
{ keys = "H", cmd = ":bprevious<CR>", opts = { desc = "Previous Buffer" } }, { keys = "H", cmd = ":bprevious<CR>", opts = { desc = "Previous Buffer" } },
{ keys = "I", cmd = ":bnext<CR>", opts = { desc = "Next Buffer" } }, { keys = "I", cmd = ":bnext<CR>", opts = { desc = "Next Buffer" } },
{ keys = "N", cmd = "5k", opts = { desc = "Up 5 Lines" } }, { keys = "N", cmd = "5j", opts = { desc = "Up 5 Lines" } },
{ keys = "E", cmd = "5j", opts = { desc = "Down 5 Lines" } }, { keys = "E", cmd = "5e", opts = { desc = "Down 5 Lines" } },
{ keys = "Y", cmd = "y$", opts = { desc = "Yank to End of Line" } }, { keys = "Y", cmd = "y$", opts = { desc = "Yank to End of Line" } },
{ keys = "E", cmd = "5k" }, { keys = "E", cmd = "5k" },
-- Text object implementation -- Text object implementation

View file

@ -44,5 +44,6 @@ end
-- which-key.nvim -- which-key.nvim
require("keymaps.which") require("keymaps.which")
require("keymaps.visual-multi")
return M return M

View file

@ -51,13 +51,32 @@ local leader_mappings = {
{ keys = "n", cmd = "<C-w>j", opts = { desc = "Down Window" } }, { keys = "n", cmd = "<C-w>j", opts = { desc = "Down Window" } },
{ keys = "e", cmd = "<C-w>k", opts = { desc = "Up Window" } }, { keys = "e", cmd = "<C-w>k", opts = { desc = "Up Window" } },
{ keys = "i", cmd = "<C-w>l", opts = { desc = "Right Window" } }, { keys = "i", cmd = "<C-w>l", opts = { desc = "Right Window" } },
{ keys = "F", cmd = ":NvimTreeFindFileToggle<CR>", opts = { desc = "Toggle File Explorer" } },
{ keys = "<Tab>", cmd = "<Cmd>b#<CR>", opts = { desc = "Switch to last buffer" } }, { keys = "<Tab>", cmd = "<Cmd>b#<CR>", opts = { desc = "Switch to last buffer" } },
{ keys = "!", cmd = ":FloatermToggle<CR>", opts = { desc = "" } }, { keys = "!", cmd = ":FloatermToggle<CR>", opts = { desc = "Toggle Terminal" } },
{ keys = '"', cmd = ":!wezterm-gui &<CR>", pots = { desc = "Open External Terminal(wezterm)" } },
{ keys = ";", cmd = ":Telescope<CR>", pots = { desc = "Show Telescope Commands" } },
}, },
b = { -- +buffer b = { -- +buffer
{ keys = "0", cmd = "<Cmd>b#<CR>", opts = { desc = "Switch to last buffer" } },
{ keys = "1", cmd = ":BufferLineGotoBuffer 1<CR>", opts = { desc = "Switch to Buffer #1" } },
{ keys = "2", cmd = ":BufferLineGotoBuffer 2<CR>", opts = { desc = "Switch to Buffer #2" } },
{ keys = "3", cmd = ":BufferLineGotoBuffer 3<CR>", opts = { desc = "Switch to Buffer #3" } },
{ keys = "4", cmd = ":BufferLineGotoBuffer 4<CR>", opts = { desc = "Switch to Buffer #4" } },
{ keys = "5", cmd = ":BufferLineGotoBuffer 5<CR>", opts = { desc = "Switch to Buffer #5" } },
{ keys = "6", cmd = ":BufferLineGotoBuffer 6<CR>", opts = { desc = "Switch to Buffer #6" } },
{ keys = "7", cmd = ":BufferLineGotoBuffer 7<CR>", opts = { desc = "Switch to Buffer #7" } },
{ keys = "8", cmd = ":BufferLineGotoBuffer 8<CR>", opts = { desc = "Switch to Buffer #8" } },
{ keys = "9", cmd = ":BufferLineGotoBuffer 9<CR>", opts = { desc = "Switch to Buffer #9" } },
{ keys = "a", cmd = ":Alpha<CR>", opts = { desc = "Dashboard" } }, { keys = "a", cmd = ":Alpha<CR>", opts = { desc = "Dashboard" } },
{ keys = "b", cmd = ":Telescope buffers<CR>", opts = { desc = "List Buffers" } }, { keys = "b", cmd = ":BufferLinePick<CR>", opts = { desc = "Quick Switch Buffers" } },
{ keys = "B", cmd = ":Telescope buffers<CR>", opts = { desc = "List Buffers" } },
{ keys = "d", cmd = ":bdelete<CR>", opts = { desc = "Delete Buffer" } }, { keys = "d", cmd = ":bdelete<CR>", opts = { desc = "Delete Buffer" } },
{ keys = "D", cmd = ":BufferLineCloseOthers<CR>", opts = { desc = "Delete Other Buffers" } },
{ keys = "xx", cmd = ":BufferLineCloseOthers<CR>", opts = { desc = "Delete Other Buffers" } },
{ keys = "xh", cmd = ":BufferLineCloseLeft<CR>", opts = { desc = "Delete Buffers Left" } },
{ keys = "xi", cmd = ":BufferLineCloseRight<CR>", opts = { desc = "Delete Buffers Right" } },
{ keys = "X", cmd = ":BufferLineCloseOthers<CR>", opts = { desc = "Delete Other Buffers" } },
{ keys = "h", cmd = ":bprevious<CR>", opts = { desc = "Previous Buffer" } }, { keys = "h", cmd = ":bprevious<CR>", opts = { desc = "Previous Buffer" } },
{ keys = "i", cmd = ":bnext<CR>", opts = { desc = "Next Buffer" } }, { keys = "i", cmd = ":bnext<CR>", opts = { desc = "Next Buffer" } },
{ keys = "H", cmd = ":bfirst<CR>", opts = { desc = "First Buffer" } }, { keys = "H", cmd = ":bfirst<CR>", opts = { desc = "First Buffer" } },
@ -65,7 +84,9 @@ local leader_mappings = {
{ keys = "0", cmd = ":bfirst<CR>", opts = { desc = "First Buffer" } }, { keys = "0", cmd = ":bfirst<CR>", opts = { desc = "First Buffer" } },
{ keys = "^", cmd = ":bfirst<CR>", opts = { desc = "First Buffer" } }, { keys = "^", cmd = ":bfirst<CR>", opts = { desc = "First Buffer" } },
{ keys = "$", cmd = ":blast<CR>", opts = { desc = "Last Buffer" } }, { keys = "$", cmd = ":blast<CR>", opts = { desc = "Last Buffer" } },
-- { keys = "s", cmd = ":Telescope buffers<CR>", opts = { desc = "Search buffers" } }, { keys = "s", cmd = ":new<CR>", opts = { desc = "Scratch buffers" } },
{ keys = "t", cmd = ":BufferLineTogglePin<CR>", opts = { desc = "Pin Buffer" } },
{ keys = "y", cmd = ":%y+<CR>", opts = { desc = "Copy Buffer to Clipboard" } },
}, },
c = { -- +code/compile c = { -- +code/compile
{ keys = "r", cmd = ":RunCode<CR>", opts = { desc = "Run code" } }, { keys = "r", cmd = ":RunCode<CR>", opts = { desc = "Run code" } },
@ -76,15 +97,44 @@ local leader_mappings = {
}, },
f = { -- +file/find f = { -- +file/find
{ keys = "f", cmd = ":Telescope fd<CR>", opts = { desc = "Find Files" } }, { keys = "f", cmd = ":Telescope fd<CR>", opts = { desc = "Find Files" } },
{ keys = "s", cmd = ":Telescope live_grep<CR>", opts = { desc = "Grep Files" } }, { keys = "F", cmd = ":GrugFar<CR>", opts = { desc = "Search & Replace" } },
{ keys = "l", cmd = ":set filetype=", opts = { desc = "Set Filetype to ..." } },
{ keys = "n", cmd = ":new<CR>", opts = { desc = "New File" } },
{ keys = "s", cmd = ":write<CR>", opts = { desc = "Save File" } },
{ keys = "S", cmd = ":wall<CR>", opts = { desc = "Save All Files" } },
{ keys = "b", cmd = ":Telescope buffers<CR>", opts = { desc = "List Buffers" } }, { keys = "b", cmd = ":Telescope buffers<CR>", opts = { desc = "List Buffers" } },
{ keys = "e", cmd = ":NvimTreeToggle<CR>", opts = { desc = "Toggle File Explorer" } }, { keys = "D", cmd = "!trash-rm %<CR>", opts = { desc = "Delete current file" } },
{ keys = "t", cmd = ":FloatermToggle<CR>", opts = { desc = "toggle visibility of the float terminal" } }, { keys = "t", cmd = ":NvimTreeFindFileToggle<CR>", opts = { desc = "Toggle File Tree" } },
{ keys = "T", cmd = ":FloatermNew<CR>", opts = { desc = "Spawn a float terminal" } }, { keys = "T", cmd = ":FloatermNew<CR>", opts = { desc = "Spawn a float terminal" } },
{ keys = "h", cmd = ":Telescope oldfiles<CR>", opts = { desc = "Search history files" } }, { keys = "h", cmd = ":Telescope oldfiles<CR>", opts = { desc = "Search history files" } },
{ keys = "c", cmd = ":Telescope find_files cwd=~/.config/nvim<CR>", opts = { desc = "Search Config" } }, { keys = "c", cmd = ":Telescope find_files cwd=~/.config/nvim<CR>", opts = { desc = "Search Config" } },
{ keys = "o", cmd = ":!open %", opts = { desc = "Open file in default program" } }, { keys = "o", cmd = ":!open %<CR>", opts = { desc = "Open file in default program" } },
{ keys = "R", cmd = renameCurrentBuffer, opts = { desc = "Rename current file" } }, { keys = "R", cmd = renameCurrentBuffer, opts = { desc = "Rename current file" } },
{ keys = "x", cmd = ":Lazy<CR>", opts = { desc = "Open extension view" } },
{ keys = "yy", cmd = ":let @+ = expand('%:p')<CR>", opts = { desc = "Copy file path" } },
{ keys = "yY", cmd = ":let @+ = expand('%')<CR>", opts = { desc = "Copy relative file path" } },
{ keys = "yn", cmd = ":let @+ = expand('%:t')<CR>", opts = { desc = "Copy file name" } },
{ keys = "yN", cmd = ":let @+ = expand('%:t:r')<CR>", opts = { desc = "Copy file name without extension" } },
{ keys = "yd", cmd = ":let @+ = expand('%:p:h')<CR>", opts = { desc = "Copy directory path" } },
{
keys = "yl",
cmd = ":let @+ = expand('%:p') . ':' . line('.')<CR>",
opts = { desc = "Copy file path with line number" },
},
{
keys = "yL",
cmd = ":let @+ = expand('%') . ':' . line('.')<CR>",
opts = { desc = "Copy relative file path with line number" },
},
},
g = { -- +git/version control
{ keys = "g", cmd = ":LazyGit<CR>", opts = { desc = "Toggle LazyGit" } },
{ keys = "c", cmd = ":Telescope git_commits<CR>", opts = { desc = "Show commits" } },
{ keys = "b", cmd = ":Gitsigns blame<CR>", opts = { desc = "Blame file" } },
{ keys = "d", cmd = ":Gitsigns diffthis<CR>", opts = { desc = "Diff file" } },
{ keys = "B", cmd = ":Gitsigns toggle_current_line_blame<CR>", opts = { desc = "Toggle line blame" } },
{ keys = "s", cmd = ":Telescope git_status<CR>", opts = { desc = "Git Status" } },
{ keys = "t", cmd = ":Telescope git_branches<CR>", opts = { desc = "Git Branches" } },
}, },
p = { -- +project p = { -- +project
{ keys = "p", cmd = ":Telescope projects<CR>", opts = { desc = "List all Projects" } }, { keys = "p", cmd = ":Telescope projects<CR>", opts = { desc = "List all Projects" } },
@ -97,30 +147,35 @@ local leader_mappings = {
{ keys = "w", cmd = ":wq<CR>", opts = { desc = "Write and Quit" } }, { keys = "w", cmd = ":wq<CR>", opts = { desc = "Write and Quit" } },
{ keys = "W", cmd = ":wall<CR>:qa!<CR>", opts = { desc = "Write all and Force Quit" } }, { keys = "W", cmd = ":wall<CR>:qa!<CR>", opts = { desc = "Write all and Force Quit" } },
}, },
t = { -- +toggle t = { -- +toggle/test
{ keys = "f", cmd = ":NvimTreeToggle", opts = { desc = "Toggle File Explorer" } }, { keys = "f", cmd = ":NvimTreeToggle", opts = { desc = "Toggle File Explorer" } },
{ keys = "F", cmd = ":FormatToggle<CR>", opts = { desc = "Toggle autoformat-on-save" } }, { keys = "F", cmd = ":FormatToggle<CR>", opts = { desc = "Toggle autoformat-on-save" } },
{ keys = "t", cmd = ":FloatermToggle<CR>", opts = { desc = "toggle visibility of the float terminal" } }, { keys = "t", cmd = ":FloatermToggle<CR>", opts = { desc = "toggle visibility of the float terminal" } },
}, },
u = { -- +ui u = { -- +ui
{ keys = "i", cmd = ":Telescope colorscheme<CR>", opts = { desc = "Change colorscheme" } }, { keys = "i", cmd = ":Telescope colorscheme<CR>", opts = { desc = "Change colorscheme" } },
{ keys = " ", cmd = ":set list!", opts = { desc = "Toggle show all symbols" } },
}, },
w = { -- +window w = { -- +window
{ keys = "h", cmd = "<C-w>h", opts = { desc = "Left Window" } }, { keys = "h", cmd = "<C-w>h", opts = { desc = "Left Window" } },
{ keys = "n", cmd = "<C-w>j", opts = { desc = "Down Window" } }, { keys = "n", cmd = "<C-w>j", opts = { desc = "Down Window" } },
{ keys = "e", cmd = "<C-w>k", opts = { desc = "Up Window" } }, { keys = "e", cmd = "<C-w>k", opts = { desc = "Up Window" } },
{ keys = "i", cmd = "<C-w>l", opts = { desc = "Right Window" } }, { keys = "i", cmd = "<C-w>l", opts = { desc = "Right Window" } },
{ keys = "H", cmd = "<C-w>H", opts = { desc = "Move Window Left" } },
{ keys = "N", cmd = "<C-w>J", opts = { desc = "Move Window Down" } },
{ keys = "E", cmd = "<C-w>K", opts = { desc = "Move Window Up" } },
{ keys = "I", cmd = "<C-w>L", opts = { desc = "Move Window Right" } },
{ keys = "-", cmd = ":split<CR>", opts = { desc = "Split to down" } }, { keys = "-", cmd = ":split<CR>", opts = { desc = "Split to down" } },
{ keys = "|", cmd = ":vsplit<CR>", opts = { desc = "Split to right" } }, { keys = "|", cmd = ":vsplit<CR>", opts = { desc = "Split to right" } },
{ keys = "c", cmd = "<C-w>c", opts = { desc = "Close Window" } }, { keys = "/", cmd = ":vsplit<CR>", opts = { desc = "Split to right" } },
{ keys = "o", cmd = "<C-w>o", opts = { desc = "Close Other Windows" } }, { keys = "d", cmd = "<C-w>c", opts = { desc = "Close Window" } },
{ keys = "D", cmd = "<C-w>o", opts = { desc = "Close Other Windows" } },
{ keys = "r", cmd = "<C-w>r", opts = { desc = "Rotate Windows" } }, { keys = "r", cmd = "<C-w>r", opts = { desc = "Rotate Windows" } },
{ keys = "R", cmd = "<C-w>R", opts = { desc = "Reverse Rotate Windows" } }, { keys = "R", cmd = "<C-w>R", opts = { desc = "Reverse Rotate Windows" } },
{ keys = "t", cmd = "<C-w>T", opts = { desc = "Move Window to New Tab" } }, { keys = "t", cmd = "<C-w>T", opts = { desc = "Move Window to New Tab" } },
{ keys = "H", cmd = ":vertical resize -5<CR>", opts = { desc = "Decrease Window Height" } }, { keys = "]", cmd = ":resize +5<CR>", opts = { desc = "Increase Window Size" } },
{ keys = "N", cmd = ":resize +5<CR>", opts = { desc = "Increase Window Height" } }, { keys = "[", cmd = ":resize -5<CR>", opts = { desc = "Decrease Window Size" } },
{ keys = "E", cmd = ":vertical resize +5<CR>", opts = { desc = "Increase Window Width" } }, { keys = "M", cmd = ":resize<CR>:vertical resize<CR>", opts = { desc = "Maximize window size" } },
{ keys = "I", cmd = ":resize -5<CR>", opts = { desc = "Decrease Window Width" } },
}, },
} }

View file

@ -2,7 +2,7 @@ local M = {}
M.global = { M.global = {
{ mode = "n", keys = "<leader>E", cmd = ":NvimTreeToggle<CR>" }, { mode = "n", keys = "<leader>E", cmd = ":NvimTreeToggle<CR>" },
{ mode = "n", keys = "<A-0>", cmd = ":NvimTreeFocus<CR>" }, { mode = "n", keys = "<A-0>", cmd = ":NvimTreeFindFileToggle<CR>" },
} }
function M.plugin(api, opts) function M.plugin(api, opts)

View file

@ -28,3 +28,9 @@ end, {
desc = "Toggle autoformat-on-save (use ! for buffer-local)", desc = "Toggle autoformat-on-save (use ! for buffer-local)",
bang = true, bang = true,
}) })
vim.api.nvim_create_user_command("Reload", function()
vim.cmd("luafile ~/.config/nvim/init.lua")
end, {
desc = "Reload Neovim configuration",
})

View file

@ -0,0 +1,18 @@
vim.g.VM_mouse_mappings = 1
vim.g.VM_default_mappings = 0
vim.g.VM_custom_motions = {
-- https://github.com/mg979/vim-visual-multi/issues/93
h = "h",
n = "j",
e = "k",
i = "l",
j = "e",
}
vim.g.VM_maps = {
["Add Cursor Down"] = "<A-n>",
["Add Cursor Up"] = "<A-e>",
["i"] = "l",
["I"] = "L",
["n"] = "n",
}

View file

@ -25,4 +25,17 @@ return {
{ import = "plugins.mod.alpha-nvim" }, { import = "plugins.mod.alpha-nvim" },
{ import = "plugins.mod.winbar-nvim" }, { import = "plugins.mod.winbar-nvim" },
{ import = "plugins.mod.bufferline" }, { import = "plugins.mod.bufferline" },
{
"lewis6991/gitsigns.nvim",
config = function()
require("gitsigns").setup({
current_line_blame = true,
})
end,
},
{
"folke/todo-comments.nvim",
dependencies = { "nvim-lua/plenary.nvim" },
opts = {},
},
} }

View file

@ -0,0 +1,59 @@
return {
{
"folke/flash.nvim",
event = "VeryLazy",
---@type Flash.Config
opts = {},
-- stylua: ignore
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", function() require("flash").remote() end, desc = "Remote Flash" },
{ "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" },
},
},
{
"js0ny/vim-visual-multi-colemak-hnei",
-- "mg979/vim-visual-multi",
},
{
"echasnovski/mini.pairs",
version = false,
config = function()
require("mini.pairs").setup()
end,
},
{
"kylechui/nvim-surround",
version = "*", -- Use for stability; omit to use `main` branch for the latest features
event = "VeryLazy",
config = function()
require("nvim-surround").setup({
-- Configuration here, or leave empty to use defaults
})
end,
},
{
"MagicDuck/grug-far.nvim",
opts = { headerMaxWidth = 80 },
cmd = "GrugFar",
keys = {
{
"<leader>fF",
function()
local grug = require("grug-far")
local ext = vim.bo.buftype == "" and vim.fn.expand("%:e")
grug.open({
transient = true,
prefills = {
filesFilter = ext and ext ~= "" and "*." .. ext or nil,
},
})
end,
mode = { "n", "v" },
desc = "Search and Replace",
},
},
},
}

View file

@ -47,9 +47,23 @@ return {
end, end,
}, },
{ {
"lewis6991/gitsigns.nvim", "kdheepak/lazygit.nvim",
config = function() lazy = true,
require("gitsigns").setup() cmd = {
end, "LazyGit",
"LazyGitConfig",
"LazyGitCurrentFile",
"LazyGitFilter",
"LazyGitFilterCurrentFile",
},
-- optional for floating window border decoration
dependencies = {
"nvim-lua/plenary.nvim",
},
-- setting the keybinding for LazyGit with 'keys' is recommended in
-- order to load the plugin when the command is run for the first time
keys = {
{ "<leader>gg", "<cmd>LazyGit<cr>", desc = "LazyGit" },
},
}, },
} }

View file

@ -29,7 +29,7 @@ require("lazy").setup({
{ import = "plugins.completion" }, { import = "plugins.completion" },
{ import = "plugins.fileutils" }, { import = "plugins.fileutils" },
{ import = "plugins.lsp" }, { import = "plugins.lsp" },
{ import = "plugins.syntax" }, { import = "plugins.edit" },
{ import = "plugins.misc" }, { import = "plugins.misc" },
}, },
-- Configure any other settings here. See the documentation for more details. -- Configure any other settings here. See the documentation for more details.

View file

@ -41,29 +41,24 @@ return {
}) })
end, end,
}, },
{
"nvim-orgmode/orgmode",
event = "VeryLazy",
ft = { "org" },
config = function()
-- Setup orgmode
require("orgmode").setup({
org_agenda_files = "~/orgfiles/**/*",
org_default_notes_file = "~/orgfiles/refile.org",
})
-- NOTE: If you are using nvim-treesitter with ~ensure_installed = "all"~ option
-- add ~org~ to ignore_install
-- require('nvim-treesitter.configs').setup({
-- ensure_installed = 'all',
-- ignore_install = { 'org' },
-- })
end,
},
{ import = "plugins.mod.conform-nvim" }, { import = "plugins.mod.conform-nvim" },
{ "nvim-treesitter/nvim-treesitter-context" }, { "nvim-treesitter/nvim-treesitter-context" },
{ {
"NoahTheDuke/vim-just", "NoahTheDuke/vim-just",
ft = { "just" }, ft = { "just" },
}, },
{ import = "plugins.mod.trouble-nvim" },
{ import = "plugins.mod.nvim-treesitter" },
{
"folke/lazydev.nvim",
ft = "lua", -- only load on lua files
opts = {
library = {
-- See the configuration section for more details
-- Load luvit types when the `vim.uv` word is found
{ path = "${3rd}/luv/library", words = { "vim%.uv" } },
},
},
},
} }

View file

@ -4,6 +4,13 @@ return {
config = function() config = function()
require("bufferline").setup({ require("bufferline").setup({
options = { options = {
diagnostics = "nvim_lsp",
diagnostics_indicator = function(count, level, diagnostics_dict, context)
local icon = level:match("error") and "" or ""
return " " .. icon .. count
end,
show_buffer_icons = true,
numbers = "ordinal", -- 显示 buffer 序号 numbers = "ordinal", -- 显示 buffer 序号
close_command = "bdelete! %d", -- 关闭 buffer 的命令 close_command = "bdelete! %d", -- 关闭 buffer 的命令
right_mouse_command = "bdelete! %d", -- 右键关闭 right_mouse_command = "bdelete! %d", -- 右键关闭

View file

@ -1,236 +0,0 @@
-- Author: shadmansaleh
-- Credit: glepnir
local lualine = require("lualine")
-- Color table for highlights
-- stylua: ignore
local colors = {
bg = '#202328',
fg = '#bbc2cf',
yellow = '#ECBE7B',
cyan = '#008080',
darkblue = '#081633',
green = '#98be65',
orange = '#FF8800',
violet = '#a9a1e1',
magenta = '#c678dd',
blue = '#51afef',
red = '#ec5f67',
}
local conditions = {
buffer_not_empty = function()
return vim.fn.empty(vim.fn.expand("%:t")) ~= 1
end,
hide_in_width = function()
return vim.fn.winwidth(0) > 80
end,
check_git_workspace = function()
local filepath = vim.fn.expand("%:p:h")
local gitdir = vim.fn.finddir(".git", filepath .. ";")
return gitdir and #gitdir > 0 and #gitdir < #filepath
end,
}
-- Config
local config = {
options = {
disabled_filetypes = {
statusline = { "NvimTree", "alpha" },
},
-- Disable sections and component separators
component_separators = "",
section_separators = "",
theme = {
-- We are going to use lualine_c an lualine_x as left and
-- right section. Both are highlighted by c theme . So we
-- are just setting default looks o statusline
normal = { c = { fg = colors.fg, bg = colors.bg } },
inactive = { c = { fg = colors.fg, bg = colors.bg } },
},
},
sections = {
-- these are to remove the defaults
lualine_a = {},
lualine_b = {},
lualine_y = {},
lualine_z = {},
-- These will be filled later
lualine_c = {},
lualine_x = {},
},
inactive_sections = {
-- these are to remove the defaults
lualine_a = {},
lualine_b = {},
lualine_y = {},
lualine_z = {},
lualine_c = {},
lualine_x = {},
},
}
-- Inserts a component in lualine_c at left section
local function ins_left(component)
table.insert(config.sections.lualine_c, component)
end
-- Inserts a component in lualine_x at right section
local function ins_right(component)
table.insert(config.sections.lualine_x, component)
end
ins_left({
function()
return ""
end,
color = { fg = colors.blue }, -- Sets highlighting of component
padding = { left = 0, right = 1 }, -- We don't need space before this
})
ins_left({
-- mode component
function()
return ""
end,
color = function()
-- auto change color according to neovims mode
local mode_color = {
n = colors.red,
i = colors.green,
v = colors.blue,
[""] = colors.blue,
V = colors.blue,
c = colors.magenta,
no = colors.red,
s = colors.orange,
S = colors.orange,
[""] = colors.orange,
ic = colors.yellow,
R = colors.violet,
Rv = colors.violet,
cv = colors.red,
ce = colors.red,
r = colors.cyan,
rm = colors.cyan,
["r?"] = colors.cyan,
["!"] = colors.red,
t = colors.red,
}
return { fg = mode_color[vim.fn.mode()] }
end,
padding = { right = 1 },
})
-- ins_left {
-- -- filesize component
-- 'filesize',
-- cond = conditions.buffer_not_empty,
-- }
-- ins_left {
-- 'filename',
-- cond = conditions.buffer_not_empty,
-- color = { fg = colors.magenta, gui = 'bold' },
-- }
-- ins_left { 'location' }
ins_right({ "progress", color = { fg = colors.fg, gui = "bold" } })
ins_left({
"diagnostics",
sources = { "nvim_diagnostic" },
symbols = { error = "", warn = "", info = "" },
diagnostics_color = {
error = { fg = colors.red },
warn = { fg = colors.yellow },
info = { fg = colors.cyan },
},
})
ins_left({
function()
return vim.bo.filetype
end,
color = { fg = colors.blue, gui = "bold" },
})
ins_left({
function()
return vim.bo.shiftwidth .. " space"
end,
})
ins_left({
-- Lsp server name .
function()
local msg = "No Active Lsp"
local buf_ft = vim.api.nvim_get_option_value("filetype", { buf = 0 })
local clients = vim.lsp.get_clients()
if next(clients) == nil then
return msg
end
for _, client in ipairs(clients) do
local filetypes = client.config.filetypes
if filetypes and vim.fn.index(filetypes, buf_ft) ~= -1 then
return client.name
end
end
return msg
end,
icon = "",
color = { fg = "#ffffff", gui = "bold" },
})
-- Insert mid section. You can make any number of sections in neovim :)
-- for lualine it's any number greater then 2
ins_left({
function()
return "%="
end,
})
-- Add components to right sections
ins_right({
"o:encoding", -- option component same as &encoding in viml
fmt = string.upper, -- I'm not sure why it's upper case either ;)
cond = conditions.hide_in_width,
color = { fg = colors.green, gui = "bold" },
})
ins_right({
"fileformat",
fmt = string.upper,
icons_enabled = false, -- I think icons are cool but Eviline doesn't have them. sigh
color = { fg = colors.green, gui = "bold" },
})
ins_right({
"branch",
icon = "",
color = { fg = colors.violet, gui = "bold" },
})
ins_right({
"diff",
-- Is it me or the symbol for modified us really weird
symbols = { added = "", modified = "󰝤 ", removed = "" },
diff_color = {
added = { fg = colors.green },
modified = { fg = colors.orange },
removed = { fg = colors.red },
},
cond = conditions.hide_in_width,
})
ins_right({
function()
return ""
end,
color = { fg = colors.blue },
padding = { left = 1 },
})
-- Now don't forget to initialize lualine
lualine.setup(config)

View file

@ -0,0 +1,168 @@
local M = {}
local colors = require("config.colors")
local icons = require("config.icons")
local function diff_source()
local gitsigns = vim.b.gitsigns_status_dict
if gitsigns then
return {
added = gitsigns.added,
modified = gitsigns.changed,
removed = gitsigns.removed,
}
end
end
local conditions = {
buffer_not_empty = function()
return vim.fn.empty(vim.fn.expand("%:t")) ~= 1
end,
hide_in_width = function()
return vim.fn.winwidth(0) > 80
end,
check_git_workspace = function()
local filepath = vim.fn.expand("%:p:h")
local gitdir = vim.fn.finddir(".git", filepath .. ";")
return gitdir and #gitdir > 0 and #gitdir < #filepath
end,
}
local mode_color = {
n = colors.blue,
i = colors.green,
v = colors.magenta,
[""] = colors.magenta,
V = colors.magenta,
c = colors.magenta,
no = colors.red,
s = colors.orange,
S = colors.orange,
[""] = colors.orange,
ic = colors.yellow,
R = colors.violet,
Rv = colors.violet,
cv = colors.red,
ce = colors.red,
r = colors.cyan,
rm = colors.cyan,
["r?"] = colors.cyan,
["!"] = colors.red,
t = colors.red,
}
local mode_color_bg = function()
return { fg = colors.bg, bg = mode_color[vim.fn.mode()] }
end
-- local mode_color_fg = function()
-- return { fg = mode_color[vim.fn.mode()] }
-- end
M.mode = {
function()
return ""
end,
color = mode_color_bg,
}
M.git = {
"branch",
icon = icons.git.Branch,
color = { fg = colors.violet, gui = "bold" },
}
M.diagnostics = {
"diagnostics",
sources = { "nvim_diagnostic" },
symbols = {
error = icons.diagnostics.Error .. " ",
warn = icons.diagnostics.Warning .. " ",
info = icons.diagnostics.Information .. " ",
hint = icons.diagnostics.Hint .. " ",
},
}
M.lsp = {
-- Lsp server name .
function()
local msg = "LSP Inactive"
local buf_ft = vim.api.nvim_get_option_value("filetype", { buf = 0 })
local clients = vim.lsp.get_clients()
if next(clients) == nil then
return msg
end
for _, client in ipairs(clients) do
local filetypes = client.config.filetypes
if filetypes and vim.fn.index(filetypes, buf_ft) ~= -1 then
return client.name
end
end
return msg
end,
icon = icons.lsp,
color = { fg = colors.yellow, gui = "italic" },
}
M.filetype = {
function()
return vim.bo.filetype
end,
color = { fg = colors.blue, gui = "bold" },
}
M.eol = {
function()
return vim.bo.eol == true and icons.eol or ""
end,
color = { fg = colors.red },
}
M.command = {
"command",
color = { fg = colors.green, gui = "bold" },
}
M.encoding = {
"o:encoding",
color = { fg = colors.green, gui = "bold" },
}
M.indent = {
function()
local shiftwidth = vim.api.nvim_get_option_value("shiftwidth", { buf = 0 })
return icons.indent .. " " .. shiftwidth
end,
padding = 1,
}
-- M.diff = {
-- "diff",
-- -- Is it me or the symbol for modified us really weird
-- symbols = { added = " ", modified = "󰝤 ", removed = " " },
-- diff_color = {
-- added = { fg = colors.green },
-- modified = { fg = colors.orange },
-- removed = { fg = colors.red },
-- },
-- cond = conditions.hide_in_width,
-- }
M.diff = {
"diff",
source = diff_source,
-- symbols = { added = " ", modified = "󰝤 ", removed = " " },
symbols = {
added = icons.git.Add .. " ",
modified = icons.git.Change .. " ",
removed = icons.git.Delete .. " ",
},
padding = { left = 2, right = 1 },
diff_color = {
added = { fg = colors.green },
modified = { fg = colors.yellow },
removed = { fg = colors.red },
},
cond = nil,
}
M.progress = { "progress", color = mode_color_bg }
return M

View file

@ -0,0 +1,73 @@
local lualine = require("lualine")
-- Color table for highlights
local colors = require("config.colors")
local components = require("plugins.mod.lualine.components")
-- Config
local config = {
options = {
disabled_filetypes = {
statusline = { "NvimTree", "alpha" },
},
-- Disable sections and component separators
component_separators = "",
section_separators = "",
theme = {
-- We are going to use lualine_c an lualine_x as left and
-- right section. Both are highlighted by c theme . So we
-- are just setting default looks o statusline
normal = { c = { fg = colors.fg, bg = colors.bg } },
inactive = { c = { fg = colors.fg, bg = colors.bg } },
},
},
sections = {
-- these are to remove the defaults
lualine_a = {},
lualine_b = {},
lualine_y = {},
lualine_z = {},
-- These will be filled later
lualine_c = {},
lualine_x = {},
},
inactive_sections = {
-- these are to remove the defaults
lualine_a = {},
lualine_b = {},
lualine_y = {},
lualine_z = {},
lualine_c = {},
lualine_x = {},
},
}
-- Inserts a component in lualine_c at left section
local function ins_left(component)
table.insert(config.sections.lualine_c, component)
end
-- Inserts a component in lualine_x at right section
local function ins_right(component)
table.insert(config.sections.lualine_x, component)
end
--[[
VSCode Style:
Remote | Git Branch | Diagnostics | Command | | MID | | Line:Column | Indent | Encoding | EOL | File Type LSP | Notifications
--]]
ins_left(components.mode)
ins_left(components.diff)
ins_left(components.git)
ins_left(components.diagnostics)
ins_left(components.command)
ins_right(components.indent)
ins_right(components.encoding)
ins_right(components.eol)
ins_right(components.filetype)
ins_right(components.lsp)
ins_right(components.progress)
lualine.setup(config)

View file

@ -43,6 +43,7 @@ return {
{ name = "nvim_lsp" }, { name = "nvim_lsp" },
{ name = "luasnip" }, { name = "luasnip" },
{ name = "copilot" }, { name = "copilot" },
{ name = "lazydev", group_index = 0 },
}, { }, {
{ name = "buffer" }, { name = "buffer" },
{ name = "path" }, { name = "path" },

View file

@ -0,0 +1,37 @@
return {
"folke/trouble.nvim",
opts = {}, -- for default options, refer to the configuration section for custom setup.
cmd = "Trouble",
keys = {
{
"<leader>eE",
"<cmd>Trouble diagnostics toggle<cr>",
desc = "Diagnostics (Trouble)",
},
{
"<leader>ee",
"<cmd>Trouble diagnostics toggle filter.buf=0<cr>",
desc = "Buffer Diagnostics (Trouble)",
},
{
"<leader>es",
"<cmd>Trouble symbols toggle focus=false<cr>",
desc = "Symbols (Trouble)",
},
{
"<leader>el",
"<cmd>Trouble lsp toggle focus=false win.position=right<cr>",
desc = "LSP Definitions / references / ... (Trouble)",
},
{
"<leader>eL",
"<cmd>Trouble loclist toggle<cr>",
desc = "Location List (Trouble)",
},
{
"<leader>ef",
"<cmd>Trouble qflist toggle<cr>",
desc = "Quickfix List (Trouble)",
},
},
}

View file

@ -7,7 +7,7 @@ return {
show_file_path = true, show_file_path = true,
show_symbols = true, show_symbols = true,
colors = { colors = {
path = "#9c1d91", path = "",
file_name = "", file_name = "",
symbols = "", symbols = "",
}, },
@ -31,6 +31,7 @@ return {
"spectre_panel", "spectre_panel",
"toggleterm", "toggleterm",
"qf", "qf",
"floaterm",
}, },
}) })
end, end,

View file

@ -1,10 +0,0 @@
return {
{ import = "plugins.mod.nvim-treesitter" },
{
"echasnovski/mini.pairs",
version = false,
config = function()
require("mini.pairs").setup()
end,
},
}

View file

@ -1,4 +0,0 @@
(((
This is a playground file.
{(1 + 2) * 3}
)))

View file

@ -13,8 +13,11 @@ function Invoke-Completion {
} }
'git' { Import-Module Posh-Git } 'git' { Import-Module Posh-Git }
'hugo' { hugo completion powershell | Out-String | Invoke-Expression } 'hugo' { hugo completion powershell | Out-String | Invoke-Expression }
'just' { just --completions powershell | Out-String | Invoke-Expression }
'pip' { pip completion --powershell | Out-String | Invoke-Expression } 'pip' { pip completion --powershell | Out-String | Invoke-Expression }
'pixi' { pixi completion --shell powershell | Out-String | Invoke-Expression }
'rg' { rg --generate complete-powershell | Out-String | Invoke-Expression } 'rg' { rg --generate complete-powershell | Out-String | Invoke-Expression }
'rustup' { rustup completions powershell rustup | Out-String | Invoke-Expression }
'uv' { uv generate-shell-completion powershell | Out-String | Invoke-Expression } 'uv' { uv generate-shell-completion powershell | Out-String | Invoke-Expression }
'wezterm' { wezterm shell-completion --shell power-shell | Out-String | Invoke-Expression } 'wezterm' { wezterm shell-completion --shell power-shell | Out-String | Invoke-Expression }
'winget' { 'winget' {
@ -36,7 +39,12 @@ Set-Alias "icmp" "Invoke-Completion"
Register-ArgumentCompleter -CommandName Invoke-Completion -ParameterName 'command' -ScriptBlock { Register-ArgumentCompleter -CommandName Invoke-Completion -ParameterName 'command' -ScriptBlock {
param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameter) param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameter)
$cmds = @('docker', 'dotnet', 'git', 'hugo', 'pip', 'rg', 'uv', 'wezterm', 'winget') $cmds = @('docker', 'dotnet', 'git', 'hugo', 'just', 'pip', 'pixi', 'rg', 'rustup', 'uv', 'wezterm', 'winget')
$cmds | Where-Object { $_ -like "$wordToComplete*" } $cmds | Where-Object { $_ -like "$wordToComplete*" }
} }
if ($isWindows) {
Invoke-Completion winget # Enable winget tab completion by default
}

View file

@ -26,6 +26,5 @@ Set-PSReadLineKeyHandler -Chord "Ctrl+e" -Function EndOfLine
Set-PSReadLineKeyHandler -Chord "Ctrl+p" -Function PreviousHistory Set-PSReadLineKeyHandler -Chord "Ctrl+p" -Function PreviousHistory
Set-PSReadLineKeyHandler -Chord "Ctrl+p" -Function PreviousHistory Set-PSReadLineKeyHandler -Chord "Ctrl+p" -Function PreviousHistory
Set-PSReadLineKeyHandler -Chord "Ctrl+n" -Function NextHistory Set-PSReadLineKeyHandler -Chord "Ctrl+n" -Function NextHistory
## Use <Tab> to Invoke MenuComplete ## Use <Tab> to Invoke MenuComplete
Set-PSReadLineKeyHandler -Key Tab -Function MenuComplete Set-PSReadLineKeyHandler -Key Tab -Function MenuComplete

View file

@ -7,3 +7,7 @@ if ($IsWindows) {
# WinGet # WinGet
Import-Module -Name Microsoft.WinGet.CommandNotFound #f45873b3-b655-43a6-b217-97c00aa0db58 Import-Module -Name Microsoft.WinGet.CommandNotFound #f45873b3-b655-43a6-b217-97c00aa0db58
} }
Import-Module -Name PSFzf
Set-PSReadLineKeyHandler -Chord "Ctrl-r" -ScriptBlock { Invoke-FuzzyHistory }

View file

@ -2,6 +2,50 @@
# Date: 2024-12-01 # Date: 2024-12-01
# Author: js0ny # Author: js0ny
# Use starship to set prompt # Use starship to set prompt
$ENV:STARSHIP_CONFIG = Join-Path $DOTFILES "tools" "starship" "starship_pwsh.toml"
Invoke-Expression (&starship init powershell) Invoke-Expression (&starship init powershell)
Import-Module Catppuccin
$Flavor = $Catppuccin['Mocha']
# The following colors are used by PowerShell's formatting
# Again PS 7.2+ only
$PSStyle.Formatting.Debug = $Flavor.Sky.Foreground()
$PSStyle.Formatting.Error = $Flavor.Red.Foreground()
$PSStyle.Formatting.ErrorAccent = $Flavor.Blue.Foreground()
$PSStyle.Formatting.FormatAccent = $Flavor.Teal.Foreground()
$PSStyle.Formatting.TableHeader = $Flavor.Rosewater.Foreground()
$PSStyle.Formatting.Verbose = $Flavor.Yellow.Foreground()
$PSStyle.Formatting.Warning = $Flavor.Peach.Foreground()
$Colors = @{
# Largely based on the Code Editor style guide
# Emphasis, ListPrediction and ListPredictionSelected are inspired by the Catppuccin fzf theme
# Powershell colours
Emphasis = $Flavor.Red.Foreground()
Selection = $Flavor.Surface0.Background()
# PSReadLine prediction colours
InlinePrediction = $Flavor.Overlay0.Foreground()
ListPrediction = $Flavor.Mauve.Foreground()
ListPredictionSelected = $Flavor.Surface0.Background()
# Syntax highlighting
Command = $Flavor.Blue.Foreground()
Comment = $Flavor.Overlay0.Foreground()
Default = $Flavor.Text.Foreground()
Error = $Flavor.Red.Foreground()
Keyword = $Flavor.Mauve.Foreground()
Member = $Flavor.Rosewater.Foreground()
Number = $Flavor.Peach.Foreground()
Operator = $Flavor.Sky.Foreground()
Parameter = $Flavor.Pink.Foreground()
String = $Flavor.Green.Foreground()
Type = $Flavor.Yellow.Foreground()
Variable = $Flavor.Lavender.Foreground()
}
# Set the colours
Set-PSReadLineOption -Colors $Colors

View file

@ -1,144 +0,0 @@
format = """
[](#9A348E)\
$os\
$username\
[](bg:#DA627D fg:#9A348E)\
$directory\
[](fg:#DA627D bg:#FCA17D)\
$git_branch\
$git_status\
[](fg:#FCA17D bg:#86BBD8)\
$c\
$elixir\
$elm\
$golang\
$gradle\
$haskell\
$java\
$julia\
$nodejs\
$nim\
$rust\
$scala\
[](fg:#86BBD8 bg:#06969A)\
$docker_context\
[](fg:#06969A bg:#33658A)\
$time\
[ ](fg:#33658A)\
"""
# Disable the blank line at the start of the prompt
# add_newline = false
# You can also replace your username with a neat symbol like  or disable this
# and use the os module below
[username]
show_always = true
style_user = "bg:#9A348E"
style_root = "bg:#9A348E"
format = '[$user ]($style)'
disabled = false
# An alternative to the username module which displays a symbol that
# represents the current operating system
[os]
style = "bg:#9A348E"
disabled = true # Disabled by default
[directory]
style = "bg:#DA627D"
format = "[ $path ]($style)"
truncation_length = 3
truncation_symbol = "…/"
# Here is how you can shorten some long paths by text replacement
# similar to mapped_locations in Oh My Posh:
[directory.substitutions]
"Documents" = "󰈙 "
"Downloads" = " "
"Music" = " "
"Pictures" = " "
# Keep in mind that the order matters. For example:
# "Important Documents" = " 󰈙 "
# will not be replaced, because "Documents" was already substituted before.
# So either put "Important Documents" before "Documents" or use the substituted version:
# "Important 󰈙 " = " 󰈙 "
[c]
symbol = " "
style = "bg:#86BBD8"
format = '[ $symbol ($version) ]($style)'
[docker_context]
symbol = " "
style = "bg:#06969A"
format = '[ $symbol $context ]($style)'
[elixir]
symbol = " "
style = "bg:#86BBD8"
format = '[ $symbol ($version) ]($style)'
[elm]
symbol = " "
style = "bg:#86BBD8"
format = '[ $symbol ($version) ]($style)'
[git_branch]
symbol = ""
style = "bg:#FCA17D"
format = '[ $symbol $branch ]($style)'
[git_status]
style = "bg:#FCA17D"
format = '[$all_status$ahead_behind ]($style)'
[golang]
symbol = " "
style = "bg:#86BBD8"
format = '[ $symbol ($version) ]($style)'
[gradle]
style = "bg:#86BBD8"
format = '[ $symbol ($version) ]($style)'
[haskell]
symbol = " "
style = "bg:#86BBD8"
format = '[ $symbol ($version) ]($style)'
[java]
symbol = " "
style = "bg:#86BBD8"
format = '[ $symbol ($version) ]($style)'
[julia]
symbol = " "
style = "bg:#86BBD8"
format = '[ $symbol ($version) ]($style)'
[nodejs]
symbol = ""
style = "bg:#86BBD8"
format = '[ $symbol ($version) ]($style)'
[nim]
symbol = "󰆥 "
style = "bg:#86BBD8"
format = '[ $symbol ($version) ]($style)'
[rust]
symbol = ""
style = "bg:#86BBD8"
format = '[ $symbol ($version) ]($style)'
[scala]
symbol = " "
style = "bg:#86BBD8"
format = '[ $symbol ($version) ]($style)'
[time]
disabled = false
time_format = "%R" # Hour:Minute Format
style = "bg:#33658A"
format = '[ ♥ $time ]($style)'

View file

@ -1,210 +0,0 @@
# starship.toml
# ~/.config/starship.toml
format = '''$os$time $username @ $hostname $directory $all$character'''
continuation_prompt = "[ cr >](bold cyan) "
add_newline = true
[time]
disabled = false
format = '[\[$time\]](purple)'
time_format = '%H:%M'
[username]
format = '[$user](bold)'
show_always = true
[hostname]
ssh_only = false
ssh_symbol = '󰞉 '
# Currently vimcmd_symbol is not supported in Nu, define in `config.nu` instead
[character]
success_symbol = ""
error_symbol = ""
vimcmd_symbol = ""
[directory]
truncation_length = 2
truncate_to_repo = true
read_only = " 󰌾"
style ="bold cyan"
truncation_symbol = ".../"
[directory.substitutions]
"~/Documents" = "󰈙 "
"~/Downloads" = " "
"~/Music" = " "
"~/Pictures" = " "
"Source" = " "
"src" = " "
[aws]
symbol = " "
[buf]
symbol = " "
[c]
symbol = " "
[conda]
symbol = " "
[crystal]
symbol = " "
[dart]
symbol = " "
[docker_context]
symbol = " "
[elixir]
symbol = " "
[elm]
symbol = " "
[fennel]
symbol = " "
[fossil_branch]
symbol = " "
[git_branch]
symbol = " "
[git_commit]
tag_symbol = '  '
[golang]
symbol = " "
[guix_shell]
symbol = " "
[haskell]
symbol = " "
[haxe]
symbol = " "
[hg_branch]
symbol = " "
[java]
symbol = " "
[julia]
symbol = " "
[kotlin]
symbol = " "
[lua]
symbol = " "
[memory_usage]
symbol = "󰍛 "
[meson]
symbol = "󰔷 "
[nim]
symbol = "󰆥 "
[nix_shell]
symbol = " "
[nodejs]
symbol = " "
[ocaml]
symbol = " "
[os]
disabled = false
[os.symbols]
Alpaquita = " "
Alpine = " "
AlmaLinux = " "
Amazon = " "
Android = " "
Arch = " "
Artix = " "
CentOS = " "
Debian = " "
DragonFly = " "
Emscripten = " "
EndeavourOS = " "
Fedora = " "
FreeBSD = " "
Garuda = "󰛓 "
Gentoo = " "
HardenedBSD = "󰞌 "
Illumos = "󰈸 "
Kali = " "
Linux = " "
Mabox = " "
Macos = " "
Manjaro = " "
Mariner = " "
MidnightBSD = " "
Mint = " "
NetBSD = " "
NixOS = " "
OpenBSD = "󰈺 "
openSUSE = " "
OracleLinux = "󰌷 "
Pop = " "
Raspbian = " "
Redhat = " "
RedHatEnterprise = " "
RockyLinux = " "
Redox = "󰀘 "
Solus = "󰠳 "
SUSE = " "
Ubuntu = " "
Unknown = " "
Void = " "
Windows = "󰍲 "
[package]
symbol = "󰏗 "
[perl]
symbol = " "
[php]
symbol = " "
[pijul_channel]
symbol = " "
[python]
symbol = " "
[rlang]
symbol = "󰟔 "
[ruby]
symbol = " "
[rust]
symbol = "󱘗 "
[scala]
symbol = " "
[swift]
symbol = " "
[zig]
symbol = " "
[gradle]
symbol = " "

View file

@ -1,208 +0,0 @@
# starship.toml
# ~/.config/starship.toml
format = '''$os$time $username @ $hostname $directory $all$character'''
continuation_prompt = "[CR > ](bold cyan) "
add_newline = true
[time]
disabled = false
format = '[\[$time\]](purple)'
time_format = '%H:%M'
[username]
format = '[$user](bold)'
show_always = true
[hostname]
ssh_only = false
ssh_symbol = '󰞉 '
[character]
success_symbol = "[PS > ](bold green)"
error_symbol = "[PS > ](bold red)"
vimcmd_symbol = "[Vi < ](bold green)"
[directory]
truncation_length = 2
truncate_to_repo = true
read_only = " 󰌾"
style ="bold cyan"
truncation_symbol = ".../"
[directory.substitutions]
"~/Documents" = "󰈙 "
"~/Downloads" = " "
"~/Music" = " "
"~/Pictures" = " "
"Source" = " "
"src" = " "
[aws]
symbol = " "
[buf]
symbol = " "
[c]
symbol = " "
[conda]
symbol = " "
[crystal]
symbol = " "
[dart]
symbol = " "
[docker_context]
symbol = " "
[elixir]
symbol = " "
[elm]
symbol = " "
[fennel]
symbol = " "
[fossil_branch]
symbol = " "
[git_branch]
symbol = " "
[git_commit]
tag_symbol = '  '
[golang]
symbol = " "
[guix_shell]
symbol = " "
[haskell]
symbol = " "
[haxe]
symbol = " "
[hg_branch]
symbol = " "
[java]
symbol = " "
[julia]
symbol = " "
[kotlin]
symbol = " "
[lua]
symbol = " "
[memory_usage]
symbol = "󰍛 "
[meson]
symbol = "󰔷 "
[nim]
symbol = "󰆥 "
[nix_shell]
symbol = " "
[nodejs]
symbol = " "
[ocaml]
symbol = " "
[os]
disabled = false
[os.symbols]
Alpaquita = " "
Alpine = " "
AlmaLinux = " "
Amazon = " "
Android = " "
Arch = " "
Artix = " "
CentOS = " "
Debian = " "
DragonFly = " "
Emscripten = " "
EndeavourOS = " "
Fedora = " "
FreeBSD = " "
Garuda = "󰛓 "
Gentoo = " "
HardenedBSD = "󰞌 "
Illumos = "󰈸 "
Kali = " "
Linux = " "
Mabox = " "
Macos = " "
Manjaro = " "
Mariner = " "
MidnightBSD = " "
Mint = " "
NetBSD = " "
NixOS = " "
OpenBSD = "󰈺 "
openSUSE = " "
OracleLinux = "󰌷 "
Pop = " "
Raspbian = " "
Redhat = " "
RedHatEnterprise = " "
RockyLinux = " "
Redox = "󰀘 "
Solus = "󰠳 "
SUSE = " "
Ubuntu = " "
Unknown = " "
Void = " "
Windows = "󰍲 "
[package]
symbol = "󰏗 "
[perl]
symbol = " "
[php]
symbol = " "
[pijul_channel]
symbol = " "
[python]
symbol = " "
[rlang]
symbol = "󰟔 "
[ruby]
symbol = " "
[rust]
symbol = "󱘗 "
[scala]
symbol = " "
[swift]
symbol = " "
[zig]
symbol = " "
[gradle]
symbol = " "

View file

@ -1,209 +0,0 @@
# starship.toml
# ~/.config/starship.toml
format = '''$os$time $username @ $hostname $directory $all$character'''
continuation_prompt = "[r % ](bold cyan) "
add_newline = true
[time]
disabled = false
format = '[\[$time\]](purple)'
time_format = '%H:%M'
[username]
format = '[$user](bold)'
show_always = true
[hostname]
ssh_only = false
ssh_symbol = '󰞉 '
[character]
success_symbol = "[z % ](bold green)"
error_symbol = "[z % ](bold red)"
vimcmd_symbol = "[v ! ](bold green)"
[directory]
truncation_length = 2
truncate_to_repo = true
read_only = " 󰌾"
style ="bold cyan"
truncation_symbol = ":"
fish_style_pwd_dir_length = 1
[directory.substitutions]
"~/Documents" = "󰈙 "
"~/Downloads" = " "
"~/Music" = " "
"~/Pictures" = " "
"Source" = " "
"src" = " "
[aws]
symbol = " "
[buf]
symbol = " "
[c]
symbol = " "
[conda]
symbol = " "
[crystal]
symbol = " "
[dart]
symbol = " "
[docker_context]
symbol = " "
[elixir]
symbol = " "
[elm]
symbol = " "
[fennel]
symbol = " "
[fossil_branch]
symbol = " "
[git_branch]
symbol = " "
[git_commit]
tag_symbol = '  '
[golang]
symbol = " "
[guix_shell]
symbol = " "
[haskell]
symbol = " "
[haxe]
symbol = " "
[hg_branch]
symbol = " "
[java]
symbol = " "
[julia]
symbol = " "
[kotlin]
symbol = " "
[lua]
symbol = " "
[memory_usage]
symbol = "󰍛 "
[meson]
symbol = "󰔷 "
[nim]
symbol = "󰆥 "
[nix_shell]
symbol = " "
[nodejs]
symbol = " "
[ocaml]
symbol = " "
[os]
disabled = false
[os.symbols]
Alpaquita = " "
Alpine = " "
AlmaLinux = " "
Amazon = " "
Android = " "
Arch = " "
Artix = " "
CentOS = " "
Debian = " "
DragonFly = " "
Emscripten = " "
EndeavourOS = " "
Fedora = " "
FreeBSD = " "
Garuda = "󰛓 "
Gentoo = " "
HardenedBSD = "󰞌 "
Illumos = "󰈸 "
Kali = " "
Linux = " "
Mabox = " "
Macos = " "
Manjaro = " "
Mariner = " "
MidnightBSD = " "
Mint = " "
NetBSD = " "
NixOS = " "
OpenBSD = "󰈺 "
openSUSE = " "
OracleLinux = "󰌷 "
Pop = " "
Raspbian = " "
Redhat = " "
RedHatEnterprise = " "
RockyLinux = " "
Redox = "󰀘 "
Solus = "󰠳 "
SUSE = " "
Ubuntu = " "
Unknown = " "
Void = " "
Windows = "󰍲 "
[package]
symbol = "󰏗 "
[perl]
symbol = " "
[php]
symbol = " "
[pijul_channel]
symbol = " "
[python]
symbol = " "
[rlang]
symbol = "󰟔 "
[ruby]
symbol = " "
[rust]
symbol = "󱘗 "
[scala]
symbol = " "
[swift]
symbol = " "
[zig]
symbol = " "
[gradle]
symbol = " "

File diff suppressed because it is too large Load diff

View file

@ -52,6 +52,10 @@ noremap gpd editor.action.peekDefinition
noremap gt editor.action.goToTypeDefinition noremap gt editor.action.goToTypeDefinition
noremap gpt editor.action.peekTypeDefinition noremap gpt editor.action.peekTypeDefinition
noremap gh editor.action.showDefinitionPreviewHover noremap gh editor.action.showDefinitionPreviewHover
noremap gr editor.action.goToReferences
noremap gpr editor.action.referenceSearch.trigger
noremap zR editor.foldAll
noremap <leader><leader> workbench.action.quickOpen noremap <leader><leader> workbench.action.quickOpen
noremap <leader>/ workbench.action.quickTextSearch noremap <leader>/ workbench.action.quickTextSearch

View file

@ -4,6 +4,9 @@
" And go to vscode vim setting: " And go to vscode vim setting:
"vim.vimrc.path": "$HOME/.config/vscode/vscode.vimrc", "vim.vimrc.path": "$HOME/.config/vscode/vscode.vimrc",
" For all available options see
" https://github.com/VSCodeVim/Vim/blob/d41e286e9238b004f02b425d082d3b4181d83368/src/configuration/vimrc.ts#L120-L407
" Use VSpaceCode instead of <leader> " Use VSpaceCode instead of <leader>
noremap <space> vspacecode.space noremap <space> vspacecode.space
@ -34,18 +37,8 @@ noremap J E
" Y to yank to end of line " Y to yank to end of line
noremap Y y$ noremap Y y$
" Define in settings.json, since this will remap <esc> under visual mode nnoremap <esc> :nohlsearch<CR>
" noremap <esc> :nohlsearch<CR>
" 分词版本的w和b支持中文需要插件
" 为了保证递归解析,而不是打断,使用 `nmap` 而不是 `nnoremap`
" Comment if you don't use cjk or the plugin
nmap w cjkWordHandler.cursorWordEndRight
nmap b cjkWordHandler.cursorWordStartLeft
" keep selection after indent (define in settings.json)
" voremap < <gv
" voremap > >gv
" lsp " lsp
noremap gi editor.action.goToImplementation noremap gi editor.action.goToImplementation
@ -55,3 +48,17 @@ noremap gpd editor.action.peekDefinition
noremap gt editor.action.goToTypeDefinition noremap gt editor.action.goToTypeDefinition
noremap gpt editor.action.peekTypeDefinition noremap gpt editor.action.peekTypeDefinition
noremap gh editor.action.showDefinitionPreviewHover noremap gh editor.action.showDefinitionPreviewHover
noremap gr editor.action.goToReferences
noremap gpr editor.action.referenceSearch.trigger
noremap zR editor.foldAll
" keep selection after indent (define in settings.json)
vnoremap < editor.action.outdentLines
vnoremap > editor.action.indentLines
" 分词版本的w和b支持中文需要插件
" 为了保证递归解析,而不是打断,使用 `nmap` 而不是 `nnoremap`
" Comment if you don't use cjk or the plugin
nmap w cjkWordHandler.cursorWordEndRight
nmap b cjkWordHandler.cursorWordStartLeft

View file

@ -65,9 +65,9 @@ local os_type = detect_os()
config.max_fps = 120 config.max_fps = 120
config.font = wezterm.font({ config.font = wezterm.font({
family = "CaskaydiaCove Nerd Font", family = "JetBrainsMono Nerd Font",
}) })
config.color_scheme = "Catppuccin Frappe" config.color_scheme = "Catppuccin Mocha"
config.font_size = 12.0 config.font_size = 12.0
config.front_end = "WebGpu" config.front_end = "WebGpu"
config.webgpu_power_preference = "HighPerformance" config.webgpu_power_preference = "HighPerformance"
@ -209,8 +209,7 @@ config.mouse_bindings = {
--#endregion --#endregion
--#region Environment --#region Environment
config.set_environment_variables = { config.set_environment_variables = {}
}
--#endregion --#endregion
--#region Launching --#region Launching

View file

@ -0,0 +1,750 @@
[manager]
cwd = { fg = "#94e2d5" }
hovered = { fg = "#1e1e2e", bg = "#b4befe" }
preview_hovered = { fg = "#1e1e2e", bg = "#cdd6f4" }
find_keyword = { fg = "#f9e2af", italic = true }
find_position = { fg = "#f5c2e7", bg = "reset", italic = true }
marker_copied = { fg = "#a6e3a1", bg = "#a6e3a1" }
marker_cut = { fg = "#f38ba8", bg = "#f38ba8" }
marker_marked = { fg = "#94e2d5", bg = "#94e2d5" }
marker_selected = { fg = "#b4befe", bg = "#b4befe" }
tab_active = { fg = "#1e1e2e", bg = "#cdd6f4" }
tab_inactive = { fg = "#cdd6f4", bg = "#45475a" }
tab_width = 1
count_copied = { fg = "#1e1e2e", bg = "#a6e3a1" }
count_cut = { fg = "#1e1e2e", bg = "#f38ba8" }
count_selected = { fg = "#1e1e2e", bg = "#b4befe" }
border_symbol = "│"
border_style = { fg = "#7f849c" }
syntect_theme = "~/.config/yazi/Catppuccin-mocha.tmTheme"
[mode]
normal_main = { fg = "#1e1e2e", bg = "#b4befe", bold = true }
normal_alt = { fg = "#b4befe", bg = "#313244"}
select_main = { fg = "#1e1e2e", bg = "#a6e3a1", bold = true }
select_alt = { fg = "#a6e3a1", bg = "#313244"}
unset_main = { fg = "#1e1e2e", bg = "#f2cdcd", bold = true }
unset_alt = { fg = "#f2cdcd", bg = "#313244"}
[status]
separator_open = ""
separator_close = ""
progress_label = { fg = "#ffffff", bold = true }
progress_normal = { fg = "#89b4fa", bg = "#45475a" }
progress_error = { fg = "#f38ba8", bg = "#45475a" }
perm_type = { fg = "#89b4fa" }
perm_read = { fg = "#f9e2af" }
perm_write = { fg = "#f38ba8" }
perm_exec = { fg = "#a6e3a1" }
perm_sep = { fg = "#7f849c" }
[input]
border = { fg = "#b4befe" }
title = {}
value = {}
selected = { reversed = true }
[pick]
border = { fg = "#b4befe" }
active = { fg = "#f5c2e7" }
inactive = {}
[confirm]
border = { fg = "#b4befe" }
title = { fg = "#b4befe" }
content = {}
list = {}
btn_yes = { reversed = true }
btn_no = {}
[completion]
border = { fg = "#b4befe" }
[tasks]
border = { fg = "#b4befe" }
title = {}
hovered = { underline = true }
[which]
mask = { bg = "#313244" }
cand = { fg = "#94e2d5" }
rest = { fg = "#9399b2" }
desc = { fg = "#f5c2e7" }
separator = "  "
separator_style = { fg = "#585b70" }
[help]
on = { fg = "#94e2d5" }
run = { fg = "#f5c2e7" }
desc = { fg = "#9399b2" }
hovered = { bg = "#585b70", bold = true }
footer = { fg = "#cdd6f4", bg = "#45475a" }
[notify]
title_info = { fg = "#94e2d5" }
title_warn = { fg = "#f9e2af" }
title_error = { fg = "#f38ba8" }
[filetype]
rules = [
# Media
{ mime = "image/*", fg = "#94e2d5" },
{ mime = "{audio,video}/*", fg = "#f9e2af" },
# Archives
{ mime = "application/*zip", fg = "#f5c2e7" },
{ mime = "application/x-{tar,bzip*,7z-compressed,xz,rar}", fg = "#f5c2e7" },
# Documents
{ mime = "application/{pdf,doc,rtf}", fg = "#a6e3a1" },
# Fallback
{ name = "*", fg = "#cdd6f4" },
{ name = "*/", fg = "#b4befe" }
]
[icon]
files = [
{ name = "kritadisplayrc", text = "", fg = "#cba6f7" },
{ name = ".gtkrc-2.0", text = "", fg = "#f5e0dc" },
{ name = "bspwmrc", text = "", fg = "#313244" },
{ name = "webpack", text = "󰜫", fg = "#74c7ec" },
{ name = "tsconfig.json", text = "", fg = "#74c7ec" },
{ name = ".vimrc", text = "", fg = "#a6e3a1" },
{ name = "gemfile$", text = "", fg = "#313244" },
{ name = "xmobarrc", text = "", fg = "#f38ba8" },
{ name = "avif", text = "", fg = "#7f849c" },
{ name = "fp-info-cache", text = "", fg = "#f5e0dc" },
{ name = ".zshrc", text = "", fg = "#a6e3a1" },
{ name = "robots.txt", text = "󰚩", fg = "#6c7086" },
{ name = "dockerfile", text = "󰡨", fg = "#89b4fa" },
{ name = ".git-blame-ignore-revs", text = "", fg = "#fab387" },
{ name = ".nvmrc", text = "", fg = "#a6e3a1" },
{ name = "hyprpaper.conf", text = "", fg = "#74c7ec" },
{ name = ".prettierignore", text = "", fg = "#89b4fa" },
{ name = "rakefile", text = "", fg = "#313244" },
{ name = "code_of_conduct", text = "", fg = "#f38ba8" },
{ name = "cmakelists.txt", text = "", fg = "#cdd6f4" },
{ name = ".env", text = "", fg = "#f9e2af" },
{ name = "copying.lesser", text = "", fg = "#f9e2af" },
{ name = "readme", text = "󰂺", fg = "#f5e0dc" },
{ name = "settings.gradle", text = "", fg = "#585b70" },
{ name = "gruntfile.coffee", text = "", fg = "#fab387" },
{ name = ".eslintignore", text = "", fg = "#585b70" },
{ name = "kalgebrarc", text = "", fg = "#89b4fa" },
{ name = "kdenliverc", text = "", fg = "#89b4fa" },
{ name = ".prettierrc.cjs", text = "", fg = "#89b4fa" },
{ name = "cantorrc", text = "", fg = "#89b4fa" },
{ name = "rmd", text = "", fg = "#74c7ec" },
{ name = "vagrantfile$", text = "", fg = "#6c7086" },
{ name = ".Xauthority", text = "", fg = "#fab387" },
{ name = "prettier.config.ts", text = "", fg = "#89b4fa" },
{ name = "node_modules", text = "", fg = "#f38ba8" },
{ name = ".prettierrc.toml", text = "", fg = "#89b4fa" },
{ name = "build.zig.zon", text = "", fg = "#fab387" },
{ name = ".ds_store", text = "", fg = "#45475a" },
{ name = "PKGBUILD", text = "", fg = "#89b4fa" },
{ name = ".prettierrc", text = "", fg = "#89b4fa" },
{ name = ".bash_profile", text = "", fg = "#a6e3a1" },
{ name = ".npmignore", text = "", fg = "#f38ba8" },
{ name = ".mailmap", text = "󰊢", fg = "#fab387" },
{ name = ".codespellrc", text = "󰓆", fg = "#a6e3a1" },
{ name = "svelte.config.js", text = "", fg = "#fab387" },
{ name = "eslint.config.ts", text = "", fg = "#585b70" },
{ name = "config", text = "", fg = "#7f849c" },
{ name = ".gitlab-ci.yml", text = "", fg = "#fab387" },
{ name = ".gitconfig", text = "", fg = "#fab387" },
{ name = "_gvimrc", text = "", fg = "#a6e3a1" },
{ name = ".xinitrc", text = "", fg = "#fab387" },
{ name = "checkhealth", text = "󰓙", fg = "#89b4fa" },
{ name = "sxhkdrc", text = "", fg = "#313244" },
{ name = ".bashrc", text = "", fg = "#a6e3a1" },
{ name = "tailwind.config.mjs", text = "󱏿", fg = "#74c7ec" },
{ name = "ext_typoscript_setup.txt", text = "", fg = "#fab387" },
{ name = "commitlint.config.ts", text = "󰜘", fg = "#94e2d5" },
{ name = "py.typed", text = "", fg = "#f9e2af" },
{ name = ".nanorc", text = "", fg = "#313244" },
{ name = "commit_editmsg", text = "", fg = "#fab387" },
{ name = ".luaurc", text = "", fg = "#89b4fa" },
{ name = "fp-lib-table", text = "", fg = "#f5e0dc" },
{ name = ".editorconfig", text = "", fg = "#f5e0dc" },
{ name = "justfile", text = "", fg = "#7f849c" },
{ name = "kdeglobals", text = "", fg = "#89b4fa" },
{ name = "license.md", text = "", fg = "#f9e2af" },
{ name = ".clang-format", text = "", fg = "#7f849c" },
{ name = "docker-compose.yaml", text = "󰡨", fg = "#89b4fa" },
{ name = "copying", text = "", fg = "#f9e2af" },
{ name = "go.mod", text = "", fg = "#74c7ec" },
{ name = "lxqt.conf", text = "", fg = "#89b4fa" },
{ name = "brewfile", text = "", fg = "#313244" },
{ name = "gulpfile.coffee", text = "", fg = "#f38ba8" },
{ name = ".dockerignore", text = "󰡨", fg = "#89b4fa" },
{ name = ".settings.json", text = "", fg = "#6c7086" },
{ name = "tailwind.config.js", text = "󱏿", fg = "#74c7ec" },
{ name = ".clang-tidy", text = "", fg = "#7f849c" },
{ name = ".gvimrc", text = "", fg = "#a6e3a1" },
{ name = "nuxt.config.cjs", text = "󱄆", fg = "#a6e3a1" },
{ name = "xsettingsd.conf", text = "", fg = "#fab387" },
{ name = "nuxt.config.js", text = "󱄆", fg = "#a6e3a1" },
{ name = "eslint.config.cjs", text = "", fg = "#585b70" },
{ name = "sym-lib-table", text = "", fg = "#f5e0dc" },
{ name = ".condarc", text = "", fg = "#a6e3a1" },
{ name = "xmonad.hs", text = "", fg = "#f38ba8" },
{ name = "tmux.conf", text = "", fg = "#a6e3a1" },
{ name = "xmobarrc.hs", text = "", fg = "#f38ba8" },
{ name = ".prettierrc.yaml", text = "", fg = "#89b4fa" },
{ name = ".pre-commit-config.yaml", text = "󰛢", fg = "#fab387" },
{ name = "i3blocks.conf", text = "", fg = "#f5e0dc" },
{ name = "xorg.conf", text = "", fg = "#fab387" },
{ name = ".zshenv", text = "", fg = "#a6e3a1" },
{ name = "vlcrc", text = "󰕼", fg = "#fab387" },
{ name = "license", text = "", fg = "#f9e2af" },
{ name = "unlicense", text = "", fg = "#f9e2af" },
{ name = "tmux.conf.local", text = "", fg = "#a6e3a1" },
{ name = ".SRCINFO", text = "󰣇", fg = "#89b4fa" },
{ name = "tailwind.config.ts", text = "󱏿", fg = "#74c7ec" },
{ name = "security.md", text = "󰒃", fg = "#bac2de" },
{ name = "security", text = "󰒃", fg = "#bac2de" },
{ name = ".eslintrc", text = "", fg = "#585b70" },
{ name = "gradle.properties", text = "", fg = "#585b70" },
{ name = "code_of_conduct.md", text = "", fg = "#f38ba8" },
{ name = "PrusaSlicerGcodeViewer.ini", text = "", fg = "#fab387" },
{ name = "PrusaSlicer.ini", text = "", fg = "#fab387" },
{ name = "procfile", text = "", fg = "#7f849c" },
{ name = "mpv.conf", text = "", fg = "#1e1e2e" },
{ name = ".prettierrc.json5", text = "", fg = "#89b4fa" },
{ name = "i3status.conf", text = "", fg = "#f5e0dc" },
{ name = "prettier.config.mjs", text = "", fg = "#89b4fa" },
{ name = ".pylintrc", text = "", fg = "#7f849c" },
{ name = "prettier.config.cjs", text = "", fg = "#89b4fa" },
{ name = ".luacheckrc", text = "", fg = "#89b4fa" },
{ name = "containerfile", text = "󰡨", fg = "#89b4fa" },
{ name = "eslint.config.mjs", text = "", fg = "#585b70" },
{ name = "gruntfile.js", text = "", fg = "#fab387" },
{ name = "bun.lockb", text = "", fg = "#f5e0dc" },
{ name = ".gitattributes", text = "", fg = "#fab387" },
{ name = "gruntfile.ts", text = "", fg = "#fab387" },
{ name = "pom.xml", text = "", fg = "#313244" },
{ name = "favicon.ico", text = "", fg = "#f9e2af" },
{ name = "package-lock.json", text = "", fg = "#313244" },
{ name = "build", text = "", fg = "#a6e3a1" },
{ name = "package.json", text = "", fg = "#f38ba8" },
{ name = "nuxt.config.ts", text = "󱄆", fg = "#a6e3a1" },
{ name = "nuxt.config.mjs", text = "󱄆", fg = "#a6e3a1" },
{ name = "mix.lock", text = "", fg = "#7f849c" },
{ name = "makefile", text = "", fg = "#7f849c" },
{ name = "gulpfile.js", text = "", fg = "#f38ba8" },
{ name = "lxde-rc.xml", text = "", fg = "#9399b2" },
{ name = "kritarc", text = "", fg = "#cba6f7" },
{ name = "gtkrc", text = "", fg = "#f5e0dc" },
{ name = "ionic.config.json", text = "", fg = "#89b4fa" },
{ name = ".prettierrc.mjs", text = "", fg = "#89b4fa" },
{ name = ".prettierrc.yml", text = "", fg = "#89b4fa" },
{ name = ".npmrc", text = "", fg = "#f38ba8" },
{ name = "weston.ini", text = "", fg = "#f9e2af" },
{ name = "gulpfile.babel.js", text = "", fg = "#f38ba8" },
{ name = "i18n.config.ts", text = "󰗊", fg = "#7f849c" },
{ name = "commitlint.config.js", text = "󰜘", fg = "#94e2d5" },
{ name = ".gitmodules", text = "", fg = "#fab387" },
{ name = "gradle-wrapper.properties", text = "", fg = "#585b70" },
{ name = "hypridle.conf", text = "", fg = "#74c7ec" },
{ name = "vercel.json", text = "▲", fg = "#f5e0dc" },
{ name = "hyprlock.conf", text = "", fg = "#74c7ec" },
{ name = "go.sum", text = "", fg = "#74c7ec" },
{ name = "kdenlive-layoutsrc", text = "", fg = "#89b4fa" },
{ name = "gruntfile.babel.js", text = "", fg = "#fab387" },
{ name = "compose.yml", text = "󰡨", fg = "#89b4fa" },
{ name = "i18n.config.js", text = "󰗊", fg = "#7f849c" },
{ name = "readme.md", text = "󰂺", fg = "#f5e0dc" },
{ name = "gradlew", text = "", fg = "#585b70" },
{ name = "go.work", text = "", fg = "#74c7ec" },
{ name = "gulpfile.ts", text = "", fg = "#f38ba8" },
{ name = "gnumakefile", text = "", fg = "#7f849c" },
{ name = "FreeCAD.conf", text = "", fg = "#f38ba8" },
{ name = "compose.yaml", text = "󰡨", fg = "#89b4fa" },
{ name = "eslint.config.js", text = "", fg = "#585b70" },
{ name = "hyprland.conf", text = "", fg = "#74c7ec" },
{ name = "docker-compose.yml", text = "󰡨", fg = "#89b4fa" },
{ name = "groovy", text = "", fg = "#585b70" },
{ name = "QtProject.conf", text = "", fg = "#a6e3a1" },
{ name = "platformio.ini", text = "", fg = "#fab387" },
{ name = "build.gradle", text = "", fg = "#585b70" },
{ name = ".nuxtrc", text = "󱄆", fg = "#a6e3a1" },
{ name = "_vimrc", text = "", fg = "#a6e3a1" },
{ name = ".zprofile", text = "", fg = "#a6e3a1" },
{ name = ".xsession", text = "", fg = "#fab387" },
{ name = "prettier.config.js", text = "", fg = "#89b4fa" },
{ name = ".babelrc", text = "", fg = "#f9e2af" },
{ name = "workspace", text = "", fg = "#a6e3a1" },
{ name = ".prettierrc.json", text = "", fg = "#89b4fa" },
{ name = ".prettierrc.js", text = "", fg = "#89b4fa" },
{ name = ".Xresources", text = "", fg = "#fab387" },
{ name = ".gitignore", text = "", fg = "#fab387" },
{ name = ".justfile", text = "", fg = "#7f849c" },
]
exts = [
{ name = "otf", text = "", fg = "#f5e0dc" },
{ name = "import", text = "", fg = "#f5e0dc" },
{ name = "krz", text = "", fg = "#cba6f7" },
{ name = "adb", text = "", fg = "#94e2d5" },
{ name = "ttf", text = "", fg = "#f5e0dc" },
{ name = "webpack", text = "󰜫", fg = "#74c7ec" },
{ name = "dart", text = "", fg = "#585b70" },
{ name = "vsh", text = "", fg = "#7f849c" },
{ name = "doc", text = "󰈬", fg = "#585b70" },
{ name = "zsh", text = "", fg = "#a6e3a1" },
{ name = "ex", text = "", fg = "#7f849c" },
{ name = "hx", text = "", fg = "#fab387" },
{ name = "fodt", text = "", fg = "#74c7ec" },
{ name = "mojo", text = "", fg = "#fab387" },
{ name = "templ", text = "", fg = "#f9e2af" },
{ name = "nix", text = "", fg = "#74c7ec" },
{ name = "cshtml", text = "󱦗", fg = "#585b70" },
{ name = "fish", text = "", fg = "#585b70" },
{ name = "ply", text = "󰆧", fg = "#7f849c" },
{ name = "sldprt", text = "󰻫", fg = "#a6e3a1" },
{ name = "gemspec", text = "", fg = "#313244" },
{ name = "mjs", text = "", fg = "#f9e2af" },
{ name = "csh", text = "", fg = "#585b70" },
{ name = "cmake", text = "", fg = "#cdd6f4" },
{ name = "fodp", text = "", fg = "#fab387" },
{ name = "vi", text = "", fg = "#f9e2af" },
{ name = "msf", text = "", fg = "#89b4fa" },
{ name = "blp", text = "󰺾", fg = "#89b4fa" },
{ name = "less", text = "", fg = "#45475a" },
{ name = "sh", text = "", fg = "#585b70" },
{ name = "odg", text = "", fg = "#f9e2af" },
{ name = "mint", text = "󰌪", fg = "#a6e3a1" },
{ name = "dll", text = "", fg = "#11111b" },
{ name = "odf", text = "", fg = "#f38ba8" },
{ name = "sqlite3", text = "", fg = "#f5e0dc" },
{ name = "Dockerfile", text = "󰡨", fg = "#89b4fa" },
{ name = "ksh", text = "", fg = "#585b70" },
{ name = "rmd", text = "", fg = "#74c7ec" },
{ name = "wv", text = "", fg = "#74c7ec" },
{ name = "xml", text = "󰗀", fg = "#fab387" },
{ name = "markdown", text = "", fg = "#cdd6f4" },
{ name = "qml", text = "", fg = "#a6e3a1" },
{ name = "3gp", text = "", fg = "#fab387" },
{ name = "pxi", text = "", fg = "#89b4fa" },
{ name = "flac", text = "", fg = "#6c7086" },
{ name = "gpr", text = "", fg = "#cba6f7" },
{ name = "huff", text = "󰡘", fg = "#585b70" },
{ name = "json", text = "", fg = "#f9e2af" },
{ name = "gv", text = "󱁉", fg = "#585b70" },
{ name = "bmp", text = "", fg = "#7f849c" },
{ name = "lock", text = "", fg = "#bac2de" },
{ name = "sha384", text = "󰕥", fg = "#7f849c" },
{ name = "cobol", text = "⚙", fg = "#585b70" },
{ name = "cob", text = "⚙", fg = "#585b70" },
{ name = "java", text = "", fg = "#f38ba8" },
{ name = "cjs", text = "", fg = "#f9e2af" },
{ name = "qm", text = "", fg = "#74c7ec" },
{ name = "ebuild", text = "", fg = "#45475a" },
{ name = "mustache", text = "", fg = "#fab387" },
{ name = "terminal", text = "", fg = "#a6e3a1" },
{ name = "ejs", text = "", fg = "#f9e2af" },
{ name = "brep", text = "󰻫", fg = "#a6e3a1" },
{ name = "rar", text = "", fg = "#fab387" },
{ name = "gradle", text = "", fg = "#585b70" },
{ name = "gnumakefile", text = "", fg = "#7f849c" },
{ name = "applescript", text = "", fg = "#7f849c" },
{ name = "elm", text = "", fg = "#74c7ec" },
{ name = "ebook", text = "", fg = "#fab387" },
{ name = "kra", text = "", fg = "#cba6f7" },
{ name = "tf", text = "", fg = "#585b70" },
{ name = "xls", text = "󰈛", fg = "#585b70" },
{ name = "fnl", text = "", fg = "#f9e2af" },
{ name = "kdbx", text = "", fg = "#a6e3a1" },
{ name = "kicad_pcb", text = "", fg = "#f5e0dc" },
{ name = "cfg", text = "", fg = "#7f849c" },
{ name = "ape", text = "", fg = "#74c7ec" },
{ name = "org", text = "", fg = "#94e2d5" },
{ name = "yml", text = "", fg = "#7f849c" },
{ name = "swift", text = "", fg = "#fab387" },
{ name = "eln", text = "", fg = "#7f849c" },
{ name = "sol", text = "", fg = "#74c7ec" },
{ name = "awk", text = "", fg = "#585b70" },
{ name = "7z", text = "", fg = "#fab387" },
{ name = "apl", text = "⍝", fg = "#fab387" },
{ name = "epp", text = "", fg = "#fab387" },
{ name = "app", text = "", fg = "#45475a" },
{ name = "dot", text = "󱁉", fg = "#585b70" },
{ name = "kpp", text = "", fg = "#cba6f7" },
{ name = "eot", text = "", fg = "#f5e0dc" },
{ name = "hpp", text = "", fg = "#7f849c" },
{ name = "spec.tsx", text = "", fg = "#585b70" },
{ name = "hurl", text = "", fg = "#f38ba8" },
{ name = "cxxm", text = "", fg = "#74c7ec" },
{ name = "c", text = "", fg = "#89b4fa" },
{ name = "fcmacro", text = "", fg = "#f38ba8" },
{ name = "sass", text = "", fg = "#f38ba8" },
{ name = "yaml", text = "", fg = "#7f849c" },
{ name = "xz", text = "", fg = "#fab387" },
{ name = "material", text = "󰔉", fg = "#f38ba8" },
{ name = "json5", text = "", fg = "#f9e2af" },
{ name = "signature", text = "λ", fg = "#fab387" },
{ name = "3mf", text = "󰆧", fg = "#7f849c" },
{ name = "jpg", text = "", fg = "#7f849c" },
{ name = "xpi", text = "", fg = "#fab387" },
{ name = "fcmat", text = "", fg = "#f38ba8" },
{ name = "pot", text = "", fg = "#74c7ec" },
{ name = "bin", text = "", fg = "#45475a" },
{ name = "xlsx", text = "󰈛", fg = "#585b70" },
{ name = "aac", text = "", fg = "#74c7ec" },
{ name = "kicad_sym", text = "", fg = "#f5e0dc" },
{ name = "xcstrings", text = "", fg = "#74c7ec" },
{ name = "lff", text = "", fg = "#f5e0dc" },
{ name = "xcf", text = "", fg = "#585b70" },
{ name = "azcli", text = "", fg = "#6c7086" },
{ name = "license", text = "", fg = "#f9e2af" },
{ name = "jsonc", text = "", fg = "#f9e2af" },
{ name = "xaml", text = "󰙳", fg = "#585b70" },
{ name = "md5", text = "󰕥", fg = "#7f849c" },
{ name = "xm", text = "", fg = "#74c7ec" },
{ name = "sln", text = "", fg = "#6c7086" },
{ name = "jl", text = "", fg = "#7f849c" },
{ name = "ml", text = "", fg = "#fab387" },
{ name = "http", text = "", fg = "#89b4fa" },
{ name = "x", text = "", fg = "#89b4fa" },
{ name = "wvc", text = "", fg = "#74c7ec" },
{ name = "wrz", text = "󰆧", fg = "#7f849c" },
{ name = "csproj", text = "󰪮", fg = "#585b70" },
{ name = "wrl", text = "󰆧", fg = "#7f849c" },
{ name = "wma", text = "", fg = "#74c7ec" },
{ name = "woff2", text = "", fg = "#f5e0dc" },
{ name = "woff", text = "", fg = "#f5e0dc" },
{ name = "tscn", text = "", fg = "#7f849c" },
{ name = "webmanifest", text = "", fg = "#f9e2af" },
{ name = "webm", text = "", fg = "#fab387" },
{ name = "fcbak", text = "", fg = "#f38ba8" },
{ name = "log", text = "󰌱", fg = "#cdd6f4" },
{ name = "wav", text = "", fg = "#74c7ec" },
{ name = "wasm", text = "", fg = "#585b70" },
{ name = "styl", text = "", fg = "#a6e3a1" },
{ name = "gif", text = "", fg = "#7f849c" },
{ name = "resi", text = "", fg = "#f38ba8" },
{ name = "aiff", text = "", fg = "#74c7ec" },
{ name = "sha256", text = "󰕥", fg = "#7f849c" },
{ name = "igs", text = "󰻫", fg = "#a6e3a1" },
{ name = "vsix", text = "", fg = "#6c7086" },
{ name = "vim", text = "", fg = "#a6e3a1" },
{ name = "diff", text = "", fg = "#45475a" },
{ name = "drl", text = "", fg = "#eba0ac" },
{ name = "erl", text = "", fg = "#f38ba8" },
{ name = "vhdl", text = "󰍛", fg = "#a6e3a1" },
{ name = "🔥", text = "", fg = "#fab387" },
{ name = "hrl", text = "", fg = "#f38ba8" },
{ name = "fsi", text = "", fg = "#74c7ec" },
{ name = "mm", text = "", fg = "#74c7ec" },
{ name = "bz", text = "", fg = "#fab387" },
{ name = "vh", text = "󰍛", fg = "#a6e3a1" },
{ name = "kdb", text = "", fg = "#a6e3a1" },
{ name = "gz", text = "", fg = "#fab387" },
{ name = "cpp", text = "", fg = "#74c7ec" },
{ name = "ui", text = "", fg = "#6c7086" },
{ name = "txt", text = "󰈙", fg = "#a6e3a1" },
{ name = "spec.ts", text = "", fg = "#74c7ec" },
{ name = "ccm", text = "", fg = "#f38ba8" },
{ name = "typoscript", text = "", fg = "#fab387" },
{ name = "typ", text = "", fg = "#89dceb" },
{ name = "txz", text = "", fg = "#fab387" },
{ name = "test.ts", text = "", fg = "#74c7ec" },
{ name = "tsx", text = "", fg = "#585b70" },
{ name = "mk", text = "", fg = "#7f849c" },
{ name = "webp", text = "", fg = "#7f849c" },
{ name = "opus", text = "", fg = "#6c7086" },
{ name = "bicep", text = "", fg = "#74c7ec" },
{ name = "ts", text = "", fg = "#74c7ec" },
{ name = "tres", text = "", fg = "#7f849c" },
{ name = "torrent", text = "", fg = "#94e2d5" },
{ name = "cxx", text = "", fg = "#74c7ec" },
{ name = "iso", text = "", fg = "#f2cdcd" },
{ name = "ixx", text = "", fg = "#74c7ec" },
{ name = "hxx", text = "", fg = "#7f849c" },
{ name = "gql", text = "", fg = "#f38ba8" },
{ name = "tmux", text = "", fg = "#a6e3a1" },
{ name = "ini", text = "", fg = "#7f849c" },
{ name = "m3u8", text = "󰲹", fg = "#f38ba8" },
{ name = "image", text = "", fg = "#f2cdcd" },
{ name = "tfvars", text = "", fg = "#585b70" },
{ name = "tex", text = "", fg = "#45475a" },
{ name = "cbl", text = "⚙", fg = "#585b70" },
{ name = "flc", text = "", fg = "#f5e0dc" },
{ name = "elc", text = "", fg = "#7f849c" },
{ name = "test.tsx", text = "", fg = "#585b70" },
{ name = "twig", text = "", fg = "#a6e3a1" },
{ name = "sql", text = "", fg = "#f5e0dc" },
{ name = "test.jsx", text = "", fg = "#74c7ec" },
{ name = "htm", text = "", fg = "#fab387" },
{ name = "gcode", text = "󰐫", fg = "#6c7086" },
{ name = "test.js", text = "", fg = "#f9e2af" },
{ name = "ino", text = "", fg = "#74c7ec" },
{ name = "tcl", text = "󰛓", fg = "#585b70" },
{ name = "cljs", text = "", fg = "#74c7ec" },
{ name = "tsconfig", text = "", fg = "#fab387" },
{ name = "img", text = "", fg = "#f2cdcd" },
{ name = "t", text = "", fg = "#74c7ec" },
{ name = "fcstd1", text = "", fg = "#f38ba8" },
{ name = "out", text = "", fg = "#45475a" },
{ name = "jsx", text = "", fg = "#74c7ec" },
{ name = "bash", text = "", fg = "#a6e3a1" },
{ name = "edn", text = "", fg = "#74c7ec" },
{ name = "rss", text = "", fg = "#fab387" },
{ name = "flf", text = "", fg = "#f5e0dc" },
{ name = "cache", text = "", fg = "#f5e0dc" },
{ name = "sbt", text = "", fg = "#f38ba8" },
{ name = "cppm", text = "", fg = "#74c7ec" },
{ name = "svelte", text = "", fg = "#fab387" },
{ name = "mo", text = "∞", fg = "#7f849c" },
{ name = "sv", text = "󰍛", fg = "#a6e3a1" },
{ name = "ko", text = "", fg = "#f5e0dc" },
{ name = "suo", text = "", fg = "#6c7086" },
{ name = "sldasm", text = "󰻫", fg = "#a6e3a1" },
{ name = "icalendar", text = "", fg = "#313244" },
{ name = "go", text = "", fg = "#74c7ec" },
{ name = "sublime", text = "", fg = "#fab387" },
{ name = "stl", text = "󰆧", fg = "#7f849c" },
{ name = "mobi", text = "", fg = "#fab387" },
{ name = "graphql", text = "", fg = "#f38ba8" },
{ name = "m3u", text = "󰲹", fg = "#f38ba8" },
{ name = "cpy", text = "⚙", fg = "#585b70" },
{ name = "kdenlive", text = "", fg = "#89b4fa" },
{ name = "pyo", text = "", fg = "#f9e2af" },
{ name = "po", text = "", fg = "#74c7ec" },
{ name = "scala", text = "", fg = "#f38ba8" },
{ name = "exs", text = "", fg = "#7f849c" },
{ name = "odp", text = "", fg = "#fab387" },
{ name = "dump", text = "", fg = "#f5e0dc" },
{ name = "stp", text = "󰻫", fg = "#a6e3a1" },
{ name = "step", text = "󰻫", fg = "#a6e3a1" },
{ name = "ste", text = "󰻫", fg = "#a6e3a1" },
{ name = "aif", text = "", fg = "#74c7ec" },
{ name = "strings", text = "", fg = "#74c7ec" },
{ name = "cp", text = "", fg = "#74c7ec" },
{ name = "fsscript", text = "", fg = "#74c7ec" },
{ name = "mli", text = "", fg = "#fab387" },
{ name = "bak", text = "󰁯", fg = "#7f849c" },
{ name = "ssa", text = "󰨖", fg = "#f9e2af" },
{ name = "toml", text = "", fg = "#585b70" },
{ name = "makefile", text = "", fg = "#7f849c" },
{ name = "php", text = "", fg = "#7f849c" },
{ name = "zst", text = "", fg = "#fab387" },
{ name = "spec.jsx", text = "", fg = "#74c7ec" },
{ name = "kbx", text = "󰯄", fg = "#6c7086" },
{ name = "fbx", text = "󰆧", fg = "#7f849c" },
{ name = "blend", text = "󰂫", fg = "#fab387" },
{ name = "ifc", text = "󰻫", fg = "#a6e3a1" },
{ name = "spec.js", text = "", fg = "#f9e2af" },
{ name = "so", text = "", fg = "#f5e0dc" },
{ name = "desktop", text = "", fg = "#45475a" },
{ name = "sml", text = "λ", fg = "#fab387" },
{ name = "slvs", text = "󰻫", fg = "#a6e3a1" },
{ name = "pp", text = "", fg = "#fab387" },
{ name = "ps1", text = "󰨊", fg = "#6c7086" },
{ name = "dropbox", text = "", fg = "#6c7086" },
{ name = "kicad_mod", text = "", fg = "#f5e0dc" },
{ name = "bat", text = "", fg = "#a6e3a1" },
{ name = "slim", text = "", fg = "#fab387" },
{ name = "skp", text = "󰻫", fg = "#a6e3a1" },
{ name = "css", text = "", fg = "#89b4fa" },
{ name = "xul", text = "", fg = "#fab387" },
{ name = "ige", text = "󰻫", fg = "#a6e3a1" },
{ name = "glb", text = "", fg = "#fab387" },
{ name = "ppt", text = "󰈧", fg = "#f38ba8" },
{ name = "sha512", text = "󰕥", fg = "#7f849c" },
{ name = "ics", text = "", fg = "#313244" },
{ name = "mdx", text = "", fg = "#74c7ec" },
{ name = "sha1", text = "󰕥", fg = "#7f849c" },
{ name = "f3d", text = "󰻫", fg = "#a6e3a1" },
{ name = "ass", text = "󰨖", fg = "#f9e2af" },
{ name = "godot", text = "", fg = "#7f849c" },
{ name = "ifb", text = "", fg = "#313244" },
{ name = "cson", text = "", fg = "#f9e2af" },
{ name = "lib", text = "", fg = "#11111b" },
{ name = "luac", text = "", fg = "#74c7ec" },
{ name = "heex", text = "", fg = "#7f849c" },
{ name = "scm", text = "󰘧", fg = "#f5e0dc" },
{ name = "psd1", text = "󰨊", fg = "#7f849c" },
{ name = "sc", text = "", fg = "#f38ba8" },
{ name = "scad", text = "", fg = "#f9e2af" },
{ name = "kts", text = "", fg = "#6c7086" },
{ name = "svh", text = "󰍛", fg = "#a6e3a1" },
{ name = "mts", text = "", fg = "#74c7ec" },
{ name = "nfo", text = "", fg = "#f9e2af" },
{ name = "pck", text = "", fg = "#7f849c" },
{ name = "rproj", text = "󰗆", fg = "#a6e3a1" },
{ name = "rlib", text = "", fg = "#fab387" },
{ name = "cljd", text = "", fg = "#74c7ec" },
{ name = "ods", text = "", fg = "#a6e3a1" },
{ name = "res", text = "", fg = "#f38ba8" },
{ name = "apk", text = "", fg = "#a6e3a1" },
{ name = "haml", text = "", fg = "#f5e0dc" },
{ name = "d.ts", text = "", fg = "#fab387" },
{ name = "razor", text = "󱦘", fg = "#585b70" },
{ name = "rake", text = "", fg = "#313244" },
{ name = "patch", text = "", fg = "#45475a" },
{ name = "cuh", text = "", fg = "#7f849c" },
{ name = "d", text = "", fg = "#f38ba8" },
{ name = "query", text = "", fg = "#a6e3a1" },
{ name = "psb", text = "", fg = "#74c7ec" },
{ name = "nu", text = ">", fg = "#a6e3a1" },
{ name = "mov", text = "", fg = "#fab387" },
{ name = "lrc", text = "󰨖", fg = "#f9e2af" },
{ name = "pyx", text = "", fg = "#89b4fa" },
{ name = "pyw", text = "", fg = "#89b4fa" },
{ name = "cu", text = "", fg = "#a6e3a1" },
{ name = "bazel", text = "", fg = "#a6e3a1" },
{ name = "obj", text = "󰆧", fg = "#7f849c" },
{ name = "pyi", text = "", fg = "#f9e2af" },
{ name = "pyd", text = "", fg = "#f9e2af" },
{ name = "exe", text = "", fg = "#45475a" },
{ name = "pyc", text = "", fg = "#f9e2af" },
{ name = "fctb", text = "", fg = "#f38ba8" },
{ name = "part", text = "", fg = "#94e2d5" },
{ name = "blade.php", text = "", fg = "#f38ba8" },
{ name = "git", text = "", fg = "#fab387" },
{ name = "psd", text = "", fg = "#74c7ec" },
{ name = "qss", text = "", fg = "#a6e3a1" },
{ name = "csv", text = "", fg = "#a6e3a1" },
{ name = "psm1", text = "󰨊", fg = "#7f849c" },
{ name = "dconf", text = "", fg = "#f5e0dc" },
{ name = "config.ru", text = "", fg = "#313244" },
{ name = "prisma", text = "", fg = "#6c7086" },
{ name = "conf", text = "", fg = "#7f849c" },
{ name = "clj", text = "", fg = "#a6e3a1" },
{ name = "o", text = "", fg = "#45475a" },
{ name = "mp4", text = "", fg = "#fab387" },
{ name = "cc", text = "", fg = "#f38ba8" },
{ name = "kicad_prl", text = "", fg = "#f5e0dc" },
{ name = "bz3", text = "", fg = "#fab387" },
{ name = "asc", text = "󰦝", fg = "#6c7086" },
{ name = "png", text = "", fg = "#7f849c" },
{ name = "android", text = "", fg = "#a6e3a1" },
{ name = "pm", text = "", fg = "#74c7ec" },
{ name = "h", text = "", fg = "#7f849c" },
{ name = "pls", text = "󰲹", fg = "#f38ba8" },
{ name = "ipynb", text = "", fg = "#fab387" },
{ name = "pl", text = "", fg = "#74c7ec" },
{ name = "ads", text = "", fg = "#f5e0dc" },
{ name = "sqlite", text = "", fg = "#f5e0dc" },
{ name = "pdf", text = "", fg = "#585b70" },
{ name = "pcm", text = "", fg = "#6c7086" },
{ name = "ico", text = "", fg = "#f9e2af" },
{ name = "a", text = "", fg = "#f5e0dc" },
{ name = "R", text = "󰟔", fg = "#6c7086" },
{ name = "ogg", text = "", fg = "#6c7086" },
{ name = "pxd", text = "", fg = "#89b4fa" },
{ name = "kdenlivetitle", text = "", fg = "#89b4fa" },
{ name = "jxl", text = "", fg = "#7f849c" },
{ name = "nswag", text = "", fg = "#a6e3a1" },
{ name = "nim", text = "", fg = "#f9e2af" },
{ name = "bqn", text = "⎉", fg = "#6c7086" },
{ name = "cts", text = "", fg = "#74c7ec" },
{ name = "fcparam", text = "", fg = "#f38ba8" },
{ name = "rs", text = "", fg = "#fab387" },
{ name = "mpp", text = "", fg = "#74c7ec" },
{ name = "fdmdownload", text = "", fg = "#94e2d5" },
{ name = "pptx", text = "󰈧", fg = "#f38ba8" },
{ name = "jpeg", text = "", fg = "#7f849c" },
{ name = "bib", text = "󱉟", fg = "#f9e2af" },
{ name = "vhd", text = "󰍛", fg = "#a6e3a1" },
{ name = "m", text = "", fg = "#89b4fa" },
{ name = "js", text = "", fg = "#f9e2af" },
{ name = "eex", text = "", fg = "#7f849c" },
{ name = "tbc", text = "󰛓", fg = "#585b70" },
{ name = "astro", text = "", fg = "#f38ba8" },
{ name = "sha224", text = "󰕥", fg = "#7f849c" },
{ name = "xcplayground", text = "", fg = "#fab387" },
{ name = "el", text = "", fg = "#7f849c" },
{ name = "m4v", text = "", fg = "#fab387" },
{ name = "m4a", text = "", fg = "#74c7ec" },
{ name = "cs", text = "󰌛", fg = "#585b70" },
{ name = "hs", text = "", fg = "#7f849c" },
{ name = "tgz", text = "", fg = "#fab387" },
{ name = "fs", text = "", fg = "#74c7ec" },
{ name = "luau", text = "", fg = "#89b4fa" },
{ name = "dxf", text = "󰻫", fg = "#a6e3a1" },
{ name = "download", text = "", fg = "#94e2d5" },
{ name = "cast", text = "", fg = "#fab387" },
{ name = "qrc", text = "", fg = "#a6e3a1" },
{ name = "lua", text = "", fg = "#74c7ec" },
{ name = "lhs", text = "", fg = "#7f849c" },
{ name = "md", text = "", fg = "#cdd6f4" },
{ name = "leex", text = "", fg = "#7f849c" },
{ name = "ai", text = "", fg = "#f9e2af" },
{ name = "lck", text = "", fg = "#bac2de" },
{ name = "kt", text = "", fg = "#6c7086" },
{ name = "bicepparam", text = "", fg = "#7f849c" },
{ name = "hex", text = "", fg = "#6c7086" },
{ name = "zig", text = "", fg = "#fab387" },
{ name = "bzl", text = "", fg = "#a6e3a1" },
{ name = "cljc", text = "", fg = "#a6e3a1" },
{ name = "kicad_dru", text = "", fg = "#f5e0dc" },
{ name = "fctl", text = "", fg = "#f38ba8" },
{ name = "f#", text = "", fg = "#74c7ec" },
{ name = "odt", text = "", fg = "#74c7ec" },
{ name = "conda", text = "", fg = "#a6e3a1" },
{ name = "vala", text = "", fg = "#585b70" },
{ name = "erb", text = "", fg = "#313244" },
{ name = "mp3", text = "", fg = "#74c7ec" },
{ name = "bz2", text = "", fg = "#fab387" },
{ name = "coffee", text = "", fg = "#f9e2af" },
{ name = "cr", text = "", fg = "#f5e0dc" },
{ name = "f90", text = "󱈚", fg = "#585b70" },
{ name = "jwmrc", text = "", fg = "#6c7086" },
{ name = "c++", text = "", fg = "#f38ba8" },
{ name = "fcscript", text = "", fg = "#f38ba8" },
{ name = "fods", text = "", fg = "#a6e3a1" },
{ name = "cue", text = "󰲹", fg = "#f38ba8" },
{ name = "srt", text = "󰨖", fg = "#f9e2af" },
{ name = "info", text = "", fg = "#f9e2af" },
{ name = "hh", text = "", fg = "#7f849c" },
{ name = "sig", text = "λ", fg = "#fab387" },
{ name = "html", text = "", fg = "#fab387" },
{ name = "iges", text = "󰻫", fg = "#a6e3a1" },
{ name = "kicad_wks", text = "", fg = "#f5e0dc" },
{ name = "hbs", text = "", fg = "#fab387" },
{ name = "fcstd", text = "", fg = "#f38ba8" },
{ name = "gresource", text = "", fg = "#f5e0dc" },
{ name = "sub", text = "󰨖", fg = "#f9e2af" },
{ name = "ical", text = "", fg = "#313244" },
{ name = "crdownload", text = "", fg = "#94e2d5" },
{ name = "pub", text = "󰷖", fg = "#f9e2af" },
{ name = "vue", text = "", fg = "#a6e3a1" },
{ name = "gd", text = "", fg = "#7f849c" },
{ name = "fsx", text = "", fg = "#74c7ec" },
{ name = "mkv", text = "", fg = "#fab387" },
{ name = "py", text = "", fg = "#f9e2af" },
{ name = "kicad_sch", text = "", fg = "#f5e0dc" },
{ name = "epub", text = "", fg = "#fab387" },
{ name = "env", text = "", fg = "#f9e2af" },
{ name = "magnet", text = "", fg = "#45475a" },
{ name = "elf", text = "", fg = "#45475a" },
{ name = "fodg", text = "", fg = "#f9e2af" },
{ name = "svg", text = "󰜡", fg = "#fab387" },
{ name = "dwg", text = "󰻫", fg = "#a6e3a1" },
{ name = "docx", text = "󰈬", fg = "#585b70" },
{ name = "pro", text = "", fg = "#f9e2af" },
{ name = "db", text = "", fg = "#f5e0dc" },
{ name = "rb", text = "", fg = "#313244" },
{ name = "r", text = "󰟔", fg = "#6c7086" },
{ name = "scss", text = "", fg = "#f38ba8" },
{ name = "cow", text = "󰆚", fg = "#fab387" },
{ name = "gleam", text = "", fg = "#f5c2e7" },
{ name = "v", text = "󰍛", fg = "#a6e3a1" },
{ name = "kicad_pro", text = "", fg = "#f5e0dc" },
{ name = "liquid", text = "", fg = "#a6e3a1" },
{ name = "zip", text = "", fg = "#fab387" },
]

62
tools/zed/keymap.json Executable file
View file

@ -0,0 +1,62 @@
// $DOTFILES/tools/zed/keymaps.json
// Date: 2025-01-25
// Author: js0ny
// Description: Zed keymaps
// Location:
// GNU/Linux: ~/.config/zed/keymaps.json
// Windows: %APPDATA%\Zed\keymaps.json
// Linking: (link the whole directory)
// ln -sf $DOTFILES/tools/zed ~/.config/zed
// Zed keymap
//
// For information on binding keys, see the Zed
// documentation: https://zed.dev/docs/key-bindings
//
// To see the default key bindings run `zed: open default keymap`
// from the command palette.
[
{
"context": "Workspace",
"bindings": {
// "shift shift": "file_finder::Toggle"
}
},
{
"context": "Editor",
"bindings": {
// "j k": ["workspace::SendKeystrokes", "escape"]
}
},
{
"context": "vim_mode == normal || vim_mode == visual",
"bindings": {
"N": "vim::JoinLines",
"l": "vim::InsertBefore",
"L": "vim::InsertFirstNonWhitespace"
}
},
{
"context": "vim_mode == normal || vim_mode == visual || vim_mode == operator",
"bindings": {
"n": "vim::Down",
"e": "vim::Up",
"i": "vim::Right",
"k": "search::SelectNextMatch",
"K": "search::SelectPrevMatch"
}
}
]

30
tools/zed/settings.json Normal file
View file

@ -0,0 +1,30 @@
// $DOTFILES/tools/zed/settings.json
// Date: 2025-01-25
// Author: js0ny
// Description: Zed settings (jsonc)
// Location:
// GNU/Linux: ~/.config/zed/settings.json
// Windows: %APPDATA%\Zed\settings.json
// Linking: (link the whole directory)
// ln -sf $DOTFILES/tools/zed ~/.config/zed
//
// Zed settings
//
// For information on how to configure Zed, see the Zed
// documentation: https://zed.dev/docs/configuring-zed
//
// To see all of Zed's default settings without changing your
// custom settings, run `zed: open default settings` from the
// command palette (cmd-shift-p / ctrl-shift-p)
{
"vim_mode": true,
"ui_font_size": 16,
"buffer_font_size": 16,
"theme": {
"mode": "dark",
"light": "Catppuccin Latte",
"dark": "Catppuccin Mocha"
},
"relative_line_numbers": true
}

28
tools/zed/snippets/c.json Executable file
View file

@ -0,0 +1,28 @@
{
"main": {
"prefix": "main",
"body": [
"int main() {",
" $1",
" return 0;",
"}"
],
"description": "Main function with no arguments"
},
"mainn": {
"prefix": "mainn",
"body": [
"",
"int main(int argc, char *argv[]) {",
" $1",
" return 0;",
"}"
],
"description": "Main function with arguments"
},
"once": {
"prefix": "#once",
"body": ["#ifndef $1", "#define $1", "", "$2", "", "#endif"],
"description": "Include guard"
}
}

View file

@ -3,7 +3,6 @@
# Author: js0ny # Author: js0ny
# Sourced by user's zshrc 在用户的 zshrc 中被引用 # Sourced by user's zshrc 在用户的 zshrc 中被引用
export STARSHIP_CONFIG=$DOTFILES/tools/starship/starship_zsh.toml
eval "$(starship init zsh)" eval "$(starship init zsh)"