diff --git a/misc/.config/fzf/config b/misc/.config/fzf/config
new file mode 100644
index 0000000..eb23750
--- /dev/null
+++ b/misc/.config/fzf/config
@@ -0,0 +1 @@
+--layout=reverse
diff --git a/misc/.config/hyprland-autoname-workspaces/config.toml b/misc/.config/hyprland-autoname-workspaces/config.toml
index 058ccbc..acae548 100644
--- a/misc/.config/hyprland-autoname-workspaces/config.toml
+++ b/misc/.config/hyprland-autoname-workspaces/config.toml
@@ -1,34 +1,40 @@
version = "1.1.15"
-[title."(?i)foot"]
-Yazi = ""
-
[class]
DEFAULT = "{class}"
-"(?i)anki" = " "
-"(?i)blueman-manager-wrapped" = " "
-"(?i)chromium" = " "
-"(?i)discord" = " "
-"(?i)element" = " "
-"(?i)emacs" = " "
-"(?i)firefox" = " "
-"(?i)foot" = " "
-"(?i)ghidra" = " "
-"(?i)gimp" = " "
-"(?i)kitty" = " "
-"(?i)libreoffice-draw" = " "
-"(?i)libreoffice-writer" = " "
-"(?i)mpv" = " "
-"(?i)mullvad vpn" = " "
-"(?i)nsxiv" = " "
-"(?i)signal" = " "
-"(?i)slack" = " "
-"(?i)spotify" = " "
-"(?i)st" = " "
-"(?i)steam" = " "
-"(?i)virtualbox" = " "
-"(?i)zathura" = " "
-"(?i)zen" = " "
+"Anki" = " "
+"blueman-manager-wrapped" = " "
+"chromium" = " "
+"com.obsproject.Studio" = " "
+"com.usebottles.bottles" = " "
+"discord" = " "
+"Element" = " "
+"emacs" = " "
+"firefox" = " "
+"foot" = " "
+"ghidra" = " "
+"Gimp" = " "
+"kitty" = " "
+"libreoffice-calc" = " "
+"libreoffice-draw" = " "
+"libreoffice-impress" = " "
+"libreoffice-writer" = " "
+"mpv" = " "
+"mullvad vpn" = " "
+"Nsxiv" = " "
+"org.getmonero." = " "
+"org.kde.kdenlive" = " "
+"signal" = " "
+"Slack" = " "
+"spotify" = " "
+"st-256color" = " "
+"steam" = " "
+"teams-for-linux" = " "
+"VirtualBox" = " "
+"vlc" = " "
+"zathura" = " "
+"zen" = " "
+"zoom" = " "
[class_active]
@@ -49,15 +55,21 @@ DEFAULT = "{class}"
9 = "nine"
10 = "ten"
-[title_in_class."(?i)foot"]
-"(?i)neovim" = "neovim"
-"(?i)nvim" = "nvim"
+[title_in_class."st-256color"]
+"Yazi" = " "
+"NVIM" = " "
+"btop" = " "
+"htop" = " "
-[title_in_class."(?i)kitty"]
-"(?i)neomutt" = "neomutt"
+# Sometimes windows do not set a class
+[title_in_class.""]
+"Steam" = " "
-[title_in_class_active."(?i)firefox"]
-"(?i)twitch" = "{icon}"
+[title_in_class."VirtualBox Machine"]
+"Tiny11" = " "
+
+[title_in_class."steam"]
+"Halo: The Master Chief Collection" = " "
[title_in_initial_class]
@@ -82,11 +94,13 @@ aProgram = "^$"
dedup = false
dedup_inactive_fullscreen = false
delim = ""
-workspace = "{id}:{delim}{clients}"
+workspace = "{id} {clients}"
workspace_empty = "{id}"
-client = "{icon}"
-client_fullscreen = "[{icon}]"
-client_active = "{icon}"
+# client = "{icon}"
+client = "{icon}"
+client_fullscreen = "{icon}"
+# client_active = "{icon}"
+client_active = "{icon}"
client_dup = "{icon}{counter_sup}"
client_dup_active = "*{icon}*{delim}{icon}{counter_unfocused_sup}"
client_dup_fullscreen = "[{icon}]{delim}{icon}{counter_unfocused_sup}"
diff --git a/misc/.config/starship.toml b/misc/.config/starship.toml
index 97907f9..6fde80b 100644
--- a/misc/.config/starship.toml
+++ b/misc/.config/starship.toml
@@ -1,18 +1,54 @@
-# Use starship.def.toml to edit the starship configuration. There should be an entr daemon
-# running which, upon changes to the file, will replace each instance of blue with
-# the appropriate environment variable. This hack was cobbled together because starship currently
-# does not allow environment variables to be used as a style (which is dumb)
-
# Inserts a blank line between shell prompts
add_newline = false
-format = '''[╭──\([$username@$hostname](bold blue)\)-\[$directory\](-\[$git_branch$git_metrics$git_status\])(-\[$nix_shell\])](blue) $cmd_duration
-[╰─](blue)[$shell](bold blue) '''
-# format = '''
-# [\[$directory\](-\[$git_branch$git_metrics$git_status\])(-\[$nix_shell\])](blue)[λ ](blue bold)
-# '''
+format = '''${custom.color}╭──\(${custom.bold}$username@$hostname${custom.color}\)-\[$directory${custom.color}(\]-\[$git_branch$git_metrics$git_status)${custom.color}\]( $nix_shell) $cmd_duration
+${custom.color}╰─$shell '''
+
right_format = '$status'
+[custom.color]
+command = '''
+accent="$(cat ~/.config/colors/accent)"
+case "$accent" in
+ black)
+ code=30
+ ;;
+ red)
+ code=31
+ ;;
+ green)
+ code=32
+ ;;
+ yellow)
+ code=33
+ ;;
+ blue)
+ code=34
+ ;;
+ purple)
+ code=35
+ ;;
+ cyan)
+ code=36
+ ;;
+ *)
+ code=0
+ ;;
+esac
+
+printf "\\033[0;${code}m"
+'''
+when = true
+format = "$output"
+
+[custom.bold]
+command = '''
+printf "\\033[1m"
+'''
+when = true
+unsafe_no_escape = true
+format = "$output"
+
[line_break]
disabled = false
@@ -23,7 +59,7 @@ show_always = true
[nix_shell]
symbol = '❄️'
-format = '[$symbol$name](bold purple)'
+format = '[$symbol $name](bold purple)'
[hostname]
ssh_only = false
@@ -32,9 +68,8 @@ trim_at = '.companyname.com'
disabled = false
[git_branch]
-style = 'bold green'
symbol = ''
-format = '[$symbol$branch(hello$banch)](bold green)'
+format = '[$symbol$branch](bold green)'
[git_status]
modified = '[✘](bold red)'
@@ -48,25 +83,19 @@ truncate_to_repo = true
style = 'bold white'
format = '[$path]($style)[$read_only]($read_only_style)'
-[character]
-success_symbol = '[λ](bold blue)'
-error_symbol = '[λ](bold red)'
-# success_symbol = '[❯](bold blue)'
-# error_symbol = '[❯](bold red)'
-
[cmd_duration]
min_time = 1_000
style = "bold dimmed yellow"
format = '◷[$duration]($style) '
[shell]
-fish_indicator = ''
+fish_indicator = ''
powershell_indicator = '_'
-bash_indicator = '\$'
-zsh_indicator = 'λ'
-unknown_indicator = '?'
+bash_indicator = '\$'
+zsh_indicator = 'λ'
+unknown_indicator = '?'
disabled = false
-format = '$indicator'
+format = '[$indicator](bold)'
[status]
disabled = false
diff --git a/misc/.config/yazi/init.lua b/misc/.config/yazi/init.lua
index 2a10134..1f3e0ec 100644
--- a/misc/.config/yazi/init.lua
+++ b/misc/.config/yazi/init.lua
@@ -17,18 +17,19 @@ end, 500, Header.LEFT)
function Header:cwd()
local max = self._area.w - self._right_width
if max <= 0 then
- return ui.Span("")
+ return ""
end
- local cwd = ya.readable_path(tostring(self._tab.current.cwd)) .. self:flags()
- local left = ui.Line {
+ local cwd = ya.readable_path(tostring(self._current.cwd)) .. self:flags()
+ local hovered = ""
+ if cx.active.current.hovered then
+ hovered = tostring(cx.active.current.hovered.name or "")
+ end
+ return ui.Line {
ui.Span(cwd):fg("blue"):bold(true),
ui.Span("/"):fg("blue"):bold(true),
- ui.Span(tostring(cx.active.current.hovered.name)):fg("white"): bold(true),
+ ui.Span(hovered):fg("white"):bold(true),
}
-
- return left
-
end
-- Remove file size from status bar
@@ -36,7 +37,7 @@ function Status:size()
end
-- Remove percentage from status bar
-function Status:percentage()
+function Status:percent()
end
-- Show symlink path in status bar
diff --git a/misc/.config/yazi/keymap.toml b/misc/.config/yazi/keymap.toml
index 753e62e..460d73b 100644
--- a/misc/.config/yazi/keymap.toml
+++ b/misc/.config/yazi/keymap.toml
@@ -1,33 +1,39 @@
-# A TOML linter such as https://taplo.tamasfe.dev/ can use this schema to validate your config.
-# If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas.
-"$schema" = "https://yazi-rs.github.io/schemas/keymap.json"
-
-[manager]
-
+[mgr]
prepend_keymap = [
- # Smart enter
- { on = [ "o" ], run = [ "plugin smart-enter --sync --args='list'", "escape --visual --select" ], desc = "List openers for file." },
- { on = [ "l" ], run = [ "plugin smart-enter --sync", "escape --visual --select" ], desc = "Enter the child directory, or open file." },
- { on = [ "L" ], run = [ "plugin smart-enter --sync --args='detatch'", "escape --visual --select" ], desc = "Open in new window." },
- { on = [ "1" ], run = [ "shell 'opener -n 1 $0' --block --confirm"], desc = "Open with program 1." },
- { on = [ "2" ], run = [ "shell 'opener -n 2 $0' --block --confirm"], desc = "Open with program 2." },
- { on = [ "3" ], run = [ "shell 'opener -n 3 $0' --block --confirm"], desc = "Open with program 3." },
- { on = [ "!" ], run = [ "shell 'opener -n 1 detatch $0' --block --confirm"], desc = "Open in new window with program 1." },
- { on = [ "@" ], run = [ "shell 'opener -n 2 detatch $0' --block --confirm"], desc = "Open in new window with program 2." },
- { on = [ "#" ], run = [ "shell 'opener -n 3 detatch $0' --block --confirm"], desc = "Open in new window with program 3." },
+ # Jump
+ { on = [ "i" ], run = [ "plugin easyjump" ], desc = "easyjump" },
+ { on = [ "f" ], run = [ "plugin jump-to-char" ], desc = "Jump to char" },
+
+ # Smart enter
+ { on = [ "o" ], run = [ "plugin smart-enter --sync -- list", "escape --visual --select" ], desc = "List openers for file." },
+ { on = [ "l" ], run = [ "plugin smart-enter --sync", "escape --visual --select" ], desc = "Enter the child directory, or open file." },
+ { on = [ "L" ], run = [ "plugin smart-enter --sync -- detatch", "escape --visual --select" ], desc = "Open in new window." },
- { on = [ "j" ], run = [ "plugin --sync arrow --args=1"], desc = "Move selection downwards, or wrap." },
- { on = [ "k" ], run = [ "plugin --sync arrow --args=-1"], desc = "Move selection upwards, or wrap." },
- { on = [ "T" ], run = "plugin --sync max-preview", desc = "Maximize preview pane"},
- { on = [ "n" ], run = "create", desc = "Create a file or directory (ends with / for directories)" },
- { on = [ ""], run = '''
- shell 'dragon -x -i -T "$1"' --confirm
- ''', desc = "Open file with dragon"},
- { on = [ "=" ], run = """
- shell 'printf "Mode Bits: "; read ans; chmod $ans "$@"' --block --confirm
- """, desc = "chmod" },
- { on = [ "" ], run = """
- shell '$TERMINAL -e $SHELL -c -i \"cd $PWD && ya && exec $SHELL\"' --orphan --confirm
- """, desc = "Spawn new yazi window in CWD" },
+ # Archives
+ { on = [ "u" ], run = [ "shell 'punpack \"$0\"' --confirm"], desc = "Open archive" },
+
+ # Openers
+ { on = [ "1" ], run = [ "shell 'opener -n 1 \"$0\"' --block --confirm"], desc = "Open with program 1." },
+ { on = [ "2" ], run = [ "shell 'opener -n 2 \"$0\"' --block --confirm"], desc = "Open with program 2." },
+ { on = [ "3" ], run = [ "shell 'opener -n 3 \"$0\"' --block --confirm"], desc = "Open with program 3." },
+ { on = [ "4" ], run = [ "shell 'opener -n 4 \"$0\"' --block --confirm"], desc = "Open with program 4." },
+ { on = [ "5" ], run = [ "shell 'opener -n 5 \"$0\"' --block --confirm"], desc = "Open with program 5." },
+ { on = [ "!" ], run = [ "shell 'opener -n 1 detatch \"$0\"' --block --confirm"], desc = "Open in new window with program 1." },
+ { on = [ "@" ], run = [ "shell 'opener -n 2 detatch \"$0\"' --block --confirm"], desc = "Open in new window with program 2." },
+ { on = [ "#" ], run = [ "shell 'opener -n 3 detatch \"$0\"' --block --confirm"], desc = "Open in new window with program 3." },
+ { on = [ "$" ], run = [ "shell 'opener -n 4 detatch \"$0\"' --block --confirm"], desc = "Open in new window with program 4." },
+ { on = [ "%" ], run = [ "shell 'opener -n 5 detatch \"$0\"' --block --confirm"], desc = "Open in new window with program 5." },
+
+ { on = [ "" ], run = 'shell -- xdragon -x -T "$1"', desc = "Open file with dragon"},
+
+ { on = [ "" ], run = "shell 'swallow thunar' --block --confirm", desc = "Open thunar"},
+
+ { on = [ "=" ], run = """
+ shell 'printf "Mode Bits: "; read ans; chmod $ans "$@"' --block --confirm
+ """, desc = "chmod" },
+
+ { on = [ "" ], run = """
+ shell '$TERMINAL -e $SHELL -c -i \"cd $PWD && ya && exec $SHELL\"' --orphan --confirm
+ """, desc = "Spawn new yazi window in CWD" },
]
diff --git a/misc/.config/yazi/plugins/arrow.yazi/init.lua b/misc/.config/yazi/plugins/arrow.yazi/init.lua
deleted file mode 100644
index 9034881..0000000
--- a/misc/.config/yazi/plugins/arrow.yazi/init.lua
+++ /dev/null
@@ -1,10 +0,0 @@
----@diagnostic disable: undefined-global
-
-return {
- entry = function(_, args)
- local current = cx.active.current
- local new = (current.cursor + args[1]) % #current.files
- ya.manager_emit("arrow", { new - current.cursor })
- end,
-}
-
diff --git a/misc/.config/yazi/plugins/easyjump.yazi b/misc/.config/yazi/plugins/easyjump.yazi
new file mode 160000
index 0000000..6606fb1
--- /dev/null
+++ b/misc/.config/yazi/plugins/easyjump.yazi
@@ -0,0 +1 @@
+Subproject commit 6606fb1d56eea4c99809c056fd701e58890655be
diff --git a/misc/.config/yazi/plugins/jump-to-char.yazi/main.lua b/misc/.config/yazi/plugins/jump-to-char.yazi/main.lua
new file mode 100644
index 0000000..f6bf648
--- /dev/null
+++ b/misc/.config/yazi/plugins/jump-to-char.yazi/main.lua
@@ -0,0 +1,31 @@
+local AVAILABLE_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789."
+
+local changed = ya.sync(function(st, new)
+ local b = st.last ~= new
+ st.last = new
+ return b or not cx.active.finder
+end)
+
+local escape = function(s) return s == "." and "\\." or s end
+
+return {
+ entry = function()
+ local cands = {}
+ for i = 1, #AVAILABLE_CHARS do
+ cands[#cands + 1] = { on = AVAILABLE_CHARS:sub(i, i) }
+ end
+
+ local idx = ya.which { cands = cands, silent = true }
+ if not idx then
+ return
+ end
+
+ local kw = escape(cands[idx].on)
+ if changed(kw) then
+ ya.mgr_emit("find_do", { "^" .. kw })
+ else
+ ya.mgr_emit("find_arrow", {})
+ end
+ end,
+}
+
diff --git a/misc/.config/yazi/plugins/smart-enter.yazi/init.lua b/misc/.config/yazi/plugins/smart-enter.yazi/init.lua
deleted file mode 100644
index 048360c..0000000
--- a/misc/.config/yazi/plugins/smart-enter.yazi/init.lua
+++ /dev/null
@@ -1,31 +0,0 @@
----@diagnostic disable: undefined-global
-
-return {
- entry = function(self, args)
- local h = cx.active.current.hovered
- if h and h.cha.is_dir then
- ya.manager_emit("enter", {})
- return
- end
-
- if #args == 0 then
- ya.manager_emit("open", {})
- end
-
- if args[1] == "detatch" then
- os.execute(string.format("opener detatch \"%s\"", h.url))
- elseif args[1] == "list" then
- local f = assert(io.popen(string.format(
- "opener list \"%s\"", h.url), 'r'))
- local out = assert(f:read('*a'))
- f:close()
- ya.notify {
- title = string.format("Openers for %s:", h.name),
- content = out,
- timeout = 6.5,
- level = "info",
- }
- end
- end,
-}
-
diff --git a/misc/.config/yazi/plugins/smart-enter.yazi/main.lua b/misc/.config/yazi/plugins/smart-enter.yazi/main.lua
new file mode 100644
index 0000000..8fc5fb2
--- /dev/null
+++ b/misc/.config/yazi/plugins/smart-enter.yazi/main.lua
@@ -0,0 +1,35 @@
+--- @since 25.2.26
+--- @sync entry
+
+local function setup(self, opts) self.open_multi = opts.open_multi end
+
+local function entry(_, job)
+ local h = cx.active.current.hovered
+ if h and h.cha.is_dir then
+ ya.manager_emit("enter", {})
+ return
+ end
+
+ if #job.args == 0 then
+ ya.manager_emit("open", {})
+ end
+
+ if job.args[1] == "detatch" then
+ os.execute(string.format("opener detatch \"%s\"", h.url))
+ elseif job.args[1] == "list" then
+ local f = assert(io.popen(string.format(
+ "opener list \"%s\"", h.url), 'r'))
+ local out = assert(f:read('*a'))
+ f:close()
+ ya.notify {
+ title = string.format("Openers for %s:", h.name),
+ content = out,
+ timeout = 6.5,
+ level = "info",
+ }
+ end
+end
+
+
+return { entry = entry, setup = setup }
+
diff --git a/misc/.config/yazi/theme.toml b/misc/.config/yazi/theme.toml
index 10a75f4..6908c3a 100644
--- a/misc/.config/yazi/theme.toml
+++ b/misc/.config/yazi/theme.toml
@@ -1,66 +1,6 @@
-# A TOML linter such as https://taplo.tamasfe.dev/ can use this schema to validate your config.
-# If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas.
-"$schema" = "https://yazi-rs.github.io/schemas/theme.json"
-
-# vim:fileencoding=utf-8:foldmethod=marker
-
-# : Flavor {{{
-
-[flavor]
-use = ""
-
-# : }}}
-
-# : Manager {{{
-
-[manager]
-cwd = { fg = "cyan" }
-
-# Hovered
-hovered = { reversed = true }
-preview_hovered = { underline = true }
-
-# Find
-find_keyword = { fg = "yellow", bold = true, italic = true, underline = true }
-find_position = { fg = "magenta", bg = "reset", bold = true, italic = true }
-
-# Marker
-marker_copied = { fg = "lightgreen", bg = "lightgreen" }
-marker_cut = { fg = "lightred", bg = "lightred" }
-marker_marked = { fg = "lightcyan", bg = "lightcyan" }
-marker_selected = { fg = "lightyellow", bg = "lightyellow" }
-
-# Tab
-tab_active = { reversed = true }
-tab_inactive = {}
-tab_width = 1
-
-# Count
-count_copied = { fg = "white", bg = "green" }
-count_cut = { fg = "white", bg = "red" }
-count_selected = { fg = "white", bg = "yellow" }
-
-# Border
-border_symbol = "│"
-border_style = { fg = "gray" }
-
-# Highlighting
-syntect_theme = ""
-
-# : }}}
-
-
-# : Status {{{
-
[status]
-separator_open = ""
-separator_close = ""
-separator_style = { fg = "darkgray", bg = "darkgray" }
-
-# Mode
-mode_normal = { fg = "black", bg = "lightblue", bold = false }
-mode_select = { fg = "black", bg = "lightgreen", bold = false }
-mode_unset = { fg = "black", bg = "lightmagenta", bold = false }
+sep_left = { open = "", close = "" }
+sep_right = { open = "", close = "" }
# Progress
progress_label = { bold = false }
@@ -68,103 +8,15 @@ progress_normal = { fg = "lightblue", bg = "black" }
progress_error = { fg = "red", bg = "black" }
# Permissions
-permissions_t = { fg = "lightgreen" }
-permissions_r = { fg = "lightyellow" }
-permissions_w = { fg = "lightred" }
-permissions_x = { fg = "lightcyan" }
-permissions_s = { fg = "darkgray" }
+perm_type = { fg = "lightgreen" }
+perm_read = { fg = "lightyellow" }
+perm_write = { fg = "lightred" }
+perm_exec = { fg = "lightcyan" }
-# : }}}
-
-
-# : Select {{{
-
-[select]
-border = { fg = "blue" }
-active = { fg = "magenta", bold = true }
-inactive = {}
-
-# : }}}
-
-
-# : Input {{{
-
-[input]
-border = { fg = "blue" }
-title = {}
-value = {}
-selected = { reversed = true }
-
-# : }}}
-
-
-# : Completion {{{
-
-[completion]
-border = { fg = "blue" }
-active = { reversed = true }
-inactive = {}
-
-# Icons
-icon_file = ""
-icon_folder = ""
-icon_command = ""
-
-# : }}}
-
-
-# : Tasks {{{
-
-[tasks]
-border = { fg = "blue" }
-title = {}
-hovered = { fg = "magenta", underline = true }
-
-# : }}}
-
-
-# : Which {{{
-
-[which]
-cols = 3
-mask = { bg = "black" }
-cand = { fg = "lightcyan" }
-rest = { fg = "darkgray" }
-desc = { fg = "lightmagenta" }
-separator = " "
-separator_style = { fg = "darkgray" }
-
-# : }}}
-
-
-# : Help {{{
-
-[help]
-on = { fg = "cyan" }
-run = { fg = "magenta" }
-desc = {}
-hovered = { reversed = true, bold = true }
-footer = { fg = "black", bg = "white" }
-
-# : }}}
-
-
-# : Notify {{{
-
-[notify]
-title_info = { fg = "green" }
-title_warn = { fg = "yellow" }
-title_error = { fg = "red" }
-
-# Icons
-icon_info = ""
-icon_warn = ""
-icon_error = ""
-
-# : }}}
-
-
-# : File-specific styles {{{
+[mode]
+normal_main = { fg = "black", bg = "lightblue", bold = false }
+select_main = { fg = "black", bg = "lightgreen", bold = false }
+unset_main = { fg = "black", bg = "lightmagenta", bold = false }
[filetype]
@@ -198,576 +50,24 @@ rules = [
[icon]
-globs = []
dirs = [
- # { name = ".config", text = "" },
- # { name = ".git", text = "" },
-]
-files = [
- { name = ".babelrc", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
- { name = ".bash_profile", text = "", fg_dark = "#89e051", fg_light = "#447028" },
- { name = ".bashrc", text = "", fg_dark = "#89e051", fg_light = "#447028" },
- { name = ".dockerignore", text = "", fg_dark = "#458ee6", fg_light = "#2e5f99" },
- { name = ".ds_store", text = "", fg_dark = "#41535b", fg_light = "#41535b" },
- { name = ".editorconfig", text = "", fg_dark = "#fff2f2", fg_light = "#333030" },
- { name = ".env", text = "", fg_dark = "#faf743", fg_light = "#32310d" },
- { name = ".eslintignore", text = "", fg_dark = "#4b32c3", fg_light = "#4b32c3" },
- { name = ".eslintrc", text = "", fg_dark = "#4b32c3", fg_light = "#4b32c3" },
- { name = ".gitattributes", text = "", fg_dark = "#f54d27", fg_light = "#b83a1d" },
- { name = ".gitconfig", text = "", fg_dark = "#f54d27", fg_light = "#b83a1d" },
- { name = ".gitignore", text = "", fg_dark = "#f54d27", fg_light = "#b83a1d" },
- { name = ".gitlab-ci.yml", text = "", fg_dark = "#e24329", fg_light = "#aa321f" },
- { name = ".gitmodules", text = "", fg_dark = "#f54d27", fg_light = "#b83a1d" },
- { name = ".gtkrc-2.0", text = "", fg_dark = "#ffffff", fg_light = "#333333" },
- { name = ".gvimrc", text = "", fg_dark = "#019833", fg_light = "#017226" },
- { name = ".luaurc", text = "", fg_dark = "#00a2ff", fg_light = "#007abf" },
- { name = ".mailmap", text = "", fg_dark = "#41535b", fg_light = "#41535b" },
- { name = ".npmignore", text = "", fg_dark = "#e8274b", fg_light = "#ae1d38" },
- { name = ".npmrc", text = "", fg_dark = "#e8274b", fg_light = "#ae1d38" },
- { name = ".prettierrc", text = "", fg_dark = "#4285f4", fg_light = "#3264b7" },
- { name = ".settings.json", text = "", fg_dark = "#854cc7", fg_light = "#643995" },
- { name = ".SRCINFO", text = "", fg_dark = "#0f94d2", fg_light = "#0b6f9e" },
- { name = ".vimrc", text = "", fg_dark = "#019833", fg_light = "#017226" },
- { name = ".Xauthority", text = "", fg_dark = "#e54d18", fg_light = "#ac3a12" },
- { name = ".xinitrc", text = "", fg_dark = "#e54d18", fg_light = "#ac3a12" },
- { name = ".Xresources", text = "", fg_dark = "#e54d18", fg_light = "#ac3a12" },
- { name = ".xsession", text = "", fg_dark = "#e54d18", fg_light = "#ac3a12" },
- { name = ".zprofile", text = "", fg_dark = "#89e051", fg_light = "#447028" },
- { name = ".zshenv", text = "", fg_dark = "#89e051", fg_light = "#447028" },
- { name = ".zshrc", text = "", fg_dark = "#89e051", fg_light = "#447028" },
- { name = "_gvimrc", text = "", fg_dark = "#019833", fg_light = "#017226" },
- { name = "_vimrc", text = "", fg_dark = "#019833", fg_light = "#017226" },
- { name = "avif", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
- { name = "brewfile", text = "", fg_dark = "#701516", fg_light = "#701516" },
- { name = "bspwmrc", text = "", fg_dark = "#2f2f2f", fg_light = "#2f2f2f" },
- { name = "build", text = "", fg_dark = "#89e051", fg_light = "#447028" },
- { name = "build.gradle", text = "", fg_dark = "#005f87", fg_light = "#005f87" },
- { name = "build.zig.zon", text = "", fg_dark = "#f69a1b", fg_light = "#7b4d0e" },
- { name = "cantorrc", text = "", fg_dark = "#1c99f3", fg_light = "#1573b6" },
- { name = "checkhealth", text = "", fg_dark = "#75b4fb", fg_light = "#3a5a7e" },
- { name = "cmakelists.txt", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
- { name = "commit_editmsg", text = "", fg_dark = "#f54d27", fg_light = "#b83a1d" },
- { name = "compose.yaml", text = "", fg_dark = "#458ee6", fg_light = "#2e5f99" },
- { name = "compose.yml", text = "", fg_dark = "#458ee6", fg_light = "#2e5f99" },
- { name = "config", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
- { name = "containerfile", text = "", fg_dark = "#458ee6", fg_light = "#2e5f99" },
- { name = "copying", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
- { name = "copying.lesser", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
- { name = "docker-compose.yaml", text = "", fg_dark = "#458ee6", fg_light = "#2e5f99" },
- { name = "docker-compose.yml", text = "", fg_dark = "#458ee6", fg_light = "#2e5f99" },
- { name = "dockerfile", text = "", fg_dark = "#458ee6", fg_light = "#2e5f99" },
- { name = "ext_typoscript_setup.txt", text = "", fg_dark = "#ff8700", fg_light = "#aa5a00" },
- { name = "favicon.ico", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
- { name = "fp-info-cache", text = "", fg_dark = "#ffffff", fg_light = "#333333" },
- { name = "fp-lib-table", text = "", fg_dark = "#ffffff", fg_light = "#333333" },
- { name = "FreeCAD.conf", text = "", fg_dark = "#cb0d0d", fg_light = "#cb0d0d" },
- { name = "gemfile$", text = "", fg_dark = "#701516", fg_light = "#701516" },
- { name = "gnumakefile", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
- { name = "gradle-wrapper.properties", text = "", fg_dark = "#005f87", fg_light = "#005f87" },
- { name = "gradle.properties", text = "", fg_dark = "#005f87", fg_light = "#005f87" },
- { name = "gradlew", text = "", fg_dark = "#005f87", fg_light = "#005f87" },
- { name = "groovy", text = "", fg_dark = "#4a687c", fg_light = "#384e5d" },
- { name = "gruntfile.babel.js", text = "", fg_dark = "#e37933", fg_light = "#975122" },
- { name = "gruntfile.coffee", text = "", fg_dark = "#e37933", fg_light = "#975122" },
- { name = "gruntfile.js", text = "", fg_dark = "#e37933", fg_light = "#975122" },
- { name = "gruntfile.ts", text = "", fg_dark = "#e37933", fg_light = "#975122" },
- { name = "gtkrc", text = "", fg_dark = "#ffffff", fg_light = "#333333" },
- { name = "gulpfile.babel.js", text = "", fg_dark = "#cc3e44", fg_light = "#992e33" },
- { name = "gulpfile.coffee", text = "", fg_dark = "#cc3e44", fg_light = "#992e33" },
- { name = "gulpfile.js", text = "", fg_dark = "#cc3e44", fg_light = "#992e33" },
- { name = "gulpfile.ts", text = "", fg_dark = "#cc3e44", fg_light = "#992e33" },
- { name = "hyprland.conf", text = "", fg_dark = "#00aaae", fg_light = "#008082" },
- { name = "i3blocks.conf", text = "", fg_dark = "#e8ebee", fg_light = "#2e2f30" },
- { name = "i3status.conf", text = "", fg_dark = "#e8ebee", fg_light = "#2e2f30" },
- { name = "kalgebrarc", text = "", fg_dark = "#1c99f3", fg_light = "#1573b6" },
- { name = "kdeglobals", text = "", fg_dark = "#1c99f3", fg_light = "#1573b6" },
- { name = "kdenlive-layoutsrc", text = "", fg_dark = "#83b8f2", fg_light = "#425c79" },
- { name = "kdenliverc", text = "", fg_dark = "#83b8f2", fg_light = "#425c79" },
- { name = "kritadisplayrc", text = "", fg_dark = "#f245fb", fg_light = "#a12ea7" },
- { name = "kritarc", text = "", fg_dark = "#f245fb", fg_light = "#a12ea7" },
- { name = "license", text = "", fg_dark = "#d0bf41", fg_light = "#686020" },
- { name = "lxde-rc.xml", text = "", fg_dark = "#909090", fg_light = "#606060" },
- { name = "lxqt.conf", text = "", fg_dark = "#0192d3", fg_light = "#016e9e" },
- { name = "makefile", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
- { name = "mix.lock", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
- { name = "mpv.conf", text = "", fg_dark = "#3b1342", fg_light = "#3b1342" },
- { name = "node_modules", text = "", fg_dark = "#e8274b", fg_light = "#ae1d38" },
- { name = "package-lock.json", text = "", fg_dark = "#7a0d21", fg_light = "#7a0d21" },
- { name = "package.json", text = "", fg_dark = "#e8274b", fg_light = "#ae1d38" },
- { name = "PKGBUILD", text = "", fg_dark = "#0f94d2", fg_light = "#0b6f9e" },
- { name = "platformio.ini", text = "", fg_dark = "#f6822b", fg_light = "#a4571d" },
- { name = "pom.xml", text = "", fg_dark = "#7a0d21", fg_light = "#7a0d21" },
- { name = "procfile", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
- { name = "PrusaSlicer.ini", text = "", fg_dark = "#ec6b23", fg_light = "#9d4717" },
- { name = "PrusaSlicerGcodeViewer.ini", text = "", fg_dark = "#ec6b23", fg_light = "#9d4717" },
- { name = "py.typed", text = "", fg_dark = "#ffbc03", fg_light = "#805e02" },
- { name = "QtProject.conf", text = "", fg_dark = "#40cd52", fg_light = "#2b8937" },
- { name = "R", text = "", fg_dark = "#2266ba", fg_light = "#1a4c8c" },
- { name = "r", text = "", fg_dark = "#2266ba", fg_light = "#1a4c8c" },
- { name = "rakefile", text = "", fg_dark = "#701516", fg_light = "#701516" },
- { name = "rmd", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "settings.gradle", text = "", fg_dark = "#005f87", fg_light = "#005f87" },
- { name = "svelte.config.js", text = "", fg_dark = "#ff3e00", fg_light = "#bf2e00" },
- { name = "sxhkdrc", text = "", fg_dark = "#2f2f2f", fg_light = "#2f2f2f" },
- { name = "sym-lib-table", text = "", fg_dark = "#ffffff", fg_light = "#333333" },
- { name = "tailwind.config.js", text = "", fg_dark = "#20c2e3", fg_light = "#158197" },
- { name = "tailwind.config.mjs", text = "", fg_dark = "#20c2e3", fg_light = "#158197" },
- { name = "tailwind.config.ts", text = "", fg_dark = "#20c2e3", fg_light = "#158197" },
- { name = "tmux.conf", text = "", fg_dark = "#14ba19", fg_light = "#0f8c13" },
- { name = "tmux.conf.local", text = "", fg_dark = "#14ba19", fg_light = "#0f8c13" },
- { name = "tsconfig.json", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "unlicense", text = "", fg_dark = "#d0bf41", fg_light = "#686020" },
- { name = "vagrantfile$", text = "", fg_dark = "#1563ff", fg_light = "#104abf" },
- { name = "vlcrc", text = "", fg_dark = "#ee7a00", fg_light = "#9f5100" },
- { name = "webpack", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "weston.ini", text = "", fg_dark = "#ffbb01", fg_light = "#805e00" },
- { name = "workspace", text = "", fg_dark = "#89e051", fg_light = "#447028" },
- { name = "xmobarrc", text = "", fg_dark = "#fd4d5d", fg_light = "#a9333e" },
- { name = "xmobarrc.hs", text = "", fg_dark = "#fd4d5d", fg_light = "#a9333e" },
- { name = "xmonad.hs", text = "", fg_dark = "#fd4d5d", fg_light = "#a9333e" },
- { name = "xorg.conf", text = "", fg_dark = "#e54d18", fg_light = "#ac3a12" },
- { name = "xsettingsd.conf", text = "", fg_dark = "#e54d18", fg_light = "#ac3a12" },
-]
-exts = [
- { name = "3gp", text = "", fg_dark = "#fd971f", fg_light = "#7e4c10" },
- { name = "3mf", text = "", fg_dark = "#888888", fg_light = "#5b5b5b" },
- { name = "7z", text = "", fg_dark = "#eca517", fg_light = "#76520c" },
- { name = "a", text = "", fg_dark = "#dcddd6", fg_light = "#494a47" },
- { name = "aac", text = "", fg_dark = "#00afff", fg_light = "#0075aa" },
- { name = "ai", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
- { name = "aif", text = "", fg_dark = "#00afff", fg_light = "#0075aa" },
- { name = "aiff", text = "", fg_dark = "#00afff", fg_light = "#0075aa" },
- { name = "android", text = "", fg_dark = "#34a853", fg_light = "#277e3e" },
- { name = "ape", text = "", fg_dark = "#00afff", fg_light = "#0075aa" },
- { name = "apk", text = "", fg_dark = "#34a853", fg_light = "#277e3e" },
- { name = "app", text = "", fg_dark = "#9f0500", fg_light = "#9f0500" },
- { name = "applescript", text = "", fg_dark = "#6d8085", fg_light = "#526064" },
- { name = "asc", text = "", fg_dark = "#576d7f", fg_light = "#41525f" },
- { name = "ass", text = "", fg_dark = "#ffb713", fg_light = "#805c0a" },
- { name = "astro", text = "", fg_dark = "#e23f67", fg_light = "#aa2f4d" },
- { name = "awk", text = "", fg_dark = "#4d5a5e", fg_light = "#3a4446" },
- { name = "azcli", text = "", fg_dark = "#0078d4", fg_light = "#005a9f" },
- { name = "bak", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
- { name = "bash", text = "", fg_dark = "#89e051", fg_light = "#447028" },
- { name = "bat", text = "", fg_dark = "#c1f12e", fg_light = "#40500f" },
- { name = "bazel", text = "", fg_dark = "#89e051", fg_light = "#447028" },
- { name = "bib", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
- { name = "bicep", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "bicepparam", text = "", fg_dark = "#9f74b3", fg_light = "#6a4d77" },
- { name = "bin", text = "", fg_dark = "#9f0500", fg_light = "#9f0500" },
- { name = "blade.php", text = "", fg_dark = "#f05340", fg_light = "#a0372b" },
- { name = "blend", text = "", fg_dark = "#ea7600", fg_light = "#9c4f00" },
- { name = "blp", text = "", fg_dark = "#5796e2", fg_light = "#3a6497" },
- { name = "bmp", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
- { name = "brep", text = "", fg_dark = "#839463", fg_light = "#576342" },
- { name = "bz", text = "", fg_dark = "#eca517", fg_light = "#76520c" },
- { name = "bz2", text = "", fg_dark = "#eca517", fg_light = "#76520c" },
- { name = "bz3", text = "", fg_dark = "#eca517", fg_light = "#76520c" },
- { name = "bzl", text = "", fg_dark = "#89e051", fg_light = "#447028" },
- { name = "c", text = "", fg_dark = "#599eff", fg_light = "#3b69aa" },
- { name = "c++", text = "", fg_dark = "#f34b7d", fg_light = "#a23253" },
- { name = "cache", text = "", fg_dark = "#ffffff", fg_light = "#333333" },
- { name = "cast", text = "", fg_dark = "#fd971f", fg_light = "#7e4c10" },
- { name = "cbl", text = "⚙", fg_dark = "#005ca5", fg_light = "#005ca5" },
- { name = "cc", text = "", fg_dark = "#f34b7d", fg_light = "#a23253" },
- { name = "ccm", text = "", fg_dark = "#f34b7d", fg_light = "#a23253" },
- { name = "cfg", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
- { name = "cjs", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
- { name = "clj", text = "", fg_dark = "#8dc149", fg_light = "#466024" },
- { name = "cljc", text = "", fg_dark = "#8dc149", fg_light = "#466024" },
- { name = "cljd", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "cljs", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "cmake", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
- { name = "cob", text = "⚙", fg_dark = "#005ca5", fg_light = "#005ca5" },
- { name = "cobol", text = "⚙", fg_dark = "#005ca5", fg_light = "#005ca5" },
- { name = "coffee", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
- { name = "conf", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
- { name = "config.ru", text = "", fg_dark = "#701516", fg_light = "#701516" },
- { name = "cp", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "cpp", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "cppm", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "cpy", text = "⚙", fg_dark = "#005ca5", fg_light = "#005ca5" },
- { name = "cr", text = "", fg_dark = "#c8c8c8", fg_light = "#434343" },
- { name = "crdownload", text = "", fg_dark = "#44cda8", fg_light = "#226654" },
- { name = "cs", text = "", fg_dark = "#596706", fg_light = "#434d04" },
- { name = "csh", text = "", fg_dark = "#4d5a5e", fg_light = "#3a4446" },
- { name = "cshtml", text = "", fg_dark = "#512bd4", fg_light = "#512bd4" },
- { name = "cson", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
- { name = "csproj", text = "", fg_dark = "#512bd4", fg_light = "#512bd4" },
- { name = "css", text = "", fg_dark = "#42a5f5", fg_light = "#2c6ea3" },
- { name = "csv", text = "", fg_dark = "#89e051", fg_light = "#447028" },
- { name = "cts", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "cu", text = "", fg_dark = "#89e051", fg_light = "#447028" },
- { name = "cue", text = "", fg_dark = "#ed95ae", fg_light = "#764a57" },
- { name = "cuh", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
- { name = "cxx", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "cxxm", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "d", text = "", fg_dark = "#427819", fg_light = "#325a13" },
- { name = "d.ts", text = "", fg_dark = "#d59855", fg_light = "#6a4c2a" },
- { name = "dart", text = "", fg_dark = "#03589c", fg_light = "#03589c" },
- { name = "db", text = "", fg_dark = "#dad8d8", fg_light = "#494848" },
- { name = "dconf", text = "", fg_dark = "#ffffff", fg_light = "#333333" },
- { name = "desktop", text = "", fg_dark = "#563d7c", fg_light = "#563d7c" },
- { name = "diff", text = "", fg_dark = "#41535b", fg_light = "#41535b" },
- { name = "dll", text = "", fg_dark = "#4d2c0b", fg_light = "#4d2c0b" },
- { name = "doc", text = "", fg_dark = "#185abd", fg_light = "#185abd" },
- { name = "Dockerfile", text = "", fg_dark = "#458ee6", fg_light = "#2e5f99" },
- { name = "docx", text = "", fg_dark = "#185abd", fg_light = "#185abd" },
- { name = "dot", text = "", fg_dark = "#30638e", fg_light = "#244a6a" },
- { name = "download", text = "", fg_dark = "#44cda8", fg_light = "#226654" },
- { name = "drl", text = "", fg_dark = "#ffafaf", fg_light = "#553a3a" },
- { name = "dropbox", text = "", fg_dark = "#0061fe", fg_light = "#0049be" },
- { name = "dump", text = "", fg_dark = "#dad8d8", fg_light = "#494848" },
- { name = "dwg", text = "", fg_dark = "#839463", fg_light = "#576342" },
- { name = "dxf", text = "", fg_dark = "#839463", fg_light = "#576342" },
- { name = "ebook", text = "", fg_dark = "#eab16d", fg_light = "#755836" },
- { name = "edn", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "eex", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
- { name = "ejs", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
- { name = "el", text = "", fg_dark = "#8172be", fg_light = "#61568e" },
- { name = "elc", text = "", fg_dark = "#8172be", fg_light = "#61568e" },
- { name = "elf", text = "", fg_dark = "#9f0500", fg_light = "#9f0500" },
- { name = "elm", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "eln", text = "", fg_dark = "#8172be", fg_light = "#61568e" },
- { name = "env", text = "", fg_dark = "#faf743", fg_light = "#32310d" },
- { name = "eot", text = "", fg_dark = "#ececec", fg_light = "#2f2f2f" },
- { name = "epp", text = "", fg_dark = "#ffa61a", fg_light = "#80530d" },
- { name = "epub", text = "", fg_dark = "#eab16d", fg_light = "#755836" },
- { name = "erb", text = "", fg_dark = "#701516", fg_light = "#701516" },
- { name = "erl", text = "", fg_dark = "#b83998", fg_light = "#8a2b72" },
- { name = "ex", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
- { name = "exe", text = "", fg_dark = "#9f0500", fg_light = "#9f0500" },
- { name = "exs", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
- { name = "f#", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "f3d", text = "", fg_dark = "#839463", fg_light = "#576342" },
- { name = "f90", text = "", fg_dark = "#734f96", fg_light = "#563b70" },
- { name = "fbx", text = "", fg_dark = "#888888", fg_light = "#5b5b5b" },
- { name = "fcbak", text = "", fg_dark = "#cb0d0d", fg_light = "#cb0d0d" },
- { name = "fcmacro", text = "", fg_dark = "#cb0d0d", fg_light = "#cb0d0d" },
- { name = "fcmat", text = "", fg_dark = "#cb0d0d", fg_light = "#cb0d0d" },
- { name = "fcparam", text = "", fg_dark = "#cb0d0d", fg_light = "#cb0d0d" },
- { name = "fcscript", text = "", fg_dark = "#cb0d0d", fg_light = "#cb0d0d" },
- { name = "fcstd", text = "", fg_dark = "#cb0d0d", fg_light = "#cb0d0d" },
- { name = "fcstd1", text = "", fg_dark = "#cb0d0d", fg_light = "#cb0d0d" },
- { name = "fctb", text = "", fg_dark = "#cb0d0d", fg_light = "#cb0d0d" },
- { name = "fctl", text = "", fg_dark = "#cb0d0d", fg_light = "#cb0d0d" },
- { name = "fdmdownload", text = "", fg_dark = "#44cda8", fg_light = "#226654" },
- { name = "fish", text = "", fg_dark = "#4d5a5e", fg_light = "#3a4446" },
- { name = "flac", text = "", fg_dark = "#0075aa", fg_light = "#005880" },
- { name = "flc", text = "", fg_dark = "#ececec", fg_light = "#2f2f2f" },
- { name = "flf", text = "", fg_dark = "#ececec", fg_light = "#2f2f2f" },
- { name = "fnl", text = "", fg_dark = "#fff3d7", fg_light = "#33312b" },
- { name = "fs", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "fsi", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "fsscript", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "fsx", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "gcode", text = "", fg_dark = "#1471ad", fg_light = "#0f5582" },
- { name = "gd", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
- { name = "gemspec", text = "", fg_dark = "#701516", fg_light = "#701516" },
- { name = "gif", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
- { name = "git", text = "", fg_dark = "#f14c28", fg_light = "#b5391e" },
- { name = "glb", text = "", fg_dark = "#ffb13b", fg_light = "#80581e" },
- { name = "gnumakefile", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
- { name = "go", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "godot", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
- { name = "gql", text = "", fg_dark = "#e535ab", fg_light = "#ac2880" },
- { name = "graphql", text = "", fg_dark = "#e535ab", fg_light = "#ac2880" },
- { name = "gresource", text = "", fg_dark = "#ffffff", fg_light = "#333333" },
- { name = "gv", text = "", fg_dark = "#30638e", fg_light = "#244a6a" },
- { name = "gz", text = "", fg_dark = "#eca517", fg_light = "#76520c" },
- { name = "h", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
- { name = "haml", text = "", fg_dark = "#eaeae1", fg_light = "#2f2f2d" },
- { name = "hbs", text = "", fg_dark = "#f0772b", fg_light = "#a04f1d" },
- { name = "heex", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
- { name = "hex", text = "", fg_dark = "#2e63ff", fg_light = "#224abf" },
- { name = "hh", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
- { name = "hpp", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
- { name = "hrl", text = "", fg_dark = "#b83998", fg_light = "#8a2b72" },
- { name = "hs", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
- { name = "htm", text = "", fg_dark = "#e34c26", fg_light = "#aa391c" },
- { name = "html", text = "", fg_dark = "#e44d26", fg_light = "#ab3a1c" },
- { name = "huff", text = "", fg_dark = "#4242c7", fg_light = "#4242c7" },
- { name = "hurl", text = "", fg_dark = "#ff0288", fg_light = "#bf0266" },
- { name = "hx", text = "", fg_dark = "#ea8220", fg_light = "#9c5715" },
- { name = "hxx", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
- { name = "ical", text = "", fg_dark = "#2b2e83", fg_light = "#2b2e83" },
- { name = "icalendar", text = "", fg_dark = "#2b2e83", fg_light = "#2b2e83" },
- { name = "ico", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
- { name = "ics", text = "", fg_dark = "#2b2e83", fg_light = "#2b2e83" },
- { name = "ifb", text = "", fg_dark = "#2b2e83", fg_light = "#2b2e83" },
- { name = "ifc", text = "", fg_dark = "#839463", fg_light = "#576342" },
- { name = "ige", text = "", fg_dark = "#839463", fg_light = "#576342" },
- { name = "iges", text = "", fg_dark = "#839463", fg_light = "#576342" },
- { name = "igs", text = "", fg_dark = "#839463", fg_light = "#576342" },
- { name = "image", text = "", fg_dark = "#d0bec8", fg_light = "#453f43" },
- { name = "img", text = "", fg_dark = "#d0bec8", fg_light = "#453f43" },
- { name = "import", text = "", fg_dark = "#ececec", fg_light = "#2f2f2f" },
- { name = "info", text = "", fg_dark = "#ffffcd", fg_light = "#333329" },
- { name = "ini", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
- { name = "ino", text = "", fg_dark = "#56b6c2", fg_light = "#397981" },
- { name = "ipynb", text = "", fg_dark = "#51a0cf", fg_light = "#366b8a" },
- { name = "iso", text = "", fg_dark = "#d0bec8", fg_light = "#453f43" },
- { name = "ixx", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "java", text = "", fg_dark = "#cc3e44", fg_light = "#992e33" },
- { name = "jl", text = "", fg_dark = "#a270ba", fg_light = "#6c4b7c" },
- { name = "jpeg", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
- { name = "jpg", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
- { name = "js", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
- { name = "json", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
- { name = "json5", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
- { name = "jsonc", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
- { name = "jsx", text = "", fg_dark = "#20c2e3", fg_light = "#158197" },
- { name = "jwmrc", text = "", fg_dark = "#0078cd", fg_light = "#005a9a" },
- { name = "jxl", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
- { name = "kbx", text = "", fg_dark = "#737672", fg_light = "#565856" },
- { name = "kdb", text = "", fg_dark = "#529b34", fg_light = "#3e7427" },
- { name = "kdbx", text = "", fg_dark = "#529b34", fg_light = "#3e7427" },
- { name = "kdenlive", text = "", fg_dark = "#83b8f2", fg_light = "#425c79" },
- { name = "kdenlivetitle", text = "", fg_dark = "#83b8f2", fg_light = "#425c79" },
- { name = "kicad_dru", text = "", fg_dark = "#ffffff", fg_light = "#333333" },
- { name = "kicad_mod", text = "", fg_dark = "#ffffff", fg_light = "#333333" },
- { name = "kicad_pcb", text = "", fg_dark = "#ffffff", fg_light = "#333333" },
- { name = "kicad_prl", text = "", fg_dark = "#ffffff", fg_light = "#333333" },
- { name = "kicad_pro", text = "", fg_dark = "#ffffff", fg_light = "#333333" },
- { name = "kicad_sch", text = "", fg_dark = "#ffffff", fg_light = "#333333" },
- { name = "kicad_sym", text = "", fg_dark = "#ffffff", fg_light = "#333333" },
- { name = "kicad_wks", text = "", fg_dark = "#ffffff", fg_light = "#333333" },
- { name = "ko", text = "", fg_dark = "#dcddd6", fg_light = "#494a47" },
- { name = "kpp", text = "", fg_dark = "#f245fb", fg_light = "#a12ea7" },
- { name = "kra", text = "", fg_dark = "#f245fb", fg_light = "#a12ea7" },
- { name = "krz", text = "", fg_dark = "#f245fb", fg_light = "#a12ea7" },
- { name = "ksh", text = "", fg_dark = "#4d5a5e", fg_light = "#3a4446" },
- { name = "kt", text = "", fg_dark = "#7f52ff", fg_light = "#5f3ebf" },
- { name = "kts", text = "", fg_dark = "#7f52ff", fg_light = "#5f3ebf" },
- { name = "lck", text = "", fg_dark = "#bbbbbb", fg_light = "#5e5e5e" },
- { name = "leex", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
- { name = "less", text = "", fg_dark = "#563d7c", fg_light = "#563d7c" },
- { name = "lff", text = "", fg_dark = "#ececec", fg_light = "#2f2f2f" },
- { name = "lhs", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
- { name = "lib", text = "", fg_dark = "#4d2c0b", fg_light = "#4d2c0b" },
- { name = "license", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
- { name = "liquid", text = "", fg_dark = "#95bf47", fg_light = "#4a6024" },
- { name = "lock", text = "", fg_dark = "#bbbbbb", fg_light = "#5e5e5e" },
- { name = "log", text = "", fg_dark = "#dddddd", fg_light = "#4a4a4a" },
- { name = "lrc", text = "", fg_dark = "#ffb713", fg_light = "#805c0a" },
- { name = "lua", text = "", fg_dark = "#51a0cf", fg_light = "#366b8a" },
- { name = "luac", text = "", fg_dark = "#51a0cf", fg_light = "#366b8a" },
- { name = "luau", text = "", fg_dark = "#00a2ff", fg_light = "#007abf" },
- { name = "m", text = "", fg_dark = "#599eff", fg_light = "#3b69aa" },
- { name = "m3u", text = "", fg_dark = "#ed95ae", fg_light = "#764a57" },
- { name = "m3u8", text = "", fg_dark = "#ed95ae", fg_light = "#764a57" },
- { name = "m4a", text = "", fg_dark = "#00afff", fg_light = "#0075aa" },
- { name = "m4v", text = "", fg_dark = "#fd971f", fg_light = "#7e4c10" },
- { name = "magnet", text = "", fg_dark = "#a51b16", fg_light = "#a51b16" },
- { name = "makefile", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
- { name = "markdown", text = "", fg_dark = "#dddddd", fg_light = "#4a4a4a" },
- { name = "material", text = "", fg_dark = "#b83998", fg_light = "#8a2b72" },
- { name = "md", text = "", fg_dark = "#dddddd", fg_light = "#4a4a4a" },
- { name = "md5", text = "", fg_dark = "#8c86af", fg_light = "#5d5975" },
- { name = "mdx", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "mint", text = "", fg_dark = "#87c095", fg_light = "#44604a" },
- { name = "mjs", text = "", fg_dark = "#f1e05a", fg_light = "#504b1e" },
- { name = "mk", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
- { name = "mkv", text = "", fg_dark = "#fd971f", fg_light = "#7e4c10" },
- { name = "ml", text = "", fg_dark = "#e37933", fg_light = "#975122" },
- { name = "mli", text = "", fg_dark = "#e37933", fg_light = "#975122" },
- { name = "mm", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "mo", text = "∞", fg_dark = "#9772fb", fg_light = "#654ca7" },
- { name = "mobi", text = "", fg_dark = "#eab16d", fg_light = "#755836" },
- { name = "mov", text = "", fg_dark = "#fd971f", fg_light = "#7e4c10" },
- { name = "mp3", text = "", fg_dark = "#00afff", fg_light = "#0075aa" },
- { name = "mp4", text = "", fg_dark = "#fd971f", fg_light = "#7e4c10" },
- { name = "mpp", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "msf", text = "", fg_dark = "#137be1", fg_light = "#0e5ca9" },
- { name = "mts", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "mustache", text = "", fg_dark = "#e37933", fg_light = "#975122" },
- { name = "nfo", text = "", fg_dark = "#ffffcd", fg_light = "#333329" },
- { name = "nim", text = "", fg_dark = "#f3d400", fg_light = "#514700" },
- { name = "nix", text = "", fg_dark = "#7ebae4", fg_light = "#3f5d72" },
- { name = "nswag", text = "", fg_dark = "#85ea2d", fg_light = "#427516" },
- { name = "nu", text = ">", fg_dark = "#3aa675", fg_light = "#276f4e" },
- { name = "o", text = "", fg_dark = "#9f0500", fg_light = "#9f0500" },
- { name = "obj", text = "", fg_dark = "#888888", fg_light = "#5b5b5b" },
- { name = "ogg", text = "", fg_dark = "#0075aa", fg_light = "#005880" },
- { name = "opus", text = "", fg_dark = "#0075aa", fg_light = "#005880" },
- { name = "org", text = "", fg_dark = "#77aa99", fg_light = "#4f7166" },
- { name = "otf", text = "", fg_dark = "#ececec", fg_light = "#2f2f2f" },
- { name = "out", text = "", fg_dark = "#9f0500", fg_light = "#9f0500" },
- { name = "part", text = "", fg_dark = "#44cda8", fg_light = "#226654" },
- { name = "patch", text = "", fg_dark = "#41535b", fg_light = "#41535b" },
- { name = "pck", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
- { name = "pcm", text = "", fg_dark = "#0075aa", fg_light = "#005880" },
- { name = "pdf", text = "", fg_dark = "#b30b00", fg_light = "#b30b00" },
- { name = "php", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
- { name = "pl", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "pls", text = "", fg_dark = "#ed95ae", fg_light = "#764a57" },
- { name = "ply", text = "", fg_dark = "#888888", fg_light = "#5b5b5b" },
- { name = "pm", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "png", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
- { name = "po", text = "", fg_dark = "#2596be", fg_light = "#1c708e" },
- { name = "pot", text = "", fg_dark = "#2596be", fg_light = "#1c708e" },
- { name = "pp", text = "", fg_dark = "#ffa61a", fg_light = "#80530d" },
- { name = "ppt", text = "", fg_dark = "#cb4a32", fg_light = "#983826" },
- { name = "prisma", text = "", fg_dark = "#5a67d8", fg_light = "#444da2" },
- { name = "pro", text = "", fg_dark = "#e4b854", fg_light = "#725c2a" },
- { name = "ps1", text = "", fg_dark = "#4273ca", fg_light = "#325698" },
- { name = "psb", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "psd", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "psd1", text = "", fg_dark = "#6975c4", fg_light = "#4f5893" },
- { name = "psm1", text = "", fg_dark = "#6975c4", fg_light = "#4f5893" },
- { name = "pub", text = "", fg_dark = "#e3c58e", fg_light = "#4c422f" },
- { name = "pxd", text = "", fg_dark = "#5aa7e4", fg_light = "#3c6f98" },
- { name = "pxi", text = "", fg_dark = "#5aa7e4", fg_light = "#3c6f98" },
- { name = "py", text = "", fg_dark = "#ffbc03", fg_light = "#805e02" },
- { name = "pyc", text = "", fg_dark = "#ffe291", fg_light = "#332d1d" },
- { name = "pyd", text = "", fg_dark = "#ffe291", fg_light = "#332d1d" },
- { name = "pyi", text = "", fg_dark = "#ffbc03", fg_light = "#805e02" },
- { name = "pyo", text = "", fg_dark = "#ffe291", fg_light = "#332d1d" },
- { name = "pyx", text = "", fg_dark = "#5aa7e4", fg_light = "#3c6f98" },
- { name = "qm", text = "", fg_dark = "#2596be", fg_light = "#1c708e" },
- { name = "qml", text = "", fg_dark = "#40cd52", fg_light = "#2b8937" },
- { name = "qrc", text = "", fg_dark = "#40cd52", fg_light = "#2b8937" },
- { name = "qss", text = "", fg_dark = "#40cd52", fg_light = "#2b8937" },
- { name = "query", text = "", fg_dark = "#90a850", fg_light = "#607035" },
- { name = "r", text = "", fg_dark = "#2266ba", fg_light = "#1a4c8c" },
- { name = "rake", text = "", fg_dark = "#701516", fg_light = "#701516" },
- { name = "rar", text = "", fg_dark = "#eca517", fg_light = "#76520c" },
- { name = "razor", text = "", fg_dark = "#512bd4", fg_light = "#512bd4" },
- { name = "rb", text = "", fg_dark = "#701516", fg_light = "#701516" },
- { name = "res", text = "", fg_dark = "#cc3e44", fg_light = "#992e33" },
- { name = "resi", text = "", fg_dark = "#f55385", fg_light = "#a33759" },
- { name = "rlib", text = "", fg_dark = "#dea584", fg_light = "#6f5242" },
- { name = "rmd", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "rproj", text = "", fg_dark = "#358a5b", fg_light = "#286844" },
- { name = "rs", text = "", fg_dark = "#dea584", fg_light = "#6f5242" },
- { name = "rss", text = "", fg_dark = "#fb9d3b", fg_light = "#7e4e1e" },
- { name = "sass", text = "", fg_dark = "#f55385", fg_light = "#a33759" },
- { name = "sbt", text = "", fg_dark = "#cc3e44", fg_light = "#992e33" },
- { name = "sc", text = "", fg_dark = "#cc3e44", fg_light = "#992e33" },
- { name = "scad", text = "", fg_dark = "#f9d72c", fg_light = "#53480f" },
- { name = "scala", text = "", fg_dark = "#cc3e44", fg_light = "#992e33" },
- { name = "scm", text = "", fg_dark = "#eeeeee", fg_light = "#303030" },
- { name = "scss", text = "", fg_dark = "#f55385", fg_light = "#a33759" },
- { name = "sh", text = "", fg_dark = "#4d5a5e", fg_light = "#3a4446" },
- { name = "sha1", text = "", fg_dark = "#8c86af", fg_light = "#5d5975" },
- { name = "sha224", text = "", fg_dark = "#8c86af", fg_light = "#5d5975" },
- { name = "sha256", text = "", fg_dark = "#8c86af", fg_light = "#5d5975" },
- { name = "sha384", text = "", fg_dark = "#8c86af", fg_light = "#5d5975" },
- { name = "sha512", text = "", fg_dark = "#8c86af", fg_light = "#5d5975" },
- { name = "sig", text = "λ", fg_dark = "#e37933", fg_light = "#975122" },
- { name = "signature", text = "λ", fg_dark = "#e37933", fg_light = "#975122" },
- { name = "skp", text = "", fg_dark = "#839463", fg_light = "#576342" },
- { name = "sldasm", text = "", fg_dark = "#839463", fg_light = "#576342" },
- { name = "sldprt", text = "", fg_dark = "#839463", fg_light = "#576342" },
- { name = "slim", text = "", fg_dark = "#e34c26", fg_light = "#aa391c" },
- { name = "sln", text = "", fg_dark = "#854cc7", fg_light = "#643995" },
- { name = "slvs", text = "", fg_dark = "#839463", fg_light = "#576342" },
- { name = "sml", text = "λ", fg_dark = "#e37933", fg_light = "#975122" },
- { name = "so", text = "", fg_dark = "#dcddd6", fg_light = "#494a47" },
- { name = "sol", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "spec.js", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
- { name = "spec.jsx", text = "", fg_dark = "#20c2e3", fg_light = "#158197" },
- { name = "spec.ts", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "spec.tsx", text = "", fg_dark = "#1354bf", fg_light = "#1354bf" },
- { name = "sql", text = "", fg_dark = "#dad8d8", fg_light = "#494848" },
- { name = "sqlite", text = "", fg_dark = "#dad8d8", fg_light = "#494848" },
- { name = "sqlite3", text = "", fg_dark = "#dad8d8", fg_light = "#494848" },
- { name = "srt", text = "", fg_dark = "#ffb713", fg_light = "#805c0a" },
- { name = "ssa", text = "", fg_dark = "#ffb713", fg_light = "#805c0a" },
- { name = "ste", text = "", fg_dark = "#839463", fg_light = "#576342" },
- { name = "step", text = "", fg_dark = "#839463", fg_light = "#576342" },
- { name = "stl", text = "", fg_dark = "#888888", fg_light = "#5b5b5b" },
- { name = "stp", text = "", fg_dark = "#839463", fg_light = "#576342" },
- { name = "strings", text = "", fg_dark = "#2596be", fg_light = "#1c708e" },
- { name = "styl", text = "", fg_dark = "#8dc149", fg_light = "#466024" },
- { name = "sub", text = "", fg_dark = "#ffb713", fg_light = "#805c0a" },
- { name = "sublime", text = "", fg_dark = "#e37933", fg_light = "#975122" },
- { name = "suo", text = "", fg_dark = "#854cc7", fg_light = "#643995" },
- { name = "sv", text = "", fg_dark = "#019833", fg_light = "#017226" },
- { name = "svelte", text = "", fg_dark = "#ff3e00", fg_light = "#bf2e00" },
- { name = "svg", text = "", fg_dark = "#ffb13b", fg_light = "#80581e" },
- { name = "svh", text = "", fg_dark = "#019833", fg_light = "#017226" },
- { name = "swift", text = "", fg_dark = "#e37933", fg_light = "#975122" },
- { name = "t", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "tbc", text = "", fg_dark = "#1e5cb3", fg_light = "#1e5cb3" },
- { name = "tcl", text = "", fg_dark = "#1e5cb3", fg_light = "#1e5cb3" },
- { name = "templ", text = "", fg_dark = "#dbbd30", fg_light = "#6e5e18" },
- { name = "terminal", text = "", fg_dark = "#31b53e", fg_light = "#217929" },
- { name = "test.js", text = "", fg_dark = "#cbcb41", fg_light = "#666620" },
- { name = "test.jsx", text = "", fg_dark = "#20c2e3", fg_light = "#158197" },
- { name = "test.ts", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "test.tsx", text = "", fg_dark = "#1354bf", fg_light = "#1354bf" },
- { name = "tex", text = "", fg_dark = "#3d6117", fg_light = "#3d6117" },
- { name = "tf", text = "", fg_dark = "#5f43e9", fg_light = "#4732af" },
- { name = "tfvars", text = "", fg_dark = "#5f43e9", fg_light = "#4732af" },
- { name = "tgz", text = "", fg_dark = "#eca517", fg_light = "#76520c" },
- { name = "tmux", text = "", fg_dark = "#14ba19", fg_light = "#0f8c13" },
- { name = "toml", text = "", fg_dark = "#9c4221", fg_light = "#753219" },
- { name = "torrent", text = "", fg_dark = "#44cda8", fg_light = "#226654" },
- { name = "tres", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
- { name = "ts", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "tscn", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
- { name = "tsconfig", text = "", fg_dark = "#ff8700", fg_light = "#aa5a00" },
- { name = "tsx", text = "", fg_dark = "#1354bf", fg_light = "#1354bf" },
- { name = "ttf", text = "", fg_dark = "#ececec", fg_light = "#2f2f2f" },
- { name = "twig", text = "", fg_dark = "#8dc149", fg_light = "#466024" },
- { name = "txt", text = "", fg_dark = "#89e051", fg_light = "#447028" },
- { name = "txz", text = "", fg_dark = "#eca517", fg_light = "#76520c" },
- { name = "typoscript", text = "", fg_dark = "#ff8700", fg_light = "#aa5a00" },
- { name = "ui", text = "", fg_dark = "#0c306e", fg_light = "#0c306e" },
- { name = "v", text = "", fg_dark = "#019833", fg_light = "#017226" },
- { name = "vala", text = "", fg_dark = "#7239b3", fg_light = "#562b86" },
- { name = "vh", text = "", fg_dark = "#019833", fg_light = "#017226" },
- { name = "vhd", text = "", fg_dark = "#019833", fg_light = "#017226" },
- { name = "vhdl", text = "", fg_dark = "#019833", fg_light = "#017226" },
- { name = "vim", text = "", fg_dark = "#019833", fg_light = "#017226" },
- { name = "vsh", text = "", fg_dark = "#5d87bf", fg_light = "#3e5a7f" },
- { name = "vsix", text = "", fg_dark = "#854cc7", fg_light = "#643995" },
- { name = "vue", text = "", fg_dark = "#8dc149", fg_light = "#466024" },
- { name = "wasm", text = "", fg_dark = "#5c4cdb", fg_light = "#4539a4" },
- { name = "wav", text = "", fg_dark = "#00afff", fg_light = "#0075aa" },
- { name = "webm", text = "", fg_dark = "#fd971f", fg_light = "#7e4c10" },
- { name = "webmanifest", text = "", fg_dark = "#f1e05a", fg_light = "#504b1e" },
- { name = "webp", text = "", fg_dark = "#a074c4", fg_light = "#6b4d83" },
- { name = "webpack", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "wma", text = "", fg_dark = "#00afff", fg_light = "#0075aa" },
- { name = "woff", text = "", fg_dark = "#ececec", fg_light = "#2f2f2f" },
- { name = "woff2", text = "", fg_dark = "#ececec", fg_light = "#2f2f2f" },
- { name = "wrl", text = "", fg_dark = "#888888", fg_light = "#5b5b5b" },
- { name = "wrz", text = "", fg_dark = "#888888", fg_light = "#5b5b5b" },
- { name = "x", text = "", fg_dark = "#599eff", fg_light = "#3b69aa" },
- { name = "xaml", text = "", fg_dark = "#512bd4", fg_light = "#512bd4" },
- { name = "xcf", text = "", fg_dark = "#635b46", fg_light = "#4a4434" },
- { name = "xcplayground", text = "", fg_dark = "#e37933", fg_light = "#975122" },
- { name = "xcstrings", text = "", fg_dark = "#2596be", fg_light = "#1c708e" },
- { name = "xls", text = "", fg_dark = "#207245", fg_light = "#207245" },
- { name = "xlsx", text = "", fg_dark = "#207245", fg_light = "#207245" },
- { name = "xm", text = "", fg_dark = "#519aba", fg_light = "#36677c" },
- { name = "xml", text = "", fg_dark = "#e37933", fg_light = "#975122" },
- { name = "xpi", text = "", fg_dark = "#ff1b01", fg_light = "#bf1401" },
- { name = "xul", text = "", fg_dark = "#e37933", fg_light = "#975122" },
- { name = "xz", text = "", fg_dark = "#eca517", fg_light = "#76520c" },
- { name = "yaml", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
- { name = "yml", text = "", fg_dark = "#6d8086", fg_light = "#526064" },
- { name = "zig", text = "", fg_dark = "#f69a1b", fg_light = "#7b4d0e" },
- { name = "zip", text = "", fg_dark = "#eca517", fg_light = "#76520c" },
- { name = "zsh", text = "", fg_dark = "#89e051", fg_light = "#447028" },
- { name = "zst", text = "", fg_dark = "#eca517", fg_light = "#76520c" },
]
+
conds = [
# Special files
{ if = "orphan", text = "" },
- { if = "block" , text = "" },
- { if = "char" , text = "" },
- { if = "fifo" , text = "" },
- { if = "sock" , text = "" },
+
+ { if = "block", text = "" },
+ { if = "char", text = "" },
+ { if = "fifo", text = "" },
+ { if = "sock", text = "" },
{ if = "sticky", text = "" },
- { if = "dummy", text = "" },
+ { if = "dummy", text = "" },
# Fallback
- { if = "dir", text = "", fg_dark = "yellow" },
- { if = "exec", text = "", fg_dark = "yellow" },
- { if = "!dir", text = "" },
+ { if = "dir", text = "", fg = "yellow" },
+ { if = "exec", text = "" },
+ # { if = "!dir", text = "" },
+ { if = "!dir", text = "" },
]
-# : }}}
diff --git a/misc/.config/yazi/yazi.toml b/misc/.config/yazi/yazi.toml
index 4b022c3..be9f291 100644
--- a/misc/.config/yazi/yazi.toml
+++ b/misc/.config/yazi/yazi.toml
@@ -1,31 +1,7 @@
-# A TOML linter such as https://taplo.tamasfe.dev/ can use this schema to validate your config.
-# If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas.
-"$schema" = "https://yazi-rs.github.io/schemas/yazi.json"
+[mgr]
-[manager]
-ratio = [ 1, 2, 3 ]
-sort_by = "alphabetical"
-sort_sensitive = false
-sort_reverse = false
-sort_dir_first = true
-sort_translit = false
-linemode = "size"
-show_hidden = true
-show_symlink = false
-# scrolloff = 5
-mouse_events = [ "click", "scroll" ]
-title_format = "Yazi: {cwd}"
-
-[preview]
-tab_size = 2
-max_width = 1000
-max_height = 1500
-cache_dir = ""
-image_filter = "triangle"
-image_quality = 75
-sixel_fraction = 15
-ueberzug_scale = 4
-ueberzug_offset = [ 0, 0, 0, 0 ]
+show_symlink = false
+linemode = "size"
[opener]
open = [
@@ -44,124 +20,9 @@ rules = [
{ mime = "*", use = [ "open", "alt" ] },
]
-[tasks]
-micro_workers = 10
-macro_workers = 25
-bizarre_retry = 5
-image_alloc = 536870912 # 512MB
-image_bound = [ 0, 0 ]
-suppress_preload = false
-
[plugin]
-
-fetchers = [
- # Mimetype
- { id = "mime", name = "*", run = "mime", if = "!mime", prio = "high" },
-]
-preloaders = [
- # Image
- { mime = "image/{avif,hei?,jxl,svg+xml}", run = "magick" },
- { mime = "image/*", run = "image" },
- # Video
- { mime = "video/*", run = "video" },
- # PDF
- { mime = "application/pdf", run = "pdf" },
- # Font
- { mime = "font/*", run = "font" },
- { mime = "application/vnd.ms-opentype", run = "font" },
-]
-previewers = [
- { name = "*/", run = "folder", sync = true },
- # Code
- { mime = "text/*", run = "code" },
- { mime = "*/{xml,javascript,x-wine-extension-ini}", run = "code" },
- # JSON
- { mime = "application/{json,x-ndjson}", run = "json" },
- # Image
- { mime = "image/{avif,hei?,jxl,svg+xml}", run = "magick" },
- { mime = "image/*", run = "image" },
- # Video
- { mime = "video/*", run = "video" },
- # PDF
- { mime = "application/pdf", run = "pdf" },
- # Archive
- { mime = "application/{,g}zip", run = "archive" },
- { mime = "application/x-{tar,bzip*,7z-compressed,xz,rar,iso9660-image}", run = "archive" },
- # Font
- { mime = "font/*", run = "font" },
- { mime = "application/vnd.ms-opentype", run = "font" },
- # Empty file
- { mime = "inode/x-empty", run = "empty" },
- # Fallback
- { name = "*", run = "file" },
+prepend_previewers = [
+ # Default json previewer not working for some reason
+ { mime = "application/{json,ndjson}", run = "code" },
]
-[input]
-# cd
-cd_title = "Change directory:"
-cd_origin = "top-center"
-cd_offset = [ 0, 2, 50, 3 ]
-
-# create
-create_title = "Create:"
-create_origin = "top-center"
-create_offset = [ 0, 2, 50, 3 ]
-
-# rename
-rename_title = "Rename:"
-rename_origin = "hovered"
-rename_offset = [ 0, 1, 50, 3 ]
-
-# trash
-trash_title = "Move {n} selected file{s} to trash? (y/N)"
-trash_origin = "top-center"
-trash_offset = [ 0, 2, 50, 3 ]
-
-# delete
-delete_title = "Delete {n} selected file{s} permanently? (y/N)"
-delete_origin = "top-center"
-delete_offset = [ 0, 2, 50, 3 ]
-
-# filter
-filter_title = "Filter:"
-filter_origin = "top-center"
-filter_offset = [ 0, 2, 50, 3 ]
-
-# find
-find_title = [ "Find next:", "Find previous:" ]
-find_origin = "top-center"
-find_offset = [ 0, 2, 50, 3 ]
-
-# search
-search_title = "Search via {n}:"
-search_origin = "top-center"
-search_offset = [ 0, 2, 50, 3 ]
-
-# shell
-shell_title = [ "Shell:", "Shell (block):" ]
-shell_origin = "top-center"
-shell_offset = [ 0, 2, 50, 3 ]
-
-# overwrite
-overwrite_title = "Overwrite an existing file? (y/N)"
-overwrite_origin = "top-center"
-overwrite_offset = [ 0, 2, 50, 3 ]
-
-# quit
-quit_title = "{n} task{s} running, sure to quit? (y/N)"
-quit_origin = "top-center"
-quit_offset = [ 0, 2, 50, 3 ]
-
-[select]
-open_title = "Open with:"
-open_origin = "hovered"
-open_offset = [ 0, 1, 50, 7 ]
-
-[which]
-sort_by = "none"
-sort_sensitive = false
-sort_reverse = false
-sort_translit = false
-
-[log]
-enabled = false
diff --git a/misc/.config/zsh/.zshenv b/misc/.config/zsh/.zshenv
index a35bb31..0943012 100644
--- a/misc/.config/zsh/.zshenv
+++ b/misc/.config/zsh/.zshenv
@@ -39,6 +39,7 @@ export XDG_STATE_HOME="$HOME/.local/state"
export CARGO_HOME="$XDG_DATA_HOME/cargo"
export CUDA_CACHE_PATH="$XDG_CACHE_HOME/nv"
export EMACS_INIT_FILE="$XDG_CONFIG_HOME/emacs"
+export FZF_DEFAULT_OPTS_FILE="$XDG_CONFIG_HOME/fzf/config"
export GIT_CONFIG="$XDG_CONFIG_HOME/git/config"
export GNUPGHOME="$XDG_DATA_HOME/gnupg"
export INPUTRC="$XDG_CONFIG_HOME/readline/inputrc"
diff --git a/misc/.config/zsh/.zshrc b/misc/.config/zsh/.zshrc
index f4a2b30..4135986 100755
--- a/misc/.config/zsh/.zshrc
+++ b/misc/.config/zsh/.zshrc
@@ -59,7 +59,6 @@ alias asciiquarium='asciiquarium -t'
alias ll='ls -l'
alias la='ls -A'
alias l='ls -CF'
-alias python='python3'
alias xournal='xournalpp'
alias wget='wget --hsts-file="$XDG_CACHE_HOME/wget-hsts"'
alias sxiv='nsxiv'
@@ -69,6 +68,8 @@ alias zoom='dlkiller zoom'
alias tor='torbrowser-launcher'
alias emax="devour emacsclient -c -a 'emacs' 1>/dev/null"
alias em="emacsclient -nw -a 'emacs -nw'"
+alias wgup="sudo wg-quick up ~/wg-quick.conf"
+alias wgdown="sudo wg-quick down ~/wg-quick.conf"
# Colorful output
alias ls='LC_COLLATE=C ls --color=auto --group-directories-first -hN -A'
@@ -106,6 +107,41 @@ function pwdterm {
setsid -f $TERMINAL -e $SHELL >/dev/null 2>&1 &
}
+function ncd() {
+ local dir=$1
+ local file=$2
+
+ cd "$dir" || return
+
+ if [[ -n "$file" ]]; then
+ nvim "$file"
+ else
+ nvim
+ fi
+}
+
+_ncd_completion() {
+ local dir
+ local resolved_dir
+
+ dir="${words[2]}"
+
+ if command -v realpath &>/dev/null; then
+ resolved_dir="$(realpath -- "$dir" 2>/dev/null)"
+ elif command -v readlink &>/dev/null; then
+ resolved_dir="$(readlink -f -- "$dir" 2>/dev/null)"
+ else
+ # fallback: assume relative to $PWD manually
+ resolved_dir="$PWD/$dir"
+ fi
+
+ if [[ -d $resolved_dir ]]; then
+ _files -W "$resolved_dir"
+ else
+ _files
+ fi
+}
+
function ya() {
local tmp="$(mktemp -t "yazi-cwd.XXXXX")"
yazi "$@" --cwd-file="$tmp"
@@ -199,6 +235,9 @@ compinit -d ~/.cache/zcompdump
zstyle ':completion:*:*:*:*:*' menu select
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' # case insensitive tab completion
+
+compdef _ncd_completion ncd
+
# Remove green background of simlinks
LS_COLORS+=':ow=01;33'
@@ -240,8 +279,5 @@ if [ -f ~/.config/zsh/.zshpersonalrc ]; then
source ~/.config/zsh/.zshpersonalrc
fi
-accent_color="$(cat $HOME/.config/colors/accent)"
-starship config format "'''[╭──\([\$username@\$hostname](bold $accent_color)\)-\[\$directory\](-\[\$git_branch\$git_metrics\$git_status\])(-\[\$nix_shell\])]($accent_color) \$cmd_duration
-[╰─]($accent_color)[\$shell](bold $accent_color) '''"
eval "$(starship init zsh)"
diff --git a/misc/.local/bin/menu-man b/misc/.local/bin/menu-man
index ac39f4f..24487c7 100755
--- a/misc/.local/bin/menu-man
+++ b/misc/.local/bin/menu-man
@@ -1,12 +1,13 @@
#!/bin/sh
-sel="$(man -k . | fuzzel --dmenu -i -p "Man page:")"
+sel="$(man -k . | fzf --prompt "Man page: ")"
[ "$sel" = "" ] && exit # Exit on no selection
# Selection comes in the form of:
# $program ($num) - $desc
# Need to run `man $num $program`
page="$(echo "$sel" | awk -F'[()]' '{print $2" "$1}')"
-# nohup $TERMINAL -e man $page >/dev/null 2>&1 &
-hyprctl dispatch exec [floating] "foot -W 78x38 -e man $page"
+# hyprctl dispatch exec [floating] "foot -W 78x38 -e man $page"
+
+man $page
diff --git a/misc/.local/bin/opener b/misc/.local/bin/opener
index 1421aa5..5906230 100755
--- a/misc/.local/bin/opener
+++ b/misc/.local/bin/opener
@@ -93,16 +93,27 @@ case $(file --mime-type "$file" -b) in
launch_term nvim "$file"
fi
;;
+ image/x-xcf)
+ list_exit \
+ "Gimp"
+
+ launch_gui gimp "$file"
+ ;;
image/*)
list_exit \
- "nsxiv"
- launch_gui nsxiv "$file"
+ "nsxiv" \
+ "Gimp"
+
+ if [ "$num" -eq 2 ]; then
+ launch_gui gimp "$file"
+ else
+ launch_gui nsxiv "$file"
+ fi
;;
video/*)
list_exit \
- "Neovim" \
- "Emacs GUI" \
- "Emacs TUI"
+ "MPV"
+
launch_gui mpv -quiet "$file"
;;
application/epub*|\
@@ -113,12 +124,14 @@ case $(file --mime-type "$file" -b) in
image/vnd.djvu)
list_exit \
"Zathura"
+
launch_gui zathura "$file"
;;
audio/*|\
video/x-ms-asf)
list_exit \
"MPV"
+
# If it has an album cover, launch graphical mpv
[ -z "$(mediainfo "$1" | grep "Cover\s*: Yes")" ] \
&& (launch_term mpv --audio-display=no "$file") \
diff --git a/nixos/.config/nixos/core.nix b/nixos/.config/nixos/core.nix
index 2c4359d..4aeec6e 100644
--- a/nixos/.config/nixos/core.nix
+++ b/nixos/.config/nixos/core.nix
@@ -11,6 +11,9 @@ in {
dates = "weekly";
options = "--delete-older-than 7d";
};
+ # I do not use flakes personally, but being able to run other
+ # people's flakes is convenient.
+ settings.experimental-features = [ "nix-command" "flakes" ];
};
# Files to add to /etc
@@ -29,6 +32,8 @@ in {
];
};
+ networking.networkmanager.enable = true;
+
i18n.defaultLocale = "en_US.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "en_US.UTF-8";
@@ -48,21 +53,23 @@ in {
# version of this font centers the symbols which is nice.
nur.repos.bandithedoge.symbols-nerd-font
- hack-font
fira-code
+ nerd-fonts.fira-code
+ font-awesome
+ hack-font
inter
- fira-code-nerdfont
+ libertine
+ roboto
+ source-sans-pro
];
- networking.networkmanager.enable = true;
-
# Bluetooth daemon
services.blueman.enable = true;
hardware.bluetooth.enable = true;
hardware.bluetooth.powerOnBoot = true;
# Audio daemon
- hardware.pulseaudio.enable = false;
+ services.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
@@ -101,6 +108,7 @@ in {
];
};
zsh.enable = true;
+ command-not-found.enable = true;
};
virtualisation.docker.enable = true;
@@ -146,6 +154,7 @@ in {
man-pages-posix # Documentation
neofetch # Aesthetic sysinfo
openconnect # Connect to VPNs
+ p7zip # Open 7z files
pass-nodmenu # CLI password store (without dmenu dependency)
pinentry-curses # Terminal-based pinentry program
socat # Interact with sockets
@@ -153,6 +162,8 @@ in {
tldr # Brief info about a command
tmux # Terminal multiplexor
udisks # Good way of dealing with USBs and similar media
+ unrar-free # Open .rar files
+ wget # Similar to curl
yazi # Terminal file manager
# Shell
@@ -186,7 +197,7 @@ in {
(self: super: {
# Pop into an environment abiding by the Filesystem Hierarchy Standard
# to run applications which do not play nicely with NixOS.
- fhs-run = pkgs.buildFHSUserEnv {
+ fhs-run = pkgs.buildFHSEnv {
name = "fhs-run";
targetPkgs = pkgs: [];
multiPkgs = pkgs: [ pkgs.dpkg ];
diff --git a/nixos/.config/nixos/derivations/extra-icons/default.nix b/nixos/.config/nixos/derivations/extra-icons/default.nix
new file mode 100644
index 0000000..c8e7c9a
--- /dev/null
+++ b/nixos/.config/nixos/derivations/extra-icons/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, pkgs
+, stdenv
+, fetchurl
+}:
+
+stdenv.mkDerivation rec {
+ pname = "extra-icons";
+ version = "0.0.1";
+
+ src = ./.;
+
+ nativeBuildInputs = with pkgs; [
+ imagemagick # for resize
+ inkscape # for svgs
+ ];
+
+ postInstall = ''
+ mkdir -p $out/share/icons/hicolor/scalable/apps/
+ for icon in ${src}/raster/*; do
+ icon_name=$(basename "$icon")
+ inkscape -p "$icon" -o "$out/share/icons/hicolor/scalable/apps/extra-scale-''${icon_name%.*}.svg"
+ for i in 16 24 48 64 96 128 256 512; do
+ mkdir -p $out/share/icons/hicolor/''${i}x''${i}/apps
+ magick convert -background none -resize "''${i}x''${i}" "$icon" "$out/share/icons/hicolor/''${i}x''${i}/apps/extra-$icon_name"
+ done
+ done
+ for icon in ${src}/vector/*; do
+ icon_name=$(basename "$icon")
+ cp "$icon" "$out/share/icons/hicolor/scalable/apps/extra-scale-$icon_name"
+ inkscape -p "$icon" -o "$out/share/icons/hicolor/scalable/apps/extra-''${icon_name%.*}-svg.svg"
+ done
+ '';
+}
+
diff --git a/nixos/.config/nixos/derivations/zen-browser/default.nix b/nixos/.config/nixos/derivations/zen-browser/default.nix
new file mode 100644
index 0000000..1d40da1
--- /dev/null
+++ b/nixos/.config/nixos/derivations/zen-browser/default.nix
@@ -0,0 +1,29 @@
+{ appimageTools, fetchurl, ... }:
+let
+ pname = "zen";
+ version = "latest";
+
+ src = fetchurl {
+ url = "https://github.com/zen-browser/desktop/releases/latest/download/zen-x86_64.AppImage";
+ sha256 = "sha256-hZiJ8JLzLhtD1W8DAso3yBAJYhFE+nJEbQJa59AWjnU=";
+ };
+
+ appimageContents = appimageTools.extract {
+ inherit pname version src;
+ };
+in
+appimageTools.wrapType2 {
+ inherit pname version src;
+
+ extraInstallCommands = ''
+ # Install .desktop file
+ install -m 444 -D ${appimageContents}/zen.desktop $out/share/applications/${pname}.desktop
+ # Install icon
+ install -m 444 -D ${appimageContents}/zen.png $out/share/icons/hicolor/128x128/apps/${pname}.png
+ '';
+
+ meta = {
+ platforms = [ "x86_64-linux" ];
+ };
+}
+
diff --git a/nixos/.config/nixos/profiles/fcitx.nix b/nixos/.config/nixos/profiles/fcitx.nix
index ab74a18..8c54375 100644
--- a/nixos/.config/nixos/profiles/fcitx.nix
+++ b/nixos/.config/nixos/profiles/fcitx.nix
@@ -9,12 +9,11 @@
type = "fcitx5";
fcitx5 = {
waylandFrontend = true;
- plasma6Support = false;
addons = with pkgs; [
- fcitx5-with-addons
- fcitx5-configtool
+ qt6Packages.fcitx5-with-addons
+ qt6Packages.fcitx5-configtool
+ qt6Packages.fcitx5-chinese-addons
fcitx5-rime
- fcitx5-chinese-addons
fcitx5-m17n
];
};
diff --git a/nixos/.config/nixos/profiles/java.nix b/nixos/.config/nixos/profiles/java.nix
index cad70d1..c805e32 100644
--- a/nixos/.config/nixos/profiles/java.nix
+++ b/nixos/.config/nixos/profiles/java.nix
@@ -7,7 +7,7 @@
};
environment.systemPackages = with pkgs; [
- javaPackages.openjfx19
+ javaPackages.openjfx17
jdk17
];
}
diff --git a/nixos/.config/nixos/profiles/nvim.nix b/nixos/.config/nixos/profiles/nvim.nix
index f0ef054..a85e1b6 100644
--- a/nixos/.config/nixos/profiles/nvim.nix
+++ b/nixos/.config/nixos/profiles/nvim.nix
@@ -5,8 +5,10 @@
neovim
# LSPs
+ clang
clang-tools
lua-language-server
+ python3Packages.python-lsp-server
# Misc
ripgrep # Used by telescope
diff --git a/nixos/.config/nixos/profiles/steam.nix b/nixos/.config/nixos/profiles/steam.nix
deleted file mode 100644
index 7b0065a..0000000
--- a/nixos/.config/nixos/profiles/steam.nix
+++ /dev/null
@@ -1,10 +0,0 @@
-{ config, pkgs, ... }:
-
-{
- nixpkgs.config.allowUnfree = true;
-
- environment.systemPackages = with pkgs; [
- steam
- ];
-}
-
diff --git a/nixos/.config/nixos/profiles/wm/hyprland.nix b/nixos/.config/nixos/profiles/wm/hyprland.nix
index 82a9ace..a61c6ad 100644
--- a/nixos/.config/nixos/profiles/wm/hyprland.nix
+++ b/nixos/.config/nixos/profiles/wm/hyprland.nix
@@ -5,11 +5,7 @@ let
nixos-unstable = (import {});
flake-compat = builtins.fetchTarball "https://github.com/edolstra/flake-compat/archive/master.tar.gz";
hyprland_nightly = (import flake-compat {
- src = builtins.fetchGit {
- ref = "main";
- url = "https://github.com/hyprwm/Hyprland.git";
- submodules = true;
- };
+ src = builtins.fetchTarball "https://github.com/hyprwm/Hyprland/archive/main.tar.gz";
}).defaultNix;
in {
# Trusted Hyprland cache, as to not have to rebuild nightly
@@ -21,14 +17,39 @@ in {
# Or else swaylock will not accept correct password
security.pam.services.swaylock = {};
+ services.keyd.enable = true;
+ services.keyd.keyboards = {
+ default = {
+ ids = [ "*" ];
+ settings = {
+ main = {
+ capslock = "overload(control, esc)";
+ esc = "capslock";
+ };
+ };
+ };
+ };
+
+ # Enable OpenGL
+ hardware.graphics = {
+ enable = true;
+ };
+
programs = {
hyprland = { # Dynamic tiling window manager
enable = true;
xwayland.enable = true;
- # package = nixos-unstable.hyprland;
- # package = hyprland_nightly.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
};
- nm-applet.enable = true;
+
+ dconf = {
+ enable = true;
+ profiles.gdm.databases = [{
+ settings = {
+ # set dark theme for gtk 4
+ "org/gnome/desktop/interface" = { color-scheme = "prefer-dark"; };
+ };
+ }];
+ };
};
systemd.user.services = {
@@ -41,24 +62,27 @@ in {
serviceConfig.Restart = "always";
serviceConfig.RestartSec = 1;
};
- # network-manager-applet = {
- # description = "Start the network manager applet";
- # after = [ "graphical-session.target" ];
- # requires = [ "graphical-session.target" ];
- # wantedBy = [ "graphical-session.target" ];
- # serviceConfig.Type = "forking";
- # serviceConfig.Restart = "always";
- # serviceConfig.RestartSec = 1;
- # serviceConfig.ExecStart = "${pkgs.networkmanagerapplet}/bin/nm-applet";
- # };
};
+ environment.variables.GSETTINGS_SCHEMA_DIR =
+ let
+ paths = [
+ "${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}/glib-2.0/schemas/"
+ "${pkgs.bottles-unwrapped}/share/gsettings-schemas/${pkgs.bottles-unwrapped.name}/glib-2.0/schemas/"
+ ];
+ in
+ builtins.concatStringsSep ":" paths;
+
environment.systemPackages = with pkgs; [
+ adwaita-icon-theme
+ adwaita-qt
blueman # Bluetooth manager
dunst # Notification daemon
firefox # My browser of choice
foot # Wayland native terminal
fuzzel # Fuzzy finding menuing program
+ glib
+ gnome-themes-extra
gobble # Wayland alternative to devour
grimblast # Allows freezing screen
grim # Screenshot tool
@@ -66,22 +90,21 @@ in {
hypridle # Do commands upon user idle
hyprland-autoname-workspaces # Add icons to workspace titles
hyprlock # Screen locking utility
- hyprpaper
hyprpicker # Colorpicker utility
- kanshi # Autorandr substitute
+ hyprsunset # Bluelight filter
libnotify # Send messages to notification daemon
libreoffice # MSOffice btfo
# networkmanagerapplet # Wifi dropdown menu
networkmanager_dmenu # Manage wifi with dmenu
nsxiv # Image viewer
nwg-displays
+ pcmanfm # Graphical file manager
pinentry-rofi # Rofi frontend for pinentry program
- pyprland # Plugin manager for Hyprland
+ quickshell # Use QT to create widgets
rofi # Menu prompt program
rofi-pass # Rofi frontend for password store
- sassc # SCSS interpreter
slurp # Screen selection utility
- st
+ st # Suckless Simple Terminal
swaylock # Wayland session locker
swww # Sets background images
texlive.combined.scheme-full # LaTeX to create documents
@@ -93,39 +116,47 @@ in {
wdisplays # Arnadr substitute
wl-clipboard # Copy/paste utility
wlr-randr # Xrandr substitute
- xwaylandvideobridge # Allows screensharing from XWayland programs
xorg.xcursorthemes
zathura # Minimalist PDF reader
- zen-browser
+ zen-browser # Better firefox
+ intel-gpu-tools # Tools for intel GPU
+ mesa-demos # Tools for Mesa drivers
+
+ xfce.thunar # Graphical file manager
+ xfce.tumbler # Thumbnailer service
+
+ # libsForQt5.qt5.qtsvg # Allow for svg icons in QT applications
+ kdePackages.qt6ct
# GTK Themes
lxappearance-gtk2 # Theme switcher
gruvbox-dark-gtk
+
+ # Custom packages
+ extra-icons
];
nixpkgs.overlays = [
(final: prev: {
hyprland-autoname-workspaces = nixos-unstable.hyprland-autoname-workspaces;
- waybar = nixos-unstable.waybar;
typst = nixos-unstable.typst;
- # typst = (import flake-compat {
- # src = builtins.fetchGit {
- # url = "https://github.com/typst/typst.git";
- # };
- # }).outputs.packages.${pkgs.stdenv.hostPlatform.system}.default;
+ swww = nixos-unstable.swww;
zen-browser = (import flake-compat {
src = builtins.fetchGit {
url = "https://github.com/0xc000022070/zen-browser-flake.git";
};
}).outputs.packages.${pkgs.stdenv.hostPlatform.system}.default;
- st = prev.st.overrideAttrs (o: {
- src = /home/vince/.config/st;
- buildInputs = o.buildInputs ++ (with pkgs; [
- # Extra libraries needed to build patches
- harfbuzz
- imlib2
- ]);
- });
+ st = prev.callPackage /home/vince/.config/st/default.nix {};
+ extra-icons = prev.callPackage ../../derivations/extra-icons {};
+ # quickshell = (nixos-unstable.callPackage "${builtins.fetchGit {
+ # url = "https://git.outfoxxed.me/outfoxxed/quickshell.git";
+ # ref = "master";
+ # }}/" {}).overrideAttrs (oa: {
+ # buildInputs = (oa.buildInputs or []) ++ [ nixos-unstable.qt6.qt5compat ];
+ # });
+ quickshell = nixos-unstable.quickshell.overrideAttrs(oa: {
+ buildInputs = (oa.buildInputs or []) ++ [ nixos-unstable.qt6.qt5compat ];
+ });
})
];
}
diff --git a/quickshell/.config/quickshell/Globals.qml b/quickshell/.config/quickshell/Globals.qml
deleted file mode 100644
index 8c4a5af..0000000
--- a/quickshell/.config/quickshell/Globals.qml
+++ /dev/null
@@ -1,18 +0,0 @@
-pragma Singleton
-
-import QtQuick
-import Quickshell
-
-Singleton {
- id: root
- property var popupContext: PopupContext {};
- property var date: new Date()
-
- Timer {
- interval: 1000
- repeat: true
- running: true
-
- onTriggered: root.date = new Date()
- }
-}
diff --git a/quickshell/.config/quickshell/Theme.qml b/quickshell/.config/quickshell/Theme.qml
new file mode 100644
index 0000000..9e5f2d3
--- /dev/null
+++ b/quickshell/.config/quickshell/Theme.qml
@@ -0,0 +1,103 @@
+pragma Singleton
+
+import QtQuick
+import Quickshell
+
+Singleton {
+ property Item get: black
+
+ Item {
+ id: windowsXP
+
+ property string barBgColor: "#235EDC"
+ property string buttonBorderColor: "#99000000"
+ property bool buttonBorderShadow: false
+ property bool onTop: false
+ property string iconColor: "green"
+ property string iconPressedColor: "green"
+ property Gradient barGradient: black.barGradient
+ property Gradient buttonInactiveGradientV: Gradient {
+ GradientStop { position: 0.0; color: "#55FFFFFF" }
+ GradientStop { position: 0.3; color: "#22FFFFFF" }
+ }
+ property Gradient buttonInactiveGradientH: Gradient {
+ orientation: Gradient.Horizontal
+ GradientStop { position: 0.0; color: "#55FFFFFF" }
+ GradientStop { position: 0.1; color: "#00000000" }
+ }
+ property Gradient buttonActiveGradient: Gradient {
+ GradientStop { position: 0.0; color: "#99000000" }
+ GradientStop { position: 0.3; color: "#55000000" }
+ GradientStop { position: 1.0; color: "#55000000" }
+ }
+ }
+
+ Item {
+ id: black
+
+ property string barBgColor: "#cc000000"
+ property string buttonBorderColor: "#44FFFFFF"
+ property bool buttonBorderShadow: true
+ property bool onTop: true
+ property string iconColor: "blue"
+ property string iconPressedColor: "dark_blue"
+ property Gradient barGradient: Gradient {
+ GradientStop { position: 0.0; color: "#55FFFFFF" }
+ GradientStop { position: 0.4; color: "#00FFFFFF" }
+ GradientStop { position: 0.8; color: "#00FFFFFF" }
+ GradientStop { position: 1.0; color: "#AA000000" }
+ }
+ property Gradient buttonInactiveGradientV: Gradient {
+ GradientStop { position: 0.0; color: "#33FFFFFF" }
+ GradientStop { position: 0.3; color: "#55000000" }
+ }
+ property Gradient buttonInactiveGradientH: Gradient {
+ orientation: Gradient.Horizontal
+ GradientStop { position: 0.0; color: "#55FFFFFF" }
+ GradientStop { position: 0.1; color: "#00000000" }
+ }
+ property Gradient buttonActiveGradient: Gradient {
+ GradientStop { position: 0.92; color: "#FF000000" }
+ GradientStop { position: 0.93; color: "#FFFFFFFF" }
+ GradientStop { position: 1.0; color: "#FFFFFFFF" }
+ }
+ }
+
+ Item {
+ id: black_bright
+
+ property string barBgColor: black.barBgColor
+ property string buttonBorderColor: windowsXP.buttonBorderColor
+ property bool buttonBorderShadow: windowsXP.buttonBorderShadow
+ property bool onTop: black.onTop
+ property string iconColor: "orange"
+ property string iconPressedColor: "orange"
+ property Gradient barGradient: black.barGradient
+ property Gradient buttonInactiveGradientV: windowsXP.buttonInactiveGradientV
+ property Gradient buttonInactiveGradientH: windowsXP.buttonInactiveGradientH
+ property Gradient buttonActiveGradient: windowsXP.buttonActiveGradient
+ }
+
+ Item {
+ id: black_flat
+
+ property string barBgColor: "#cc000000"
+ property string buttonBorderColor: "#01000000" // Making this transparent breaks things
+ property bool buttonBorderShadow: false
+ property bool onTop: true
+ property string iconColor: ""
+ property string iconPressedColor: ""
+ property Gradient barGradient: Gradient {
+ GradientStop { position: 0.0; color: "transparent" }
+ }
+ property Gradient buttonInactiveGradientV: Gradient {
+ GradientStop { position: 0.0; color: "transparent" }
+ }
+ property Gradient buttonInactiveGradientH: Gradient {
+ orientation: Gradient.Horizontal
+ GradientStop { position: 0.0; color: "transparent" }
+ }
+ property Gradient buttonActiveGradient: black.buttonActiveGradient
+ }
+}
+
diff --git a/quickshell/.config/quickshell/bar/Bar.qml b/quickshell/.config/quickshell/bar/Bar.qml
index 48a2bfa..6d45b46 100644
--- a/quickshell/.config/quickshell/bar/Bar.qml
+++ b/quickshell/.config/quickshell/bar/Bar.qml
@@ -1,49 +1,98 @@
import Quickshell
import Quickshell.Io
+import Quickshell.Hyprland
import QtQuick
import QtQuick.Layouts
import "blocks" as Blocks
+import "root:/"
Scope {
Variants {
model: Quickshell.screens
PanelWindow {
+ id: bar
property var modelData
screen: modelData
- color: "#cc000000"
- height: 27
+ color: Theme.get.barBgColor
+
+ Rectangle {
+ id: highlight
+ anchors.fill: parent
+ gradient: Theme.get.barGradient
+ }
+
+ height: 30
+
+ visible: true
+
+ IpcHandler {
+ target: "bar"
+
+ function toggleVis(): void {
+ visible = !visible;
+ }
+ }
anchors {
- top: true
+ top: Theme.get.onTop
+ bottom: !Theme.get.onTop
left: true
right: true
}
RowLayout {
+ id: allBlocks
spacing: 0
- width: parent.width
- height: parent.height
+ anchors.fill: parent
// Left side
RowLayout {
- spacing: 0
+ id: leftBlocks
+ spacing: 10
Layout.alignment: Qt.AlignLeft
+ Layout.fillWidth: true
Blocks.Icon {}
Blocks.Workspaces {}
- Blocks.ActiveWorkspace {}
+ }
+
+ Blocks.ActiveWorkspace {
+ id: activeWorkspace
+ Layout.leftMargin: 10
+ anchors.centerIn: undefined
+
+ chopLength: {
+ var space = Math.floor(bar.width - (rightBlocks.implicitWidth + leftBlocks.implicitWidth))
+ return space * 0.08;
+ }
+
+ text: {
+ var str = activeWindowTitle
+ return str.length > chopLength ? str.slice(0, chopLength) + '...' : str;
+ }
+
+ color: {
+ return Hyprland.focusedMonitor == Hyprland.monitorFor(screen)
+ ? "#FFFFFF" : "#CCCCCC"
+ }
+ }
+
+ // Without this filler item, the active window block will be centered
+ // despite setting left alignment
+ Item {
+ Layout.fillWidth: true
}
// Right side
RowLayout {
+ id: rightBlocks
spacing: 0
Layout.alignment: Qt.AlignRight
+ Layout.fillWidth: true
Blocks.SystemTray {}
- Blocks.Test {}
- Blocks.Notifications {}
Blocks.Memory {}
Blocks.Sound {}
Blocks.Battery {}
diff --git a/quickshell/.config/quickshell/bar/BarBlock.qml b/quickshell/.config/quickshell/bar/BarBlock.qml
index 9daf98a..edd4aca 100644
--- a/quickshell/.config/quickshell/bar/BarBlock.qml
+++ b/quickshell/.config/quickshell/bar/BarBlock.qml
@@ -4,8 +4,11 @@ import Quickshell
Rectangle {
id: root
- Layout.preferredWidth: wsText.implicitWidth + 10
- Layout.preferredHeight: 27
+ Layout.preferredWidth: contentContainer.implicitWidth + 10
+ Layout.preferredHeight: 30
+
+ property Item content
+ property Item mouseArea: mouseArea
property string text
property bool dim: false
@@ -14,9 +17,7 @@ Rectangle {
property int leftPadding
property int rightPadding
- property string fgColor: "white"
- property string dimFgColor: "#999999"
- property string hoveredBgColor: "#444444"
+ property string hoveredBgColor: "#666666"
// Background color
color: {
@@ -40,28 +41,13 @@ Rectangle {
}
}
- BarText {
- id: wsText
- text: root.text
- anchors {
- left: parent.left
- right: parent.right
- leftMargin: root.leftPadding
- rightMargin: root.rightPadding
- verticalCenter: parent.verticalCenter
- }
-
- color: {
- if (mouseArea.containsMouse || !root.dim)
- return fgColor
- return dimFgColor
- }
-
- Behavior on color {
- ColorAnimation {
- duration: 100
- }
- }
+ Item {
+ // Contents of the bar block
+ id: contentContainer
+ implicitWidth: content.implicitWidth
+ implicitHeight: content.implicitHeight
+ anchors.centerIn: parent
+ children: content
}
MouseArea {
@@ -76,11 +62,11 @@ Rectangle {
Rectangle {
id: wsLine
width: parent.width
- height: 3
+ height: 2
color: {
if (parent.underline)
- return fgColor;
+ return "white";
return "transparent";
}
anchors.bottom: parent.bottom
diff --git a/quickshell/.config/quickshell/bar/BarText.qml b/quickshell/.config/quickshell/bar/BarText.qml
index 25e2299..3b40767 100644
--- a/quickshell/.config/quickshell/bar/BarText.qml
+++ b/quickshell/.config/quickshell/bar/BarText.qml
@@ -1,39 +1,57 @@
import Quickshell
import Quickshell.Io
+import Quickshell.Widgets
import QtQuick
+import QtQuick.Layouts
+import QtQuick.Effects
+import Qt5Compat.GraphicalEffects
-Item {
- property string text
- property string color: "white"
+Text {
property string mainFont: "FiraCode"
property string symbolFont: "Symbols Nerd Font Mono"
- property int pointSize: 11
+ property int pointSize: 12
+ property int symbolSize: pointSize * 1.37
+ property string symbolText
+ property bool dim
+ text: wrapSymbols(symbolText)
+ anchors.centerIn: parent
+ color: dim ? "#CCCCCC" : "white"
+ textFormat: Text.RichText
+ font {
+ family: mainFont
+ pointSize: pointSize
+ }
- implicitWidth: thetext.implicitWidth
- implicitHeight: thetext.implicitHeight
+ Text {
+ visible: false
+ id: textcopy
+ text: parent.text
+ textFormat: parent.textFormat
+ color: parent.color
+ font: parent.font
+ }
+
+ DropShadow {
+ anchors.fill: parent
+ horizontalOffset: 1
+ verticalOffset: 1
+ color: "#000000"
+ source: textcopy
+ }
function wrapSymbols(text) {
+ if (!text)
+ return ""
+
const isSymbol = (codePoint) =>
(codePoint >= 0xE000 && codePoint <= 0xF8FF) // Private Use Area
|| (codePoint >= 0xF0000 && codePoint <= 0xFFFFF) // Supplementary Private Use Area-A
|| (codePoint >= 0x100000 && codePoint <= 0x10FFFF); // Supplementary Private Use Area-B
return text.replace(/./gu, (c) => isSymbol(c.codePointAt(0))
- ? `${c}`
+ ? `${c}`
+ // ? c
: c);
}
-
- Text {
- id: thetext
- text: wrapSymbols(parent.text)
- color: parent.color
- anchors.centerIn: parent
-
- font {
- family: parent.mainFont
- pointSize: parent.pointSize
- }
- textFormat: Text.RichText
- }
}
diff --git a/quickshell/.config/quickshell/bar/blocks/ActiveWorkspace.qml b/quickshell/.config/quickshell/bar/blocks/ActiveWorkspace.qml
index 22091f5..7969212 100644
--- a/quickshell/.config/quickshell/bar/blocks/ActiveWorkspace.qml
+++ b/quickshell/.config/quickshell/bar/blocks/ActiveWorkspace.qml
@@ -1,15 +1,16 @@
import QtQuick
+import QtQuick.Layouts
import Quickshell.Io
import Quickshell.Hyprland
import "../"
BarText {
- text: {
- var str = activeWindowTitle
- return str.length > chopLength ? str.slice(0, chopLength) + '...' : str;
- }
+ // text: {
+ // var str = activeWindowTitle
+ // return str.length > chopLength ? str.slice(0, chopLength) + '...' : str;
+ // }
- property int chopLength: 70
+ property int chopLength
property string activeWindowTitle
Process {
diff --git a/quickshell/.config/quickshell/bar/blocks/Battery.qml b/quickshell/.config/quickshell/bar/blocks/Battery.qml
index 10be0e0..a8d4ccc 100644
--- a/quickshell/.config/quickshell/bar/blocks/Battery.qml
+++ b/quickshell/.config/quickshell/bar/blocks/Battery.qml
@@ -4,7 +4,9 @@ import "../"
BarBlock {
property string battery
- text: battery
+ content: BarText {
+ symbolText: battery
+ }
Process {
id: batteryProc
diff --git a/quickshell/.config/quickshell/bar/blocks/Date.qml b/quickshell/.config/quickshell/bar/blocks/Date.qml
index 8b94919..11ce193 100644
--- a/quickshell/.config/quickshell/bar/blocks/Date.qml
+++ b/quickshell/.config/quickshell/bar/blocks/Date.qml
@@ -3,6 +3,8 @@ import "../"
BarBlock {
id: text
- text: ` ${Datetime.date}`
+ content: BarText {
+ symbolText: ` ${Datetime.date}`
+ }
}
diff --git a/quickshell/.config/quickshell/bar/blocks/Icon.qml b/quickshell/.config/quickshell/bar/blocks/Icon.qml
index 217e40c..bc62c67 100644
--- a/quickshell/.config/quickshell/bar/blocks/Icon.qml
+++ b/quickshell/.config/quickshell/bar/blocks/Icon.qml
@@ -1,11 +1,66 @@
import QtQuick
import QtQuick.Layouts
import Quickshell
+import Quickshell.Io
+import Quickshell.Widgets
+import Qt5Compat.GraphicalEffects
import "../"
+import "root:/"
BarBlock {
- Layout.preferredWidth: 30
- rightPadding: 5
- text: ""
+ id: root
+ Layout.preferredWidth: 40
+
+ content: BarText {
+ text: ""
+ pointSize: 17
+ anchors.horizontalCenterOffset: -2
+ }
+ // content: IconImage {
+ // id: theicon
+ // visible: false
+ // anchors.centerIn: parent
+ // source: "image://icon/extra-nixos"
+ // implicitSize: 20
+ // }
+ // DropShadow {
+ // anchors.fill: parent
+ // horizontalOffset: 1
+ // verticalOffset: 1
+ // radius: 6.0
+ // samples: 20
+ // color: "#000000"
+ // source: parent.content
+ // }
+ // IconImage {
+ // anchors.centerIn: parent
+ // source: "image://icon/extra-nixos"
+ // implicitSize: 20
+ // }
+
+ Image {
+ anchors.fill: parent
+ source: mouseArea.containsMouse
+ ? "../images/" + Theme.get.iconPressedColor + ".png"
+ : "../images/" + Theme.get.iconColor + ".png";
+ visible: true
+ z: -1
+ }
+
+ color: "transparent"
+
+ Process {
+ id: neofetch
+ running: false
+ command: [ "sh", "-c", "hyprctl dispatch exec [float] \
+ \"foot -W 95x22 -e zsh -c 'neofetch; while true; do; done'\"" ]
+ stdout: SplitParser {
+ onRead: data => console.log(`line read: ${data}`)
+ }
+ }
+
+ onClicked: function() {
+ neofetch.running = true
+ }
}
diff --git a/quickshell/.config/quickshell/bar/blocks/Memory.qml b/quickshell/.config/quickshell/bar/blocks/Memory.qml
index 26900c0..d274325 100644
--- a/quickshell/.config/quickshell/bar/blocks/Memory.qml
+++ b/quickshell/.config/quickshell/bar/blocks/Memory.qml
@@ -6,7 +6,9 @@ import "../"
BarBlock {
id: text
- text: ` ${Math.floor(percentFree)}%`
+ content: BarText {
+ symbolText: ` ${Math.floor(percentFree)}%`
+ }
property real percentFree
diff --git a/quickshell/.config/quickshell/bar/blocks/Sound.qml b/quickshell/.config/quickshell/bar/blocks/Sound.qml
index 0553162..7486408 100644
--- a/quickshell/.config/quickshell/bar/blocks/Sound.qml
+++ b/quickshell/.config/quickshell/bar/blocks/Sound.qml
@@ -7,9 +7,15 @@ import "../"
BarBlock {
id: text
- text: ` ${Math.floor(sink?.audio.volume * 100)}%`
+ visible: Pipewire.ready
+
+ content: BarText {
+ symbolText: ` ${volume}`
+ }
property PwNode sink: Pipewire.defaultAudioSink
+ property string volume: Pipewire.ready ? `${Math.floor(sink.audio.volume * 100)}%` : ""
+
PwObjectTracker { objects: [ sink ] }
}
diff --git a/quickshell/.config/quickshell/bar/blocks/SystemTray.qml b/quickshell/.config/quickshell/bar/blocks/SystemTray.qml
index 12818f1..15c4691 100644
--- a/quickshell/.config/quickshell/bar/blocks/SystemTray.qml
+++ b/quickshell/.config/quickshell/bar/blocks/SystemTray.qml
@@ -4,13 +4,20 @@ import QtQuick.Layouts
import Quickshell
import Quickshell.Widgets
import Quickshell.Services.SystemTray
-import "../" as Bar
+import "root:/bar"
RowLayout {
spacing: 5
Repeater {
- model: SystemTray.items
+ model: ScriptModel {
+ values: {[...SystemTray.items.values]
+ .filter((item) => {
+ return (item.id != "spotify-client"
+ && item.id != "chrome_status_icon_1")
+ })
+ }
+ }
MouseArea {
id: delegate
@@ -43,7 +50,6 @@ RowLayout {
id: icon
anchors.centerIn: parent
source: item.icon
-
implicitSize: 16
}
@@ -62,7 +68,7 @@ RowLayout {
}
}
- Bar.Tooltip {
+ Tooltip {
relativeItem: delegate.containsMouse ? delegate : null
Label {
diff --git a/quickshell/.config/quickshell/bar/blocks/Time.qml b/quickshell/.config/quickshell/bar/blocks/Time.qml
index 770403d..5650fcb 100644
--- a/quickshell/.config/quickshell/bar/blocks/Time.qml
+++ b/quickshell/.config/quickshell/bar/blocks/Time.qml
@@ -3,6 +3,8 @@ import "../"
BarBlock {
id: text
- text: ` ${Datetime.time}`
+ content: BarText {
+ symbolText: ` ${Datetime.time}`
+ }
}
diff --git a/quickshell/.config/quickshell/bar/blocks/Workspaces.qml b/quickshell/.config/quickshell/bar/blocks/Workspaces.qml
index 5d32c48..37a2e71 100644
--- a/quickshell/.config/quickshell/bar/blocks/Workspaces.qml
+++ b/quickshell/.config/quickshell/bar/blocks/Workspaces.qml
@@ -2,6 +2,8 @@ import QtQuick
import QtQuick.Layouts
import Quickshell
import Quickshell.Hyprland
+import Quickshell.Widgets
+import Qt5Compat.GraphicalEffects
import "root:/"
import "../"
@@ -43,21 +45,224 @@ RowLayout {
property bool hasClients: ws.name.length > 2
dim: true
- underline: isActive || isOpen
+ underline: false
+ border.color: Theme.get.buttonBorderColor
+ radius: 5
+ gradient: isActive || isOpen ? Theme.get.buttonActiveGradient : Theme.get.buttonInactiveGradientV
+ Layout.preferredWidth: content.width + 20
+
+ Rectangle {
+ visible: !isActive && !isOpen
+ gradient: Theme.get.buttonInactiveGradientH
+ implicitWidth: parent.width
+ implicitHeight: parent.height
+ radius: parent.radius
+ z:-1
+ }
+
+ Rectangle {
+ visible: Theme.get.buttonBorderShadow
+ implicitWidth: parent.width - 1
+ implicitHeight: parent.height - 1
+ radius: parent.radius
+ color: "transparent" // Transparent fill
+ border.color: parent.isActive || parent.isOpen ? "transparent" : "black" // Inner border color
+ border.width: 1 // Inner border width
+
+ x: 1
+ y: 1
+ z: -1
+ }
+
onClicked: function() {
Hyprland.dispatch(`workspace ${ws.id}`);
}
- leftPadding: hasClients ? 2 : 0
- text: {
- if (isActive) {
- if (!hasClients)
- return `${ws.name}`
- var split_i = ws.id > 9 ? 3 : 2
- return `${ws.name.slice(0, split_i)}${ws.name.slice(split_i)}`
+
+ content: RowLayout {
+ spacing: 0
+ anchors.centerIn: parent
+
+ Repeater {
+ id: therepeater
+ model: ScriptModel {
+ values: getChunks(ws.name)
+ }
+
+ delegate: Item {
+ property bool showText: modelData.type === "text" && modelData.value.length > 0
+ property bool showIcon: modelData.type === "icon"
+ // property int symbolSize: 18
+ property int symbolSize: 22
+ property int spacerSize: 3
+
+ implicitWidth: {
+ if (showText)
+ return thetext.implicitWidth
+ if (showIcon)
+ return symbolSize
+ return spacerSize;
+ }
+ implicitHeight: {
+ if (showText)
+ return thetext.implicitHeight
+ if (showIcon)
+ return symbolSize
+ return spacerSize;
+ }
+ Layout.alignment: Qt.AlignCenter
+
+ Loader {
+ id: thetext
+ anchors.centerIn: parent
+ active: modelData.type === "text"
+ sourceComponent: BarText {
+ text: modelData.value
+ dim: !isActive
+
+ // pointSize: 10
+ }
+ }
+
+ Loader {
+ id: theicon
+ anchors.centerIn: parent
+ active: modelData.type === "icon"
+
+ sourceComponent: Item {
+ implicitWidth: inside.implicitWidth
+ implicitHeight: inside.implicitHeight
+ IconImage {
+ id: inside
+ anchors.centerIn: parent
+ source: modelData.source
+ implicitSize: symbolSize
+ opacity: modelData.active ? 1 : 0.7
+ mipmap: true
+ }
+ DropShadow {
+ anchors.fill: parent
+ verticalOffset: 1
+ horizontalOffset: 1
+ radius: 8.0
+ color: "#000000"
+ source: inside
+ opacity: modelData.active ? 1 : 0.7
+ }
+ Rectangle {
+ visible: modelData.mult > 1
+ width: 10
+ height: width
+ radius: width / 2
+ color: "black"
+ opacity: 0.8
+ BarText {
+ text: modelData.mult
+ pointSize: 10
+ dim: !isActive
+ style: Text.Outline
+ styleColor: "black"
+ }
+ }
+ }
+ }
+ }
}
- return ws.name
}
}
}
+
+ function getChunks(text) {
+ let chunks = [];
+ let buffer = ""; // Temporary storage for text segments
+
+ let symbolChunkInd = {}
+
+ let nextIsActive = false
+ for (let c of text) {
+ if (c === "") {
+ nextIsActive = true
+ continue
+ }
+
+ if (!(c in symbolImgMap)) {
+ buffer += c;
+ nextIsActive = false
+ continue;
+ }
+
+ if (buffer.length > 0 && !/^\s*$/.test(buffer)) {
+ chunks.push({
+ type: "text",
+ value: buffer,
+ });
+ buffer = ""; // Reset text buffer
+ }
+
+ if (!(c in symbolChunkInd)) {
+ if (chunks[chunks.length - 1].type == "icon") {
+ chunks.push({type: "spacer"})
+ }
+ symbolChunkInd[c] = chunks.length
+ chunks.push({
+ type: "icon",
+ active: nextIsActive,
+ source: `image://icon/${symbolImgMap[c]}`,
+ mult: 1, // multiplicity; how many times this symbol was seen
+ });
+ } else {
+ chunks[symbolChunkInd[c]].mult++
+ if (nextIsActive)
+ chunks[symbolChunkInd[c]].active = true;
+ }
+ nextIsActive = false
+ }
+
+ if (buffer.length > 0 && !/^\s*$/.test(buffer)) {
+ chunks.push({ type: "text", value: buffer})
+ }
+
+ return chunks;
+ }
+
+ property var symbolImgMap: {
+ "": "extra-scale-vim",
+ "": "extra-scale-yazi",
+ // "": "extra-zen",
+ "": "extra-scale-firefox",
+ "": "extra-scale-slack",
+ "": "extra-scale-terminal-thin",
+ "": "extra-scale-firefox",
+ "": "extra-scale-element-desktop",
+ "": "extra-scale-discord-circle-dark",
+ "": "extra-scale-chromium",
+ // "": "chromium",
+ "": "libreoffice-draw",
+ "": "libreoffice-writer",
+ "": "libreoffice-calc",
+ "": "libreoffice-impress",
+ // "": "signal-desktop",
+ "": "extra-signal-simple",
+ "": "extra-zathura",
+ "": "extra-spotify",
+ // "": "extra-scale-spotify",
+ "": "extra-steam",
+ "": "extra-scale-bluetooth",
+ "": "extra-anki",
+ "": "extra-scale-gimp",
+ "": "extra-ghidra",
+ // "": "com.obsproject.Studio",
+ "": "extra-scale-obs",
+ "": "extra-scale-photos",
+ "": "extra-anki",
+ "": "extra-mpv",
+ "": "extra-virtualbox",
+ "": "extra-scale-emacs",
+ "": "monero",
+ "": "extra-system-explorer-outline",
+ "": "extra-scale-vlc",
+ "": "com.usebottles.bottles",
+ "": "Zoom",
+ "": "teams-for-linux",
+ }
}
diff --git a/quickshell/.config/quickshell/bar/images/blue.png b/quickshell/.config/quickshell/bar/images/blue.png
new file mode 100644
index 0000000..46fff43
Binary files /dev/null and b/quickshell/.config/quickshell/bar/images/blue.png differ
diff --git a/quickshell/.config/quickshell/bar/images/dark_blue.png b/quickshell/.config/quickshell/bar/images/dark_blue.png
new file mode 100644
index 0000000..387c175
Binary files /dev/null and b/quickshell/.config/quickshell/bar/images/dark_blue.png differ
diff --git a/quickshell/.config/quickshell/bar/images/green.png b/quickshell/.config/quickshell/bar/images/green.png
new file mode 100644
index 0000000..ac3b389
Binary files /dev/null and b/quickshell/.config/quickshell/bar/images/green.png differ
diff --git a/quickshell/.config/quickshell/bar/images/green.xcf b/quickshell/.config/quickshell/bar/images/green.xcf
new file mode 100644
index 0000000..892f81b
Binary files /dev/null and b/quickshell/.config/quickshell/bar/images/green.xcf differ
diff --git a/quickshell/.config/quickshell/bar/images/orange.png b/quickshell/.config/quickshell/bar/images/orange.png
new file mode 100644
index 0000000..dc523c2
Binary files /dev/null and b/quickshell/.config/quickshell/bar/images/orange.png differ
diff --git a/quickshell/.config/quickshell/shell.qml b/quickshell/.config/quickshell/shell.qml
index 6d8d8da..3079f29 100644
--- a/quickshell/.config/quickshell/shell.qml
+++ b/quickshell/.config/quickshell/shell.qml
@@ -1,8 +1,8 @@
//@ pragma UseQApplication
import Quickshell
-import "bar" as Bar
+import "bar"
ShellRoot {
- Bar.Bar {}
+ Bar {}
}