commit b78dd3f410ac9c92fbef6952577c18e4c0135cbd
parent d65281c1cac1d8608c1fd3156ace6a20b7a79596
Author: awy <awy@awy.one>
Date: Tue, 16 Dec 2025 20:23:07 +0300
format
Diffstat:
67 files changed, 1898 insertions(+), 1895 deletions(-)
diff --git a/.config/gtk-3.0/gtk.css b/.config/gtk-3.0/gtk.css
@@ -1,4 +1,8 @@
/* fuck rounded corners */
-decoration, window, window.background, window.titlebar, * {
- border-radius: 0px;
+decoration,
+window,
+window.background,
+window.titlebar,
+* {
+ border-radius: 0px;
}
diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua
@@ -1,17 +1,17 @@
-- Bootstrap lazy.nvim
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
- local lazyrepo = "https://github.com/folke/lazy.nvim.git"
- local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
- if vim.v.shell_error ~= 0 then
- vim.api.nvim_echo({
- { "Failed to clone lazy.nvim:\n", "ErrorMsg" },
- { out, "WarningMsg" },
- { "\nPress any key to exit..." },
- }, true, {})
- vim.fn.getchar()
- os.exit(1)
- end
+ local lazyrepo = "https://github.com/folke/lazy.nvim.git"
+ local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
+ if vim.v.shell_error ~= 0 then
+ vim.api.nvim_echo({
+ { "Failed to clone lazy.nvim:\n", "ErrorMsg" },
+ { out, "WarningMsg" },
+ { "\nPress any key to exit..." },
+ }, true, {})
+ vim.fn.getchar()
+ os.exit(1)
+ end
end
vim.opt.rtp:prepend(lazypath)
diff --git a/.config/nvim/lua/options.lua b/.config/nvim/lua/options.lua
@@ -4,7 +4,7 @@ vim.o.wrap = false
vim.o.tabstop = 2
vim.o.shiftwidth = 2
vim.o.softtabstop = 2
--- vim.o.expandtab = true
+vim.o.expandtab = true
vim.o.swapfile = false
vim.g.mapleader = " "
vim.o.clipboard = "unnamedplus"
diff --git a/.config/nvim/lua/plugins/comment.lua b/.config/nvim/lua/plugins/comment.lua
@@ -1,8 +1,8 @@
return {
- {
- "numToStr/Comment.nvim",
- config = function()
- require('Comment').setup()
- end
- }
+ {
+ "numToStr/Comment.nvim",
+ config = function()
+ require('Comment').setup()
+ end
+ }
}
diff --git a/.config/nvim/lua/plugins/completions.lua b/.config/nvim/lua/plugins/completions.lua
@@ -1,44 +1,44 @@
return {
- {
- "hrsh7th/cmp-nvim-lsp"
- },
- {
- "L3MON4D3/LuaSnip",
- dependencies = {
- "saadparwaiz1/cmp_luasnip",
- "rafamadriz/friendly-snippets",
- },
- },
- {
- "hrsh7th/nvim-cmp",
- config = function()
- local cmp = require("cmp")
- require("luasnip.loaders.from_vscode").lazy_load()
+ {
+ "hrsh7th/cmp-nvim-lsp"
+ },
+ {
+ "L3MON4D3/LuaSnip",
+ dependencies = {
+ "saadparwaiz1/cmp_luasnip",
+ "rafamadriz/friendly-snippets",
+ },
+ },
+ {
+ "hrsh7th/nvim-cmp",
+ config = function()
+ local cmp = require("cmp")
+ require("luasnip.loaders.from_vscode").lazy_load()
- cmp.setup({
- snippet = {
- expand = function(args)
- require("luasnip").lsp_expand(args.body)
- end,
- },
- window = {
- -- completion = cmp.config.window.bordered(),
- -- documentation = cmp.config.window.bordered(),
- },
- mapping = cmp.mapping.preset.insert({
- ["<C-b>"] = cmp.mapping.scroll_docs(-4),
- ["<C-f>"] = cmp.mapping.scroll_docs(4),
- ["<C-Space>"] = cmp.mapping.complete(),
- ["<C-e>"] = cmp.mapping.abort(),
- ["<CR>"] = cmp.mapping.confirm({ select = true }),
- }),
- sources = cmp.config.sources({
- { name = "nvim_lsp" },
- { name = "luasnip" }, -- For luasnip users.
- }, {
- { name = "buffer" },
- }),
- })
- end,
- },
+ cmp.setup({
+ snippet = {
+ expand = function(args)
+ require("luasnip").lsp_expand(args.body)
+ end,
+ },
+ window = {
+ -- completion = cmp.config.window.bordered(),
+ -- documentation = cmp.config.window.bordered(),
+ },
+ mapping = cmp.mapping.preset.insert({
+ ["<C-b>"] = cmp.mapping.scroll_docs(-4),
+ ["<C-f>"] = cmp.mapping.scroll_docs(4),
+ ["<C-Space>"] = cmp.mapping.complete(),
+ ["<C-e>"] = cmp.mapping.abort(),
+ ["<CR>"] = cmp.mapping.confirm({ select = true }),
+ }),
+ sources = cmp.config.sources({
+ { name = "nvim_lsp" },
+ { name = "luasnip" }, -- For luasnip users.
+ }, {
+ { name = "buffer" },
+ }),
+ })
+ end,
+ },
}
diff --git a/.config/nvim/lua/plugins/conform.lua b/.config/nvim/lua/plugins/conform.lua
@@ -0,0 +1,45 @@
+return {
+ 'stevearc/conform.nvim',
+ opts = {},
+ config = function()
+ require("conform").setup({
+ formatters_by_ft = {
+ lua = { "stylua" },
+ -- Conform will run multiple formatters sequentially
+ python = { "isort", "black" },
+ -- You can customize some of the format options for the filetype (:help conform.format)
+ rust = { "rustfmt", lsp_format = "fallback" },
+ -- Conform will run the first available formatter
+ javascript = { "prettierd", "prettier", stop_after_first = true },
+ c = { "clang-format" },
+ cpp = { "clang-format" },
+ sh = { "shfmt" },
+ bash = { "shfmt" },
+ },
+ formatters = {
+ ["clang-format"] = {
+ prepend_args = {
+ [[--style={
+ BasedOnStyle: LLVM,
+ BreakBeforeBraces: Custom,
+ BraceWrapping: { AfterFunction: true },
+ AlwaysBreakAfterReturnType: All
+ }]],
+ },
+ },
+ ["rustfmt"] = {
+ prepend_args = {
+ "--config", "tab_spaces=2",
+ "--config", "hard_tabs=false",
+ },
+ },
+ },
+ default_format_opts = {
+ lsp_format = "fallback",
+ },
+ })
+ vim.keymap.set('n', '<leader>lf', function()
+ require("conform").format({ async = true })
+ end, { desc = "Format buffer" })
+ end
+}
diff --git a/.config/nvim/lua/plugins/explorer.lua b/.config/nvim/lua/plugins/explorer.lua
@@ -14,14 +14,14 @@
} ]]
return {
- {
- 'stevearc/oil.nvim',
- ---@module 'oil'
- ---@type oil.SetupOpts
- opts = {},
- dependencies = { { "nvim-mini/mini.icons", opts = {} } },
- lazy = false,
- vim.keymap.set("n", "<leader>e", "<cmd>Oil<CR>", {}),
- -- vim.keymap.set("n", "<leader>bf", "<cmd>Oil --float<CR>", {})
- }
+ {
+ 'stevearc/oil.nvim',
+ ---@module 'oil'
+ ---@type oil.SetupOpts
+ opts = {},
+ dependencies = { { "nvim-mini/mini.icons", opts = {} } },
+ lazy = false,
+ vim.keymap.set("n", "<leader>e", "<cmd>Oil<CR>", {}),
+ -- vim.keymap.set("n", "<leader>bf", "<cmd>Oil --float<CR>", {})
+ }
}
diff --git a/.config/nvim/lua/plugins/gitsigns.lua b/.config/nvim/lua/plugins/gitsigns.lua
@@ -1,11 +1,11 @@
return {
- {
- "tpope/vim-fugitive",
- },
- {
- "lewis6991/gitsigns.nvim",
- config = function()
- require("gitsigns").setup()
- end,
- }
+ {
+ "tpope/vim-fugitive",
+ },
+ {
+ "lewis6991/gitsigns.nvim",
+ config = function()
+ require("gitsigns").setup()
+ end,
+ }
}
diff --git a/.config/nvim/lua/plugins/indent.lua b/.config/nvim/lua/plugins/indent.lua
@@ -1,8 +1,8 @@
return {
- {
- "lukas-reineke/indent-blankline.nvim",
- config = function()
- require("ibl").setup()
- end,
- }
+ {
+ "lukas-reineke/indent-blankline.nvim",
+ config = function()
+ require("ibl").setup()
+ end,
+ }
}
diff --git a/.config/nvim/lua/plugins/lsp.lua b/.config/nvim/lua/plugins/lsp.lua
@@ -1,57 +1,57 @@
return {
- {
- "williamboman/mason.nvim",
- lazy = false,
- config = function()
- require("mason").setup()
- end,
- },
- {
- "williamboman/mason-lspconfig.nvim",
- lazy = false,
- opts = {
- auto_install = true,
- ensure_installed = { "helm_ls", "dockerls" },
- },
- },
- {
- "neovim/nvim-lspconfig",
- lazy = false,
- config = function()
- local capabilities = require('cmp_nvim_lsp').default_capabilities()
+ {
+ "williamboman/mason.nvim",
+ lazy = false,
+ config = function()
+ require("mason").setup()
+ end,
+ },
+ {
+ "williamboman/mason-lspconfig.nvim",
+ lazy = false,
+ opts = {
+ auto_install = true,
+ ensure_installed = { "helm_ls", "dockerls" },
+ },
+ },
+ {
+ "neovim/nvim-lspconfig",
+ lazy = false,
+ config = function()
+ local capabilities = require('cmp_nvim_lsp').default_capabilities()
- vim.lsp.enable({
- "lua_ls", "clangd", "rust_analyzer", "bashls",
- "html", "cssls", "jsonls", "helm_ls", "yamlls",
- "dockerfile-language-server", "tinymist", "gopls",
- "pylsp"
- })
+ vim.lsp.enable({
+ "lua_ls", "clangd", "rust_analyzer", "bashls",
+ "html", "cssls", "jsonls", "helm_ls", "yamlls",
+ "dockerfile-language-server", "tinymist", "gopls",
+ "pylsp"
+ })
- vim.lsp.config("*", {
- capabilities = capabilities
- })
+ vim.lsp.config("*", {
+ capabilities = capabilities
+ })
- vim.diagnostic.config({
- virtual_text = {
- prefix = '',
- spacing = 4,
- },
- signs = {
- text = {
- [vim.diagnostic.severity.ERROR] = '',
- [vim.diagnostic.severity.WARN] = '',
- },
- },
- underline = true,
- update_in_insert = true,
- severity_sort = true,
- })
+ vim.diagnostic.config({
+ virtual_text = {
+ prefix = '',
+ spacing = 4,
+ },
+ signs = {
+ text = {
+ [vim.diagnostic.severity.ERROR] = '',
+ [vim.diagnostic.severity.WARN] = '',
+ },
+ },
+ underline = true,
+ update_in_insert = true,
+ severity_sort = true,
+ })
- vim.keymap.set('n', '<leader>lf', vim.lsp.buf.format)
- -- vim.keymap.set("n", "K", vim.lsp.buf.hover, {})
- -- vim.keymap.set("n", "<leader>gd", vim.lsp.buf.definition, {})
- -- vim.keymap.set("n", "<leader>gr", vim.lsp.buf.references, {})
- -- vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, {})
- end,
- },
+ vim.keymap.set('n', '<leader>lf', vim.lsp.buf.format)
+ -- vim.keymap.set("n", "K", vim.lsp.buf.hover, {})
+ -- vim.keymap.set("n", "<leader>gd", vim.lsp.buf.definition, {})
+ -- vim.keymap.set("n", "<leader>gr", vim.lsp.buf.references, {})
+ -- vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, {})
+ end,
+ },
}
diff --git a/.config/nvim/lua/plugins/lualine.lua b/.config/nvim/lua/plugins/lualine.lua
@@ -1,10 +1,10 @@
return {
- {
- 'nvim-lualine/lualine.nvim',
- dependencies = { 'nvim-mini/mini.icons' },
- config = function()
- require('lualine').setup()
- require("mini.icons").mock_nvim_web_devicons()
- end,
- }
+ {
+ 'nvim-lualine/lualine.nvim',
+ dependencies = { 'nvim-mini/mini.icons' },
+ config = function()
+ require('lualine').setup()
+ require("mini.icons").mock_nvim_web_devicons()
+ end,
+ }
}
diff --git a/.config/nvim/lua/plugins/markdown.lua b/.config/nvim/lua/plugins/markdown.lua
@@ -1,10 +1,10 @@
return {
- {
- "MeanderingProgrammer/render-markdown.nvim",
- -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-mini/mini.nvim' }, -- if you use the mini.nvim suite
- dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-mini/mini.icons' }, -- if you use standalone mini plugins
- ---@module 'render-markdown'
- ---@type render.md.UserConfig
- opts = {}
- }
+ {
+ "MeanderingProgrammer/render-markdown.nvim",
+ -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-mini/mini.nvim' }, -- if you use the mini.nvim suite
+ dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-mini/mini.icons' }, -- if you use standalone mini plugins
+ ---@module 'render-markdown'
+ ---@type render.md.UserConfig
+ opts = {}
+ }
}
diff --git a/.config/nvim/lua/plugins/telescope.lua b/.config/nvim/lua/plugins/telescope.lua
@@ -1,25 +1,25 @@
return {
- {
- "nvim-telescope/telescope-ui-select.nvim",
- },
- {
- "nvim-telescope/telescope.nvim",
- tag = "0.1.9",
- dependencies = { "nvim-lua/plenary.nvim" },
- config = function()
- require("telescope").setup({
- extensions = {
- ["ui-select"] = {
- require("telescope.themes").get_dropdown({}),
- },
- },
- })
- local builtin = require("telescope.builtin")
- vim.keymap.set("n", "<C-p>", builtin.find_files, {})
- vim.keymap.set("n", "<leader>fg", builtin.live_grep, {})
- vim.keymap.set("n", "<leader><leader>", builtin.oldfiles, {})
+ {
+ "nvim-telescope/telescope-ui-select.nvim",
+ },
+ {
+ "nvim-telescope/telescope.nvim",
+ tag = "0.1.9",
+ dependencies = { "nvim-lua/plenary.nvim" },
+ config = function()
+ require("telescope").setup({
+ extensions = {
+ ["ui-select"] = {
+ require("telescope.themes").get_dropdown({}),
+ },
+ },
+ })
+ local builtin = require("telescope.builtin")
+ vim.keymap.set("n", "<C-p>", builtin.find_files, {})
+ vim.keymap.set("n", "<leader>fg", builtin.live_grep, {})
+ vim.keymap.set("n", "<leader><leader>", builtin.oldfiles, {})
- require("telescope").load_extension("ui-select")
- end,
- },
+ require("telescope").load_extension("ui-select")
+ end,
+ },
}
diff --git a/.config/nvim/lua/plugins/theme.lua b/.config/nvim/lua/plugins/theme.lua
@@ -1,15 +1,15 @@
return {
- {
- "ellisonleao/gruvbox.nvim",
- priority = 1000,
- config = function()
- require("gruvbox").setup({
- transparent_mode = true,
- overrides = {
- CursorLineNr = { bg = "" }
- }
- })
- vim.cmd.colorscheme "gruvbox"
- end
- }
+ {
+ "ellisonleao/gruvbox.nvim",
+ priority = 1000,
+ config = function()
+ require("gruvbox").setup({
+ transparent_mode = true,
+ overrides = {
+ CursorLineNr = { bg = "" }
+ }
+ })
+ vim.cmd.colorscheme "gruvbox"
+ end
+ }
}
diff --git a/.config/nvim/lua/plugins/treesitter.lua b/.config/nvim/lua/plugins/treesitter.lua
@@ -1,14 +1,14 @@
return {
- {
- "nvim-treesitter/nvim-treesitter",
- build = ":TSUpdate",
- config = function()
- local config = require("nvim-treesitter.configs")
- config.setup({
- auto_install = true,
- highlight = { enable = true },
- indent = { enable = true },
- })
- end
- }
+ {
+ "nvim-treesitter/nvim-treesitter",
+ build = ":TSUpdate",
+ config = function()
+ local config = require("nvim-treesitter.configs")
+ config.setup({
+ auto_install = true,
+ highlight = { enable = true },
+ indent = { enable = true },
+ })
+ end
+ }
}
diff --git a/.config/nvim/lua/plugins/trim.lua b/.config/nvim/lua/plugins/trim.lua
@@ -1,8 +1,8 @@
return {
- {
- "cappyzawa/trim.nvim",
- config = function()
- require('trim').setup()
- end
- }
+ {
+ "cappyzawa/trim.nvim",
+ config = function()
+ require('trim').setup()
+ end
+ }
}
diff --git a/.config/pipewire/pipewire.conf.d/user-session.conf b/.config/pipewire/pipewire.conf.d/user-session.conf
@@ -1,9 +1,9 @@
context.exec = [
- { path = "/usr/bin/wireplumber" args = "" condition = [ { exec.session-manager = null } { exec.session-manager = true } ] }
- { path = "/usr/bin/pipewire" args = "-c pipewire-pulse.conf" condition = [ { exec.pipewire-pulse = null } { exec.pipewire-pulse = true } ] }
+ { path = "/usr/bin/wireplumber" args = "" condition = [ { exec.session-manager = null } { exec.session-manager = true } ] }
+ { path = "/usr/bin/pipewire" args = "-c pipewire-pulse.conf" condition = [ { exec.pipewire-pulse = null } { exec.pipewire-pulse = true } ] }
]
context.properties = {
- default.clock.rate = 192000
- default.clock.allowed-rates = [ 44100 48000 96000 192000 ]
+ default.clock.rate = 192000
+ default.clock.allowed-rates = [ 44100 48000 96000 192000 ]
}
diff --git a/.config/shell/aliasrc b/.config/shell/aliasrc
@@ -6,9 +6,10 @@
[ -f "$MBSYNCRC" ] && alias mbsync="mbsync -c $MBSYNCRC"
# doas not required for some system commands
-for command in mount umount dinitctl pacman updatedb su shutdown poweroff reboot ; do
+for command in mount umount dinitctl pacman updatedb su shutdown poweroff reboot; do
alias $command="doas $command"
-done; unset command
+done
+unset command
se() {
choice="$(fd . --base-directory=$HOME/.local/bin -t f --min-depth=1 | fzf)"
diff --git a/.config/shell/profile b/.config/shell/profile
@@ -71,15 +71,15 @@ export LESS_TERMCAP_se="$(printf '%b' '[0m')"
export LESS_TERMCAP_us="$(printf '%b' '[1;32m')"
export LESS_TERMCAP_ue="$(printf '%b' '[0m')"
export LESSOPEN="| /usr/bin/highlight -O ansi %s 2>/dev/null"
-export QT_QPA_PLATFORMTHEME="qt5ct" # Have QT use gtk3 theme.
+export QT_QPA_PLATFORMTHEME="qt5ct" # Have QT use gtk3 theme.
export MOZ_USE_XINPUT2=1 # Mozilla smooth scrolling/touchpads.
export AWT_TOOLKIT="MToolkit wmname LG3D" # May have to install wmname
export _JAVA_AWT_WM_NONREPARENTING=1 # Fix for Java applications in dwm
export LIBVA_DRIVER_NAME=nvidia
export __GLX_VENDOR_LIBRARY_NAME=nvidia
-export MOZ_DISABLE_RDD_SANDBOX=1 # For HW in Firefox on nvidia gpu
-export ELECTRON_OZONE_PLATFORM_HINT=auto # Electron fix
-export QT_WAYLAND_DISABLE_WINDOWDECORATION=1 # Disables decorations for QT applications
+export MOZ_DISABLE_RDD_SANDBOX=1 # For HW in Firefox on nvidia gpu
+export ELECTRON_OZONE_PLATFORM_HINT=auto # Electron fix
+export QT_WAYLAND_DISABLE_WINDOWDECORATION=1 # Disables decorations for QT applications
export FZF_DEFAULT_OPTS="$FZF_DEFAULT_OPTS \
--color=bg+:#3c3836
--color=bg:-1
diff --git a/.config/swayimg/key-handler b/.config/swayimg/key-handler
@@ -1,35 +1,41 @@
#!/bin/sh
file=$1
- [ -z "$selection" ] && selection=$(printf "w - Set as wallpaper\nc - Copy to dir\nm - Move to dir\nr - Rotate 90°\nR - Rotate -90°\nf - Flip horizontal\ny - Copy filename to clipboard\nY - Copy full path to clipboard\nd - Delete\ng - Open in GIMP\ni - Show media info" |
- mew -i -l 12 -p "Choose action for selected files:")
- action=$(printf "%s" "$selection" | cut -d'-' -f1 | tr -d ' ')
- case "$action" in
- "w") setbg "$file" & ;;
- "c")
- [ -z "$destdir" ] && destdir="$(sed "s/#.*$//;/^\s*$/d" ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | awk '{print $2}' | mew -l 20 -i -p "Copy file(s) to where?" | sed "s|~|$HOME|g")"
- [ ! -d "$destdir" ] && notify-send "$destdir is not a directory, cancelled." && exit
- cp "$file" "$destdir" && notify-send -i "$(readlink -f "$file")" "$file copied to $destdir." &
- ;;
- "m")
- [ -z "$destdir" ] && destdir="$(sed "s/#.*$//;/^\s*$/d" ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | awk '{print $2}' | mew -l 20 -i -p "Move file(s) to where?" | sed "s|~|$HOME|g")"
- [ ! -d "$destdir" ] && notify-send "$destdir is not a directory, cancelled." && exit
- mv "$file" "$destdir" && notify-send -i "$(readlink -f "$file")" "$file moved to $destdir." &
- ;;
- "r")
- magick "$file" -rotate 90 "$file" ;;
- "R")
- magick "$file" -rotate -90 "$file" ;;
- "f")
- magick "$file" -flop "$file" ;;
- "y")
- printf "%s" "$file" | tr -d '\n' | wl-copy &&
- notify-send "$file copied to clipboard" & ;;
- "Y")
- readlink -f "$file" | tr -d '\n' | wl-copy &&
- notify-send "$(readlink -f "$file") copied to clipboard" & ;;
- "d")
- [ "$(printf "No\\nYes" | mew -i -p "Really delete $file?")" = "Yes" ] && rm "$file" && notify-send "$file deleted." ;;
- "g") ifinstalled gimp && setsid -f gimp "$file" ;;
- "i") notify-send "File information" "$(mediainfo "$file" | sed "s/[ ]\+:/:/g;s/: /: <b>/;s/$/<\/b>/" | rg "<b>")" ;;
- *) notify-send "No keybind for that key" ;;
- esac
+[ -z "$selection" ] && selection=$(printf "w - Set as wallpaper\nc - Copy to dir\nm - Move to dir\nr - Rotate 90°\nR - Rotate -90°\nf - Flip horizontal\ny - Copy filename to clipboard\nY - Copy full path to clipboard\nd - Delete\ng - Open in GIMP\ni - Show media info" |
+ mew -i -l 12 -p "Choose action for selected files:")
+action=$(printf "%s" "$selection" | cut -d'-' -f1 | tr -d ' ')
+case "$action" in
+"w") setbg "$file" & ;;
+"c")
+ [ -z "$destdir" ] && destdir="$(sed "s/#.*$//;/^\s*$/d" ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | awk '{print $2}' | mew -l 20 -i -p "Copy file(s) to where?" | sed "s|~|$HOME|g")"
+ [ ! -d "$destdir" ] && notify-send "$destdir is not a directory, cancelled." && exit
+ cp "$file" "$destdir" && notify-send -i "$(readlink -f "$file")" "$file copied to $destdir." &
+ ;;
+"m")
+ [ -z "$destdir" ] && destdir="$(sed "s/#.*$//;/^\s*$/d" ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | awk '{print $2}' | mew -l 20 -i -p "Move file(s) to where?" | sed "s|~|$HOME|g")"
+ [ ! -d "$destdir" ] && notify-send "$destdir is not a directory, cancelled." && exit
+ mv "$file" "$destdir" && notify-send -i "$(readlink -f "$file")" "$file moved to $destdir." &
+ ;;
+"r")
+ magick "$file" -rotate 90 "$file"
+ ;;
+"R")
+ magick "$file" -rotate -90 "$file"
+ ;;
+"f")
+ magick "$file" -flop "$file"
+ ;;
+"y")
+ printf "%s" "$file" | tr -d '\n' | wl-copy &&
+ notify-send "$file copied to clipboard" &
+ ;;
+"Y")
+ readlink -f "$file" | tr -d '\n' | wl-copy &&
+ notify-send "$(readlink -f "$file") copied to clipboard" &
+ ;;
+"d")
+ [ "$(printf "No\\nYes" | mew -i -p "Really delete $file?")" = "Yes" ] && rm "$file" && notify-send "$file deleted."
+ ;;
+"g") ifinstalled gimp && setsid -f gimp "$file" ;;
+"i") notify-send "File information" "$(mediainfo "$file" | sed "s/[ ]\+:/:/g;s/: /: <b>/;s/$/<\/b>/" | rg "<b>")" ;;
+*) notify-send "No keybind for that key" ;;
+esac
diff --git a/.config/yazi/init.lua b/.config/yazi/init.lua
@@ -1,4 +1,4 @@
require("session"):setup {
- sync_yanked = true,
+ sync_yanked = true,
}
require("git"):setup()
diff --git a/.config/yazi/plugins/git.yazi/main.lua b/.config/yazi/plugins/git.yazi/main.lua
@@ -7,84 +7,84 @@ local WINDOWS = ya.target_family() == "windows"
-- see `bubble_up`
---@enum CODES
local CODES = {
- excluded = 100, -- ignored directory
- ignored = 6, -- ignored file
- untracked = 5,
- modified = 4,
- added = 3,
- deleted = 2,
- updated = 1,
- unknown = 0,
+ excluded = 100, -- ignored directory
+ ignored = 6, -- ignored file
+ untracked = 5,
+ modified = 4,
+ added = 3,
+ deleted = 2,
+ updated = 1,
+ unknown = 0,
}
local PATTERNS = {
- { "!$", CODES.ignored },
- { "?$", CODES.untracked },
- { "[MT]", CODES.modified },
- { "[AC]", CODES.added },
- { "D", CODES.deleted },
- { "U", CODES.updated },
- { "[AD][AD]", CODES.updated },
+ { "!$", CODES.ignored },
+ { "?$", CODES.untracked },
+ { "[MT]", CODES.modified },
+ { "[AC]", CODES.added },
+ { "D", CODES.deleted },
+ { "U", CODES.updated },
+ { "[AD][AD]", CODES.updated },
}
---@param line string
---@return CODES, string
local function match(line)
- local signs = line:sub(1, 2)
- for _, p in ipairs(PATTERNS) do
- local path, pattern, code = nil, p[1], p[2]
- if signs:find(pattern) then
- path = line:sub(4, 4) == '"' and line:sub(5, -2) or line:sub(4)
- path = WINDOWS and path:gsub("/", "\\") or path
- end
- if not path then
- elseif path:find("[/\\]$") then
- -- Mark the ignored directory as `excluded`, so we can process it further within `propagate_down`
- return code == CODES.ignored and CODES.excluded or code, path:sub(1, -2)
- else
- return code, path
- end
- ---@diagnostic disable-next-line: missing-return
- end
+ local signs = line:sub(1, 2)
+ for _, p in ipairs(PATTERNS) do
+ local path, pattern, code = nil, p[1], p[2]
+ if signs:find(pattern) then
+ path = line:sub(4, 4) == '"' and line:sub(5, -2) or line:sub(4)
+ path = WINDOWS and path:gsub("/", "\\") or path
+ end
+ if not path then
+ elseif path:find("[/\\]$") then
+ -- Mark the ignored directory as `excluded`, so we can process it further within `propagate_down`
+ return code == CODES.ignored and CODES.excluded or code, path:sub(1, -2)
+ else
+ return code, path
+ end
+ ---@diagnostic disable-next-line: missing-return
+ end
end
---@param cwd Url
---@return string?
local function root(cwd)
- local is_worktree = function(url)
- local file, head = io.open(tostring(url)), nil
- if file then
- head = file:read(8)
- file:close()
- end
- return head == "gitdir: "
- end
+ local is_worktree = function(url)
+ local file, head = io.open(tostring(url)), nil
+ if file then
+ head = file:read(8)
+ file:close()
+ end
+ return head == "gitdir: "
+ end
- repeat
- local next = cwd:join(".git")
- local cha = fs.cha(next)
- if cha and (cha.is_dir or is_worktree(next)) then
- return tostring(cwd)
- end
- cwd = cwd.parent
- until not cwd
+ repeat
+ local next = cwd:join(".git")
+ local cha = fs.cha(next)
+ if cha and (cha.is_dir or is_worktree(next)) then
+ return tostring(cwd)
+ end
+ cwd = cwd.parent
+ until not cwd
end
---@param changed Changes
---@return Changes
local function bubble_up(changed)
- local new, empty = {}, Url("")
- for path, code in pairs(changed) do
- if code ~= CODES.ignored then
- local url = Url(path).parent
- while url and url ~= empty do
- local s = tostring(url)
- new[s] = (new[s] or CODES.unknown) > code and new[s] or code
- url = url.parent
- end
- end
- end
- return new
+ local new, empty = {}, Url("")
+ for path, code in pairs(changed) do
+ if code ~= CODES.ignored then
+ local url = Url(path).parent
+ while url and url ~= empty do
+ local s = tostring(url)
+ new[s] = (new[s] or CODES.unknown) > code and new[s] or code
+ url = url.parent
+ end
+ end
+ end
+ return new
end
---@param excluded string[]
@@ -92,170 +92,171 @@ end
---@param repo Url
---@return Changes
local function propagate_down(excluded, cwd, repo)
- local new, rel = {}, cwd:strip_prefix(repo)
- for _, path in ipairs(excluded) do
- if rel:starts_with(path) then
- -- If `cwd` is a subdirectory of an excluded directory, also mark it as `excluded`
- new[tostring(cwd)] = CODES.excluded
- elseif cwd == repo:join(path).parent then
- -- If `path` is a direct subdirectory of `cwd`, mark it as `ignored`
- new[path] = CODES.ignored
- else
- -- Skipping, we only care about `cwd` itself and its direct subdirectories for maximum performance
- end
- end
- return new
+ local new, rel = {}, cwd:strip_prefix(repo)
+ for _, path in ipairs(excluded) do
+ if rel:starts_with(path) then
+ -- If `cwd` is a subdirectory of an excluded directory, also mark it as `excluded`
+ new[tostring(cwd)] = CODES.excluded
+ elseif cwd == repo:join(path).parent then
+ -- If `path` is a direct subdirectory of `cwd`, mark it as `ignored`
+ new[path] = CODES.ignored
+ else
+ -- Skipping, we only care about `cwd` itself and its direct subdirectories for maximum performance
+ end
+ end
+ return new
end
---@param cwd string
---@param repo string
---@param changed Changes
local add = ya.sync(function(st, cwd, repo, changed)
- ---@cast st State
+ ---@cast st State
- st.dirs[cwd] = repo
- st.repos[repo] = st.repos[repo] or {}
- for path, code in pairs(changed) do
- if code == CODES.unknown then
- st.repos[repo][path] = nil
- elseif code == CODES.excluded then
- -- Mark the directory with a special value `excluded` so that it can be distinguished during UI rendering
- st.dirs[path] = CODES.excluded
- else
- st.repos[repo][path] = code
- end
- end
- -- TODO: remove this
- if ui.render then
- ui.render()
- else
- ya.render()
- end
+ st.dirs[cwd] = repo
+ st.repos[repo] = st.repos[repo] or {}
+ for path, code in pairs(changed) do
+ if code == CODES.unknown then
+ st.repos[repo][path] = nil
+ elseif code == CODES.excluded then
+ -- Mark the directory with a special value `excluded` so that it can be distinguished during UI rendering
+ st.dirs[path] = CODES.excluded
+ else
+ st.repos[repo][path] = code
+ end
+ end
+ -- TODO: remove this
+ if ui.render then
+ ui.render()
+ else
+ ya.render()
+ end
end)
---@param cwd string
local remove = ya.sync(function(st, cwd)
- ---@cast st State
+ ---@cast st State
- local repo = st.dirs[cwd]
- if not repo then
- return
- end
+ local repo = st.dirs[cwd]
+ if not repo then
+ return
+ end
- -- TODO: remove this
- if ui.render then
- ui.render()
- else
- ya.render()
- end
- st.dirs[cwd] = nil
- if not st.repos[repo] then
- return
- end
+ -- TODO: remove this
+ if ui.render then
+ ui.render()
+ else
+ ya.render()
+ end
+ st.dirs[cwd] = nil
+ if not st.repos[repo] then
+ return
+ end
- for _, r in pairs(st.dirs) do
- if r == repo then
- return
- end
- end
- st.repos[repo] = nil
+ for _, r in pairs(st.dirs) do
+ if r == repo then
+ return
+ end
+ end
+ st.repos[repo] = nil
end)
---@param st State
---@param opts Options
local function setup(st, opts)
- st.dirs = {}
- st.repos = {}
+ st.dirs = {}
+ st.repos = {}
- opts = opts or {}
- opts.order = opts.order or 1500
+ opts = opts or {}
+ opts.order = opts.order or 1500
- local t = th.git or {}
- local styles = {
- [CODES.ignored] = t.ignored and ui.Style(t.ignored) or ui.Style():fg("darkgray"),
- [CODES.untracked] = t.untracked and ui.Style(t.untracked) or ui.Style():fg("magenta"),
- [CODES.modified] = t.modified and ui.Style(t.modified) or ui.Style():fg("yellow"),
- [CODES.added] = t.added and ui.Style(t.added) or ui.Style():fg("green"),
- [CODES.deleted] = t.deleted and ui.Style(t.deleted) or ui.Style():fg("red"),
- [CODES.updated] = t.updated and ui.Style(t.updated) or ui.Style():fg("yellow"),
- }
- local signs = {
- [CODES.ignored] = t.ignored_sign or "",
- [CODES.untracked] = t.untracked_sign or "?",
- [CODES.modified] = t.modified_sign or "",
- [CODES.added] = t.added_sign or "",
- [CODES.deleted] = t.deleted_sign or "",
- [CODES.updated] = t.updated_sign or "",
- }
+ local t = th.git or {}
+ local styles = {
+ [CODES.ignored] = t.ignored and ui.Style(t.ignored) or ui.Style():fg("darkgray"),
+ [CODES.untracked] = t.untracked and ui.Style(t.untracked) or ui.Style():fg("magenta"),
+ [CODES.modified] = t.modified and ui.Style(t.modified) or ui.Style():fg("yellow"),
+ [CODES.added] = t.added and ui.Style(t.added) or ui.Style():fg("green"),
+ [CODES.deleted] = t.deleted and ui.Style(t.deleted) or ui.Style():fg("red"),
+ [CODES.updated] = t.updated and ui.Style(t.updated) or ui.Style():fg("yellow"),
+ }
+ local signs = {
+ [CODES.ignored] = t.ignored_sign or "",
+ [CODES.untracked] = t.untracked_sign or "?",
+ [CODES.modified] = t.modified_sign or "",
+ [CODES.added] = t.added_sign or "",
+ [CODES.deleted] = t.deleted_sign or "",
+ [CODES.updated] = t.updated_sign or "",
+ }
- Linemode:children_add(function(self)
- local url = self._file.url
- local repo = st.dirs[tostring(url.base)]
- local code
- if repo then
- code = repo == CODES.excluded and CODES.ignored or st.repos[repo][tostring(url):sub(#repo + 2)]
- end
+ Linemode:children_add(function(self)
+ local url = self._file.url
+ local repo = st.dirs[tostring(url.base or url.parent)]
+ local code
+ if repo then
+ code = repo == CODES.excluded and CODES.ignored or st.repos[repo][tostring(url):sub(#repo + 2)]
+ end
- if not code or signs[code] == "" then
- return ""
- elseif self._file.is_hovered then
- return ui.Line { " ", signs[code] }
- else
- return ui.Line { " ", ui.Span(signs[code]):style(styles[code]) }
- end
- end, opts.order)
+ if not code or signs[code] == "" then
+ return ""
+ elseif self._file.is_hovered then
+ return ui.Line { " ", signs[code] }
+ else
+ return ui.Line { " ", ui.Span(signs[code]):style(styles[code]) }
+ end
+ end, opts.order)
end
---@type UnstableFetcher
local function fetch(_, job)
- local cwd = job.files[1].url.base
- local repo = root(cwd)
- if not repo then
- remove(tostring(cwd))
- return true
- end
+ local cwd = job.files[1].url.base or job.files[1].url.parent
+ local repo = root(cwd)
+ if not repo then
+ remove(tostring(cwd))
+ return true
+ end
- local paths = {}
- for _, file in ipairs(job.files) do
- paths[#paths + 1] = tostring(file.url)
- end
+ local paths = {}
+ for _, file in ipairs(job.files) do
+ paths[#paths + 1] = tostring(file.url)
+ end
- -- stylua: ignore
- local output, err = Command("git")
- :cwd(tostring(cwd))
- :arg({ "--no-optional-locks", "-c", "core.quotePath=", "status", "--porcelain", "-unormal", "--no-renames", "--ignored=matching" })
- :arg(paths)
- :stdout(Command.PIPED)
- :output()
- if not output then
- return true, Err("Cannot spawn `git` command, error: %s", err)
- end
+ -- stylua: ignore
+ local output, err = Command("git")
+ :cwd(tostring(cwd))
+ :arg({ "--no-optional-locks", "-c", "core.quotePath=", "status", "--porcelain", "-unormal", "--no-renames",
+ "--ignored=matching" })
+ :arg(paths)
+ :stdout(Command.PIPED)
+ :output()
+ if not output then
+ return true, Err("Cannot spawn `git` command, error: %s", err)
+ end
- local changed, excluded = {}, {}
- for line in output.stdout:gmatch("[^\r\n]+") do
- local code, path = match(line)
- if code == CODES.excluded then
- excluded[#excluded + 1] = path
- else
- changed[path] = code
- end
- end
+ local changed, excluded = {}, {}
+ for line in output.stdout:gmatch("[^\r\n]+") do
+ local code, path = match(line)
+ if code == CODES.excluded then
+ excluded[#excluded + 1] = path
+ else
+ changed[path] = code
+ end
+ end
- if job.files[1].cha.is_dir then
- ya.dict_merge(changed, bubble_up(changed))
- end
- ya.dict_merge(changed, propagate_down(excluded, cwd, Url(repo)))
+ if job.files[1].cha.is_dir then
+ ya.dict_merge(changed, bubble_up(changed))
+ end
+ ya.dict_merge(changed, propagate_down(excluded, cwd, Url(repo)))
- -- Reset the status of any files that don't appear in the output of `git status` to `unknown`,
- -- so that cleaning up outdated statuses from `st.repos`
- for _, path in ipairs(paths) do
- local s = path:sub(#repo + 2)
- changed[s] = changed[s] or CODES.unknown
- end
+ -- Reset the status of any files that don't appear in the output of `git status` to `unknown`,
+ -- so that cleaning up outdated statuses from `st.repos`
+ for _, path in ipairs(paths) do
+ local s = path:sub(#repo + 2)
+ changed[s] = changed[s] or CODES.unknown
+ end
- add(tostring(cwd), repo, changed)
+ add(tostring(cwd), repo, changed)
- return false
+ return false
end
return { setup = setup, fetch = fetch }
diff --git a/.config/yazi/theme.toml b/.config/yazi/theme.toml
@@ -5,702 +5,702 @@ dark = "gruvbox-dark"
[icon]
files = [
- { name = ".babelrc", text = "", fg = "#fabd2f" },
- { name = ".bash_profile", text = "", fg = "#98971a" },
- { name = ".bashrc", text = "", fg = "#98971a" },
- { name = ".clang-format", text = "", fg = "#928374" },
- { name = ".clang-tidy", text = "", fg = "#928374" },
- { name = ".codespellrc", text = "", fg = "#b8bb26" },
- { name = ".condarc", text = "", fg = "#b8bb26" },
- { name = ".dockerignore", text = "", fg = "#458588" },
- { name = ".ds_store", text = "", fg = "#928374" },
- { name = ".editorconfig", text = "", fg = "#a89984" },
- { name = ".env", text = "", fg = "#d79921" },
- { name = ".eslintignore", text = "", fg = "#b16286" },
- { name = ".eslintrc", text = "", fg = "#b16286" },
- { name = ".git-blame-ignore-revs", text = "", fg = "#cc241d" },
- { name = ".gitattributes", text = "", fg = "#cc241d" },
- { name = ".gitconfig", text = "", fg = "#cc241d" },
- { name = ".gitignore", text = "", fg = "#cc241d" },
- { name = ".gitlab-ci.yml", text = "", fg = "#cc241d" },
- { name = ".gitmodules", text = "", fg = "#cc241d" },
- { name = ".gtkrc-2.0", text = "", fg = "#8ec07c" },
- { name = ".gvimrc", text = "", fg = "#98971a" },
- { name = ".justfile", text = "", fg = "#928374" },
- { name = ".luacheckrc", text = "", fg = "#458588" },
- { name = ".luaurc", text = "", fg = "#458588" },
- { name = ".mailmap", text = "", fg = "#cc241d" },
- { name = ".nanorc", text = "", fg = "#b16286" },
- { name = ".npmignore", text = "", fg = "#b16286" },
- { name = ".npmrc", text = "", fg = "#b16286" },
- { name = ".nuxtrc", text = "", fg = "#b8bb26" },
- { name = ".nvmrc", text = "", fg = "#b8bb26" },
- { name = ".pnpmfile.cjs", text = "", fg = "#d79921" },
- { name = ".pre-commit-config.yaml", text = "", fg = "#d79921" },
- { name = ".prettierignore", text = "", fg = "#83a598" },
- { name = ".prettierrc", text = "", fg = "#83a598" },
- { name = ".prettierrc.cjs", text = "", fg = "#83a598" },
- { name = ".prettierrc.js", text = "", fg = "#83a598" },
- { name = ".prettierrc.json", text = "", fg = "#83a598" },
- { name = ".prettierrc.json5", text = "", fg = "#83a598" },
- { name = ".prettierrc.mjs", text = "", fg = "#83a598" },
- { name = ".prettierrc.toml", text = "", fg = "#83a598" },
- { name = ".prettierrc.yaml", text = "", fg = "#83a598" },
- { name = ".prettierrc.yml", text = "", fg = "#83a598" },
- { name = ".pylintrc", text = "", fg = "#928374" },
- { name = ".settings.json", text = "", fg = "#b16286" },
- { name = ".SRCINFO", text = "", fg = "#8ec07c" },
- { name = ".vimrc", text = "", fg = "#98971a" },
- { name = ".Xauthority", text = "", fg = "#cc241d" },
- { name = ".xinitrc", text = "", fg = "#cc241d" },
- { name = ".Xresources", text = "", fg = "#cc241d" },
- { name = ".xsession", text = "", fg = "#cc241d" },
- { name = ".zprofile", text = "", fg = "#98971a" },
- { name = ".zshenv", text = "", fg = "#98971a" },
- { name = ".zshrc", text = "", fg = "#98971a" },
- { name = "_gvimrc", text = "", fg = "#98971a" },
- { name = "_vimrc", text = "", fg = "#98971a" },
- { name = "AUTHORS", text = "", fg = "#b16286" },
- { name = "AUTHORS.txt", text = "", fg = "#b16286" },
- { name = "brewfile", text = "", fg = "#cc241d" },
- { name = "bspwmrc", text = "", fg = "#928374" },
- { name = "build", text = "", fg = "#98971a" },
- { name = "build.gradle", text = "", fg = "#458588" },
- { name = "build.zig.zon", text = "", fg = "#d79921" },
- { name = "bun.lock", text = "", fg = "#a89984" },
- { name = "bun.lockb", text = "", fg = "#a89984" },
- { name = "cantorrc", text = "", fg = "#83a598" },
- { name = "checkhealth", text = "", fg = "#458588" },
- { name = "cmakelists.txt", text = "", fg = "#a89984" },
- { name = "code_of_conduct", text = "", fg = "#b16286" },
- { name = "code_of_conduct.md", text = "", fg = "#b16286" },
- { name = "commit_editmsg", text = "", fg = "#cc241d" },
- { name = "commitlint.config.js", text = "", fg = "#689d6a" },
- { name = "commitlint.config.ts", text = "", fg = "#689d6a" },
- { name = "compose.yaml", text = "", fg = "#458588" },
- { name = "compose.yml", text = "", fg = "#458588" },
- { name = "config", text = "", fg = "#928374" },
- { name = "containerfile", text = "", fg = "#458588" },
- { name = "copying", text = "", fg = "#fabd2f" },
- { name = "copying.lesser", text = "", fg = "#fabd2f" },
- { name = "Directory.Build.props", text = "", fg = "#458588" },
- { name = "Directory.Build.targets", text = "", fg = "#458588" },
- { name = "Directory.Packages.props", text = "", fg = "#458588" },
- { name = "docker-compose.yaml", text = "", fg = "#458588" },
- { name = "docker-compose.yml", text = "", fg = "#458588" },
- { name = "dockerfile", text = "", fg = "#458588" },
- { name = "eslint.config.cjs", text = "", fg = "#b16286" },
- { name = "eslint.config.js", text = "", fg = "#b16286" },
- { name = "eslint.config.mjs", text = "", fg = "#b16286" },
- { name = "eslint.config.ts", text = "", fg = "#b16286" },
- { name = "ext_typoscript_setup.txt", text = "", fg = "#d79921" },
- { name = "favicon.ico", text = "", fg = "#fabd2f" },
- { name = "fp-info-cache", text = "", fg = "#8ec07c" },
- { name = "fp-lib-table", text = "", fg = "#8ec07c" },
- { name = "FreeCAD.conf", text = "", fg = "#cc241d" },
- { name = "Gemfile", text = "", fg = "#cc241d" },
- { name = "gnumakefile", text = "", fg = "#928374" },
- { name = "go.mod", text = "", fg = "#8ec07c" },
- { name = "go.sum", text = "", fg = "#8ec07c" },
- { name = "go.work", text = "", fg = "#8ec07c" },
- { name = "gradle-wrapper.properties", text = "", fg = "#458588" },
- { name = "gradle.properties", text = "", fg = "#458588" },
- { name = "gradlew", text = "", fg = "#458588" },
- { name = "groovy", text = "", fg = "#458588" },
- { name = "gruntfile.babel.js", text = "", fg = "#d79921" },
- { name = "gruntfile.coffee", text = "", fg = "#d79921" },
- { name = "gruntfile.js", text = "", fg = "#d79921" },
- { name = "gruntfile.ts", text = "", fg = "#d79921" },
- { name = "gtkrc", text = "", fg = "#8ec07c" },
- { name = "gulpfile.babel.js", text = "", fg = "#fb4934" },
- { name = "gulpfile.coffee", text = "", fg = "#fb4934" },
- { name = "gulpfile.js", text = "", fg = "#fb4934" },
- { name = "gulpfile.ts", text = "", fg = "#fb4934" },
- { name = "hypridle.conf", text = "", fg = "#8ec07c" },
- { name = "hyprland.conf", text = "", fg = "#8ec07c" },
- { name = "hyprlandd.conf", text = "", fg = "#8ec07c" },
- { name = "hyprlock.conf", text = "", fg = "#8ec07c" },
- { name = "hyprpaper.conf", text = "", fg = "#8ec07c" },
- { name = "hyprsunset.conf", text = "", fg = "#8ec07c" },
- { name = "i18n.config.js", text = "", fg = "#b16286" },
- { name = "i18n.config.ts", text = "", fg = "#b16286" },
- { name = "i3blocks.conf", text = "", fg = "#a89984" },
- { name = "i3status.conf", text = "", fg = "#a89984" },
- { name = "index.theme", text = "", fg = "#b8bb26" },
- { name = "ionic.config.json", text = "", fg = "#83a598" },
- { name = "Jenkinsfile", text = "", fg = "#cc241d" },
- { name = "justfile", text = "", fg = "#928374" },
- { name = "kalgebrarc", text = "", fg = "#83a598" },
- { name = "kdeglobals", text = "", fg = "#83a598" },
- { name = "kdenlive-layoutsrc", text = "", fg = "#689d6a" },
- { name = "kdenliverc", text = "", fg = "#689d6a" },
- { name = "kritadisplayrc", text = "", fg = "#d3869b" },
- { name = "kritarc", text = "", fg = "#d3869b" },
- { name = "license", text = "", fg = "#fabd2f" },
- { name = "license.md", text = "", fg = "#fabd2f" },
- { name = "lxde-rc.xml", text = "", fg = "#a89984" },
- { name = "lxqt.conf", text = "", fg = "#83a598" },
- { name = "makefile", text = "", fg = "#928374" },
- { name = "mix.lock", text = "", fg = "#d3869b" },
- { name = "mpv.conf", text = "", fg = "#b16286" },
- { name = "next.config.cjs", text = "", fg = "#8ec07c" },
- { name = "next.config.js", text = "", fg = "#8ec07c" },
- { name = "next.config.ts", text = "", fg = "#8ec07c" },
- { name = "node_modules", text = "", fg = "#b16286" },
- { name = "nuxt.config.cjs", text = "", fg = "#b8bb26" },
- { name = "nuxt.config.js", text = "", fg = "#b8bb26" },
- { name = "nuxt.config.mjs", text = "", fg = "#b8bb26" },
- { name = "nuxt.config.ts", text = "", fg = "#b8bb26" },
- { name = "package-lock.json", text = "", fg = "#cc241d" },
- { name = "package.json", text = "", fg = "#b16286" },
- { name = "PKGBUILD", text = "", fg = "#8ec07c" },
- { name = "platformio.ini", text = "", fg = "#d79921" },
- { name = "playwright.config.cjs", text = "", fg = "#b8bb26" },
- { name = "playwright.config.cts", text = "", fg = "#b8bb26" },
- { name = "playwright.config.js", text = "", fg = "#b8bb26" },
- { name = "playwright.config.mjs", text = "", fg = "#b8bb26" },
- { name = "playwright.config.mts", text = "", fg = "#b8bb26" },
- { name = "playwright.config.ts", text = "", fg = "#b8bb26" },
- { name = "pnpm-lock.yaml", text = "", fg = "#d79921" },
- { name = "pnpm-workspace.yaml", text = "", fg = "#d79921" },
- { name = "pom.xml", text = "", fg = "#cc241d" },
- { name = "prettier.config.cjs", text = "", fg = "#83a598" },
- { name = "prettier.config.js", text = "", fg = "#83a598" },
- { name = "prettier.config.mjs", text = "", fg = "#83a598" },
- { name = "prettier.config.ts", text = "", fg = "#83a598" },
- { name = "procfile", text = "", fg = "#d3869b" },
- { name = "PrusaSlicer.ini", text = "", fg = "#cc241d" },
- { name = "PrusaSlicerGcodeViewer.ini", text = "", fg = "#cc241d" },
- { name = "py.typed", text = "", fg = "#d79921" },
- { name = "QtProject.conf", text = "", fg = "#98971a" },
- { name = "rakefile", text = "", fg = "#cc241d" },
- { name = "readme", text = "", fg = "#a89984" },
- { name = "readme.md", text = "", fg = "#a89984" },
- { name = "rmd", text = "", fg = "#83a598" },
- { name = "robots.txt", text = "", fg = "#b16286" },
- { name = "security", text = "", fg = "#a89984" },
- { name = "security.md", text = "", fg = "#a89984" },
- { name = "settings.gradle", text = "", fg = "#458588" },
- { name = "svelte.config.js", text = "", fg = "#cc241d" },
- { name = "sxhkdrc", text = "", fg = "#928374" },
- { name = "sym-lib-table", text = "", fg = "#8ec07c" },
- { name = "tailwind.config.js", text = "", fg = "#8ec07c" },
- { name = "tailwind.config.mjs", text = "", fg = "#8ec07c" },
- { name = "tailwind.config.ts", text = "", fg = "#8ec07c" },
- { name = "tmux.conf", text = "", fg = "#b8bb26" },
- { name = "tmux.conf.local", text = "", fg = "#b8bb26" },
- { name = "tsconfig.json", text = "", fg = "#83a598" },
- { name = "unlicense", text = "", fg = "#fabd2f" },
- { name = "vagrantfile", text = "", fg = "#458588" },
- { name = "vercel.json", text = "", fg = "#8ec07c" },
- { name = "vite.config.cjs", text = "", fg = "#d79921" },
- { name = "vite.config.cts", text = "", fg = "#d79921" },
- { name = "vite.config.js", text = "", fg = "#d79921" },
- { name = "vite.config.mjs", text = "", fg = "#d79921" },
- { name = "vite.config.mts", text = "", fg = "#d79921" },
- { name = "vite.config.ts", text = "", fg = "#d79921" },
- { name = "vitest.config.cjs", text = "", fg = "#d79921" },
- { name = "vitest.config.cts", text = "", fg = "#d79921" },
- { name = "vitest.config.js", text = "", fg = "#d79921" },
- { name = "vitest.config.mjs", text = "", fg = "#d79921" },
- { name = "vitest.config.mts", text = "", fg = "#d79921" },
- { name = "vitest.config.ts", text = "", fg = "#d79921" },
- { name = "vlcrc", text = "", fg = "#d79921" },
- { name = "webpack", text = "", fg = "#83a598" },
- { name = "weston.ini", text = "", fg = "#d79921" },
- { name = "workspace", text = "", fg = "#98971a" },
- { name = "wrangler.jsonc", text = "", fg = "#d79921" },
- { name = "wrangler.toml", text = "", fg = "#d79921" },
- { name = "xdph.conf", text = "", fg = "#8ec07c" },
- { name = "xmobarrc", text = "", fg = "#fb4934" },
- { name = "xmobarrc.hs", text = "", fg = "#fb4934" },
- { name = "xmonad.hs", text = "", fg = "#fb4934" },
- { name = "xorg.conf", text = "", fg = "#cc241d" },
- { name = "xsettingsd.conf", text = "", fg = "#cc241d" },
-]
-exts = [
- { name = "3gp", text = "", fg = "#d79921" },
- { name = "3mf", text = "", fg = "#d3869b" },
- { name = "7z", text = "", fg = "#d79921" },
- { name = "a", text = "", fg = "#a89984" },
- { name = "aac", text = "", fg = "#83a598" },
- { name = "ada", text = "", fg = "#458588" },
- { name = "adb", text = "", fg = "#458588" },
- { name = "ads", text = "", fg = "#d3869b" },
- { name = "ai", text = "", fg = "#fabd2f" },
- { name = "aif", text = "", fg = "#83a598" },
- { name = "aiff", text = "", fg = "#83a598" },
- { name = "android", text = "", fg = "#b8bb26" },
- { name = "ape", text = "", fg = "#83a598" },
- { name = "apk", text = "", fg = "#b8bb26" },
- { name = "apl", text = "", fg = "#b8bb26" },
- { name = "app", text = "", fg = "#cc241d" },
- { name = "applescript", text = "", fg = "#928374" },
- { name = "asc", text = "", fg = "#928374" },
- { name = "asm", text = "", fg = "#83a598" },
- { name = "ass", text = "", fg = "#d79921" },
- { name = "astro", text = "", fg = "#b16286" },
- { name = "avif", text = "", fg = "#d3869b" },
- { name = "awk", text = "", fg = "#928374" },
- { name = "azcli", text = "", fg = "#83a598" },
- { name = "bak", text = "", fg = "#928374" },
- { name = "bash", text = "", fg = "#98971a" },
- { name = "bat", text = "", fg = "#b8bb26" },
- { name = "bazel", text = "", fg = "#98971a" },
- { name = "bib", text = "", fg = "#fabd2f" },
- { name = "bicep", text = "", fg = "#83a598" },
- { name = "bicepparam", text = "", fg = "#d3869b" },
- { name = "bin", text = "", fg = "#cc241d" },
- { name = "blade.php", text = "", fg = "#fb4934" },
- { name = "blend", text = "", fg = "#d79921" },
- { name = "blp", text = "", fg = "#458588" },
- { name = "bmp", text = "", fg = "#d3869b" },
- { name = "bqn", text = "", fg = "#b8bb26" },
- { name = "brep", text = "", fg = "#d79921" },
- { name = "bz", text = "", fg = "#d79921" },
- { name = "bz2", text = "", fg = "#d79921" },
- { name = "bz3", text = "", fg = "#d79921" },
- { name = "bzl", text = "", fg = "#98971a" },
- { name = "c", text = "", fg = "#458588" },
- { name = "c++", text = "", fg = "#fb4934" },
- { name = "cache", text = "", fg = "#8ec07c" },
- { name = "cast", text = "", fg = "#d79921" },
- { name = "cbl", text = "", fg = "#458588" },
- { name = "cc", text = "", fg = "#fb4934" },
- { name = "ccm", text = "", fg = "#fb4934" },
- { name = "cfc", text = "", fg = "#8ec07c" },
- { name = "cfg", text = "", fg = "#928374" },
- { name = "cfm", text = "", fg = "#8ec07c" },
- { name = "cjs", text = "", fg = "#fabd2f" },
- { name = "clj", text = "", fg = "#98971a" },
- { name = "cljc", text = "", fg = "#98971a" },
- { name = "cljd", text = "", fg = "#83a598" },
- { name = "cljs", text = "", fg = "#83a598" },
- { name = "cmake", text = "", fg = "#a89984" },
- { name = "cob", text = "", fg = "#458588" },
- { name = "cobol", text = "", fg = "#458588" },
- { name = "coffee", text = "", fg = "#fabd2f" },
- { name = "conda", text = "", fg = "#b8bb26" },
- { name = "conf", text = "", fg = "#928374" },
- { name = "config.ru", text = "", fg = "#cc241d" },
- { name = "cow", text = "", fg = "#d79921" },
- { name = "cp", text = "", fg = "#83a598" },
- { name = "cpp", text = "", fg = "#83a598" },
- { name = "cppm", text = "", fg = "#83a598" },
- { name = "cpy", text = "", fg = "#458588" },
- { name = "cr", text = "", fg = "#a89984" },
- { name = "crdownload", text = "", fg = "#8ec07c" },
- { name = "cs", text = "", fg = "#d79921" },
- { name = "csh", text = "", fg = "#928374" },
- { name = "cshtml", text = "", fg = "#b16286" },
- { name = "cson", text = "", fg = "#fabd2f" },
- { name = "csproj", text = "", fg = "#b16286" },
- { name = "css", text = "", fg = "#b16286" },
- { name = "csv", text = "", fg = "#98971a" },
- { name = "cts", text = "", fg = "#83a598" },
- { name = "cu", text = "", fg = "#98971a" },
- { name = "cue", text = "", fg = "#d3869b" },
- { name = "cuh", text = "", fg = "#d3869b" },
- { name = "cxx", text = "", fg = "#83a598" },
- { name = "cxxm", text = "", fg = "#83a598" },
- { name = "d", text = "", fg = "#cc241d" },
- { name = "d.ts", text = "", fg = "#d79921" },
- { name = "dart", text = "", fg = "#458588" },
- { name = "db", text = "", fg = "#8ec07c" },
- { name = "dconf", text = "", fg = "#8ec07c" },
- { name = "desktop", text = "", fg = "#b16286" },
- { name = "diff", text = "", fg = "#928374" },
- { name = "dll", text = "", fg = "#cc241d" },
- { name = "doc", text = "", fg = "#458588" },
- { name = "Dockerfile", text = "", fg = "#458588" },
- { name = "dockerignore", text = "", fg = "#458588" },
- { name = "docx", text = "", fg = "#458588" },
- { name = "dot", text = "", fg = "#458588" },
- { name = "download", text = "", fg = "#8ec07c" },
- { name = "drl", text = "", fg = "#cc241d" },
- { name = "dropbox", text = "", fg = "#458588" },
- { name = "dump", text = "", fg = "#8ec07c" },
- { name = "dwg", text = "", fg = "#d79921" },
- { name = "dxf", text = "", fg = "#d79921" },
- { name = "ebook", text = "", fg = "#d79921" },
- { name = "ebuild", text = "", fg = "#b16286" },
- { name = "edn", text = "", fg = "#83a598" },
- { name = "eex", text = "", fg = "#d3869b" },
- { name = "ejs", text = "", fg = "#fabd2f" },
- { name = "el", text = "", fg = "#b16286" },
- { name = "elc", text = "", fg = "#b16286" },
- { name = "elf", text = "", fg = "#cc241d" },
- { name = "elm", text = "", fg = "#83a598" },
- { name = "eln", text = "", fg = "#b16286" },
- { name = "env", text = "", fg = "#d79921" },
- { name = "eot", text = "", fg = "#a89984" },
- { name = "epp", text = "", fg = "#d79921" },
- { name = "epub", text = "", fg = "#d79921" },
- { name = "erb", text = "", fg = "#cc241d" },
- { name = "erl", text = "", fg = "#b16286" },
- { name = "ex", text = "", fg = "#d3869b" },
- { name = "exe", text = "", fg = "#cc241d" },
- { name = "exs", text = "", fg = "#d3869b" },
- { name = "f#", text = "", fg = "#83a598" },
- { name = "f3d", text = "", fg = "#d79921" },
- { name = "f90", text = "", fg = "#b16286" },
- { name = "fbx", text = "", fg = "#d3869b" },
- { name = "fcbak", text = "", fg = "#cc241d" },
- { name = "fcmacro", text = "", fg = "#cc241d" },
- { name = "fcmat", text = "", fg = "#cc241d" },
- { name = "fcparam", text = "", fg = "#cc241d" },
- { name = "fcscript", text = "", fg = "#cc241d" },
- { name = "fcstd", text = "", fg = "#cc241d" },
- { name = "fcstd1", text = "", fg = "#cc241d" },
- { name = "fctb", text = "", fg = "#cc241d" },
- { name = "fctl", text = "", fg = "#cc241d" },
- { name = "fdmdownload", text = "", fg = "#8ec07c" },
- { name = "feature", text = "", fg = "#b8bb26" },
- { name = "fish", text = "", fg = "#928374" },
- { name = "flac", text = "", fg = "#458588" },
- { name = "flc", text = "", fg = "#a89984" },
- { name = "flf", text = "", fg = "#a89984" },
- { name = "fnl", text = "", fg = "#fabd2f" },
- { name = "fodg", text = "", fg = "#d79921" },
- { name = "fodp", text = "", fg = "#d79921" },
- { name = "fods", text = "", fg = "#b8bb26" },
- { name = "fodt", text = "", fg = "#458588" },
- { name = "frag", text = "", fg = "#8ec07c" },
- { name = "fs", text = "", fg = "#83a598" },
- { name = "fsi", text = "", fg = "#83a598" },
- { name = "fsscript", text = "", fg = "#83a598" },
- { name = "fsx", text = "", fg = "#83a598" },
- { name = "gcode", text = "", fg = "#83a598" },
- { name = "gd", text = "", fg = "#928374" },
- { name = "gemspec", text = "", fg = "#cc241d" },
- { name = "geom", text = "", fg = "#8ec07c" },
- { name = "gif", text = "", fg = "#d3869b" },
- { name = "git", text = "", fg = "#cc241d" },
- { name = "glb", text = "", fg = "#d79921" },
- { name = "gleam", text = "", fg = "#d3869b" },
- { name = "glsl", text = "", fg = "#8ec07c" },
- { name = "gnumakefile", text = "", fg = "#928374" },
- { name = "go", text = "", fg = "#8ec07c" },
- { name = "godot", text = "", fg = "#928374" },
- { name = "gpr", text = "", fg = "#928374" },
- { name = "gql", text = "", fg = "#d3869b" },
- { name = "gradle", text = "", fg = "#458588" },
- { name = "graphql", text = "", fg = "#d3869b" },
- { name = "gresource", text = "", fg = "#8ec07c" },
- { name = "gv", text = "", fg = "#458588" },
- { name = "gz", text = "", fg = "#d79921" },
- { name = "h", text = "", fg = "#d3869b" },
- { name = "haml", text = "", fg = "#a89984" },
- { name = "hbs", text = "", fg = "#cc241d" },
- { name = "heex", text = "", fg = "#d3869b" },
- { name = "hex", text = "", fg = "#458588" },
- { name = "hh", text = "", fg = "#d3869b" },
- { name = "hpp", text = "", fg = "#d3869b" },
- { name = "hrl", text = "", fg = "#b16286" },
- { name = "hs", text = "", fg = "#d3869b" },
- { name = "htm", text = "", fg = "#cc241d" },
- { name = "html", text = "", fg = "#cc241d" },
- { name = "http", text = "", fg = "#83a598" },
- { name = "huff", text = "", fg = "#b16286" },
- { name = "hurl", text = "", fg = "#d3869b" },
- { name = "hx", text = "", fg = "#d79921" },
- { name = "hxx", text = "", fg = "#d3869b" },
- { name = "ical", text = "", fg = "#458588" },
- { name = "icalendar", text = "", fg = "#458588" },
- { name = "ico", text = "", fg = "#fabd2f" },
- { name = "ics", text = "", fg = "#458588" },
- { name = "ifb", text = "", fg = "#458588" },
- { name = "ifc", text = "", fg = "#d79921" },
- { name = "ige", text = "", fg = "#d79921" },
- { name = "iges", text = "", fg = "#d79921" },
- { name = "igs", text = "", fg = "#d79921" },
- { name = "image", text = "", fg = "#fb4934" },
- { name = "img", text = "", fg = "#fb4934" },
- { name = "import", text = "", fg = "#a89984" },
- { name = "info", text = "", fg = "#fabd2f" },
- { name = "ini", text = "", fg = "#928374" },
- { name = "ino", text = "", fg = "#689d6a" },
- { name = "ipynb", text = "", fg = "#d79921" },
- { name = "iso", text = "", fg = "#fb4934" },
- { name = "ixx", text = "", fg = "#83a598" },
- { name = "jar", text = "", fg = "#d79921" },
- { name = "java", text = "", fg = "#fb4934" },
- { name = "jl", text = "", fg = "#d3869b" },
- { name = "jpeg", text = "", fg = "#d3869b" },
- { name = "jpg", text = "", fg = "#d3869b" },
- { name = "js", text = "", fg = "#fabd2f" },
- { name = "json", text = "", fg = "#fabd2f" },
- { name = "json5", text = "", fg = "#fabd2f" },
- { name = "jsonc", text = "", fg = "#fabd2f" },
- { name = "jsx", text = "", fg = "#8ec07c" },
- { name = "jwmrc", text = "", fg = "#83a598" },
- { name = "jxl", text = "", fg = "#d3869b" },
- { name = "kbx", text = "", fg = "#928374" },
- { name = "kdb", text = "", fg = "#b8bb26" },
- { name = "kdbx", text = "", fg = "#b8bb26" },
- { name = "kdenlive", text = "", fg = "#689d6a" },
- { name = "kdenlivetitle", text = "", fg = "#689d6a" },
- { name = "kicad_dru", text = "", fg = "#8ec07c" },
- { name = "kicad_mod", text = "", fg = "#8ec07c" },
- { name = "kicad_pcb", text = "", fg = "#8ec07c" },
- { name = "kicad_prl", text = "", fg = "#8ec07c" },
- { name = "kicad_pro", text = "", fg = "#8ec07c" },
- { name = "kicad_sch", text = "", fg = "#8ec07c" },
- { name = "kicad_sym", text = "", fg = "#8ec07c" },
- { name = "kicad_wks", text = "", fg = "#8ec07c" },
- { name = "ko", text = "", fg = "#a89984" },
- { name = "kpp", text = "", fg = "#d3869b" },
- { name = "kra", text = "", fg = "#d3869b" },
- { name = "krz", text = "", fg = "#d3869b" },
- { name = "ksh", text = "", fg = "#928374" },
- { name = "kt", text = "", fg = "#458588" },
- { name = "kts", text = "", fg = "#458588" },
- { name = "lck", text = "", fg = "#a89984" },
- { name = "leex", text = "", fg = "#d3869b" },
- { name = "less", text = "", fg = "#b16286" },
- { name = "lff", text = "", fg = "#a89984" },
- { name = "lhs", text = "", fg = "#d3869b" },
- { name = "lib", text = "", fg = "#cc241d" },
- { name = "license", text = "", fg = "#fabd2f" },
- { name = "liquid", text = "", fg = "#d79921" },
- { name = "lock", text = "", fg = "#a89984" },
- { name = "log", text = "", fg = "#a89984" },
- { name = "lrc", text = "", fg = "#d79921" },
- { name = "lua", text = "", fg = "#83a598" },
- { name = "luac", text = "", fg = "#83a598" },
- { name = "luau", text = "", fg = "#458588" },
- { name = "m", text = "", fg = "#458588" },
- { name = "m3u", text = "", fg = "#d3869b" },
- { name = "m3u8", text = "", fg = "#d3869b" },
- { name = "m4a", text = "", fg = "#83a598" },
- { name = "m4v", text = "", fg = "#d79921" },
- { name = "magnet", text = "", fg = "#cc241d" },
- { name = "makefile", text = "", fg = "#928374" },
- { name = "markdown", text = "", fg = "#a89984" },
- { name = "material", text = "", fg = "#b16286" },
- { name = "md", text = "", fg = "#a89984" },
- { name = "md5", text = "", fg = "#d3869b" },
- { name = "mdx", text = "", fg = "#83a598" },
- { name = "mint", text = "", fg = "#98971a" },
- { name = "mjs", text = "", fg = "#fabd2f" },
- { name = "mk", text = "", fg = "#928374" },
- { name = "mkv", text = "", fg = "#d79921" },
- { name = "ml", text = "", fg = "#d79921" },
- { name = "mli", text = "", fg = "#d79921" },
- { name = "mm", text = "", fg = "#83a598" },
- { name = "mo", text = "", fg = "#b16286" },
- { name = "mobi", text = "", fg = "#d79921" },
- { name = "mojo", text = "", fg = "#cc241d" },
- { name = "mov", text = "", fg = "#d79921" },
- { name = "mp3", text = "", fg = "#83a598" },
- { name = "mp4", text = "", fg = "#d79921" },
- { name = "mpp", text = "", fg = "#83a598" },
- { name = "msf", text = "", fg = "#83a598" },
- { name = "mts", text = "", fg = "#83a598" },
- { name = "mustache", text = "", fg = "#d79921" },
- { name = "nfo", text = "", fg = "#fabd2f" },
- { name = "nim", text = "", fg = "#d79921" },
- { name = "nix", text = "", fg = "#689d6a" },
- { name = "norg", text = "", fg = "#83a598" },
- { name = "nswag", text = "", fg = "#98971a" },
- { name = "nu", text = "", fg = "#689d6a" },
- { name = "o", text = "", fg = "#cc241d" },
- { name = "obj", text = "", fg = "#d3869b" },
- { name = "odf", text = "", fg = "#fb4934" },
- { name = "odg", text = "", fg = "#d79921" },
- { name = "odin", text = "", fg = "#83a598" },
- { name = "odp", text = "", fg = "#d79921" },
- { name = "ods", text = "", fg = "#b8bb26" },
- { name = "odt", text = "", fg = "#458588" },
- { name = "oga", text = "", fg = "#458588" },
- { name = "ogg", text = "", fg = "#458588" },
- { name = "ogv", text = "", fg = "#d79921" },
- { name = "ogx", text = "", fg = "#d79921" },
- { name = "opus", text = "", fg = "#458588" },
- { name = "org", text = "", fg = "#689d6a" },
- { name = "otf", text = "", fg = "#a89984" },
- { name = "out", text = "", fg = "#cc241d" },
- { name = "part", text = "", fg = "#8ec07c" },
- { name = "patch", text = "", fg = "#928374" },
- { name = "pck", text = "", fg = "#928374" },
- { name = "pcm", text = "", fg = "#458588" },
- { name = "pdf", text = "", fg = "#cc241d" },
- { name = "php", text = "", fg = "#d3869b" },
- { name = "pl", text = "", fg = "#83a598" },
- { name = "pls", text = "", fg = "#d3869b" },
- { name = "ply", text = "", fg = "#d3869b" },
- { name = "pm", text = "", fg = "#83a598" },
- { name = "png", text = "", fg = "#d3869b" },
- { name = "po", text = "", fg = "#83a598" },
- { name = "pot", text = "", fg = "#83a598" },
- { name = "pp", text = "", fg = "#d79921" },
- { name = "ppt", text = "", fg = "#cc241d" },
- { name = "pptx", text = "", fg = "#cc241d" },
- { name = "prisma", text = "", fg = "#458588" },
- { name = "pro", text = "", fg = "#fabd2f" },
- { name = "ps1", text = "", fg = "#458588" },
- { name = "psb", text = "", fg = "#83a598" },
- { name = "psd", text = "", fg = "#83a598" },
- { name = "psd1", text = "", fg = "#458588" },
- { name = "psm1", text = "", fg = "#458588" },
- { name = "pub", text = "", fg = "#fabd2f" },
- { name = "pxd", text = "", fg = "#83a598" },
- { name = "pxi", text = "", fg = "#83a598" },
- { name = "py", text = "", fg = "#d79921" },
- { name = "pyc", text = "", fg = "#fabd2f" },
- { name = "pyd", text = "", fg = "#fabd2f" },
- { name = "pyi", text = "", fg = "#d79921" },
- { name = "pyo", text = "", fg = "#fabd2f" },
- { name = "pyw", text = "", fg = "#83a598" },
- { name = "pyx", text = "", fg = "#83a598" },
- { name = "qm", text = "", fg = "#83a598" },
- { name = "qml", text = "", fg = "#98971a" },
- { name = "qrc", text = "", fg = "#98971a" },
- { name = "qss", text = "", fg = "#98971a" },
- { name = "query", text = "", fg = "#98971a" },
- { name = "r", text = "", fg = "#458588" },
- { name = "R", text = "", fg = "#458588" },
- { name = "rake", text = "", fg = "#cc241d" },
- { name = "rar", text = "", fg = "#d79921" },
- { name = "rasi", text = "", fg = "#fabd2f" },
- { name = "razor", text = "", fg = "#b16286" },
- { name = "rb", text = "", fg = "#cc241d" },
- { name = "res", text = "", fg = "#fb4934" },
- { name = "resi", text = "", fg = "#fb4934" },
- { name = "rlib", text = "", fg = "#fb4934" },
- { name = "rmd", text = "", fg = "#83a598" },
- { name = "rproj", text = "", fg = "#98971a" },
- { name = "rs", text = "", fg = "#fb4934" },
- { name = "rss", text = "", fg = "#d79921" },
- { name = "s", text = "", fg = "#458588" },
- { name = "sass", text = "", fg = "#fb4934" },
- { name = "sbt", text = "", fg = "#fb4934" },
- { name = "sc", text = "", fg = "#fb4934" },
- { name = "scad", text = "", fg = "#d79921" },
- { name = "scala", text = "", fg = "#fb4934" },
- { name = "scm", text = "", fg = "#a89984" },
- { name = "scss", text = "", fg = "#fb4934" },
- { name = "sh", text = "", fg = "#928374" },
- { name = "sha1", text = "", fg = "#d3869b" },
- { name = "sha224", text = "", fg = "#d3869b" },
- { name = "sha256", text = "", fg = "#d3869b" },
- { name = "sha384", text = "", fg = "#d3869b" },
- { name = "sha512", text = "", fg = "#d3869b" },
- { name = "sig", text = "", fg = "#d79921" },
- { name = "signature", text = "", fg = "#d79921" },
- { name = "skp", text = "", fg = "#d79921" },
- { name = "sldasm", text = "", fg = "#d79921" },
- { name = "sldprt", text = "", fg = "#d79921" },
- { name = "slim", text = "", fg = "#cc241d" },
- { name = "sln", text = "", fg = "#b16286" },
- { name = "slnx", text = "", fg = "#b16286" },
- { name = "slvs", text = "", fg = "#d79921" },
- { name = "sml", text = "", fg = "#d79921" },
- { name = "so", text = "", fg = "#a89984" },
- { name = "sol", text = "", fg = "#83a598" },
- { name = "spec.js", text = "", fg = "#fabd2f" },
- { name = "spec.jsx", text = "", fg = "#8ec07c" },
- { name = "spec.ts", text = "", fg = "#83a598" },
- { name = "spec.tsx", text = "", fg = "#458588" },
- { name = "spx", text = "", fg = "#458588" },
- { name = "sql", text = "", fg = "#8ec07c" },
- { name = "sqlite", text = "", fg = "#8ec07c" },
- { name = "sqlite3", text = "", fg = "#8ec07c" },
- { name = "srt", text = "", fg = "#d79921" },
- { name = "ssa", text = "", fg = "#d79921" },
- { name = "ste", text = "", fg = "#d79921" },
- { name = "step", text = "", fg = "#d79921" },
- { name = "stl", text = "", fg = "#d3869b" },
- { name = "stories.js", text = "", fg = "#fb4934" },
- { name = "stories.jsx", text = "", fg = "#fb4934" },
- { name = "stories.mjs", text = "", fg = "#fb4934" },
- { name = "stories.svelte", text = "", fg = "#fb4934" },
- { name = "stories.ts", text = "", fg = "#fb4934" },
- { name = "stories.tsx", text = "", fg = "#fb4934" },
- { name = "stories.vue", text = "", fg = "#fb4934" },
- { name = "stp", text = "", fg = "#d79921" },
- { name = "strings", text = "", fg = "#83a598" },
- { name = "styl", text = "", fg = "#98971a" },
- { name = "sub", text = "", fg = "#d79921" },
- { name = "sublime", text = "", fg = "#d79921" },
- { name = "suo", text = "", fg = "#b16286" },
- { name = "sv", text = "", fg = "#98971a" },
- { name = "svelte", text = "", fg = "#cc241d" },
- { name = "svg", text = "", fg = "#d79921" },
- { name = "svgz", text = "", fg = "#d79921" },
- { name = "svh", text = "", fg = "#98971a" },
- { name = "swift", text = "", fg = "#d79921" },
- { name = "t", text = "", fg = "#83a598" },
- { name = "tbc", text = "", fg = "#458588" },
- { name = "tcl", text = "", fg = "#458588" },
- { name = "templ", text = "", fg = "#d79921" },
- { name = "terminal", text = "", fg = "#b8bb26" },
- { name = "test.js", text = "", fg = "#fabd2f" },
- { name = "test.jsx", text = "", fg = "#8ec07c" },
- { name = "test.ts", text = "", fg = "#83a598" },
- { name = "test.tsx", text = "", fg = "#458588" },
- { name = "tex", text = "", fg = "#98971a" },
- { name = "tf", text = "", fg = "#b16286" },
- { name = "tfvars", text = "", fg = "#b16286" },
- { name = "tgz", text = "", fg = "#d79921" },
- { name = "tmpl", text = "", fg = "#d79921" },
- { name = "tmux", text = "", fg = "#b8bb26" },
- { name = "toml", text = "", fg = "#cc241d" },
- { name = "torrent", text = "", fg = "#8ec07c" },
- { name = "tres", text = "", fg = "#928374" },
- { name = "ts", text = "", fg = "#83a598" },
- { name = "tscn", text = "", fg = "#928374" },
- { name = "tsconfig", text = "", fg = "#d79921" },
- { name = "tsx", text = "", fg = "#458588" },
- { name = "ttf", text = "", fg = "#a89984" },
- { name = "twig", text = "", fg = "#98971a" },
- { name = "txt", text = "", fg = "#98971a" },
- { name = "txz", text = "", fg = "#d79921" },
- { name = "typ", text = "", fg = "#8ec07c" },
- { name = "typoscript", text = "", fg = "#d79921" },
- { name = "ui", text = "", fg = "#458588" },
- { name = "v", text = "", fg = "#98971a" },
- { name = "vala", text = "", fg = "#b16286" },
- { name = "vert", text = "", fg = "#8ec07c" },
- { name = "vh", text = "", fg = "#98971a" },
- { name = "vhd", text = "", fg = "#98971a" },
- { name = "vhdl", text = "", fg = "#98971a" },
- { name = "vi", text = "", fg = "#d79921" },
- { name = "vim", text = "", fg = "#98971a" },
- { name = "vsh", text = "", fg = "#8ec07c" },
- { name = "vsix", text = "", fg = "#b16286" },
- { name = "vue", text = "", fg = "#98971a" },
- { name = "wasm", text = "", fg = "#458588" },
- { name = "wav", text = "", fg = "#83a598" },
- { name = "webm", text = "", fg = "#d79921" },
- { name = "webmanifest", text = "", fg = "#fabd2f" },
- { name = "webp", text = "", fg = "#d3869b" },
- { name = "webpack", text = "", fg = "#83a598" },
- { name = "wma", text = "", fg = "#83a598" },
- { name = "wmv", text = "", fg = "#d79921" },
- { name = "woff", text = "", fg = "#a89984" },
- { name = "woff2", text = "", fg = "#a89984" },
- { name = "wrl", text = "", fg = "#d3869b" },
- { name = "wrz", text = "", fg = "#d3869b" },
- { name = "wv", text = "", fg = "#83a598" },
- { name = "wvc", text = "", fg = "#83a598" },
- { name = "x", text = "", fg = "#458588" },
- { name = "xaml", text = "", fg = "#b16286" },
- { name = "xcf", text = "", fg = "#928374" },
- { name = "xcplayground", text = "", fg = "#d79921" },
- { name = "xcstrings", text = "", fg = "#83a598" },
- { name = "xls", text = "", fg = "#98971a" },
- { name = "xlsx", text = "", fg = "#98971a" },
- { name = "xm", text = "", fg = "#83a598" },
- { name = "xml", text = "", fg = "#d79921" },
- { name = "xpi", text = "", fg = "#cc241d" },
- { name = "xul", text = "", fg = "#d79921" },
- { name = "xz", text = "", fg = "#d79921" },
- { name = "yaml", text = "", fg = "#928374" },
- { name = "yml", text = "", fg = "#928374" },
- { name = "zig", text = "", fg = "#d79921" },
- { name = "zip", text = "", fg = "#d79921" },
- { name = "zsh", text = "", fg = "#98971a" },
- { name = "zst", text = "", fg = "#d79921" },
- { name = "🔥", text = "", fg = "#cc241d" },
+ { name = ".babelrc", text = "", fg = "#fabd2f" },
+ { name = ".bash_profile", text = "", fg = "#98971a" },
+ { name = ".bashrc", text = "", fg = "#98971a" },
+ { name = ".clang-format", text = "", fg = "#928374" },
+ { name = ".clang-tidy", text = "", fg = "#928374" },
+ { name = ".codespellrc", text = "", fg = "#b8bb26" },
+ { name = ".condarc", text = "", fg = "#b8bb26" },
+ { name = ".dockerignore", text = "", fg = "#458588" },
+ { name = ".ds_store", text = "", fg = "#928374" },
+ { name = ".editorconfig", text = "", fg = "#a89984" },
+ { name = ".env", text = "", fg = "#d79921" },
+ { name = ".eslintignore", text = "", fg = "#b16286" },
+ { name = ".eslintrc", text = "", fg = "#b16286" },
+ { name = ".git-blame-ignore-revs", text = "", fg = "#cc241d" },
+ { name = ".gitattributes", text = "", fg = "#cc241d" },
+ { name = ".gitconfig", text = "", fg = "#cc241d" },
+ { name = ".gitignore", text = "", fg = "#cc241d" },
+ { name = ".gitlab-ci.yml", text = "", fg = "#cc241d" },
+ { name = ".gitmodules", text = "", fg = "#cc241d" },
+ { name = ".gtkrc-2.0", text = "", fg = "#8ec07c" },
+ { name = ".gvimrc", text = "", fg = "#98971a" },
+ { name = ".justfile", text = "", fg = "#928374" },
+ { name = ".luacheckrc", text = "", fg = "#458588" },
+ { name = ".luaurc", text = "", fg = "#458588" },
+ { name = ".mailmap", text = "", fg = "#cc241d" },
+ { name = ".nanorc", text = "", fg = "#b16286" },
+ { name = ".npmignore", text = "", fg = "#b16286" },
+ { name = ".npmrc", text = "", fg = "#b16286" },
+ { name = ".nuxtrc", text = "", fg = "#b8bb26" },
+ { name = ".nvmrc", text = "", fg = "#b8bb26" },
+ { name = ".pnpmfile.cjs", text = "", fg = "#d79921" },
+ { name = ".pre-commit-config.yaml", text = "", fg = "#d79921" },
+ { name = ".prettierignore", text = "", fg = "#83a598" },
+ { name = ".prettierrc", text = "", fg = "#83a598" },
+ { name = ".prettierrc.cjs", text = "", fg = "#83a598" },
+ { name = ".prettierrc.js", text = "", fg = "#83a598" },
+ { name = ".prettierrc.json", text = "", fg = "#83a598" },
+ { name = ".prettierrc.json5", text = "", fg = "#83a598" },
+ { name = ".prettierrc.mjs", text = "", fg = "#83a598" },
+ { name = ".prettierrc.toml", text = "", fg = "#83a598" },
+ { name = ".prettierrc.yaml", text = "", fg = "#83a598" },
+ { name = ".prettierrc.yml", text = "", fg = "#83a598" },
+ { name = ".pylintrc", text = "", fg = "#928374" },
+ { name = ".settings.json", text = "", fg = "#b16286" },
+ { name = ".SRCINFO", text = "", fg = "#8ec07c" },
+ { name = ".vimrc", text = "", fg = "#98971a" },
+ { name = ".Xauthority", text = "", fg = "#cc241d" },
+ { name = ".xinitrc", text = "", fg = "#cc241d" },
+ { name = ".Xresources", text = "", fg = "#cc241d" },
+ { name = ".xsession", text = "", fg = "#cc241d" },
+ { name = ".zprofile", text = "", fg = "#98971a" },
+ { name = ".zshenv", text = "", fg = "#98971a" },
+ { name = ".zshrc", text = "", fg = "#98971a" },
+ { name = "_gvimrc", text = "", fg = "#98971a" },
+ { name = "_vimrc", text = "", fg = "#98971a" },
+ { name = "AUTHORS", text = "", fg = "#b16286" },
+ { name = "AUTHORS.txt", text = "", fg = "#b16286" },
+ { name = "brewfile", text = "", fg = "#cc241d" },
+ { name = "bspwmrc", text = "", fg = "#928374" },
+ { name = "build", text = "", fg = "#98971a" },
+ { name = "build.gradle", text = "", fg = "#458588" },
+ { name = "build.zig.zon", text = "", fg = "#d79921" },
+ { name = "bun.lock", text = "", fg = "#a89984" },
+ { name = "bun.lockb", text = "", fg = "#a89984" },
+ { name = "cantorrc", text = "", fg = "#83a598" },
+ { name = "checkhealth", text = "", fg = "#458588" },
+ { name = "cmakelists.txt", text = "", fg = "#a89984" },
+ { name = "code_of_conduct", text = "", fg = "#b16286" },
+ { name = "code_of_conduct.md", text = "", fg = "#b16286" },
+ { name = "commit_editmsg", text = "", fg = "#cc241d" },
+ { name = "commitlint.config.js", text = "", fg = "#689d6a" },
+ { name = "commitlint.config.ts", text = "", fg = "#689d6a" },
+ { name = "compose.yaml", text = "", fg = "#458588" },
+ { name = "compose.yml", text = "", fg = "#458588" },
+ { name = "config", text = "", fg = "#928374" },
+ { name = "containerfile", text = "", fg = "#458588" },
+ { name = "copying", text = "", fg = "#fabd2f" },
+ { name = "copying.lesser", text = "", fg = "#fabd2f" },
+ { name = "Directory.Build.props", text = "", fg = "#458588" },
+ { name = "Directory.Build.targets", text = "", fg = "#458588" },
+ { name = "Directory.Packages.props", text = "", fg = "#458588" },
+ { name = "docker-compose.yaml", text = "", fg = "#458588" },
+ { name = "docker-compose.yml", text = "", fg = "#458588" },
+ { name = "dockerfile", text = "", fg = "#458588" },
+ { name = "eslint.config.cjs", text = "", fg = "#b16286" },
+ { name = "eslint.config.js", text = "", fg = "#b16286" },
+ { name = "eslint.config.mjs", text = "", fg = "#b16286" },
+ { name = "eslint.config.ts", text = "", fg = "#b16286" },
+ { name = "ext_typoscript_setup.txt", text = "", fg = "#d79921" },
+ { name = "favicon.ico", text = "", fg = "#fabd2f" },
+ { name = "fp-info-cache", text = "", fg = "#8ec07c" },
+ { name = "fp-lib-table", text = "", fg = "#8ec07c" },
+ { name = "FreeCAD.conf", text = "", fg = "#cc241d" },
+ { name = "Gemfile", text = "", fg = "#cc241d" },
+ { name = "gnumakefile", text = "", fg = "#928374" },
+ { name = "go.mod", text = "", fg = "#8ec07c" },
+ { name = "go.sum", text = "", fg = "#8ec07c" },
+ { name = "go.work", text = "", fg = "#8ec07c" },
+ { name = "gradle-wrapper.properties", text = "", fg = "#458588" },
+ { name = "gradle.properties", text = "", fg = "#458588" },
+ { name = "gradlew", text = "", fg = "#458588" },
+ { name = "groovy", text = "", fg = "#458588" },
+ { name = "gruntfile.babel.js", text = "", fg = "#d79921" },
+ { name = "gruntfile.coffee", text = "", fg = "#d79921" },
+ { name = "gruntfile.js", text = "", fg = "#d79921" },
+ { name = "gruntfile.ts", text = "", fg = "#d79921" },
+ { name = "gtkrc", text = "", fg = "#8ec07c" },
+ { name = "gulpfile.babel.js", text = "", fg = "#fb4934" },
+ { name = "gulpfile.coffee", text = "", fg = "#fb4934" },
+ { name = "gulpfile.js", text = "", fg = "#fb4934" },
+ { name = "gulpfile.ts", text = "", fg = "#fb4934" },
+ { name = "hypridle.conf", text = "", fg = "#8ec07c" },
+ { name = "hyprland.conf", text = "", fg = "#8ec07c" },
+ { name = "hyprlandd.conf", text = "", fg = "#8ec07c" },
+ { name = "hyprlock.conf", text = "", fg = "#8ec07c" },
+ { name = "hyprpaper.conf", text = "", fg = "#8ec07c" },
+ { name = "hyprsunset.conf", text = "", fg = "#8ec07c" },
+ { name = "i18n.config.js", text = "", fg = "#b16286" },
+ { name = "i18n.config.ts", text = "", fg = "#b16286" },
+ { name = "i3blocks.conf", text = "", fg = "#a89984" },
+ { name = "i3status.conf", text = "", fg = "#a89984" },
+ { name = "index.theme", text = "", fg = "#b8bb26" },
+ { name = "ionic.config.json", text = "", fg = "#83a598" },
+ { name = "Jenkinsfile", text = "", fg = "#cc241d" },
+ { name = "justfile", text = "", fg = "#928374" },
+ { name = "kalgebrarc", text = "", fg = "#83a598" },
+ { name = "kdeglobals", text = "", fg = "#83a598" },
+ { name = "kdenlive-layoutsrc", text = "", fg = "#689d6a" },
+ { name = "kdenliverc", text = "", fg = "#689d6a" },
+ { name = "kritadisplayrc", text = "", fg = "#d3869b" },
+ { name = "kritarc", text = "", fg = "#d3869b" },
+ { name = "license", text = "", fg = "#fabd2f" },
+ { name = "license.md", text = "", fg = "#fabd2f" },
+ { name = "lxde-rc.xml", text = "", fg = "#a89984" },
+ { name = "lxqt.conf", text = "", fg = "#83a598" },
+ { name = "makefile", text = "", fg = "#928374" },
+ { name = "mix.lock", text = "", fg = "#d3869b" },
+ { name = "mpv.conf", text = "", fg = "#b16286" },
+ { name = "next.config.cjs", text = "", fg = "#8ec07c" },
+ { name = "next.config.js", text = "", fg = "#8ec07c" },
+ { name = "next.config.ts", text = "", fg = "#8ec07c" },
+ { name = "node_modules", text = "", fg = "#b16286" },
+ { name = "nuxt.config.cjs", text = "", fg = "#b8bb26" },
+ { name = "nuxt.config.js", text = "", fg = "#b8bb26" },
+ { name = "nuxt.config.mjs", text = "", fg = "#b8bb26" },
+ { name = "nuxt.config.ts", text = "", fg = "#b8bb26" },
+ { name = "package-lock.json", text = "", fg = "#cc241d" },
+ { name = "package.json", text = "", fg = "#b16286" },
+ { name = "PKGBUILD", text = "", fg = "#8ec07c" },
+ { name = "platformio.ini", text = "", fg = "#d79921" },
+ { name = "playwright.config.cjs", text = "", fg = "#b8bb26" },
+ { name = "playwright.config.cts", text = "", fg = "#b8bb26" },
+ { name = "playwright.config.js", text = "", fg = "#b8bb26" },
+ { name = "playwright.config.mjs", text = "", fg = "#b8bb26" },
+ { name = "playwright.config.mts", text = "", fg = "#b8bb26" },
+ { name = "playwright.config.ts", text = "", fg = "#b8bb26" },
+ { name = "pnpm-lock.yaml", text = "", fg = "#d79921" },
+ { name = "pnpm-workspace.yaml", text = "", fg = "#d79921" },
+ { name = "pom.xml", text = "", fg = "#cc241d" },
+ { name = "prettier.config.cjs", text = "", fg = "#83a598" },
+ { name = "prettier.config.js", text = "", fg = "#83a598" },
+ { name = "prettier.config.mjs", text = "", fg = "#83a598" },
+ { name = "prettier.config.ts", text = "", fg = "#83a598" },
+ { name = "procfile", text = "", fg = "#d3869b" },
+ { name = "PrusaSlicer.ini", text = "", fg = "#cc241d" },
+ { name = "PrusaSlicerGcodeViewer.ini", text = "", fg = "#cc241d" },
+ { name = "py.typed", text = "", fg = "#d79921" },
+ { name = "QtProject.conf", text = "", fg = "#98971a" },
+ { name = "rakefile", text = "", fg = "#cc241d" },
+ { name = "readme", text = "", fg = "#a89984" },
+ { name = "readme.md", text = "", fg = "#a89984" },
+ { name = "rmd", text = "", fg = "#83a598" },
+ { name = "robots.txt", text = "", fg = "#b16286" },
+ { name = "security", text = "", fg = "#a89984" },
+ { name = "security.md", text = "", fg = "#a89984" },
+ { name = "settings.gradle", text = "", fg = "#458588" },
+ { name = "svelte.config.js", text = "", fg = "#cc241d" },
+ { name = "sxhkdrc", text = "", fg = "#928374" },
+ { name = "sym-lib-table", text = "", fg = "#8ec07c" },
+ { name = "tailwind.config.js", text = "", fg = "#8ec07c" },
+ { name = "tailwind.config.mjs", text = "", fg = "#8ec07c" },
+ { name = "tailwind.config.ts", text = "", fg = "#8ec07c" },
+ { name = "tmux.conf", text = "", fg = "#b8bb26" },
+ { name = "tmux.conf.local", text = "", fg = "#b8bb26" },
+ { name = "tsconfig.json", text = "", fg = "#83a598" },
+ { name = "unlicense", text = "", fg = "#fabd2f" },
+ { name = "vagrantfile", text = "", fg = "#458588" },
+ { name = "vercel.json", text = "", fg = "#8ec07c" },
+ { name = "vite.config.cjs", text = "", fg = "#d79921" },
+ { name = "vite.config.cts", text = "", fg = "#d79921" },
+ { name = "vite.config.js", text = "", fg = "#d79921" },
+ { name = "vite.config.mjs", text = "", fg = "#d79921" },
+ { name = "vite.config.mts", text = "", fg = "#d79921" },
+ { name = "vite.config.ts", text = "", fg = "#d79921" },
+ { name = "vitest.config.cjs", text = "", fg = "#d79921" },
+ { name = "vitest.config.cts", text = "", fg = "#d79921" },
+ { name = "vitest.config.js", text = "", fg = "#d79921" },
+ { name = "vitest.config.mjs", text = "", fg = "#d79921" },
+ { name = "vitest.config.mts", text = "", fg = "#d79921" },
+ { name = "vitest.config.ts", text = "", fg = "#d79921" },
+ { name = "vlcrc", text = "", fg = "#d79921" },
+ { name = "webpack", text = "", fg = "#83a598" },
+ { name = "weston.ini", text = "", fg = "#d79921" },
+ { name = "workspace", text = "", fg = "#98971a" },
+ { name = "wrangler.jsonc", text = "", fg = "#d79921" },
+ { name = "wrangler.toml", text = "", fg = "#d79921" },
+ { name = "xdph.conf", text = "", fg = "#8ec07c" },
+ { name = "xmobarrc", text = "", fg = "#fb4934" },
+ { name = "xmobarrc.hs", text = "", fg = "#fb4934" },
+ { name = "xmonad.hs", text = "", fg = "#fb4934" },
+ { name = "xorg.conf", text = "", fg = "#cc241d" },
+ { name = "xsettingsd.conf", text = "", fg = "#cc241d" },
+ ]
+ exts = [
+ { name = "3gp", text = "", fg = "#d79921" },
+ { name = "3mf", text = "", fg = "#d3869b" },
+ { name = "7z", text = "", fg = "#d79921" },
+ { name = "a", text = "", fg = "#a89984" },
+ { name = "aac", text = "", fg = "#83a598" },
+ { name = "ada", text = "", fg = "#458588" },
+ { name = "adb", text = "", fg = "#458588" },
+ { name = "ads", text = "", fg = "#d3869b" },
+ { name = "ai", text = "", fg = "#fabd2f" },
+ { name = "aif", text = "", fg = "#83a598" },
+ { name = "aiff", text = "", fg = "#83a598" },
+ { name = "android", text = "", fg = "#b8bb26" },
+ { name = "ape", text = "", fg = "#83a598" },
+ { name = "apk", text = "", fg = "#b8bb26" },
+ { name = "apl", text = "", fg = "#b8bb26" },
+ { name = "app", text = "", fg = "#cc241d" },
+ { name = "applescript", text = "", fg = "#928374" },
+ { name = "asc", text = "", fg = "#928374" },
+ { name = "asm", text = "", fg = "#83a598" },
+ { name = "ass", text = "", fg = "#d79921" },
+ { name = "astro", text = "", fg = "#b16286" },
+ { name = "avif", text = "", fg = "#d3869b" },
+ { name = "awk", text = "", fg = "#928374" },
+ { name = "azcli", text = "", fg = "#83a598" },
+ { name = "bak", text = "", fg = "#928374" },
+ { name = "bash", text = "", fg = "#98971a" },
+ { name = "bat", text = "", fg = "#b8bb26" },
+ { name = "bazel", text = "", fg = "#98971a" },
+ { name = "bib", text = "", fg = "#fabd2f" },
+ { name = "bicep", text = "", fg = "#83a598" },
+ { name = "bicepparam", text = "", fg = "#d3869b" },
+ { name = "bin", text = "", fg = "#cc241d" },
+ { name = "blade.php", text = "", fg = "#fb4934" },
+ { name = "blend", text = "", fg = "#d79921" },
+ { name = "blp", text = "", fg = "#458588" },
+ { name = "bmp", text = "", fg = "#d3869b" },
+ { name = "bqn", text = "", fg = "#b8bb26" },
+ { name = "brep", text = "", fg = "#d79921" },
+ { name = "bz", text = "", fg = "#d79921" },
+ { name = "bz2", text = "", fg = "#d79921" },
+ { name = "bz3", text = "", fg = "#d79921" },
+ { name = "bzl", text = "", fg = "#98971a" },
+ { name = "c", text = "", fg = "#458588" },
+ { name = "c++", text = "", fg = "#fb4934" },
+ { name = "cache", text = "", fg = "#8ec07c" },
+ { name = "cast", text = "", fg = "#d79921" },
+ { name = "cbl", text = "", fg = "#458588" },
+ { name = "cc", text = "", fg = "#fb4934" },
+ { name = "ccm", text = "", fg = "#fb4934" },
+ { name = "cfc", text = "", fg = "#8ec07c" },
+ { name = "cfg", text = "", fg = "#928374" },
+ { name = "cfm", text = "", fg = "#8ec07c" },
+ { name = "cjs", text = "", fg = "#fabd2f" },
+ { name = "clj", text = "", fg = "#98971a" },
+ { name = "cljc", text = "", fg = "#98971a" },
+ { name = "cljd", text = "", fg = "#83a598" },
+ { name = "cljs", text = "", fg = "#83a598" },
+ { name = "cmake", text = "", fg = "#a89984" },
+ { name = "cob", text = "", fg = "#458588" },
+ { name = "cobol", text = "", fg = "#458588" },
+ { name = "coffee", text = "", fg = "#fabd2f" },
+ { name = "conda", text = "", fg = "#b8bb26" },
+ { name = "conf", text = "", fg = "#928374" },
+ { name = "config.ru", text = "", fg = "#cc241d" },
+ { name = "cow", text = "", fg = "#d79921" },
+ { name = "cp", text = "", fg = "#83a598" },
+ { name = "cpp", text = "", fg = "#83a598" },
+ { name = "cppm", text = "", fg = "#83a598" },
+ { name = "cpy", text = "", fg = "#458588" },
+ { name = "cr", text = "", fg = "#a89984" },
+ { name = "crdownload", text = "", fg = "#8ec07c" },
+ { name = "cs", text = "", fg = "#d79921" },
+ { name = "csh", text = "", fg = "#928374" },
+ { name = "cshtml", text = "", fg = "#b16286" },
+ { name = "cson", text = "", fg = "#fabd2f" },
+ { name = "csproj", text = "", fg = "#b16286" },
+ { name = "css", text = "", fg = "#b16286" },
+ { name = "csv", text = "", fg = "#98971a" },
+ { name = "cts", text = "", fg = "#83a598" },
+ { name = "cu", text = "", fg = "#98971a" },
+ { name = "cue", text = "", fg = "#d3869b" },
+ { name = "cuh", text = "", fg = "#d3869b" },
+ { name = "cxx", text = "", fg = "#83a598" },
+ { name = "cxxm", text = "", fg = "#83a598" },
+ { name = "d", text = "", fg = "#cc241d" },
+ { name = "d.ts", text = "", fg = "#d79921" },
+ { name = "dart", text = "", fg = "#458588" },
+ { name = "db", text = "", fg = "#8ec07c" },
+ { name = "dconf", text = "", fg = "#8ec07c" },
+ { name = "desktop", text = "", fg = "#b16286" },
+ { name = "diff", text = "", fg = "#928374" },
+ { name = "dll", text = "", fg = "#cc241d" },
+ { name = "doc", text = "", fg = "#458588" },
+ { name = "Dockerfile", text = "", fg = "#458588" },
+ { name = "dockerignore", text = "", fg = "#458588" },
+ { name = "docx", text = "", fg = "#458588" },
+ { name = "dot", text = "", fg = "#458588" },
+ { name = "download", text = "", fg = "#8ec07c" },
+ { name = "drl", text = "", fg = "#cc241d" },
+ { name = "dropbox", text = "", fg = "#458588" },
+ { name = "dump", text = "", fg = "#8ec07c" },
+ { name = "dwg", text = "", fg = "#d79921" },
+ { name = "dxf", text = "", fg = "#d79921" },
+ { name = "ebook", text = "", fg = "#d79921" },
+ { name = "ebuild", text = "", fg = "#b16286" },
+ { name = "edn", text = "", fg = "#83a598" },
+ { name = "eex", text = "", fg = "#d3869b" },
+ { name = "ejs", text = "", fg = "#fabd2f" },
+ { name = "el", text = "", fg = "#b16286" },
+ { name = "elc", text = "", fg = "#b16286" },
+ { name = "elf", text = "", fg = "#cc241d" },
+ { name = "elm", text = "", fg = "#83a598" },
+ { name = "eln", text = "", fg = "#b16286" },
+ { name = "env", text = "", fg = "#d79921" },
+ { name = "eot", text = "", fg = "#a89984" },
+ { name = "epp", text = "", fg = "#d79921" },
+ { name = "epub", text = "", fg = "#d79921" },
+ { name = "erb", text = "", fg = "#cc241d" },
+ { name = "erl", text = "", fg = "#b16286" },
+ { name = "ex", text = "", fg = "#d3869b" },
+ { name = "exe", text = "", fg = "#cc241d" },
+ { name = "exs", text = "", fg = "#d3869b" },
+ { name = "f#", text = "", fg = "#83a598" },
+ { name = "f3d", text = "", fg = "#d79921" },
+ { name = "f90", text = "", fg = "#b16286" },
+ { name = "fbx", text = "", fg = "#d3869b" },
+ { name = "fcbak", text = "", fg = "#cc241d" },
+ { name = "fcmacro", text = "", fg = "#cc241d" },
+ { name = "fcmat", text = "", fg = "#cc241d" },
+ { name = "fcparam", text = "", fg = "#cc241d" },
+ { name = "fcscript", text = "", fg = "#cc241d" },
+ { name = "fcstd", text = "", fg = "#cc241d" },
+ { name = "fcstd1", text = "", fg = "#cc241d" },
+ { name = "fctb", text = "", fg = "#cc241d" },
+ { name = "fctl", text = "", fg = "#cc241d" },
+ { name = "fdmdownload", text = "", fg = "#8ec07c" },
+ { name = "feature", text = "", fg = "#b8bb26" },
+ { name = "fish", text = "", fg = "#928374" },
+ { name = "flac", text = "", fg = "#458588" },
+ { name = "flc", text = "", fg = "#a89984" },
+ { name = "flf", text = "", fg = "#a89984" },
+ { name = "fnl", text = "", fg = "#fabd2f" },
+ { name = "fodg", text = "", fg = "#d79921" },
+ { name = "fodp", text = "", fg = "#d79921" },
+ { name = "fods", text = "", fg = "#b8bb26" },
+ { name = "fodt", text = "", fg = "#458588" },
+ { name = "frag", text = "", fg = "#8ec07c" },
+ { name = "fs", text = "", fg = "#83a598" },
+ { name = "fsi", text = "", fg = "#83a598" },
+ { name = "fsscript", text = "", fg = "#83a598" },
+ { name = "fsx", text = "", fg = "#83a598" },
+ { name = "gcode", text = "", fg = "#83a598" },
+ { name = "gd", text = "", fg = "#928374" },
+ { name = "gemspec", text = "", fg = "#cc241d" },
+ { name = "geom", text = "", fg = "#8ec07c" },
+ { name = "gif", text = "", fg = "#d3869b" },
+ { name = "git", text = "", fg = "#cc241d" },
+ { name = "glb", text = "", fg = "#d79921" },
+ { name = "gleam", text = "", fg = "#d3869b" },
+ { name = "glsl", text = "", fg = "#8ec07c" },
+ { name = "gnumakefile", text = "", fg = "#928374" },
+ { name = "go", text = "", fg = "#8ec07c" },
+ { name = "godot", text = "", fg = "#928374" },
+ { name = "gpr", text = "", fg = "#928374" },
+ { name = "gql", text = "", fg = "#d3869b" },
+ { name = "gradle", text = "", fg = "#458588" },
+ { name = "graphql", text = "", fg = "#d3869b" },
+ { name = "gresource", text = "", fg = "#8ec07c" },
+ { name = "gv", text = "", fg = "#458588" },
+ { name = "gz", text = "", fg = "#d79921" },
+ { name = "h", text = "", fg = "#d3869b" },
+ { name = "haml", text = "", fg = "#a89984" },
+ { name = "hbs", text = "", fg = "#cc241d" },
+ { name = "heex", text = "", fg = "#d3869b" },
+ { name = "hex", text = "", fg = "#458588" },
+ { name = "hh", text = "", fg = "#d3869b" },
+ { name = "hpp", text = "", fg = "#d3869b" },
+ { name = "hrl", text = "", fg = "#b16286" },
+ { name = "hs", text = "", fg = "#d3869b" },
+ { name = "htm", text = "", fg = "#cc241d" },
+ { name = "html", text = "", fg = "#cc241d" },
+ { name = "http", text = "", fg = "#83a598" },
+ { name = "huff", text = "", fg = "#b16286" },
+ { name = "hurl", text = "", fg = "#d3869b" },
+ { name = "hx", text = "", fg = "#d79921" },
+ { name = "hxx", text = "", fg = "#d3869b" },
+ { name = "ical", text = "", fg = "#458588" },
+ { name = "icalendar", text = "", fg = "#458588" },
+ { name = "ico", text = "", fg = "#fabd2f" },
+ { name = "ics", text = "", fg = "#458588" },
+ { name = "ifb", text = "", fg = "#458588" },
+ { name = "ifc", text = "", fg = "#d79921" },
+ { name = "ige", text = "", fg = "#d79921" },
+ { name = "iges", text = "", fg = "#d79921" },
+ { name = "igs", text = "", fg = "#d79921" },
+ { name = "image", text = "", fg = "#fb4934" },
+ { name = "img", text = "", fg = "#fb4934" },
+ { name = "import", text = "", fg = "#a89984" },
+ { name = "info", text = "", fg = "#fabd2f" },
+ { name = "ini", text = "", fg = "#928374" },
+ { name = "ino", text = "", fg = "#689d6a" },
+ { name = "ipynb", text = "", fg = "#d79921" },
+ { name = "iso", text = "", fg = "#fb4934" },
+ { name = "ixx", text = "", fg = "#83a598" },
+ { name = "jar", text = "", fg = "#d79921" },
+ { name = "java", text = "", fg = "#fb4934" },
+ { name = "jl", text = "", fg = "#d3869b" },
+ { name = "jpeg", text = "", fg = "#d3869b" },
+ { name = "jpg", text = "", fg = "#d3869b" },
+ { name = "js", text = "", fg = "#fabd2f" },
+ { name = "json", text = "", fg = "#fabd2f" },
+ { name = "json5", text = "", fg = "#fabd2f" },
+ { name = "jsonc", text = "", fg = "#fabd2f" },
+ { name = "jsx", text = "", fg = "#8ec07c" },
+ { name = "jwmrc", text = "", fg = "#83a598" },
+ { name = "jxl", text = "", fg = "#d3869b" },
+ { name = "kbx", text = "", fg = "#928374" },
+ { name = "kdb", text = "", fg = "#b8bb26" },
+ { name = "kdbx", text = "", fg = "#b8bb26" },
+ { name = "kdenlive", text = "", fg = "#689d6a" },
+ { name = "kdenlivetitle", text = "", fg = "#689d6a" },
+ { name = "kicad_dru", text = "", fg = "#8ec07c" },
+ { name = "kicad_mod", text = "", fg = "#8ec07c" },
+ { name = "kicad_pcb", text = "", fg = "#8ec07c" },
+ { name = "kicad_prl", text = "", fg = "#8ec07c" },
+ { name = "kicad_pro", text = "", fg = "#8ec07c" },
+ { name = "kicad_sch", text = "", fg = "#8ec07c" },
+ { name = "kicad_sym", text = "", fg = "#8ec07c" },
+ { name = "kicad_wks", text = "", fg = "#8ec07c" },
+ { name = "ko", text = "", fg = "#a89984" },
+ { name = "kpp", text = "", fg = "#d3869b" },
+ { name = "kra", text = "", fg = "#d3869b" },
+ { name = "krz", text = "", fg = "#d3869b" },
+ { name = "ksh", text = "", fg = "#928374" },
+ { name = "kt", text = "", fg = "#458588" },
+ { name = "kts", text = "", fg = "#458588" },
+ { name = "lck", text = "", fg = "#a89984" },
+ { name = "leex", text = "", fg = "#d3869b" },
+ { name = "less", text = "", fg = "#b16286" },
+ { name = "lff", text = "", fg = "#a89984" },
+ { name = "lhs", text = "", fg = "#d3869b" },
+ { name = "lib", text = "", fg = "#cc241d" },
+ { name = "license", text = "", fg = "#fabd2f" },
+ { name = "liquid", text = "", fg = "#d79921" },
+ { name = "lock", text = "", fg = "#a89984" },
+ { name = "log", text = "", fg = "#a89984" },
+ { name = "lrc", text = "", fg = "#d79921" },
+ { name = "lua", text = "", fg = "#83a598" },
+ { name = "luac", text = "", fg = "#83a598" },
+ { name = "luau", text = "", fg = "#458588" },
+ { name = "m", text = "", fg = "#458588" },
+ { name = "m3u", text = "", fg = "#d3869b" },
+ { name = "m3u8", text = "", fg = "#d3869b" },
+ { name = "m4a", text = "", fg = "#83a598" },
+ { name = "m4v", text = "", fg = "#d79921" },
+ { name = "magnet", text = "", fg = "#cc241d" },
+ { name = "makefile", text = "", fg = "#928374" },
+ { name = "markdown", text = "", fg = "#a89984" },
+ { name = "material", text = "", fg = "#b16286" },
+ { name = "md", text = "", fg = "#a89984" },
+ { name = "md5", text = "", fg = "#d3869b" },
+ { name = "mdx", text = "", fg = "#83a598" },
+ { name = "mint", text = "", fg = "#98971a" },
+ { name = "mjs", text = "", fg = "#fabd2f" },
+ { name = "mk", text = "", fg = "#928374" },
+ { name = "mkv", text = "", fg = "#d79921" },
+ { name = "ml", text = "", fg = "#d79921" },
+ { name = "mli", text = "", fg = "#d79921" },
+ { name = "mm", text = "", fg = "#83a598" },
+ { name = "mo", text = "", fg = "#b16286" },
+ { name = "mobi", text = "", fg = "#d79921" },
+ { name = "mojo", text = "", fg = "#cc241d" },
+ { name = "mov", text = "", fg = "#d79921" },
+ { name = "mp3", text = "", fg = "#83a598" },
+ { name = "mp4", text = "", fg = "#d79921" },
+ { name = "mpp", text = "", fg = "#83a598" },
+ { name = "msf", text = "", fg = "#83a598" },
+ { name = "mts", text = "", fg = "#83a598" },
+ { name = "mustache", text = "", fg = "#d79921" },
+ { name = "nfo", text = "", fg = "#fabd2f" },
+ { name = "nim", text = "", fg = "#d79921" },
+ { name = "nix", text = "", fg = "#689d6a" },
+ { name = "norg", text = "", fg = "#83a598" },
+ { name = "nswag", text = "", fg = "#98971a" },
+ { name = "nu", text = "", fg = "#689d6a" },
+ { name = "o", text = "", fg = "#cc241d" },
+ { name = "obj", text = "", fg = "#d3869b" },
+ { name = "odf", text = "", fg = "#fb4934" },
+ { name = "odg", text = "", fg = "#d79921" },
+ { name = "odin", text = "", fg = "#83a598" },
+ { name = "odp", text = "", fg = "#d79921" },
+ { name = "ods", text = "", fg = "#b8bb26" },
+ { name = "odt", text = "", fg = "#458588" },
+ { name = "oga", text = "", fg = "#458588" },
+ { name = "ogg", text = "", fg = "#458588" },
+ { name = "ogv", text = "", fg = "#d79921" },
+ { name = "ogx", text = "", fg = "#d79921" },
+ { name = "opus", text = "", fg = "#458588" },
+ { name = "org", text = "", fg = "#689d6a" },
+ { name = "otf", text = "", fg = "#a89984" },
+ { name = "out", text = "", fg = "#cc241d" },
+ { name = "part", text = "", fg = "#8ec07c" },
+ { name = "patch", text = "", fg = "#928374" },
+ { name = "pck", text = "", fg = "#928374" },
+ { name = "pcm", text = "", fg = "#458588" },
+ { name = "pdf", text = "", fg = "#cc241d" },
+ { name = "php", text = "", fg = "#d3869b" },
+ { name = "pl", text = "", fg = "#83a598" },
+ { name = "pls", text = "", fg = "#d3869b" },
+ { name = "ply", text = "", fg = "#d3869b" },
+ { name = "pm", text = "", fg = "#83a598" },
+ { name = "png", text = "", fg = "#d3869b" },
+ { name = "po", text = "", fg = "#83a598" },
+ { name = "pot", text = "", fg = "#83a598" },
+ { name = "pp", text = "", fg = "#d79921" },
+ { name = "ppt", text = "", fg = "#cc241d" },
+ { name = "pptx", text = "", fg = "#cc241d" },
+ { name = "prisma", text = "", fg = "#458588" },
+ { name = "pro", text = "", fg = "#fabd2f" },
+ { name = "ps1", text = "", fg = "#458588" },
+ { name = "psb", text = "", fg = "#83a598" },
+ { name = "psd", text = "", fg = "#83a598" },
+ { name = "psd1", text = "", fg = "#458588" },
+ { name = "psm1", text = "", fg = "#458588" },
+ { name = "pub", text = "", fg = "#fabd2f" },
+ { name = "pxd", text = "", fg = "#83a598" },
+ { name = "pxi", text = "", fg = "#83a598" },
+ { name = "py", text = "", fg = "#d79921" },
+ { name = "pyc", text = "", fg = "#fabd2f" },
+ { name = "pyd", text = "", fg = "#fabd2f" },
+ { name = "pyi", text = "", fg = "#d79921" },
+ { name = "pyo", text = "", fg = "#fabd2f" },
+ { name = "pyw", text = "", fg = "#83a598" },
+ { name = "pyx", text = "", fg = "#83a598" },
+ { name = "qm", text = "", fg = "#83a598" },
+ { name = "qml", text = "", fg = "#98971a" },
+ { name = "qrc", text = "", fg = "#98971a" },
+ { name = "qss", text = "", fg = "#98971a" },
+ { name = "query", text = "", fg = "#98971a" },
+ { name = "r", text = "", fg = "#458588" },
+ { name = "R", text = "", fg = "#458588" },
+ { name = "rake", text = "", fg = "#cc241d" },
+ { name = "rar", text = "", fg = "#d79921" },
+ { name = "rasi", text = "", fg = "#fabd2f" },
+ { name = "razor", text = "", fg = "#b16286" },
+ { name = "rb", text = "", fg = "#cc241d" },
+ { name = "res", text = "", fg = "#fb4934" },
+ { name = "resi", text = "", fg = "#fb4934" },
+ { name = "rlib", text = "", fg = "#fb4934" },
+ { name = "rmd", text = "", fg = "#83a598" },
+ { name = "rproj", text = "", fg = "#98971a" },
+ { name = "rs", text = "", fg = "#fb4934" },
+ { name = "rss", text = "", fg = "#d79921" },
+ { name = "s", text = "", fg = "#458588" },
+ { name = "sass", text = "", fg = "#fb4934" },
+ { name = "sbt", text = "", fg = "#fb4934" },
+ { name = "sc", text = "", fg = "#fb4934" },
+ { name = "scad", text = "", fg = "#d79921" },
+ { name = "scala", text = "", fg = "#fb4934" },
+ { name = "scm", text = "", fg = "#a89984" },
+ { name = "scss", text = "", fg = "#fb4934" },
+ { name = "sh", text = "", fg = "#928374" },
+ { name = "sha1", text = "", fg = "#d3869b" },
+ { name = "sha224", text = "", fg = "#d3869b" },
+ { name = "sha256", text = "", fg = "#d3869b" },
+ { name = "sha384", text = "", fg = "#d3869b" },
+ { name = "sha512", text = "", fg = "#d3869b" },
+ { name = "sig", text = "", fg = "#d79921" },
+ { name = "signature", text = "", fg = "#d79921" },
+ { name = "skp", text = "", fg = "#d79921" },
+ { name = "sldasm", text = "", fg = "#d79921" },
+ { name = "sldprt", text = "", fg = "#d79921" },
+ { name = "slim", text = "", fg = "#cc241d" },
+ { name = "sln", text = "", fg = "#b16286" },
+ { name = "slnx", text = "", fg = "#b16286" },
+ { name = "slvs", text = "", fg = "#d79921" },
+ { name = "sml", text = "", fg = "#d79921" },
+ { name = "so", text = "", fg = "#a89984" },
+ { name = "sol", text = "", fg = "#83a598" },
+ { name = "spec.js", text = "", fg = "#fabd2f" },
+ { name = "spec.jsx", text = "", fg = "#8ec07c" },
+ { name = "spec.ts", text = "", fg = "#83a598" },
+ { name = "spec.tsx", text = "", fg = "#458588" },
+ { name = "spx", text = "", fg = "#458588" },
+ { name = "sql", text = "", fg = "#8ec07c" },
+ { name = "sqlite", text = "", fg = "#8ec07c" },
+ { name = "sqlite3", text = "", fg = "#8ec07c" },
+ { name = "srt", text = "", fg = "#d79921" },
+ { name = "ssa", text = "", fg = "#d79921" },
+ { name = "ste", text = "", fg = "#d79921" },
+ { name = "step", text = "", fg = "#d79921" },
+ { name = "stl", text = "", fg = "#d3869b" },
+ { name = "stories.js", text = "", fg = "#fb4934" },
+ { name = "stories.jsx", text = "", fg = "#fb4934" },
+ { name = "stories.mjs", text = "", fg = "#fb4934" },
+ { name = "stories.svelte", text = "", fg = "#fb4934" },
+ { name = "stories.ts", text = "", fg = "#fb4934" },
+ { name = "stories.tsx", text = "", fg = "#fb4934" },
+ { name = "stories.vue", text = "", fg = "#fb4934" },
+ { name = "stp", text = "", fg = "#d79921" },
+ { name = "strings", text = "", fg = "#83a598" },
+ { name = "styl", text = "", fg = "#98971a" },
+ { name = "sub", text = "", fg = "#d79921" },
+ { name = "sublime", text = "", fg = "#d79921" },
+ { name = "suo", text = "", fg = "#b16286" },
+ { name = "sv", text = "", fg = "#98971a" },
+ { name = "svelte", text = "", fg = "#cc241d" },
+ { name = "svg", text = "", fg = "#d79921" },
+ { name = "svgz", text = "", fg = "#d79921" },
+ { name = "svh", text = "", fg = "#98971a" },
+ { name = "swift", text = "", fg = "#d79921" },
+ { name = "t", text = "", fg = "#83a598" },
+ { name = "tbc", text = "", fg = "#458588" },
+ { name = "tcl", text = "", fg = "#458588" },
+ { name = "templ", text = "", fg = "#d79921" },
+ { name = "terminal", text = "", fg = "#b8bb26" },
+ { name = "test.js", text = "", fg = "#fabd2f" },
+ { name = "test.jsx", text = "", fg = "#8ec07c" },
+ { name = "test.ts", text = "", fg = "#83a598" },
+ { name = "test.tsx", text = "", fg = "#458588" },
+ { name = "tex", text = "", fg = "#98971a" },
+ { name = "tf", text = "", fg = "#b16286" },
+ { name = "tfvars", text = "", fg = "#b16286" },
+ { name = "tgz", text = "", fg = "#d79921" },
+ { name = "tmpl", text = "", fg = "#d79921" },
+ { name = "tmux", text = "", fg = "#b8bb26" },
+ { name = "toml", text = "", fg = "#cc241d" },
+ { name = "torrent", text = "", fg = "#8ec07c" },
+ { name = "tres", text = "", fg = "#928374" },
+ { name = "ts", text = "", fg = "#83a598" },
+ { name = "tscn", text = "", fg = "#928374" },
+ { name = "tsconfig", text = "", fg = "#d79921" },
+ { name = "tsx", text = "", fg = "#458588" },
+ { name = "ttf", text = "", fg = "#a89984" },
+ { name = "twig", text = "", fg = "#98971a" },
+ { name = "txt", text = "", fg = "#98971a" },
+ { name = "txz", text = "", fg = "#d79921" },
+ { name = "typ", text = "", fg = "#8ec07c" },
+ { name = "typoscript", text = "", fg = "#d79921" },
+ { name = "ui", text = "", fg = "#458588" },
+ { name = "v", text = "", fg = "#98971a" },
+ { name = "vala", text = "", fg = "#b16286" },
+ { name = "vert", text = "", fg = "#8ec07c" },
+ { name = "vh", text = "", fg = "#98971a" },
+ { name = "vhd", text = "", fg = "#98971a" },
+ { name = "vhdl", text = "", fg = "#98971a" },
+ { name = "vi", text = "", fg = "#d79921" },
+ { name = "vim", text = "", fg = "#98971a" },
+ { name = "vsh", text = "", fg = "#8ec07c" },
+ { name = "vsix", text = "", fg = "#b16286" },
+ { name = "vue", text = "", fg = "#98971a" },
+ { name = "wasm", text = "", fg = "#458588" },
+ { name = "wav", text = "", fg = "#83a598" },
+ { name = "webm", text = "", fg = "#d79921" },
+ { name = "webmanifest", text = "", fg = "#fabd2f" },
+ { name = "webp", text = "", fg = "#d3869b" },
+ { name = "webpack", text = "", fg = "#83a598" },
+ { name = "wma", text = "", fg = "#83a598" },
+ { name = "wmv", text = "", fg = "#d79921" },
+ { name = "woff", text = "", fg = "#a89984" },
+ { name = "woff2", text = "", fg = "#a89984" },
+ { name = "wrl", text = "", fg = "#d3869b" },
+ { name = "wrz", text = "", fg = "#d3869b" },
+ { name = "wv", text = "", fg = "#83a598" },
+ { name = "wvc", text = "", fg = "#83a598" },
+ { name = "x", text = "", fg = "#458588" },
+ { name = "xaml", text = "", fg = "#b16286" },
+ { name = "xcf", text = "", fg = "#928374" },
+ { name = "xcplayground", text = "", fg = "#d79921" },
+ { name = "xcstrings", text = "", fg = "#83a598" },
+ { name = "xls", text = "", fg = "#98971a" },
+ { name = "xlsx", text = "", fg = "#98971a" },
+ { name = "xm", text = "", fg = "#83a598" },
+ { name = "xml", text = "", fg = "#d79921" },
+ { name = "xpi", text = "", fg = "#cc241d" },
+ { name = "xul", text = "", fg = "#d79921" },
+ { name = "xz", text = "", fg = "#d79921" },
+ { name = "yaml", text = "", fg = "#928374" },
+ { name = "yml", text = "", fg = "#928374" },
+ { name = "zig", text = "", fg = "#d79921" },
+ { name = "zip", text = "", fg = "#d79921" },
+ { name = "zsh", text = "", fg = "#98971a" },
+ { name = "zst", text = "", fg = "#d79921" },
+ { name = "🔥", text = "", fg = "#cc241d" },
]
diff --git a/.config/zsh/.zshrc b/.config/zsh/.zshrc
@@ -1,7 +1,7 @@
# Enable colors and change prompt:
autoload -U colors && colors # Load colors
-clp(){
+clp() {
yes | paru -Scc
}
@@ -19,14 +19,14 @@ precmd_functions+=( precmd_vcs_info )
zstyle ':vcs_info:git*+set-message:*' hooks git-untracked
#
+vi-git-untracked(){
- if [[ $(git rev-parse --is-inside-work-tree 2> /dev/null) == 'true' ]] && \
- git status --porcelain | grep '??' &> /dev/null ; then
- # This will show the marker if there are any untracked files in repo.
- # If instead you want to show the marker only if there are untracked
- # files in $PWD, use:
- #[[ -n $(git ls-files --others --exclude-standard) ]] ; then
- hook_com[staged]+='!' # signify new files with a bang
- fi
+ if [[ $(git rev-parse --is-inside-work-tree 2> /dev/null) == 'true' ]] && \
+ git status --porcelain | grep '??' &> /dev/null ; then
+ # This will show the marker if there are any untracked files in repo.
+ # If instead you want to show the marker only if there are untracked
+ # files in $PWD, use:
+ #[[ -n $(git ls-files --others --exclude-standard) ]] ; then
+ hook_com[staged]+='!' # signify new files with a bang
+ fi
}
zstyle ':vcs_info:*' check-for-changes true
@@ -102,11 +102,8 @@ function y() {
}
bindkey -s '^o' '^uy\n'
-
bindkey -s '^a' '^ubc -lq\n'
-
bindkey -s '^f' '^ucd "$(dirname "$(fzf)")"\n'
-
bindkey '^[[P' delete-char
# Edit line in vim with ctrl-e:
diff --git a/.local/bin/bookmarks b/.local/bin/bookmarks
@@ -4,7 +4,7 @@ URLQUERY_FILE="${HOME}/.local/share/urlquery"
ACTION_MENU="@@"
CLIPBOARD() {
- wl-paste
+ wl-paste
}
DMENU() {
@@ -12,113 +12,114 @@ DMENU() {
}
error_notify() {
- notify-send "${1}"
- exit "1"
+ notify-send "${1}"
+ exit "1"
}
ensure_file_exists() {
- [ -f "${URLQUERY_FILE}" ] || {
- notify-send "${URLQUERY_FILE} does not exist. Creating it now."
- printf "SearXNG=https://searx.tiekoetter.com/search?q=\n" > "${URLQUERY_FILE}"
- }
+ [ -f "${URLQUERY_FILE}" ] || {
+ notify-send "${URLQUERY_FILE} does not exist. Creating it now."
+ printf "SearXNG=https://searx.tiekoetter.com/search?q=\n" >"${URLQUERY_FILE}"
+ }
}
get_selection() {
- cut -d= -f1 "${URLQUERY_FILE}" | DMENU "${LINE_COUNT}" "Bookmarks"
+ cut -d= -f1 "${URLQUERY_FILE}" | DMENU "${LINE_COUNT}" "Bookmarks"
}
update_file() {
- pattern="${1}"
- replacement="${2}"
+ pattern="${1}"
+ replacement="${2}"
- sed "/${pattern}/c\\${replacement}" "${URLQUERY_FILE}" > "${URLQUERY_FILE}.tmp" &&
- mv "${URLQUERY_FILE}.tmp" "${URLQUERY_FILE}" ||
- error_notify "Failed to update the file."
+ sed "/${pattern}/c\\${replacement}" "${URLQUERY_FILE}" >"${URLQUERY_FILE}.tmp" &&
+ mv "${URLQUERY_FILE}.tmp" "${URLQUERY_FILE}" ||
+ error_notify "Failed to update the file."
}
is_valid_url() {
- printf "%s\n" "${1}" | rg -q "^https?://[^[:space:]/?#][^[:space:]]+$"
+ printf "%s\n" "${1}" | rg -q "^https?://[^[:space:]/?#][^[:space:]]+$"
}
add_bookmark() {
- URL="$(CLIPBOARD)"
+ URL="$(CLIPBOARD)"
- is_valid_url "${URL}" || error_notify "The clipboard content is not a valid URL."
+ is_valid_url "${URL}" || error_notify "The clipboard content is not a valid URL."
- rg -q "=${URL}$" "${URLQUERY_FILE}" &&
- notify-send "The URL is already in the list." && return
+ rg -q "=${URL}$" "${URLQUERY_FILE}" &&
+ notify-send "The URL is already in the list." && return
- NAME="$(printf "" | DMENU "0" "Name")"
+ NAME="$(printf "" | DMENU "0" "Name")"
- [ -n "${NAME}" ] && printf "%s\n" "${NAME}=${URL}" >> "${URLQUERY_FILE}" &&
- notify-send "'${NAME}' is bookmarked."
+ [ -n "${NAME}" ] && printf "%s\n" "${NAME}=${URL}" >>"${URLQUERY_FILE}" &&
+ notify-send "'${NAME}' is bookmarked."
}
delete_bookmark() {
- NAME="$(get_selection)"
+ NAME="$(get_selection)"
- [ -z "${NAME}" ] && error_notify "Failed to delete the bookmark." && return
+ [ -z "${NAME}" ] && error_notify "Failed to delete the bookmark." && return
- sed "/^${NAME}=/d" "${URLQUERY_FILE}" > "${URLQUERY_FILE}.tmp"
- mv "${URLQUERY_FILE}.tmp" "${URLQUERY_FILE}"
+ sed "/^${NAME}=/d" "${URLQUERY_FILE}" >"${URLQUERY_FILE}.tmp"
+ mv "${URLQUERY_FILE}.tmp" "${URLQUERY_FILE}"
- [ -s "${URLQUERY_FILE}" ] && rg -q "\S" "${URLQUERY_FILE}" || rm "${URLQUERY_FILE}"
+ [ -s "${URLQUERY_FILE}" ] && rg -q "\S" "${URLQUERY_FILE}" || rm "${URLQUERY_FILE}"
- notify-send "'${NAME}' is deleted."
+ notify-send "'${NAME}' is deleted."
}
edit_name() {
- OLD_NAME="${1}"
- NEW_NAME="$(printf "" | DMENU "0" "New Name")"
+ OLD_NAME="${1}"
+ NEW_NAME="$(printf "" | DMENU "0" "New Name")"
- [ -z "${NEW_NAME}" ] && return
+ [ -z "${NEW_NAME}" ] && return
- URL="$(rg "^${OLD_NAME}=" "${URLQUERY_FILE}" | cut -d= -f2)"
+ URL="$(rg "^${OLD_NAME}=" "${URLQUERY_FILE}" | cut -d= -f2)"
- update_file "^${OLD_NAME}=" "${NEW_NAME}=${URL}"
+ update_file "^${OLD_NAME}=" "${NEW_NAME}=${URL}"
}
edit_url() {
- NAME="${1}"
- NEW_URL="$(echo "" | DMENU "0" "New URL")"
+ NAME="${1}"
+ NEW_URL="$(echo "" | DMENU "0" "New URL")"
- [ -z "${NEW_URL}" ] && return
+ [ -z "${NEW_URL}" ] && return
- update_file "^${NAME}=.*" "${NAME}=${NEW_URL}"
+ update_file "^${NAME}=.*" "${NAME}=${NEW_URL}"
}
edit_bookmark() {
- NAME="$(get_selection)"
+ NAME="$(get_selection)"
- [ -z "${NAME}" ] && error_notify "Failed to edit the bookmark." && return
+ [ -z "${NAME}" ] && error_notify "Failed to edit the bookmark." && return
- FIELD="$(printf "Name\nURL\n" | DMENU "2" "Edit")"
+ FIELD="$(printf "Name\nURL\n" | DMENU "2" "Edit")"
- case "${FIELD}" in
- "Name")edit_name "${NAME}";;
- "URL")edit_url "${NAME}"
- esac
+ case "${FIELD}" in
+ "Name") edit_name "${NAME}" ;;
+ "URL") edit_url "${NAME}" ;;
+ esac
- notify-send "'${NAME}' is updated."
+ notify-send "'${NAME}' is updated."
}
open_bookmark() {
- URL="$(rg "^${SELECTION}=" "${URLQUERY_FILE}" | cut -d= -f2-)"
+ URL="$(rg "^${SELECTION}=" "${URLQUERY_FILE}" | cut -d= -f2-)"
- [ -z "${URL}" ] && notify-send "Bookmark not found." && exit "1"
+ [ -z "${URL}" ] && notify-send "Bookmark not found." && exit "1"
- case "${URL}" in
- *"search"* | *"wiki"* | *"packages"* | *"chatgpt"*) QUERY="$(echo "" | DMENU "0" "Search")"
- URL="${URL}${QUERY}"
- ;;
- esac
+ case "${URL}" in
+ *"search"* | *"wiki"* | *"packages"* | *"chatgpt"*)
+ QUERY="$(echo "" | DMENU "0" "Search")"
+ URL="${URL}${QUERY}"
+ ;;
+ esac
- "${BROWSER}" "${URL}" || notify-send "Failed to open the URL."
+ "${BROWSER}" "${URL}" || notify-send "Failed to open the URL."
}
ensure_file_exists
-LINE_COUNT="$(wc -l < "${URLQUERY_FILE}")"
+LINE_COUNT="$(wc -l <"${URLQUERY_FILE}")"
[ "${LINE_COUNT}" -ge "15" ] && LINE_COUNT="15"
@@ -127,16 +128,16 @@ SELECTION="$(get_selection)"
[ -z "${SELECTION}" ] && exit
case "${SELECTION}" in
- "${ACTION_MENU}")
- ACTION="$(printf "Add\nDelete\nEdit\n" | DMENU "3" "Action")"
-
- case "${ACTION}" in
- "Add") add_bookmark ;;
- "Delete") delete_bookmark ;;
- "Edit") edit_bookmark ;;
- esac
- ;;
- *)
- open_bookmark
- ;;
+"${ACTION_MENU}")
+ ACTION="$(printf "Add\nDelete\nEdit\n" | DMENU "3" "Action")"
+
+ case "${ACTION}" in
+ "Add") add_bookmark ;;
+ "Delete") delete_bookmark ;;
+ "Edit") edit_bookmark ;;
+ esac
+ ;;
+*)
+ open_bookmark
+ ;;
esac
diff --git a/.local/bin/booksplit b/.local/bin/booksplit
@@ -4,9 +4,12 @@
[ ! -f "$2" ] && printf "The first file should be the audio, the second should be the timecodes.\\n" && exit
-echo "Enter the album/book title:"; read -r booktitle
-echo "Enter the artist/author:"; read -r author
-echo "Enter the publication year:"; read -r year
+echo "Enter the album/book title:"
+read -r booktitle
+echo "Enter the artist/author:"
+read -r author
+echo "Enter the publication year:"
+read -r year
inputaudio="$1"
ext="${1##*.}"
@@ -15,26 +18,25 @@ ext="${1##*.}"
escbook="$(echo "$booktitle" | iconv -c -f UTF-8 -t ASCII//TRANSLIT | tr -d '[:punct:]' | tr '[:upper:]' '[:lower:]' | tr ' ' '-' | sed "s/-\+/-/g;s/\(^-\|-\$\)//g")"
! mkdir -p "$escbook" &&
- echo "Do you have write access in this directory?" &&
- exit 1
+ echo "Do you have write access in this directory?" &&
+ exit 1
# Get the total number of tracks from the number of lines.
-total="$(wc -l < "$2")"
+total="$(wc -l <"$2")"
cmd="ffmpeg -i \"$inputaudio\" -nostdin -y"
-while read -r x;
-do
- end="$(echo "$x" | cut -d' ' -f1)"
- file="$escbook/$(printf "%.2d" "$track")-$esctitle.$ext"
- if [ -n "$start" ]; then
- cmd="$cmd -metadata artist=\"$author\" -metadata title=\"$title\" -metadata album=\"$booktitle\" -metadata year=\"$year\" -metadata track=\"$track\" -metadata total=\"$total\" -ss \"$start\" -to \"$end\" -vn -c:a copy \"$file\" "
- fi
- title="$(echo "$x" | cut -d' ' -f2-)"
- esctitle="$(echo "$title" | iconv -c -f UTF-8 -t ASCII//TRANSLIT | tr -d '[:punct:]' | tr '[:upper:]' '[:lower:]' | tr ' ' '-' | sed "s/-\+/-/g;s/\(^-\|-\$\)//g")"
- track="$((track+1))"
- start="$end"
-done < "$2"
+while read -r x; do
+ end="$(echo "$x" | cut -d' ' -f1)"
+ file="$escbook/$(printf "%.2d" "$track")-$esctitle.$ext"
+ if [ -n "$start" ]; then
+ cmd="$cmd -metadata artist=\"$author\" -metadata title=\"$title\" -metadata album=\"$booktitle\" -metadata year=\"$year\" -metadata track=\"$track\" -metadata total=\"$total\" -ss \"$start\" -to \"$end\" -vn -c:a copy \"$file\" "
+ fi
+ title="$(echo "$x" | cut -d' ' -f2-)"
+ esctitle="$(echo "$title" | iconv -c -f UTF-8 -t ASCII//TRANSLIT | tr -d '[:punct:]' | tr '[:upper:]' '[:lower:]' | tr ' ' '-' | sed "s/-\+/-/g;s/\(^-\|-\$\)//g")"
+ track="$((track + 1))"
+ start="$end"
+done <"$2"
# Last track must be added out of the loop.
file="$escbook/$(printf "%.2d" "$track")-$esctitle.$ext"
diff --git a/.local/bin/chkmd5m b/.local/bin/chkmd5m
@@ -2,12 +2,12 @@
# Compare MD5 hashes of audio streams from multiple files using ffmpeg
if [ "$#" -lt 2 ]; then
- echo "Usage: $0 <file1> <file2> [file3 ...]"
- exit 1
+ echo "Usage: $0 <file1> <file2> [file3 ...]"
+ exit 1
fi
get_md5() {
- ffmpeg -v error -i "$1" -map 0:a:0 -f md5 - 2>/dev/null | cut -d= -f2
+ ffmpeg -v error -i "$1" -map 0:a:0 -f md5 - 2>/dev/null | cut -d= -f2
}
echo "Comparing audio hashes:"
@@ -20,12 +20,12 @@ echo "$first_file : $first_hash"
shift
for file in "$@"; do
- hash=$(get_md5 "$file")
- echo "$file : $hash"
- if [ "$hash" = "$first_hash" ]; then
- echo "✅ Matches $first_file"
- else
- echo "❌ Differs from $first_file"
- fi
- echo
+ hash=$(get_md5 "$file")
+ echo "$file : $hash"
+ if [ "$hash" = "$first_hash" ]; then
+ echo "✅ Matches $first_file"
+ else
+ echo "❌ Differs from $first_file"
+ fi
+ echo
done
diff --git a/.local/bin/chooseprofile b/.local/bin/chooseprofile
@@ -5,8 +5,8 @@ profiles=$(awk -F= '/^\[Profile/ {profile=$1} /Name/ && !/default/ {print $2}' ~
profile=$(echo "$profiles" | mew -p "Select IceCat Profile" -l 10)
if [ -z "$profile" ] || ! echo "$profiles" | rg -q "^$profile$"; then
- echo "Invalid selection or no profile selected. Exiting."
- exit 1
+ echo "Invalid selection or no profile selected. Exiting."
+ exit 1
fi
swaymsg exec "icecat -P $profile"
diff --git a/.local/bin/compiler b/.local/bin/compiler
@@ -14,29 +14,29 @@ base="${file%.*}"
cd "${dir}" || exit "1"
case "${ext}" in
- [0-9]) preconv "${file}" | refer -PS -e | groff -mandoc -T pdf > "${base}.pdf" ;;
- mom|ms) preconv "${file}" | refer -PS -e | groff -T pdf -m"${ext}" > "${base}.pdf" ;;
- c) cc "${file}" -o "${base}" && "${base}" ;;
- cob) cobc -x -o "$base" "$file" && "$base" ;;
- cpp|cc) g++ "${file}" -o "${base}" && "${base}" ;;
- cs) mcs "${file}" && mono "${base}.exe" ;;
- go) go run "${file}" ;;
- h) doas make install ;;
- java) javac -d classes "${file}" && java -cp classes "${base}" ;;
- m) octave "${file}" ;;
- md) [ -x "$(command -v lowdown)" ] && \
- lowdown --parse-no-intraemph "${file}" -Tms | groff -mpdfmark -ms -kept -T pdf > "${base}.pdf" || \
- [ -x "$(command -v groffdown)" ] && \
- groffdown -i "${file}" | groff -T pdf > "${base}.pdf" || \
- pandoc -t ms --highlight-style="kate" -s -o "${base}.pdf" "${file}" ;;
- org) emacs "${file}" --batch -u "${USER}" -f org-latex-export-to-pdf ;;
- py) python "${file}" ;;
- rink) rink -f "${file}" ;;
- [rR]md) Rscript -e "rmarkdown::render('${file}', quiet=TRUE)" ;;
- rs) cargo build && cargo run --quiet ;;
- sass) sassc -a "${file}" "${base}.css" ;;
- scad) openscad -o "${base}.stl" "${file}" ;;
- sent) setsid -f sent "${file}" 2> "/dev/null" ;;
- tex) latexmk ;;
- *) sed -n '/^#!/s/^#!//p; q' "${file}" | xargs -r -I % "${file}" ;;
+[0-9]) preconv "${file}" | refer -PS -e | groff -mandoc -T pdf >"${base}.pdf" ;;
+mom | ms) preconv "${file}" | refer -PS -e | groff -T pdf -m"${ext}" >"${base}.pdf" ;;
+c) cc "${file}" -o "${base}" && "${base}" ;;
+cob) cobc -x -o "$base" "$file" && "$base" ;;
+cpp | cc) g++ "${file}" -o "${base}" && "${base}" ;;
+cs) mcs "${file}" && mono "${base}.exe" ;;
+go) go run "${file}" ;;
+h) doas make install ;;
+java) javac -d classes "${file}" && java -cp classes "${base}" ;;
+m) octave "${file}" ;;
+md) [ -x "$(command -v lowdown)" ] &&
+ lowdown --parse-no-intraemph "${file}" -Tms | groff -mpdfmark -ms -kept -T pdf >"${base}.pdf" ||
+ [ -x "$(command -v groffdown)" ] &&
+ groffdown -i "${file}" | groff -T pdf >"${base}.pdf" ||
+ pandoc -t ms --highlight-style="kate" -s -o "${base}.pdf" "${file}" ;;
+org) emacs "${file}" --batch -u "${USER}" -f org-latex-export-to-pdf ;;
+py) python "${file}" ;;
+rink) rink -f "${file}" ;;
+[rR]md) Rscript -e "rmarkdown::render('${file}', quiet=TRUE)" ;;
+rs) cargo build && cargo run --quiet ;;
+sass) sassc -a "${file}" "${base}.css" ;;
+scad) openscad -o "${base}.stl" "${file}" ;;
+sent) setsid -f sent "${file}" 2>"/dev/null" ;;
+tex) latexmk ;;
+*) sed -n '/^#!/s/^#!//p; q' "${file}" | xargs -r -I % "${file}" ;;
esac
diff --git a/.local/bin/cron/checkup b/.local/bin/cron/checkup
@@ -1,5 +1,4 @@
#!/bin/sh
-
# Syncs repositories and downloads updates, meant to be run as a cronjob.
doas pacman -Syyuw --noconfirm || notify-send "Error downloading updates.
@@ -7,7 +6,6 @@ doas pacman -Syyuw --noconfirm || notify-send "Error downloading updates.
Check your internet connection, if pacman is already running, or run update manually to see errors."
pkill -RTMIN+8 "${STATUSBAR:-i3blocks}"
-if pacman -Qu | rg -v "\[ignored\]"
-then
- notify-send "Repository Sync" "Updates available."
+if pacman -Qu | rg -v "\[ignored\]"; then
+ notify-send "Repository Sync" "Updates available."
fi
diff --git a/.local/bin/cron/crontog b/.local/bin/cron/crontog
@@ -1,6 +1,5 @@
#!/bin/sh
-
# Toggles all cronjobs off/on.
# Stores disabled crontabs in ~/.config/cronsaved until restored.
-([ -f "${XDG_CONFIG_HOME:-$HOME/.config}"/cronsaved ] && crontab - < "${XDG_CONFIG_HOME:-$HOME/.config}"/cronsaved && rm "${XDG_CONFIG_HOME:-$HOME/.config}"/cronsaved && notify-send "🕓 Cronjobs re-enabled.") || ( crontab -l > "${XDG_CONFIG_HOME:-$HOME/.config}"/cronsaved && crontab -r && notify-send "🕓 Cronjobs saved and disabled.")
+([ -f "${XDG_CONFIG_HOME:-$HOME/.config}"/cronsaved ] && crontab - <"${XDG_CONFIG_HOME:-$HOME/.config}"/cronsaved && rm "${XDG_CONFIG_HOME:-$HOME/.config}"/cronsaved && notify-send "🕓 Cronjobs re-enabled.") || (crontab -l >"${XDG_CONFIG_HOME:-$HOME/.config}"/cronsaved && crontab -r && notify-send "🕓 Cronjobs saved and disabled.")
diff --git a/.local/bin/cron/mailup b/.local/bin/cron/mailup
@@ -2,7 +2,7 @@
pgrep -f mailsync && exit
-echo 🔃 > /tmp/mailupdate
+echo 🔃 >/tmp/mailupdate
pkill -RTMIN+12 "${STATUSBAR:-i3blocks}"
/usr/bin/mailsync
rm -f /tmp/mailupdate
diff --git a/.local/bin/cron/newsup b/.local/bin/cron/newsup
@@ -1,5 +1,4 @@
#!/bin/sh
-
# Set as a cron job to check for new RSS entries for newsraft.
# If newsraft is open, sends it an "R" key to refresh.
@@ -8,7 +7,7 @@ export WAYLAND_DISPLAY=wayland-1
pgrep -f newsraft$ && /usr/bin/wlrctl window focus title:newsraft && /usr/bin/wlrctl keyboard type R && exit
-echo "<span color='#7F7F7F'>[updating]</span>" > /tmp/newsupdate
+echo "<span color='#7F7F7F'>[updating]</span>" >/tmp/newsupdate
pkill -RTMIN+6 "${STATUSBAR:-i3blocks}"
/usr/bin/newsraft -e reload-all
rm -f /tmp/newsupdate
diff --git a/.local/bin/define b/.local/bin/define
@@ -19,7 +19,6 @@ def=$(echo "$query" | jq -r '[.[].meanings[] | {pos: .partOfSpeech, def: .defini
# Requires a notification daemon to be installed
notify-send -t 60000 "$word -" "$def"
-
### MORE OPTIONS :)
# Show first definition for each part of speech (thanks @morgengabe1 on youtube)
diff --git a/.local/bin/displayselect b/.local/bin/displayselect
@@ -1,82 +0,0 @@
-#!/bin/sh
-
-# A UI for detecting and selecting all displays. Probes xrandr for connected
-# displays and lets user select one to use. User may also select "manual
-# selection" which opens arandr.
-
-twoscreen() { # If multi-monitor is selected and there are two screens.
-
- mirror=$(printf "no\\nyes" | dmenu -i -p "Mirror displays?")
- # Mirror displays using native resolution of external display and a scaled
- # version for the internal display
- if [ "$mirror" = "yes" ]; then
- external=$(echo "$screens" | dmenu -i -p "Optimize resolution for:")
- internal=$(echo "$screens" | rg -v "$external")
-
- res_external=$(xrandr --query | sed -n "/^$external/,/\+/p" | \
- tail -n 1 | awk '{print $1}')
- res_internal=$(xrandr --query | sed -n "/^$internal/,/\+/p" | \
- tail -n 1 | awk '{print $1}')
-
- res_ext_x=$(echo "$res_external" | sed 's/x.*//')
- res_ext_y=$(echo "$res_external" | sed 's/.*x//')
- res_int_x=$(echo "$res_internal" | sed 's/x.*//')
- res_int_y=$(echo "$res_internal" | sed 's/.*x//')
-
- scale_x=$(echo "$res_ext_x / $res_int_x" | bc -l)
- scale_y=$(echo "$res_ext_y / $res_int_y" | bc -l)
-
- xrandr --output "$external" --auto --scale 1.0x1.0 \
- --output "$internal" --auto --same-as "$external" \
- --scale "$scale_x"x"$scale_y"
- else
-
- primary=$(echo "$screens" | dmenu -i -p "Select primary display:")
- secondary=$(echo "$screens" | rg -v ^"$primary"$)
- direction=$(printf "left\\nright" | dmenu -i -p "What side of $primary should $secondary be on?")
- xrandr --output "$primary" --auto --scale 1.0x1.0 --output "$secondary" --"$direction"-of "$primary" --auto --scale 1.0x1.0
- fi
- }
-
-morescreen() { # If multi-monitor is selected and there are more than two screens.
- primary=$(echo "$screens" | dmenu -i -p "Select primary display:")
- secondary=$(echo "$screens" | rg -v ^"$primary"$ | dmenu -i -p "Select secondary display:")
- direction=$(printf "left\\nright" | dmenu -i -p "What side of $primary should $secondary be on?")
- tertiary=$(echo "$screens" | rg -v ^"$primary"$ | rg -v ^"$secondary"$ | dmenu -i -p "Select third display:")
- xrandr --output "$primary" --auto --output "$secondary" --"$direction"-of "$primary" --auto --output "$tertiary" --"$(printf "left\\nright" | rg -v "$direction")"-of "$primary" --auto
- }
-
-multimon() { # Multi-monitor handler.
- case "$(echo "$screens" | wc -l)" in
- 2) twoscreen ;;
- *) morescreen ;;
- esac ;}
-
-onescreen() { # If only one output available or chosen.
- xrandr --output "$1" --auto --scale 1.0x1.0 $(echo "$allposs" | rg -v "\b$1" | awk '{print "--output", $1, "--off"}' | paste -sd ' ' -)
- }
-
-postrun() { # Stuff to run to clean up.
- setbg # Fix background if screen size/arangement has changed.
- { killall dunst ; setsid -f dunst ;} >/dev/null 2>&1 # Restart dunst to ensure proper location on screen
- }
-
-# Get all possible displays
-allposs=$(xrandr -q | rg "connected")
-
-# Get all connected screens.
-screens=$(echo "$allposs" | awk '/ connected/ {print $1}')
-
-# If there's only one screen
-[ "$(echo "$screens" | wc -l)" -lt 2 ] &&
- { onescreen "$screens"; postrun; notify-send "💻 Only one screen detected." "Using it in its optimal settings..."; exit ;}
-
-# Get user choice including multi-monitor and manual selection:
-chosen=$(printf "%s\\nmulti-monitor\\nmanual selection" "$screens" | dmenu -i -p "Select display arangement:") &&
-case "$chosen" in
- "manual selection") arandr ; exit ;;
- "multi-monitor") multimon ;;
- *) onescreen "$chosen" ;;
-esac
-
-postrun
diff --git a/.local/bin/dmenuhandler b/.local/bin/dmenuhandler
@@ -5,17 +5,21 @@
feed="${1:-$(true | mew -p 'Paste URL or file path')}"
case "$(printf "copy url\\nswayimg\\nsetbg\\nPDF\\nbrowser\\nlynx\\nvim\\nmpv\\nmpv loop\\nmpv float\\nqueue download\\nqueue yt-dlp\\nqueue yt-dlp audio" | mew -i -p "Open it with?")" in
- "copy url") echo "$feed" | wl-copy ;;
- mpv) setsid -f mpv -quiet "$feed" >/dev/null 2>&1 ;;
- "mpv loop") setsid -f mpv -quiet --loop "$feed" >/dev/null 2>&1 ;;
- "mpv float") setsid -f "$TERMINAL" -e mpv --geometry=+0-0 --autofit=30% --title="mpvfloat" "$feed" >/dev/null 2>&1 ;;
- "queue yt-dlp") qndl "$feed" >/dev/null 2>&1 ;;
- "queue yt-dlp audio") qndl "$feed" 'yt-dlp -o "%(title)s.%(ext)s" -f bestaudio --embed-metadata --restrict-filenames' ;;
- "queue download") qndl "$feed" 'curl -LO' >/dev/null 2>&1 ;;
- PDF) curl -sL "$feed" > "/tmp/$(echo "$feed" | sed "s|.*/||;s/%20/ /g")" && zathura "/tmp/$(echo "$feed" | sed "s|.*/||;s/%20/ /g")" >/dev/null 2>&1 ;;
- swayimg) curl -sL "$feed" > "/tmp/$(echo "$feed" | sed "s|.*/||;s/%20/ /g")" && swayimg "/tmp/$(echo "$feed" | sed "s|.*/||;s/%20/ /g")" >/dev/null 2>&1 ;;
- vim) curl -sL "$feed" > "/tmp/$(echo "$feed" | sed "s|.*/||;s/%20/ /g")" && setsid -f "$TERMINAL" -e "$EDITOR" "/tmp/$(echo "$feed" | sed "s|.*/||;s/%20/ /g")" >/dev/null 2>&1 ;;
- setbg) curl -L "$feed" > $XDG_CACHE_HOME/pic ; swaybg -i $XDG_CACHE_HOME/pic -m fill & >/dev/null 2>&1 ;;
- browser) setsid -f "$BROWSER" "$feed" >/dev/null 2>&1 ;;
- lynx) lynx "$feed" >/dev/null 2>&1 ;;
+"copy url") echo "$feed" | wl-copy ;;
+mpv) setsid -f mpv -quiet "$feed" >/dev/null 2>&1 ;;
+"mpv loop") setsid -f mpv -quiet --loop "$feed" >/dev/null 2>&1 ;;
+"mpv float") setsid -f "$TERMINAL" -e mpv --geometry=+0-0 --autofit=30% --title="mpvfloat" "$feed" >/dev/null 2>&1 ;;
+"queue yt-dlp") qndl "$feed" >/dev/null 2>&1 ;;
+"queue yt-dlp audio") qndl "$feed" 'yt-dlp -o "%(title)s.%(ext)s" -f bestaudio --embed-metadata --restrict-filenames' ;;
+"queue download") qndl "$feed" 'curl -LO' >/dev/null 2>&1 ;;
+PDF) curl -sL "$feed" >"/tmp/$(echo "$feed" | sed "s|.*/||;s/%20/ /g")" && zathura "/tmp/$(echo "$feed" | sed "s|.*/||;s/%20/ /g")" >/dev/null 2>&1 ;;
+swayimg) curl -sL "$feed" >"/tmp/$(echo "$feed" | sed "s|.*/||;s/%20/ /g")" && swayimg "/tmp/$(echo "$feed" | sed "s|.*/||;s/%20/ /g")" >/dev/null 2>&1 ;;
+vim) curl -sL "$feed" >"/tmp/$(echo "$feed" | sed "s|.*/||;s/%20/ /g")" && setsid -f "$TERMINAL" -e "$EDITOR" "/tmp/$(echo "$feed" | sed "s|.*/||;s/%20/ /g")" >/dev/null 2>&1 ;;
+setbg)
+ curl -L "$feed" >$XDG_CACHE_HOME/pic
+ swaybg -i $XDG_CACHE_HOME/pic -m fill &
+ >/dev/null 2>&1
+ ;;
+browser) setsid -f "$BROWSER" "$feed" >/dev/null 2>&1 ;;
+lynx) lynx "$feed" >/dev/null 2>&1 ;;
esac
diff --git a/.local/bin/dmenumountcifs b/.local/bin/dmenumountcifs
@@ -11,9 +11,10 @@ share=$(smbclient -L "$srvname" -N | rg Disk | awk '{print $1}' | mew -i -p "Mou
share2mnt=//"$srvname".local/"$share"
sharemount() {
- mounted=$(mount -v | rg "$share2mnt") || ([ ! -d /mnt/"$share" ] && doas mkdir /mnt/"$share")
- [ -z "$mounted" ] && doas mount -t cifs "$share2mnt" -o user=nobody,password="",noperm /mnt/"$share" && notify-send "Netshare $share mounted" && exit 0
- notify-send "Netshare $share already mounted"; exit 1
+ mounted=$(mount -v | rg "$share2mnt") || ([ ! -d /mnt/"$share" ] && doas mkdir /mnt/"$share")
+ [ -z "$mounted" ] && doas mount -t cifs "$share2mnt" -o user=nobody,password="",noperm /mnt/"$share" && notify-send "Netshare $share mounted" && exit 0
+ notify-send "Netshare $share already mounted"
+ exit 1
}
sharemount
diff --git a/.local/bin/dmenurecord b/.local/bin/dmenurecord
@@ -11,9 +11,9 @@
getdim() {
screens=$(swaymsg -t get_outputs --raw | jq -r '.[].name')
- choice=$(printf "$screens\nExit\n" | mew)
+ choice=$(printf "%s\nExit\n" "$screens" | mew)
[ "${choice}" != "Exit" ] || [ -z "${choice}" ] || exit &&
- echo $choice
+ echo "$choice"
}
updateicon() {
@@ -22,98 +22,100 @@ updateicon() {
pkill -RTMIN+9 "${STATUSBAR:-i3blocks}"
exit
fi
- printf "<span color='#FF0000'>rec:</span>" > /tmp/recordingicon
- echo "$1" >> /tmp/recordingicon
+ printf "<span color='#FF0000'>rec:</span>" >/tmp/recordingicon
+ echo "$1" >>/tmp/recordingicon
pkill -RTMIN+9 "${STATUSBAR:-i3blocks}"
}
killrecording() {
recpid="$(bat /tmp/recordingpid)"
- echo $recpid
+ echo "$recpid"
kill -2 "$recpid"
rm -f /tmp/recordingpid
updateicon ""
pkill -RTMIN+9 "${STATUSBAR:-i3blocks}"
}
-screencast() { gpu-screen-recorder \
- -w "$(getdim)" \
- -f 60 \
- -a default_output \
- -a default_input \
- -o "$HOME/screencast-$(date '+%y%m%d-%H%M-%S').mkv" &
- echo $! > /tmp/recordingpid
+screencast() {
+ gpu-screen-recorder \
+ -w "$(getdim)" \
+ -f 60 \
+ -a default_output \
+ -a default_input \
+ -o "$HOME/screencast-$(date '+%y%m%d-%H%M-%S').mkv" &
+ echo $! >/tmp/recordingpid
updateicon "audio+mic"
}
-video() { gpu-screen-recorder \
- -w "$(getdim)" \
- -f 60 \
- -o "$HOME/video-$(date '+%y%m%d-%H%M-%S').mkv" &
- echo $! > /tmp/recordingpid
+video() {
+ gpu-screen-recorder \
+ -w "$(getdim)" \
+ -f 60 \
+ -o "$HOME/video-$(date '+%y%m%d-%H%M-%S').mkv" &
+ echo $! >/tmp/recordingpid
updateicon "video only"
}
-webcamhidef() { ffmpeg \
- -f v4l2 \
- -i /dev/video0 \
- -video_size 1920x1080 \
- "$HOME/webcam-$(date '+%y%m%d-%H%M-%S').mkv" &
- echo $! > /tmp/recordingpid
+webcamhidef() {
+ ffmpeg \
+ -f v4l2 \
+ -i /dev/video0 \
+ -video_size 1920x1080 \
+ "$HOME/webcam-$(date '+%y%m%d-%H%M-%S').mkv" &
+ echo $! >/tmp/recordingpid
updateicon "webcam(hq)"
}
-webcam() { ffmpeg \
- -f v4l2 \
- -i /dev/video0 \
- -video_size 640x480 \
- "$HOME/webcam-$(date '+%y%m%d-%H%M-%S').mkv" &
- echo $! > /tmp/recordingpid
+webcam() {
+ ffmpeg \
+ -f v4l2 \
+ -i /dev/video0 \
+ -video_size 640x480 \
+ "$HOME/webcam-$(date '+%y%m%d-%H%M-%S').mkv" &
+ echo $! >/tmp/recordingpid
updateicon "webcam"
}
-
-audio() { \
+audio() {
ffmpeg \
- -f alsa -i default \
- -c:a flac \
- "$HOME/audio-$(date '+%y%m%d-%H%M-%S').flac" &
- echo $! > /tmp/recordingpid
+ -f alsa -i default \
+ -c:a flac \
+ "$HOME/audio-$(date '+%y%m%d-%H%M-%S').flac" &
+ echo $! >/tmp/recordingpid
updateicon "audio only"
}
-askrecording() { \
+askrecording() {
choice=$(printf "screencast\\nvideo\\nvideo selected\\naudio\\nwebcam\\nwebcam (hi-def)" | mew -i -p "Select recording style:")
case "$choice" in
- screencast) screencast;;
- audio) audio;;
- video) video;;
- *selected) videoselected;;
- webcam) webcam;;
- "webcam (hi-def)") webcamhidef;;
+ screencast) screencast ;;
+ audio) audio ;;
+ video) video ;;
+ *selected) videoselected ;;
+ webcam) webcam ;;
+ "webcam (hi-def)") webcamhidef ;;
esac
}
-asktoend() { \
+asktoend() {
response=$(printf "No\\nYes" | mew -i -p "Recording still active. End recording?") &&
- [ "$response" = "Yes" ] && killrecording
+ [ "$response" = "Yes" ] && killrecording
}
-videoselected()
-{
+videoselected() {
gpu-screen-recorder \
- -w region -region $(slurp -f "%wx%h+%x+%y") \
- -f 60 \
- -o "$HOME/box-$(date '+%y%m%d-%H%M-%S').mkv" &
- echo $! > /tmp/recordingpid
+ -w region -region "$(slurp -f "%wx%h+%x+%y")" \
+ -f 60 \
+ -o "$HOME/box-$(date '+%y%m%d-%H%M-%S').mkv" &
+ echo $! >/tmp/recordingpid
updateicon "video selected"
}
case "$1" in
- screencast) screencast;;
- audio) audio;;
- video) video;;
- *selected) videoselected;;
- kill) killrecording;;
- *) ([ -f /tmp/recordingpid ] && asktoend && exit) || askrecording;;
+screencast) screencast ;;
+audio) audio ;;
+video) video ;;
+*selected) videoselected ;;
+kill) killrecording ;;
+*) ([ -f /tmp/recordingpid ] && asktoend && exit) || askrecording ;;
esac
diff --git a/.local/bin/doas_askpass b/.local/bin/doas_askpass
@@ -14,9 +14,9 @@ set cmd [lrange $argv 0 end];
# read askpass from env or fallback to dmenu_pass ()
if {[info exists ::env(DOAS_ASKPASS)]} {
- set askpass "$::env(DOAS_ASKPASS)"
+ set askpass "$::env(DOAS_ASKPASS)"
} else {
- set askpass "dmenu_pass password:"
+ set askpass "dmenu_pass password:"
}
# read password from user
@@ -27,10 +27,10 @@ spawn doas {*}$cmd
# send password and execute command
expect "doas*password:" {
- send -- "$pwd\r"
- expect \r
- log_user 1
- expect eof
+ send -- "$pwd\r"
+ expect \r
+ log_user 1
+ expect eof
}
# get the exit status of the spawned doas command
@@ -41,7 +41,7 @@ set exit_code [lindex $status 3]
# exit with 1 if doas failed, else 0
if { $exit_code != 0 } {
- exit 1
+ exit 1
} else {
- exit 0
+ exit 0
}
diff --git a/.local/bin/getbib b/.local/bin/getbib
@@ -2,33 +2,33 @@
BIB_FILE="${HOME}/latex/uni.bib"
[ -f "${BIB_FILE}" ] || BIB_FILE="${2:-$(find "${HOME}" -path "${HOME}/.*" \
- -prune -o -type "f" -name "*.bib" -print -quit)}"
+ -prune -o -type "f" -name "*.bib" -print -quit)}"
{ [ -f "${BIB_FILE}" ] || [ "${2}" ]; } || {
- printf "%s\n" "Create a .bib file or provide as \$2." && exit "1"
+ printf "%s\n" "Create a .bib file or provide as \$2." && exit "1"
}
filter() {
- sed -n -E 's/.*((DOI|doi)((\.(org))?\/?|:? *))([^: ]+[^ .]).*/\6/p; T; q'
+ sed -n -E 's/.*((DOI|doi)((\.(org))?\/?|:? *))([^: ]+[^ .]).*/\6/p; T; q'
}
fpdf() {
- pdf="${1}"
- doi="$(pdfinfo "${pdf}" 2> "/dev/null" | filter)"
+ pdf="${1}"
+ doi="$(pdfinfo "${pdf}" 2>"/dev/null" | filter)"
- [ "${doi}" ] || doi="$(pdftotext -q -l "2" "${pdf}" - 2> "/dev/null" | filter)"
+ [ "${doi}" ] || doi="$(pdftotext -q -l "2" "${pdf}" - 2>"/dev/null" | filter)"
- [ "${doi}" ] || printf "%s\n" "No DOI found for PDF: ${pdf}" >&2
+ [ "${doi}" ] || printf "%s\n" "No DOI found for PDF: ${pdf}" >&2
- printf "%s\n" "${doi}"
+ printf "%s\n" "${doi}"
}
arrange() {
- sed 's/\}, /\},\n /g
+ sed 's/\}, /\},\n /g
s/, /,\n /
s/ }/\n}/
s/,\s*pages=/,\n\tpages=/' |
- sed '1s/^ *//
+ sed '1s/^ *//
1s/[0-9]*\([0-9]\{2\}\)/\1/
1s/_//
1s/.*/\L&/
@@ -37,31 +37,31 @@ arrange() {
}
doi2bib() {
- doi="${1#doi:}"
- url="https://api.crossref.org/works/${doi}/transform/application/x-bibtex"
- entry="$(curl -kLsS --no-fail "${url}" | arrange)"
- red='\033[0;31m'
- reset='\033[0m'
-
- printf "${red}%s${reset}\n" "${entry}"
-
- [ "${entry%"${entry#?}"}" != "@" ] && {
- printf "%s\n" "Failed to fetch bibtex entry for DOI: ${doi}"
- return "1"
- }
-
- rg -iFq "doi = {${doi}}" "${BIB_FILE}" 2> "/dev/null" && {
- printf "%s\n" "Bibtex entry for DOI: ${doi} already exists in the file."
- } || {
- [ -s "${BIB_FILE}" ] && printf "\n" >> "${BIB_FILE}"
- printf "%s\n" "${entry}" >> "${BIB_FILE}"
- printf "%s\n" "Added bibtex entry for DOI: ${doi}"
- }
+ doi="${1#doi:}"
+ url="https://api.crossref.org/works/${doi}/transform/application/x-bibtex"
+ entry="$(curl -kLsS --no-fail "${url}" | arrange)"
+ red='\033[0;31m'
+ reset='\033[0m'
+
+ printf "${red}%s${reset}\n" "${entry}"
+
+ [ "${entry%"${entry#?}"}" != "@" ] && {
+ printf "%s\n" "Failed to fetch bibtex entry for DOI: ${doi}"
+ return "1"
+ }
+
+ rg -iFq "doi = {${doi}}" "${BIB_FILE}" 2>"/dev/null" && {
+ printf "%s\n" "Bibtex entry for DOI: ${doi} already exists in the file."
+ } || {
+ [ -s "${BIB_FILE}" ] && printf "\n" >>"${BIB_FILE}"
+ printf "%s\n" "${entry}" >>"${BIB_FILE}"
+ printf "%s\n" "Added bibtex entry for DOI: ${doi}"
+ }
}
[ "${1}" ] || {
- printf "%s\n" "Give either a pdf file or a DOI or a directory path that has PDFs as an argument."
- exit "1"
+ printf "%s\n" "Give either a pdf file or a DOI or a directory path that has PDFs as an argument."
+ exit "1"
}
[ -f "${1}" ] && doi="$(fpdf "${1}")" && doi2bib "${doi}" && exit "0"
diff --git a/.local/bin/ifinstalled b/.local/bin/ifinstalled
@@ -6,7 +6,7 @@
# various other scripts for clarity's sake.
for x in "$@"; do
- if ! which "$x" >/dev/null 2>&1 && ! pacman -Qq "$x" >/dev/null 2>&1; then
- notify-send "📦 $x" "must be installed for this function." && exit 1 ;
- fi
+ if ! which "$x" >/dev/null 2>&1 && ! pacman -Qq "$x" >/dev/null 2>&1; then
+ notify-send "📦 $x" "must be installed for this function." && exit 1
+ fi
done
diff --git a/.local/bin/linkhandler b/.local/bin/linkhandler
@@ -7,26 +7,31 @@
# otherwise it opens link in browser.
if [ -z "$1" ]; then
- url="$(wl-paste)"
+ url="$(wl-paste)"
else
- url="$1"
+ url="$1"
fi
# Check if the URL is from inv.nadeko.net and adjust it for YouTube
echo "$url" | rg -q 'inv.nadeko.net/watch'
if [ $? -eq 0 ]; then
- url="https://www.youtube.com/watch?v=$(echo "$url" | sed 's/.*inv\.nadeko\.net\/watch?v=\([^&]*\)/\1/')"
+ url="https://www.youtube.com/watch?v=$(echo "$url" | sed 's/.*inv\.nadeko\.net\/watch?v=\([^&]*\)/\1/')"
fi
case "$url" in
- *mkv|*webm|*mp4|*youtube.com/watch*|*youtube.com/playlist*|*youtube.com/v/*|*youtube.com/shorts*|*youtu.be*|*hooktube.com*|*bitchute.com*|*videos.lukesmith.xyz*|*odysee.com*)
- setsid -f mpv -quiet "$url" >/dev/null 2>&1 ;;
- *png|*jpg|*jpe|*jpeg|*gif|*webp)
- curl -sL "$url" > "/tmp/$(echo "$url" | sed "s/.*\///;s/%20/ /g")" && swayimg "/tmp/$(echo "$url" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 & ;;
- *pdf|*cbz|*cbr)
- curl -sL "$url" > "/tmp/$(echo "$url" | sed "s/.*\///;s/%20/ /g")" && zathura "/tmp/$(echo "$url" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 & ;;
- *mp3|*flac|*opus|*mp3?source*)
- qndl "$url" 'curl -LO' >/dev/null 2>&1 ;;
- *)
- [ -f "$url" ] && setsid -f "$TERMINAL" -e "$EDITOR" "$url" >/dev/null 2>&1 || setsid -f "$BROWSER" "$url" >/dev/null 2>&1
+*mkv | *webm | *mp4 | *youtube.com/watch* | *youtube.com/playlist* | *youtube.com/v/* | *youtube.com/shorts* | *youtu.be* | *hooktube.com* | *bitchute.com* | *videos.lukesmith.xyz* | *odysee.com*)
+ setsid -f mpv -quiet "$url" >/dev/null 2>&1
+ ;;
+*png | *jpg | *jpe | *jpeg | *gif | *webp)
+ curl -sL "$url" >"/tmp/$(echo "$url" | sed "s/.*\///;s/%20/ /g")" && swayimg "/tmp/$(echo "$url" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 &
+ ;;
+*pdf | *cbz | *cbr)
+ curl -sL "$url" >"/tmp/$(echo "$url" | sed "s/.*\///;s/%20/ /g")" && zathura "/tmp/$(echo "$url" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 &
+ ;;
+*mp3 | *flac | *opus | *mp3?source*)
+ qndl "$url" 'curl -LO' >/dev/null 2>&1
+ ;;
+*)
+ [ -f "$url" ] && setsid -f "$TERMINAL" -e "$EDITOR" "$url" >/dev/null 2>&1 || setsid -f "$BROWSER" "$url" >/dev/null 2>&1
+ ;;
esac
diff --git a/.local/bin/maimpick b/.local/bin/maimpick
@@ -10,24 +10,27 @@ wclip_cmd="wl-copy -t image/png"
ocr_cmd="wl-copy"
case "$(printf "a selected area\\ncurrent window\\nfull screen\\na selected area (copy)\\ncurrent window (copy)\\nfull screen (copy)\\na selected area (swappy)\\ncurrent window (swappy)\\nfull screen (swappy)\\ncopy selected image to text" | mew -l 10 -i -p "Screenshot which area?")" in
- "a selected area") geometry=$(slurp) && sleep 0.2 && grim -g "$geometry" pic-selected-"${output}" && notify-send "📸 maimpick" "Screenshot saved as pic-selected-$output." ;;
- "current window")
- geometry=$(swaymsg --raw -t get_tree | jq -r '.. | select(type == "object" and .focused == true) | .rect | "\(.x),\(.y) \(.width)x\(.height)"')
- sleep 0.2
- grim -g "$geometry" pic-window-"${output}" && notify-send "📸 maimpick" "Screenshot saved as pic-window-$output." ;;
- "full screen") geometry=$(slurp -o) && sleep 0.2 && grim -g "$geometry" pic-full-"${output}" && notify-send "📸 maimpick" "Screenshot saved as pic-full-$output." ;;
- "a selected area (copy)") geometry=$(slurp) && sleep 0.2 && grim -g "$geometry" - | ${wclip_cmd} && notify-send "📸 maimpick" "Selected area screenshot copied to clipboard." ;;
- "current window (copy)")
- geometry=$(swaymsg --raw -t get_tree | jq -r '.. | select(type == "object" and .focused == true) | .rect | "\(.x),\(.y) \(.width)x\(.height)"')
- sleep 0.2
- grim -g "$geometry" - | ${wclip_cmd} && notify-send "📸 maimpick" "Window screenshot copied to clipboard." ;;
- "full screen (copy)") geometry=$(slurp -o) && sleep 0.2 && grim -g "$geometry" - | ${wclip_cmd} && notify-send "📸 maimpick" "Full screen screenshot copied to clipboard.";;
- "a selected area (swappy)") geometry=$(slurp) && sleep 0.2 && grim -g "$geometry" - | swappy -f - ;;
- "current window (swappy)")
- geometry=$(swaymsg --raw -t get_tree | jq -r '.. | select(type == "object" and .focused == true) | .rect | "\(.x),\(.y) \(.width)x\(.height)"')
- sleep 0.2
- grim -g "$geometry" - | swappy -f - ;;
- "full screen (swappy)") geometry=$(slurp -o) && sleep 0.2 && grim -g "$geometry" - | swappy -f - ;;
- "copy selected image to text") tmpfile=$(mktemp /tmp/ocr-XXXXXX.png) && slurp | grim -g - - > "$tmpfile" && tesseract "$tmpfile" - -l eng | ${ocr_cmd} && rm "$tmpfile" && notify-send "📸 maimpick" "Detected text copied to clipboard.\n$(wl-paste)" ;;
- *) notify-send "📸 maimpick" "Wrong option."
+"a selected area") geometry=$(slurp) && sleep 0.2 && grim -g "$geometry" pic-selected-"${output}" && notify-send "📸 maimpick" "Screenshot saved as pic-selected-$output." ;;
+"current window")
+ geometry=$(swaymsg --raw -t get_tree | jq -r '.. | select(type == "object" and .focused == true) | .rect | "\(.x),\(.y) \(.width)x\(.height)"')
+ sleep 0.2
+ grim -g "$geometry" pic-window-"${output}" && notify-send "📸 maimpick" "Screenshot saved as pic-window-$output."
+ ;;
+"full screen") geometry=$(slurp -o) && sleep 0.2 && grim -g "$geometry" pic-full-"${output}" && notify-send "📸 maimpick" "Screenshot saved as pic-full-$output." ;;
+"a selected area (copy)") geometry=$(slurp) && sleep 0.2 && grim -g "$geometry" - | ${wclip_cmd} && notify-send "📸 maimpick" "Selected area screenshot copied to clipboard." ;;
+"current window (copy)")
+ geometry=$(swaymsg --raw -t get_tree | jq -r '.. | select(type == "object" and .focused == true) | .rect | "\(.x),\(.y) \(.width)x\(.height)"')
+ sleep 0.2
+ grim -g "$geometry" - | ${wclip_cmd} && notify-send "📸 maimpick" "Window screenshot copied to clipboard."
+ ;;
+"full screen (copy)") geometry=$(slurp -o) && sleep 0.2 && grim -g "$geometry" - | ${wclip_cmd} && notify-send "📸 maimpick" "Full screen screenshot copied to clipboard." ;;
+"a selected area (swappy)") geometry=$(slurp) && sleep 0.2 && grim -g "$geometry" - | swappy -f - ;;
+"current window (swappy)")
+ geometry=$(swaymsg --raw -t get_tree | jq -r '.. | select(type == "object" and .focused == true) | .rect | "\(.x),\(.y) \(.width)x\(.height)"')
+ sleep 0.2
+ grim -g "$geometry" - | swappy -f -
+ ;;
+"full screen (swappy)") geometry=$(slurp -o) && sleep 0.2 && grim -g "$geometry" - | swappy -f - ;;
+"copy selected image to text") tmpfile=$(mktemp /tmp/ocr-XXXXXX.png) && slurp | grim -g - - >"$tmpfile" && tesseract "$tmpfile" - -l eng | ${ocr_cmd} && rm "$tmpfile" && notify-send "📸 maimpick" "Detected text copied to clipboard.\n$(wl-paste)" ;;
+*) notify-send "📸 maimpick" "Wrong option." ;;
esac
diff --git a/.local/bin/mounter b/.local/bin/mounter
@@ -3,7 +3,7 @@
IFS='
'
# Function for escaping cell-phone names.
-escape(){ echo "$@" | iconv -cf UTF-8 -t ASCII//TRANSLIT | tr -d '[:punct:]' | tr '[:upper:]' '[:lower:]' | tr ' ' '-' | sed "s/-\+/-/g;s/\(^-\|-\$\)//g" ;}
+escape() { echo "$@" | iconv -cf UTF-8 -t ASCII//TRANSLIT | tr -d '[:punct:]' | tr '[:upper:]' '[:lower:]' | tr ' ' '-' | sed "s/-\+/-/g;s/\(^-\|-\$\)//g"; }
# Check for phones.
phones="$(simple-mtpfs -l 2>/dev/null | sed "s/^/📱/")"
@@ -24,12 +24,12 @@ allluks="$(echo "$lsblkoutput" | rg crypto_LUKS)"
# Get a list of the LUKS drive UUIDs already decrypted.
decrypted="$(find /dev/disk/by-id/dm-uuid-CRYPT-LUKS2-* | sed "s|.*LUKS2-||;s|-.*||")"
# Functioning for formatting drives correctly for mew:
-filter() { sed "s/ /:/g" | awk -F':' '$7==""{printf "%s%s (%s) %s\n",$1,$3,$5,$6}' ; }
+filter() { sed "s/ /:/g" | awk -F':' '$7==""{printf "%s%s (%s) %s\n",$1,$3,$5,$6}'; }
# Get only LUKS drives that are not decrypted.
unopenedluks="$(for drive in $allluks; do
uuid="${drive%% *}"
- uuid="${uuid//-}" # This is a bashism.
+ uuid="${uuid//-/}" # This is a bashism.
[ -n "$decrypted" ] && for open in $decrypted; do
[ "$uuid" = "$open" ] && break 1
done && continue 1
@@ -37,7 +37,7 @@ unopenedluks="$(for drive in $allluks; do
done | filter)"
# Get all normal, non-encrypted or decrypted partitions that are not mounted.
-normalparts="$(echo "$lsblkoutput"| rg -v crypto_LUKS | rg 'part|rom|crypt' | sed "s/^/💾 /" | filter )"
+normalparts="$(echo "$lsblkoutput" | rg -v crypto_LUKS | rg 'part|rom|crypt' | sed "s/^/💾 /" | filter)"
# Add all to one variable. If no mountable drives found, exit.
alldrives="$(echo "$phones
@@ -53,7 +53,7 @@ test -n "$alldrives"
chosen="$(echo "$alldrives" | mew -p "Mount which drive?" -i)"
# Function for prompting user for a mountpoint.
-getmount(){
+getmount() {
mp="$(find /mnt /media /mount /home -maxdepth 1 -type d 2>/dev/null | mew -i -p "Mount this drive where?")"
test -n "$mp"
if [ ! -d "$mp" ]; then
@@ -62,7 +62,7 @@ getmount(){
fi
}
-attemptmount(){
+attemptmount() {
# Attempt to mount without a mountpoint, to see if drive is in fstab.
doas mount "$chosen" || return 1
notify-send "💾Drive Mounted." "$chosen mounted."
@@ -70,45 +70,45 @@ attemptmount(){
}
case "$chosen" in
- 💾*)
- chosen="${chosen%% *}"
- chosen="${chosen:1}" # This is a bashism.
- parttype="$(echo "$lsblkoutput" | rg "$chosen" | awk '{print $NF}' | tr -d '[:space:]\r\n')"
- attemptmount || getmount
- case "${parttype##* }" in
- vfat) doas mount -t vfat "$chosen" "$mp" -o rw,umask=0000 ;;
- btrfs) doas mount "$chosen" "$mp" ;;
- ntfs) doas mount -t ntfs3 "$chosen" "$mp" ;;
- *) doas mount "$chosen" "$mp" -o uid="$(id -u)",gid="$(id -g)" ;;
- esac
- notify-send "💾Drive Mounted." "$chosen mounted to $mp."
- ;;
-
- 🔒*)
- chosen="${chosen%% *}"
- chosen="${chosen:1}" # This is a bashism.
- # Number the drive.
- while true; do
- [ -f "/dev/mapper/usb$num" ] || break
- num="$(printf "%02d" "$((num +1))")"
- done
-
- # Decrypt in a terminal window
- ${TERMINAL:-st} -a termfloat -e doas cryptsetup open "$chosen" "usb$num"
- # Check if now decrypted.
- test -b "/dev/mapper/usb$num"
-
- attemptmount || getmount
- doas mount "/dev/mapper/usb$num" "$mp"
- notify-send "🔓Decrypted drive Mounted." "$chosen decrypted and mounted to $mp."
- ;;
-
- 📱*)
- notify-send "❗Note" "Remember to allow file access on your phone now."
- getmount
- number="${chosen%%:*}"
- number="${chosen:1}" # This is a bashism.
- doas_askpass simple-mtpfs -o allow_other -o fsname="simple-mtpfs-$(escape "$chosen")" --device "$number" "$mp"
- notify-send "🤖 Android Mounted." "Android device mounted to $mp."
- ;;
+💾*)
+ chosen="${chosen%% *}"
+ chosen="${chosen:1}" # This is a bashism.
+ parttype="$(echo "$lsblkoutput" | rg "$chosen" | awk '{print $NF}' | tr -d '[:space:]\r\n')"
+ attemptmount || getmount
+ case "${parttype##* }" in
+ vfat) doas mount -t vfat "$chosen" "$mp" -o rw,umask=0000 ;;
+ btrfs) doas mount "$chosen" "$mp" ;;
+ ntfs) doas mount -t ntfs3 "$chosen" "$mp" ;;
+ *) doas mount "$chosen" "$mp" -o uid="$(id -u)",gid="$(id -g)" ;;
+ esac
+ notify-send "💾Drive Mounted." "$chosen mounted to $mp."
+ ;;
+
+🔒*)
+ chosen="${chosen%% *}"
+ chosen="${chosen:1}" # This is a bashism.
+ # Number the drive.
+ while true; do
+ [ -f "/dev/mapper/usb$num" ] || break
+ num="$(printf "%02d" "$((num + 1))")"
+ done
+
+ # Decrypt in a terminal window
+ ${TERMINAL:-st} -a termfloat -e doas cryptsetup open "$chosen" "usb$num"
+ # Check if now decrypted.
+ test -b "/dev/mapper/usb$num"
+
+ attemptmount || getmount
+ doas mount "/dev/mapper/usb$num" "$mp"
+ notify-send "🔓Decrypted drive Mounted." "$chosen decrypted and mounted to $mp."
+ ;;
+
+📱*)
+ notify-send "❗Note" "Remember to allow file access on your phone now."
+ getmount
+ number="${chosen%%:*}"
+ number="${chosen:1}" # This is a bashism.
+ doas_askpass simple-mtpfs -o allow_other -o fsname="simple-mtpfs-$(escape "$chosen")" --device "$number" "$mp"
+ notify-send "🤖 Android Mounted." "Android device mounted to $mp."
+ ;;
esac
diff --git a/.local/bin/noisereduce b/.local/bin/noisereduce
@@ -1,59 +1,59 @@
#!/usr/bin/sh
-usage ()
-{
- printf "Usage : noisereduce <input video file> <output video file>\n"
- exit
+usage() {
+ printf "Usage : noisereduce <input video file> <output video file>\n"
+ exit
}
# Tests for requirements
-ifinstalled ffmpeg || { echo >&2 "We require 'ffmpeg' but it's not installed."; exit 1; }
-ifinstalled sox || { echo >&2 "We require 'ffmpeg' but it's not installed."; exit 1; }
+ifinstalled ffmpeg || {
+ echo >&2 "We require 'ffmpeg' but it's not installed."
+ exit 1
+}
+ifinstalled sox || {
+ echo >&2 "We require 'ffmpeg' but it's not installed."
+ exit 1
+}
-if [ "$#" -ne 2 ]
-then
+if [ "$#" -ne 2 ]; then
usage
fi
-if [ ! -e "$1" ]
-then
- printf "File not found: %s\n" "$1"
- exit
+if [ ! -e "$1" ]; then
+ printf "File not found: %s\n" "$1"
+ exit
fi
-if [ -e "$2" ]
-then
- printf "File %s already exists, overwrite? [y/N]\n: " "$2"
- read -r yn
- case $yn in
- [Yy]* ) ;;
- * ) exit;;
- esac
+if [ -e "$2" ]; then
+ printf "File %s already exists, overwrite? [y/N]\n: " "$2"
+ read -r yn
+ case $yn in
+ [Yy]*) ;;
+ *) exit ;;
+ esac
fi
inBasename=$(basename "$1")
inExt="${inBasename##*.}"
isVideoStr=$(ffprobe -v warning -show_streams "$1" | rg codec_type=video)
-if [ -n "$isVideoStr" ]
-then
- isVideo=1
- printf "Detected %s as a video file\n" "$inBasename"
+if [ -n "$isVideoStr" ]; then
+ isVideo=1
+ printf "Detected %s as a video file\n" "$inBasename"
else
- isVideo=0
- printf "Detected %s as an audio file\n" "$inBasename"
+ isVideo=0
+ printf "Detected %s as an audio file\n" "$inBasename"
fi
printf "Sample noise start time [00:00:00]: "
read -r sampleStart
-if [ -z "$sampleStart" ] ; then sampleStart="00:00:00"; fi
+if [ -z "$sampleStart" ]; then sampleStart="00:00:00"; fi
printf "Sample noise end time [00:00:00.900]: "
read -r sampleEnd
-if [ -z "$sampleEnd" ] ; then sampleEnd="00:00:00.900"; fi
+if [ -z "$sampleEnd" ]; then sampleEnd="00:00:00.900"; fi
printf "Noise reduction amount [0.21]: "
read -r sensitivity
-if [ -z "$sensitivity" ] ; then sensitivity="0.21"; fi
-
+if [ -z "$sensitivity" ]; then sensitivity="0.21"; fi
tmpVidFile="/tmp/noiseclean_tmpvid.$inExt"
tmpAudFile="/tmp/noiseclean_tmpaud.wav"
@@ -64,18 +64,18 @@ tmpAudCleanFile="/tmp/noiseclean_tmpaud-clean.wav"
printf "Cleaning noise on %s...\n" "$1"
if [ $isVideo -eq "1" ]; then
- ffmpeg -v warning -y -i "$1" -qscale:v 0 -vcodec copy -an "$tmpVidFile"
- ffmpeg -v warning -y -i "$1" -qscale:a 0 "$tmpAudFile"
+ ffmpeg -v warning -y -i "$1" -qscale:v 0 -vcodec copy -an "$tmpVidFile"
+ ffmpeg -v warning -y -i "$1" -qscale:a 0 "$tmpAudFile"
else
- cp "$1" "$tmpAudFile"
+ cp "$1" "$tmpAudFile"
fi
ffmpeg -v warning -y -i "$1" -vn -ss "$sampleStart" -t "$sampleEnd" "$noiseAudFile"
sox "$noiseAudFile" -n noiseprof "$noiseProfFile"
sox "$tmpAudFile" "$tmpAudCleanFile" noisered "$noiseProfFile" "$sensitivity"
if [ $isVideo -eq "1" ]; then
- ffmpeg -v warning -y -i "$tmpAudCleanFile" -i "$tmpVidFile" -vcodec copy -qscale:v 0 -qscale:a 0 "$2"
+ ffmpeg -v warning -y -i "$tmpAudCleanFile" -i "$tmpVidFile" -vcodec copy -qscale:v 0 -qscale:a 0 "$2"
else
- cp "$tmpAudCleanFile" "$2"
+ cp "$tmpAudCleanFile" "$2"
fi
printf "Done"
diff --git a/.local/bin/opout b/.local/bin/opout
@@ -7,7 +7,10 @@
basename="${1%.*}"
case "${*}" in
- *.tex|*.sil|*.m[dse]|*.[rR]md|*.mom|*.[0-9]) target="$(getcomproot "$1" || echo "$1")" ; setsid -f xdg-open "${target%.*}".pdf >/dev/null 2>&1 ;;
- *.html) setsid -f "$BROWSER" "$basename".html >/dev/null 2>&1 ;;
- *.sent) setsid -f sent "$1" >/dev/null 2>&1 ;;
+*.tex | *.sil | *.m[dse] | *.[rR]md | *.mom | *.[0-9])
+ target="$(getcomproot "$1" || echo "$1")"
+ setsid -f xdg-open "${target%.*}".pdf >/dev/null 2>&1
+ ;;
+*.html) setsid -f "$BROWSER" "$basename".html >/dev/null 2>&1 ;;
+*.sent) setsid -f sent "$1" >/dev/null 2>&1 ;;
esac
diff --git a/.local/bin/pauseallmpv b/.local/bin/pauseallmpv
@@ -6,5 +6,5 @@
# (with other things) by default and is used in some other places.
for i in $(ls /tmp/mpvSockets/*); do
- echo '{ "command": ["set_property", "pause", true] }' | socat - "$i";
+ echo '{ "command": ["set_property", "pause", true] }' | socat - "$i"
done
diff --git a/.local/bin/queueandnotify b/.local/bin/queueandnotify
@@ -6,9 +6,9 @@
queuefile="${XDG_DATA_HOME:-$HOME/.local/share}/newsboat/queue"
while read -r line; do
- [ -z "$line" ] && continue
- url="${line%%[ ]*}"
- qndl "$url" "curl -LO"
-done < "$queuefile"
+ [ -z "$line" ] && continue
+ url="${line%%[ ]*}"
+ qndl "$url" "curl -LO"
+done <"$queuefile"
-echo > "$queuefile"
+echo >"$queuefile"
diff --git a/.local/bin/randombg b/.local/bin/randombg
@@ -3,33 +3,33 @@ killall swaybg
PIDFILE="/tmp/randombg.pid"
# Check if the PID file exists and if the process is running
if [ -e "$PIDFILE" ] && kill -0 "$(bat "$PIDFILE")"; then
- echo "Another instance of the script is already running."
- kill -9 "$(bat $PIDFILE)" # Forcefully kill the old process
+ echo "Another instance of the script is already running."
+ kill -9 "$(bat $PIDFILE)" # Forcefully kill the old process
fi
-echo $$ > "$PIDFILE"
+echo $$ >"$PIDFILE"
cleanup() {
- [ -n "$OLD_PID" ] && kill "$OLD_PID" 2>/dev/null
- rm -f "$PIDFILE"
- exit 0
+ [ -n "$OLD_PID" ] && kill "$OLD_PID" 2>/dev/null
+ rm -f "$PIDFILE"
+ exit 0
}
trap cleanup INT TERM EXIT
sleep_interruptible() {
- t=$1
- while [ "$t" -gt 0 ]; do
- sleep 1 || return
- t=$((t-1))
- done
+ t=$1
+ while [ "$t" -gt 0 ]; do
+ sleep 1 || return
+ t=$((t - 1))
+ done
}
swaybg -i "$(fd . /mnt/ssd/papes -t f | shuf -n1)" -m fill &
OLD_PID=$!
while true; do
- sleep_interruptible 300
- swaybg -i "$(fd . /mnt/ssd/papes -t f | shuf -n1)" -m fill &
- NEXT_PID=$!
- sleep_interruptible 5
- kill $OLD_PID
- OLD_PID=$NEXT_PID
+ sleep_interruptible 300
+ swaybg -i "$(fd . /mnt/ssd/papes -t f | shuf -n1)" -m fill &
+ NEXT_PID=$!
+ sleep_interruptible 5
+ kill $OLD_PID
+ OLD_PID=$NEXT_PID
done
diff --git a/.local/bin/rssadd b/.local/bin/rssadd
@@ -1,18 +1,18 @@
#!/bin/sh
-if echo "$1" | rg -q "https*://\S\+\.[A-Za-z]\+\S*" ; then
- url="$1"
+if echo "$1" | rg -q "https*://\S\+\.[A-Za-z]\+\S*"; then
+ url="$1"
else
- url="$(rg -Eom1 '<[^>]+(rel="self"|application/[a-z]+\+xml)[^>]+>' "$1" |
- rg -o "https?://[^\" ]")"
+ url="$(rg -Eom1 '<[^>]+(rel="self"|application/[a-z]+\+xml)[^>]+>' "$1" |
+ rg -o "https?://[^\" ]")"
- echo "$url" | rg -q "https*://\S\+\.[A-Za-z]\+\S*" ||
- notify-send "That doesn't look like a full URL." && exit 1
+ echo "$url" | rg -q "https*://\S\+\.[A-Za-z]\+\S*" ||
+ notify-send "That doesn't look like a full URL." && exit 1
fi
-RSSFILE="${XDG_CONFIG_HOME:-$HOME/.config}/newsboat/urls"
+RSSFILE="${XDG_CONFIG_HOME:-$HOME/.config}/newsraft/feeds"
if awk '{print $1}' "$RSSFILE" | rg "^$url$" >/dev/null; then
- notify-send "You already have this RSS feed."
+ notify-send "You already have this RSS feed."
else
- echo "$url" >> "$RSSFILE" && notify-send "RSS feed added."
+ echo "$url" >>"$RSSFILE" && notify-send "RSS feed added."
fi
diff --git a/.local/bin/rssget b/.local/bin/rssget
@@ -12,78 +12,78 @@
# This script requires rssadd to add feeds to the list.
-getlink () {
- local url="$1"
- feeds="$(curl -s "$url" | rg -x '.*type=.*(rss|rdf|atom).*' | sed 's/ //g')"
- url="$(echo $url | sed 's|^\(https://[^/]*/\).*|\1|')"
-
- for rsspath in $feeds; do
- rsspath="$(echo $rsspath | sed -n "s|.*href=['\"]\([^'\"]*\)['\"].*|\1|p")"
- if echo "$rsspath" | rg "http" > /dev/null; then
- link="$rsspath"
- elif echo "$rsspath" | rg "^/" > /dev/null; then
- link="$url$(echo $rsspath | sed 's|^/||')"
- else
- link="$url$rsspath"
- fi
- echo $link
- done
+getlink() {
+ local url="$1"
+ feeds="$(curl -s "$url" | rg -x '.*type=.*(rss|rdf|atom).*' | sed 's/ //g')"
+ url="$(echo $url | sed 's|^\(https://[^/]*/\).*|\1|')"
+
+ for rsspath in $feeds; do
+ rsspath="$(echo $rsspath | sed -n "s|.*href=['\"]\([^'\"]*\)['\"].*|\1|p")"
+ if echo "$rsspath" | rg "http" >/dev/null; then
+ link="$rsspath"
+ elif echo "$rsspath" | rg "^/" >/dev/null; then
+ link="$url$(echo $rsspath | sed 's|^/||')"
+ else
+ link="$url$rsspath"
+ fi
+ echo $link
+ done
}
getRedditRss() {
- echo "${1%/}.rss"
+ echo "${1%/}.rss"
}
getYoutubeRss() {
- local url="$1"
- path=$(echo "$url" | sed -e 's|^http[s]*://||')
- case "$path" in
- *"/channel/"*) channel_id="$(echo $path | sed -r 's|.*channel/([^/]*).*|\1|')" && feed="https://www.youtube.com/feeds/videos.xml?channel_id=${channel_id}" ;;
- *"/c/"*|*"/user/"*)
- feed=$(wget -q "$url" -O tmp_rssget_yt \
- && sed -n 's|.*\("rssUrl":"[^"]*\).*|\1|; p' tmp_rssget_yt \
- | rg rssUrl \
- | sed 's|"rssUrl":"||') ;;
- esac
- echo "$feed"
+ local url="$1"
+ path=$(echo "$url" | sed -e 's|^http[s]*://||')
+ case "$path" in
+ *"/channel/"*) channel_id="$(echo $path | sed -r 's|.*channel/([^/]*).*|\1|')" && feed="https://www.youtube.com/feeds/videos.xml?channel_id=${channel_id}" ;;
+ *"/c/"* | *"/user/"*)
+ feed=$(wget -q "$url" -O tmp_rssget_yt &&
+ sed -n 's|.*\("rssUrl":"[^"]*\).*|\1|; p' tmp_rssget_yt |
+ rg rssUrl |
+ sed 's|"rssUrl":"||')
+ ;;
+ esac
+ echo "$feed"
}
getVimeoRss() {
- local url="$1"
- if echo "$url" | rg -q "/videos$"; then
- feed_url=$(echo "$url" | sed 's/\/videos$//' | sed 's/\/$/\/rss/')
- else
- feed_url="${url}/videos/rss"
- fi
- echo "$feed_url"
+ local url="$1"
+ if echo "$url" | rg -q "/videos$"; then
+ feed_url=$(echo "$url" | sed 's/\/videos$//' | sed 's/\/$/\/rss/')
+ else
+ feed_url="${url}/videos/rss"
+ fi
+ echo "$feed_url"
}
-getGithubRss () {
- local url="${1%/}"
- if echo $url | rg "github.com/[^/]*/[a-zA-Z0-9].*" >/dev/null ; then
- echo "${url}/commits.atom"
- echo "${url}/releases.atom"
- echo "${url}/tags.atom"
- elif echo $url | rg "github.com/[^/]*(/)" >/dev/null ; then
- echo "${url}.atom"
- fi
+getGithubRss() {
+ local url="${1%/}"
+ if echo $url | rg "github.com/[^/]*/[a-zA-Z0-9].*" >/dev/null; then
+ echo "${url}/commits.atom"
+ echo "${url}/releases.atom"
+ echo "${url}/tags.atom"
+ elif echo $url | rg "github.com/[^/]*(/)" >/dev/null; then
+ echo "${url}.atom"
+ fi
}
-getGitlabRss () {
- local url="${1%/}"
- echo "${url}.atom"
+getGitlabRss() {
+ local url="${1%/}"
+ echo "${url}.atom"
}
-getMediumRss () {
- echo $1 | sed 's|/tag/|/feed/|'
+getMediumRss() {
+ echo $1 | sed 's|/tag/|/feed/|'
}
-
-if [ -n "$1" ] ; then
- url="$1"
+if [ -n "$1" ]; then
+ url="$1"
else
- url="$(wl-paste)"
- [ -z "$url" ] && echo "usage: $0 url 'tag1 tag2 tag3'" && exit 1
+ url="$(wl-paste)"
+ [ -z "$url" ] && echo "usage: $0 url 'tag1 tag2 tag3'" && exit 1
fi
declare -a list=()
@@ -91,22 +91,22 @@ declare -a list=()
yt_regex="^(http(s)?://)?((w){3}\.)?(youtube\.com|invidio\.us|invidious\.flokinet\.to|invidious\.materialio\.us|iv\.datura\.network|invidious\.perennialte\.ch|invidious\.fdn\.fr|invidious\.private\.coffee|invidious\.protokolla\.fi|invidious\.privacyredirect\.com|yt\.artemislena\.eu|yt\.drgnz\.club|invidious\.incogniweb\.net|yewtu\.be|inv\.tux\.pizza|invidious\.reallyaweso\.me|iv\.melmac\.space|inv\.us\.projectsegfau\.lt|inv\.nadeko\.net|invidious\.darkness\.services|invidious\.jing\.rocks|invidious\.privacydev\.net|inv\.in\.projectsegfau\.lt|invidious\.drgns\.space)/(channel|user|c).+"
reddit_regex="^(http(s)?://)?((w){3}\.)?reddit\.com.*"
vimeo_regex="^(http(s)?://)?((w){3}.)?vimeo\.com.*"
-if echo $url | rg -x "$yt_regex" >/dev/null ; then
- list="$(getYoutubeRss "$url")"
-elif echo $url | rg -x "$reddit_regex" >/dev/null ; then
- list="$(getRedditRss "$url")"
+if echo $url | rg -x "$yt_regex" >/dev/null; then
+ list="$(getYoutubeRss "$url")"
+elif echo $url | rg -x "$reddit_regex" >/dev/null; then
+ list="$(getRedditRss "$url")"
# vimeo actually works with getlink
-elif echo $url | rg "$vimeo_regex" >/dev/null ; then
- list="$(getVimeoRss "$url")"
-elif echo $url | rg "github.com" >/dev/null ; then
- list="$(getGithubRss "$url")"
+elif echo $url | rg "$vimeo_regex" >/dev/null; then
+ list="$(getVimeoRss "$url")"
+elif echo $url | rg "github.com" >/dev/null; then
+ list="$(getGithubRss "$url")"
# gitlab also works with getlink
-elif echo $url | rg "gitlab.com/[a-zA-Z0-9].*" >/dev/null ; then
- list="$(getGitlabRss "$url")"
-elif echo $url | rg "medium.com/tag" >/dev/null ; then
- list="$(getMediumRss "$url")"
+elif echo $url | rg "gitlab.com/[a-zA-Z0-9].*" >/dev/null; then
+ list="$(getGitlabRss "$url")"
+elif echo $url | rg "medium.com/tag" >/dev/null; then
+ list="$(getMediumRss "$url")"
else
- list="$(getlink "$url")"
+ list="$(getlink "$url")"
fi
[ "$(echo "$list" | wc -l)" -eq 1 ] && chosen_link="$list" || chosen_link=$(printf '%s\n' "${list[@]}" | mew -p "Choose a feed:")
diff --git a/.local/bin/sd b/.local/bin/sd
@@ -5,18 +5,18 @@
windowPID=$(swaymsg --raw -t get_tree | jq -r '.. | select(type == "object" and .focused == true) | .pid')
PIDlist=$(pstree -lpATna "$windowPID" | sed -En 's/.*,([0-9]+).*/\1/p' | tac)
for PID in $PIDlist; do
- cmdline=$(ps -o args= -p "$PID")
- process_group_leader=$(ps -o comm= -p "$(ps -o pgid= -p "$PID" | tr -d ' ')")
- cwd=$(readlink /proc/"$PID"/cwd)
- # zsh and yazi won't be ignored even if it shows ~ or /
- case "$cmdline" in
- 'Yazi') continue ;;
- "${SHELL##*/}"|'yazi'|'yazi '*) break ;;
- esac
- # git (and its sub-processes) will show the root of a repository instead of the actual cwd, so they're ignored
- [ "$process_group_leader" = 'git' ] || [ ! -d "$cwd" ] && continue
- # This is to ignore programs that show ~ or / instead of the actual working directory
- [ "$cwd" != "$HOME" ] && [ "$cwd" != '/' ] && break
+ cmdline=$(ps -o args= -p "$PID")
+ process_group_leader=$(ps -o comm= -p "$(ps -o pgid= -p "$PID" | tr -d ' ')")
+ cwd=$(readlink /proc/"$PID"/cwd)
+ # zsh and yazi won't be ignored even if it shows ~ or /
+ case "$cmdline" in
+ 'Yazi') continue ;;
+ "${SHELL##*/}" | 'yazi' | 'yazi '*) break ;;
+ esac
+ # git (and its sub-processes) will show the root of a repository instead of the actual cwd, so they're ignored
+ [ "$process_group_leader" = 'git' ] || [ ! -d "$cwd" ] && continue
+ # This is to ignore programs that show ~ or / instead of the actual working directory
+ [ "$cwd" != "$HOME" ] && [ "$cwd" != '/' ] && break
done
[ "$PWD" != "$cwd" ] && [ -d "$cwd" ] && { cd "$cwd" || exit 1; }
"$TERMINAL"
diff --git a/.local/bin/setbg b/.local/bin/setbg
@@ -15,25 +15,28 @@ zathuraconf="${XDG_CONFIG_HOME:-$HOME/.config}/zathura/zathurarc"
# Give -s as parameter to make notifications silent.
while getopts "s" o; do case "${o}" in
- s) silent='1' ;;
-esac done
+ s) silent='1' ;;
+ esac done
shift $((OPTIND - 1))
trueloc="$(readlink -f "$1")" &&
-case "$(file --mime-type -b "$trueloc")" in
- image/* ) ln -sf "$trueloc" "$bgloc" && [ -z "$silent" ] && notify-send -i "$bgloc" "Changing wallpaper..." ;;
- inode/directory ) ln -sf "$(find "$trueloc" -iregex '.*.\(jpg\|jpeg\|png\|gif\)' -type f | shuf -n 1)" "$bgloc" && [ -z "$silent" ] && notify-send -i "$bgloc" "Random Wallpaper chosen." ;;
- *) [ -z "$silent" ] && notify-send "🖼️ Error" "Not a valid image or directory." ; exit 1;;
-esac
+ case "$(file --mime-type -b "$trueloc")" in
+ image/*) ln -sf "$trueloc" "$bgloc" && [ -z "$silent" ] && notify-send -i "$bgloc" "Changing wallpaper..." ;;
+ inode/directory) ln -sf "$(find "$trueloc" -iregex '.*.\(jpg\|jpeg\|png\|gif\)' -type f | shuf -n 1)" "$bgloc" && [ -z "$silent" ] && notify-send -i "$bgloc" "Random Wallpaper chosen." ;;
+ *)
+ [ -z "$silent" ] && notify-send "🖼️ Error" "Not a valid image or directory."
+ exit 1
+ ;;
+ esac
# If pywal is installed, use it.
-if command -v wal >/dev/null 2>&1 ; then
- wal -n -i "$(readlink -f $bgloc)" -o "${XDG_CONFIG_HOME:-$HOME/.config}/wal/postrun" >/dev/null 2>&1
+if command -v wal >/dev/null 2>&1; then
+ wal -n -i "$(readlink -f $bgloc)" -o "${XDG_CONFIG_HOME:-$HOME/.config}/wal/postrun" >/dev/null 2>&1
# If pywal is removed, return config files to normal.
else
- [ -f "$dunstconf.bak" ] && unlink "$dunstconf" && mv "$dunstconf.bak" "$dunstconf"
- [ -f "$zathuraconf.bak" ] && unlink "$zathuraconf" && mv "$zathuraconf.bak" "$zathuraconf"
+ [ -f "$dunstconf.bak" ] && unlink "$dunstconf" && mv "$dunstconf.bak" "$dunstconf"
+ [ -f "$zathuraconf.bak" ] && unlink "$zathuraconf" && mv "$zathuraconf.bak" "$zathuraconf"
fi
killall swaybg
diff --git a/.local/bin/shortcuts b/.local/bin/shortcuts
@@ -16,14 +16,14 @@ yazi_shortcuts="${XDG_CONFIG_HOME:-$HOME/.config}/yazi/keymap.toml"
# Remove, prepare files
rm -f "$lf_shortcuts" "$qute_shortcuts" "$zsh_named_dirs" "$vim_shortcuts" "$yazi_shortcuts" 2>/dev/null
-printf "# vim: filetype=sh\\n" > "$fish_shortcuts"
-printf "# vim: filetype=sh\\nalias " > "$shell_shortcuts"
-printf "# vim: filetype=sh\\n" > "$shell_env_shortcuts"
-printf "\" vim: filetype=vim\\n" > "$vifm_shortcuts"
+printf "# vim: filetype=sh\\n" >"$fish_shortcuts"
+printf "# vim: filetype=sh\\nalias " >"$shell_shortcuts"
+printf "# vim: filetype=sh\\n" >"$shell_env_shortcuts"
+printf "\" vim: filetype=vim\\n" >"$vifm_shortcuts"
# Format the `directories` file in the correct syntax and sent it to all three configs.
-eval "echo \"$(bat "$bmdirs")\"" | \
-awk "!/^\s*#/ && !/^\s*\$/ {gsub(\"\\\s*#.*$\",\"\");
+eval "echo \"$(bat "$bmdirs")\"" |
+ awk "!/^\s*#/ && !/^\s*\$/ {gsub(\"\\\s*#.*$\",\"\");
printf(\"%s=\42cd %s && ls -A\42 \\\\\n\",\$1,\$2) >> \"$shell_shortcuts\" ;
printf(\"[ -n \42%s\42 ] && export %s=\42%s\42 \n\",\$1,\$1,\$2) >> \"$shell_env_shortcuts\" ;
printf(\"hash -d %s=%s \n\",\$1,\$2) >> \"$zsh_named_dirs\" ;
@@ -41,8 +41,8 @@ awk "!/^\s*#/ && !/^\s*\$/ {gsub(\"\\\s*#.*$\",\"\");
printf(\"[[mgr.prepend_keymap]]\\non = [\\\"g\\\", %s]\\nrun = \\\"cd %s\\\"\\n\\n\", chars, \$2) >> \"$yazi_shortcuts\" }"
# Format the `files` file in the correct syntax and sent it to both configs.
-eval "echo \"$(bat "$bmfiles")\"" | \
-awk "!/^\s*#/ && !/^\s*\$/ {gsub(\"\\\s*#.*$\",\"\");
+eval "echo \"$(bat "$bmfiles")\"" |
+ awk "!/^\s*#/ && !/^\s*\$/ {gsub(\"\\\s*#.*$\",\"\");
printf(\"%s=\42\$EDITOR %s\42 \\\\\n\",\$1,\$2) >> \"$shell_shortcuts\" ;
printf(\"[ -n \42%s\42 ] && export %s=\42%s\42 \n\",\$1,\$1,\$2) >> \"$shell_env_shortcuts\" ;
printf(\"hash -d %s=%s \n\",\$1,\$2) >> \"$zsh_named_dirs\" ;
diff --git a/.local/bin/singboxwrap b/.local/bin/singboxwrap
@@ -5,18 +5,19 @@ default_path="${XDG_DATA_HOME:-$HOME/.local/share}/singboxcfg"
input=$1
-run_singbox () {
+run_singbox() {
[ -z "${1}" ] && exit
sing-box check -c "$1" && {
pidof sing-box >/dev/null && killall sing-box
- setsid -f sing-box -c "$1" run
- if [ "$input" = menu ]; then
- notify-send "sing-box with $(readlink "$1") is running now"
- fi
- } || notify-send "Config check has failed. Check your configuration at $(readlink $1)" & exit 1
+ setsid -f sing-box -c "$1" run
+ if [ "$input" = menu ]; then
+ notify-send "sing-box with $(readlink "$1") is running now"
+ fi
+ } || notify-send "Config check has failed. Check your configuration at $(readlink "$1")" &
+ exit 1
}
-choose_menu () {
+choose_menu() {
choose="$(fd . $config_dir -d 1 -t f | mew -p "Config to use")"
[ -z "${choose}" ] && exit
ln -sf "$choose" "$default_path"
@@ -28,6 +29,6 @@ if [ ! -f "$default_path" ]; then
fi
case $input in
- menu) run_singbox $(choose_menu) ;;
- *) run_singbox $default_path ;;
+menu) run_singbox "$(choose_menu)" ;;
+*) run_singbox "$default_path" ;;
esac
diff --git a/.local/bin/slider b/.local/bin/slider
@@ -10,26 +10,30 @@
cache="${XDG_CACHE_HOME:-$HOME/.cache}/slider"
while getopts "hvrpi:c:a:o:d:f:t:e:x:s:" o; do case "${o}" in
- c) bgc="$OPTARG" ;;
- t) fgc="$OPTARG" ;;
- f) font="$OPTARG" ;;
- i) file="$OPTARG" ;;
- a) audio="$OPTARG" ;;
- o) outfile="$OPTARG" ;;
- d) prepdir="$OPTARG" ;;
- r) redo="$OPTARG" ;;
- s) ppt="$OPTARG" ;;
- e) endtime="$OPTARG" ;;
- x) res="$OPTARG"
- echo "$res" | rg -qv "^[0-9]\+x[0-9]\+$" &&
- echo "Resolution must be dimensions separated by a 'x': 1280x720, etc." &&
- exit 1 ;;
- p) echo "Purge old build files in $cache? [y/N]"
- read -r confirm
- echo "$confirm" | rg -iq "^y$" && rm -rf "$cache" && echo "Done."
- exit ;;
- v) verbose=True ;;
- *) echo "$(basename "$0") usage:
+ c) bgc="$OPTARG" ;;
+ t) fgc="$OPTARG" ;;
+ f) font="$OPTARG" ;;
+ i) file="$OPTARG" ;;
+ a) audio="$OPTARG" ;;
+ o) outfile="$OPTARG" ;;
+ d) prepdir="$OPTARG" ;;
+ r) redo="$OPTARG" ;;
+ s) ppt="$OPTARG" ;;
+ e) endtime="$OPTARG" ;;
+ x)
+ res="$OPTARG"
+ echo "$res" | rg -qv "^[0-9]\+x[0-9]\+$" &&
+ echo "Resolution must be dimensions separated by a 'x': 1280x720, etc." &&
+ exit 1
+ ;;
+ p)
+ echo "Purge old build files in $cache? [y/N]"
+ read -r confirm
+ echo "$confirm" | rg -iq "^y$" && rm -rf "$cache" && echo "Done."
+ exit
+ ;;
+ v) verbose=True ;;
+ *) echo "$(basename "$0") usage:
-i input timecode list (required)
-a audio file
-c color of background (use html names, black is default)
@@ -42,14 +46,14 @@ while getopts "hvrpi:c:a:o:d:f:t:e:x:s:" o; do case "${o}" in
-d tmp directory
-r rerun imagemagick commands even if done previously (in case files or background has changed)
-p purge old build files instead of running
- -v be verbose" && exit 1
+ -v be verbose" && exit 1 ;;
-esac done
+ esac done
# Check that the input file looks like it should.
-{ head -n 1 "$file" 2>/dev/null | rg -q "^00:00:00 " ;} || {
- echo "Give an input file with -i." &&
- echo "The file should look as this example:
+{ head -n 1 "$file" 2>/dev/null | rg -q "^00:00:00 "; } || {
+ echo "Give an input file with -i." &&
+ echo "The file should look as this example:
00:00:00 first_image.jpg
00:00:03 otherdirectory/next_image.jpg
@@ -57,16 +61,19 @@ esac done
etc...
Timecodes and filenames must be separated by Tabs." &&
- exit 1
- }
+ exit 1
+}
if [ -n "${audio+x}" ]; then
- # Check that the audio file looks like an actual audio file.
- case "$(file --dereference --brief --mime-type -- "$audio")" in
- audio/*) ;;
- *) echo "That doesn't look like an audio file."; exit 1 ;;
- esac
- totseconds="$(date '+%s' -d $(ffmpeg -i "$audio" 2>&1 | awk '/Duration/ {print $2}' | sed s/,//))"
+ # Check that the audio file looks like an actual audio file.
+ case "$(file --dereference --brief --mime-type -- "$audio")" in
+ audio/*) ;;
+ *)
+ echo "That doesn't look like an audio file."
+ exit 1
+ ;;
+ esac
+ totseconds="$(date '+%s' -d $(ffmpeg -i "$audio" 2>&1 | awk '/Duration/ {print $2}' | sed s/,//))"
fi
prepdir="${prepdir:-$cache/$file}"
@@ -77,48 +84,47 @@ prepfile="$prepdir/$file.prep"
mkdir -p "$prepdir"
{
-while read -r x;
-do
- # Get the time from the first column.
- time="${x%% *}"
- seconds="$(date '+%s' -d "$time")"
- # Duration is not used on the first looped item.
- duration="$((seconds - prevseconds))"
-
- # Get the filename/text content from the rest.
- content="${x#* }"
- base="$(basename "$content")"
- base="${base%.*}.jpg"
-
- if [ -f "$content" ]; then
- # If images have already been made in a previous run, do not recreate
- # them unless -r was given.
- { [ ! -f "$prepdir/$base" ] || [ -n "${redo+x}" ] ;} &&
- magick -size "${res:-1920x1080}" canvas:"${bgc:-black}" -gravity center "$content" -resize 1920x1080 -composite "$prepdir/$base"
- else
- { [ ! -f "$prepdir/$base" ] || [ -n "${redo+x}" ] ;} &&
- magick -size "${res:-1920x1080}" -background "${bgc:-black}" -fill "${fgc:-white}" -font "${font:-Sans}" -pointsize "${ppt:-150}" -gravity center label:"$content" "$prepdir/$base"
- fi
-
- # If the first line, do not write yet.
- [ "$time" = "00:00:00" ] || echo "file '$prevbase'
+ while read -r x; do
+ # Get the time from the first column.
+ time="${x%% *}"
+ seconds="$(date '+%s' -d "$time")"
+ # Duration is not used on the first looped item.
+ duration="$((seconds - prevseconds))"
+
+ # Get the filename/text content from the rest.
+ content="${x#* }"
+ base="$(basename "$content")"
+ base="${base%.*}.jpg"
+
+ if [ -f "$content" ]; then
+ # If images have already been made in a previous run, do not recreate
+ # them unless -r was given.
+ { [ ! -f "$prepdir/$base" ] || [ -n "${redo+x}" ]; } &&
+ magick -size "${res:-1920x1080}" canvas:"${bgc:-black}" -gravity center "$content" -resize 1920x1080 -composite "$prepdir/$base"
+ else
+ { [ ! -f "$prepdir/$base" ] || [ -n "${redo+x}" ]; } &&
+ magick -size "${res:-1920x1080}" -background "${bgc:-black}" -fill "${fgc:-white}" -font "${font:-Sans}" -pointsize "${ppt:-150}" -gravity center label:"$content" "$prepdir/$base"
+ fi
+
+ # If the first line, do not write yet.
+ [ "$time" = "00:00:00" ] || echo "file '$prevbase'
duration $duration"
- # Keep the information required for the next file.
- prevbase="$base"
- prevtime="$time"
- prevseconds="$(date '+%s' -d "$prevtime")"
-done < "$file"
-# Do last file which must be given twice as follows
-endtime="$((totseconds-seconds))"
-echo "file '$base'
+ # Keep the information required for the next file.
+ prevbase="$base"
+ prevtime="$time"
+ prevseconds="$(date '+%s' -d "$prevtime")"
+ done <"$file"
+ # Do last file which must be given twice as follows
+ endtime="$((totseconds - seconds))"
+ echo "file '$base'
duration ${endtime:-5}
file '$base'"
-} > "$prepfile"
+} >"$prepfile"
if [ -n "${audio+x}" ]; then
- ffmpeg -hide_banner -y -f concat -safe 0 -i "$prepfile" -i "$audio" -c:a aac -vsync vfr -c:v libx264 -pix_fmt yuv420p "$outfile"
+ ffmpeg -hide_banner -y -f concat -safe 0 -i "$prepfile" -i "$audio" -c:a aac -vsync vfr -c:v libx264 -pix_fmt yuv420p "$outfile"
else
- ffmpeg -hide_banner -y -f concat -safe 0 -i "$prepfile" -vsync vfr -c:v libx264 -pix_fmt yuv420p "$outfile"
+ ffmpeg -hide_banner -y -f concat -safe 0 -i "$prepfile" -vsync vfr -c:v libx264 -pix_fmt yuv420p "$outfile"
fi
# Might also try:
diff --git a/.local/bin/spec b/.local/bin/spec
@@ -1,20 +1,22 @@
#!/bin/sh
+# Creates a spectrogram image from an audio file using FFmpeg
+# and opens it with the preferred image viewer.
me=$(basename "$0")
-if [ -z "$1" ] ; then
- exit 1;
+if [ -z "$1" ]; then
+ exit 1
fi
TEMP=$(mktemp -u -t "${me}" 2>/dev/null || mktemp -u -t "${me}"-XXXXXXXXXX)
TEMPIMG="${TEMP}.png"
TEMPTXT="${TEMP}.txt"
-basename "$1" > "${TEMPTXT}"
+basename "$1" >"${TEMPTXT}"
ffmpeg -v quiet -y -i "$1" -filter_complex showspectrumpic=s=2560x1024,drawtext="expansion=none:textfile='${TEMPTXT}':x=(w-tw)/2:y=16:fontcolor='white':fontsize=20" "$TEMPIMG"
exitcode=$?
-if [ $exitcode -ne 0 ] ; then
+if [ $exitcode -ne 0 ]; then
rm "$TEMPTXT"
exit $exitcode
fi
diff --git a/.local/bin/statusbar/sb-microphone b/.local/bin/statusbar/sb-microphone
@@ -1,11 +1,14 @@
#!/bin/sh
case $BLOCK_BUTTON in
- 1) setsid -w -f "$TERMINAL" -e pulsemixer; pkill -RTMIN+23 "${STATUSBAR:-i3blocks}" ;;
- 2) wpctl set-mute @DEFAULT_SOURCE@ toggle ;;
- 4) wpctl set-volume @DEFAULT_SOURCE@ 1%+ ;;
- 5) wpctl set-volume @DEFAULT_SOURCE@ 1%- ;;
- 8) setsid -f "$TERMINAL" -e "$EDITOR" "$0" >/dev/null 2>&1 ;;
+1)
+ setsid -w -f "$TERMINAL" -e pulsemixer
+ pkill -RTMIN+23 "${STATUSBAR:-i3blocks}"
+ ;;
+2) wpctl set-mute @DEFAULT_SOURCE@ toggle ;;
+4) wpctl set-volume @DEFAULT_SOURCE@ 1%+ ;;
+5) wpctl set-volume @DEFAULT_SOURCE@ 1%- ;;
+8) setsid -f "$TERMINAL" -e "$EDITOR" "$0" >/dev/null 2>&1 ;;
esac
vol="$(wpctl get-volume @DEFAULT_AUDIO_SOURCE@)"
@@ -15,10 +18,10 @@ vol="$(wpctl get-volume @DEFAULT_AUDIO_SOURCE@)"
vol="${vol#Volume: }"
split() {
- # For ommiting the . without calling and external program.
- IFS=$2
- set -- $1
- printf '%s' "$@"
+ # For ommiting the . without calling and external program.
+ IFS=$2
+ set -- $1
+ printf '%s' "$@"
}
vol="$(printf "%.0f" "$(split "$vol" ".")")"
diff --git a/.local/bin/statusbar/sb-news b/.local/bin/statusbar/sb-news
@@ -1,16 +1,16 @@
#!/bin/sh
case $BLOCK_BUTTON in
- 1) setsid "$TERMINAL" -T newsraft -e newsraft >/dev/null 2>&1 ;;
- 2) setsid -f newsup >/dev/null && exit ;;
- 8) setsid -f "$TERMINAL" -e "$EDITOR" "$0" >/dev/null 2>&1 ;;
+1) setsid "$TERMINAL" -T newsraft -e newsraft >/dev/null 2>&1 ;;
+2) setsid -f newsup >/dev/null && exit ;;
+8) setsid -f "$TERMINAL" -e "$EDITOR" "$0" >/dev/null 2>&1 ;;
esac
if [ ! -f /tmp/newsupdate ]; then
- count=$(newsraft -e print-unread-items-count)
- if [ "$count" != 0 ]; then
- printf "%s\n" "$count"
- fi
+ count=$(newsraft -e print-unread-items-count)
+ if [ "$count" != 0 ]; then
+ printf "%s\n" "$count"
+ fi
else
- cat /tmp/newsupdate 2>/dev/null
+ cat /tmp/newsupdate 2>/dev/null
fi
diff --git a/.local/bin/statusbar/sb-pacpackages b/.local/bin/statusbar/sb-pacpackages
@@ -1,9 +1,9 @@
#!/bin/sh
case $BLOCK_BUTTON in
- 1) setsid -f "$TERMINAL" -e sb-popupgrade >/dev/null 2>&1 ;;
- 2) notify-send "$(/usr/bin/pacman -Qu)" ;;
- 8) setsid -f "$TERMINAL" -e "$EDITOR" "$0" >/dev/null 2>&1 ;;
+1) setsid -f "$TERMINAL" -e sb-popupgrade >/dev/null 2>&1 ;;
+2) notify-send "$(/usr/bin/pacman -Qu)" ;;
+8) setsid -f "$TERMINAL" -e "$EDITOR" "$0" >/dev/null 2>&1 ;;
esac
pacman -Qu | rg -Fcv "[ignored]" | sed "s/^//;s/^📦0$//g"
diff --git a/.local/bin/sysact b/.local/bin/sysact
@@ -3,17 +3,17 @@
# A mew wrapper script for system functions.
export WM="sway"
case "$(readlink -f /sbin/init)" in
- *systemd*) ctl='systemctl' ;;
- *) ctl='loginctl' ;;
+*systemd*) ctl='systemctl' ;;
+*) ctl='loginctl' ;;
esac
-wmpid(){ # This function is needed if there are multiple instances of the window manager.
+wmpid() { # This function is needed if there are multiple instances of the window manager.
tree="$(pstree -ps $$)"
tree="${tree#*$WM(}"
echo "${tree%%)*}"
}
-lock(){
+lock() {
mpc pause
pauseallmpv
wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
@@ -24,13 +24,13 @@ lock(){
}
case "$(printf "🔒 lock\n🚪 leave $WM\n♻️ renew $WM\n🐻 hibernate\n🔃 reboot\n🖥 shutdown\n💤 sleep\n📺 display off" | mew -i -p 'Action: ')" in
- '🔒 lock') lock ;;
- "🚪 leave $WM") swaymsg exit ;;
- "♻️ renew $WM") swaymsg reload ;;
- '🐻 hibernate') $ctl hibernate -i ;;
- '💤 sleep') $ctl suspend -i ;;
- '🔃 reboot') $ctl reboot -i ;;
- '🖥️shutdown') $ctl poweroff -i ;;
- '📺 display off') xset dpms force off ;;
- *) exit 1 ;;
+'🔒 lock') lock ;;
+"🚪 leave $WM") swaymsg exit ;;
+"♻️ renew $WM") swaymsg reload ;;
+'🐻 hibernate') $ctl hibernate -i ;;
+'💤 sleep') $ctl suspend -i ;;
+'🔃 reboot') $ctl reboot -i ;;
+'🖥️shutdown') $ctl poweroff -i ;;
+'📺 display off') xset dpms force off ;;
+*) exit 1 ;;
esac
diff --git a/.local/bin/tag b/.local/bin/tag
@@ -11,19 +11,19 @@ Options:
-d: year of publication
-g: genre
-c: comment
-You will be prompted for title, artist, album and track if not given." && exit 1 ;}
+You will be prompted for title, artist, album and track if not given." && exit 1; }
while getopts "a:t:A:n:N:d:g:c:" o; do case "${o}" in
- a) artist="${OPTARG}" ;;
- t) title="${OPTARG}" ;;
- A) album="${OPTARG}" ;;
- n) track="${OPTARG}" ;;
- N) total="${OPTARG}" ;;
- d) date="${OPTARG}" ;;
- g) genre="${OPTARG}" ;;
- c) comment="${OPTARG}" ;;
- *) printf "Invalid option: -%s\\n" "$OPTARG" && err ;;
-esac done
+ a) artist="${OPTARG}" ;;
+ t) title="${OPTARG}" ;;
+ A) album="${OPTARG}" ;;
+ n) track="${OPTARG}" ;;
+ N) total="${OPTARG}" ;;
+ d) date="${OPTARG}" ;;
+ g) genre="${OPTARG}" ;;
+ c) comment="${OPTARG}" ;;
+ *) printf "Invalid option: -%s\\n" "$OPTARG" && err ;;
+ esac done
shift $((OPTIND - 1))
@@ -40,10 +40,10 @@ trap 'rm -f $temp' HUP INT QUIT TERM PWR EXIT
[ -z "$track" ] && echo 'Enter a track number.' && read -r track
cp -f "$file" "$temp" && ffmpeg -i "$temp" -map 0 -y -codec copy \
- -metadata title="$title" \
- -metadata album="$album" \
- -metadata artist="$artist" \
- -metadata track="${track}${total:+/"$total"}" \
- ${date:+-metadata date="$date"} \
- ${genre:+-metadata genre="$genre"} \
- ${comment:+-metadata comment="$comment"} "$file"
+ -metadata title="$title" \
+ -metadata album="$album" \
+ -metadata artist="$artist" \
+ -metadata track="${track}${total:+/"$total"}" \
+ ${date:+-metadata date="$date"} \
+ ${genre:+-metadata genre="$genre"} \
+ ${comment:+-metadata comment="$comment"} "$file"
diff --git a/.local/bin/td-toggle b/.local/bin/td-toggle
@@ -2,11 +2,10 @@
# If transmission-daemon is running, will ask to kill, else will ask to start.
-if pidof transmission-daemon >/dev/null ;
-then
- [ "$(printf "No\\nYes" | mew -i -p "Turn off transmission-daemon?")" = "Yes" ] && killall transmission-daemon && notify-send "transmission-daemon disabled."
+if pidof transmission-daemon >/dev/null; then
+ [ "$(printf "No\\nYes" | mew -i -p "Turn off transmission-daemon?")" = "Yes" ] && killall transmission-daemon && notify-send "transmission-daemon disabled."
else
- ifinstalled transmission-cli || exit
- [ "$(printf "No\\nYes" | mew -i -p "Turn on transmission daemon?")" = "Yes" ] && transmission-daemon && notify-send "transmission-daemon enabled."
+ ifinstalled transmission-cli || exit
+ [ "$(printf "No\\nYes" | mew -i -p "Turn on transmission daemon?")" = "Yes" ] && transmission-daemon && notify-send "transmission-daemon enabled."
fi
sleep 3 && pkill -RTMIN+7 "${STATUSBAR:-i3blocks}"
diff --git a/.local/bin/torwrap b/.local/bin/torwrap
@@ -4,4 +4,5 @@ ifinstalled stig transmission-cli || exit 1
! pidof transmission-daemon >/dev/null && transmission-daemon && notify-send "Starting torrent daemon..."
-$TERMINAL -e stig; pkill -RTMIN+7 "${STATUSBAR:-i3blocks}"
+$TERMINAL -e stig
+pkill -RTMIN+7 "${STATUSBAR:-i3blocks}"
diff --git a/.local/bin/unix b/.local/bin/unix
@@ -3,7 +3,7 @@
#original artwork by http://www.sanderfocus.nl/#/portfolio/tech-heroes
#converted to shell by #nixers @ irc.unix.chat
-bat << 'eof'
+bat <<'eof'
[38;5;255m,_ ,_==▄▂[0m
[38;5;255m, ▂▃▄▄▅▅[48;5;240m▅[48;5;20m▂[48;5;240m▅¾[0m. [38;5;199m/ [38;5;20m/[0m
[38;5;255m[48;5;20m▄[0m[38;5;255m[48;5;199m▆[38;5;16m[48;5;255m<´ [38;5;32m"[38;5;34m»[38;5;255m▓▓[48;5;32m▓[48;5;240m%[0m\ [38;5;199m/ [38;5;20m/ [38;5;45m/ [38;5;118m/[0m
diff --git a/.local/bin/weath b/.local/bin/weath
@@ -6,20 +6,20 @@
report="${XDG_CACHE_HOME:-$HOME/.cache}/weatherreport"
if [ "$1" = 'cp' ]; then
- # shellcheck disable=SC2015
- [ -z "$2" ] && sed 's/\x1b\[[^m]*m//g' "$report" | wl-copy &&
- notify-send "Weather forecast for '${LOCATION:-$(head -n 1 "$report" | cut -d' ' -f3-)}' copied to clipboard." ||
- { data="$(curl -sfm 5 "${WTTRURL:-wttr.in}/$2?T")" &&
- notify-send "Weather forecast for '$2' copied to clipboard." &&
- echo "$data" | wl-copy ||
- notify-send 'Failed to get weather forecast!' 'Check your internet connection and the supplied location.'; }
+ # shellcheck disable=SC2015
+ [ -z "$2" ] && sed 's/\x1b\[[^m]*m//g' "$report" | wl-copy &&
+ notify-send "Weather forecast for '${LOCATION:-$(head -n 1 "$report" | cut -d' ' -f3-)}' copied to clipboard." ||
+ { data="$(curl -sfm 5 "${WTTRURL:-wttr.in}/$2?T")" &&
+ notify-send "Weather forecast for '$2' copied to clipboard." &&
+ echo "$data" | wl-copy ||
+ notify-send 'Failed to get weather forecast!' 'Check your internet connection and the supplied location.'; }
else
- [ -n "$2" ] &&
- notify-send "Invalid option '$1'! The only valid option is 'cp'." &&
- exit 1
+ [ -n "$2" ] &&
+ notify-send "Invalid option '$1'! The only valid option is 'cp'." &&
+ exit 1
- # shellcheck disable=SC2015
- [ -z "$1" ] && less -S "$report" ||
- data="$(curl -sfm 5 "${WTTRURL:-wttr.in}/$1")" && echo "$data" | less -S ||
- notify-send 'Failed to get weather forecast!' 'Check your internet connection and the supplied location.'
+ # shellcheck disable=SC2015
+ [ -z "$1" ] && less -S "$report" ||
+ data="$(curl -sfm 5 "${WTTRURL:-wttr.in}/$1")" && echo "$data" | less -S ||
+ notify-send 'Failed to get weather forecast!' 'Check your internet connection and the supplied location.'
fi
diff --git a/rice.sh b/rice.sh
@@ -2,8 +2,8 @@
set -e
WORKDIRECTORY=$PWD
-if [ "$(id -u)" -ne 0 ]
- then printf "The script has to be run as root.\n"
+if [ "$(id -u)" -ne 0 ]; then
+ printf "The script has to be run as root.\n"
exit
fi
@@ -11,8 +11,8 @@ if [ -x "$(command -v doas)" ]; then
PERMUSER=$DOAS_USER
evalcommand="doas -u $PERMUSER"
cp /etc/doas.conf /etc/doas.bak
- echo "permit nopass :wheel" > /etc/doas.conf
- echo "permit nopass root" >> /etc/doas.conf
+ echo "permit nopass :wheel" >/etc/doas.conf
+ echo "permit nopass root" >>/etc/doas.conf
else
PERMUSER=$SUDO_USER
evalcommand="sudo -u $PERMUSER"
@@ -24,9 +24,9 @@ run_as_user() {
$evalcommand "$@"
}
-usermod -aG seat $PERMUSER
+usermod -aG seat "$PERMUSER"
-DEPLIST="`sed -e 's/#.*$//' -e '/^$/d' dependencies.txt | tr '\n' ' '`"
+DEPLIST="$(sed -e 's/#.*$//' -e '/^$/d' dependencies.txt | tr '\n' ' ')"
pacman -S $DEPLIST --noconfirm --needed
run_as_user git submodule update --init --recursive
@@ -53,14 +53,14 @@ run_as_user mkdir -p /home/"$PERMUSER"/.ssh
run_as_user mkdir -p /home/"$PERMUSER"/.gnupg
run_as_user touch /home/"$PERMUSER"/.gnupg/gpg-agent.conf
-cat <<EOL >> /home/$PERMUSER/.gnupg/gpg-agent.conf
+cat <<EOL >>/home/$PERMUSER/.gnupg/gpg-agent.conf
enable-ssh-support
pinentry-program /usr/bin/pinentry-gnome3
default-cache-ttl 34560000
max-cache-ttl 34560000
EOL
-cat <<EOL >> /home/$PERMUSER/.config/npm/npmrc
+cat <<EOL >>/home/$PERMUSER/.config/npm/npmrc
prefix=\${XDG_DATA_HOME}/npm
cache=\${XDG_CACHE_HOME}/npm
init-module=\${XDG_CONFIG_HOME}/npm/config/npm-init.js
@@ -89,7 +89,7 @@ if [ -x "$(command -v doas)" ]; then
sed -i 's/#PACMAN_AUTH=.*$/PACMAN_AUTH=(doas)/' /etc/makepkg.conf
fi
-cat <<EOL >> /usr/share/libalpm/hooks/statusbar.hook
+cat <<EOL >>/usr/share/libalpm/hooks/statusbar.hook
[Trigger]
Operation = Upgrade
Type = Package
@@ -101,7 +101,7 @@ When = PostTransaction
Exec = /usr/bin/pkill -RTMIN+8 i3blocks
EOL
-cat <<EOL >> /etc/pacman.d/hooks/sing-box.hook
+cat <<EOL >>/etc/pacman.d/hooks/sing-box.hook
[Trigger]
Type = Package
Operation = Install
@@ -118,7 +118,7 @@ run_as_user git clone https://aur.archlinux.org/paru.git
cd paru
run_as_user makepkg -csi --noconfirm
cd "$WORKDIRECTORY"
-DEPLIST="`sed -e 's/#.*$//' -e '/^$/d' aurdeps.txt | tr '\n' ' '`"
+DEPLIST="$(sed -e 's/#.*$//' -e '/^$/d' aurdeps.txt | tr '\n' ' ')"
run_as_user paru --sudo doas -S $DEPLIST --noconfirm
run_as_user dbus-launch gsettings set org.gnome.desktop.interface gtk-theme "Gruvbox-Yellow-Dark-Medium"
run_as_user dbus-launch gsettings set org.gnome.desktop.interface icon-theme "Gruvbox-Dark"
@@ -158,7 +158,7 @@ config_dir="/home/$PERMUSER/.config/mpv"
scriptopts_dir="$config_dir/script-opts"
run_as_user mkdir -p "$config_dir/scripts"
-run_as_user mkdir -p $scriptopts_dir || echo "Couldn't create: $scriptopts_dir"
+run_as_user mkdir -p "$scriptopts_dir" || echo "Couldn't create: $scriptopts_dir"
# thumbfast
run_as_user curl -Ls -o "$config_dir/scripts/thumbfast.lua" $thumbfastlua_url || echo "Couldn't download: $thumbfastlua_url"
@@ -177,7 +177,7 @@ run_as_user mv uosc.conf "$scriptopts_dir"
# pam
sed -i '/auth[[:space:]]*include[[:space:]]*system-local-login/a auth optional pam_gnome_keyring.so' /etc/pam.d/login
sed -i '/session[[:space:]]*include[[:space:]]*system-local-login/a session optional pam_gnome_keyring.so auto_start' /etc/pam.d/login
-echo "password optional pam_gnome_keyring.so" >> /etc/pam.d/passwd
+echo "password optional pam_gnome_keyring.so" >>/etc/pam.d/passwd
yes | run_as_user paru --sudo doas -Scc
rm -rf /home/"$PERMUSER"/.cargo
@@ -189,11 +189,11 @@ else
rm /etc/sudoers.d/temp
fi
-chown -R $PERMUSER:wheel /home/$PERMUSER
+chown -R "$PERMUSER":wheel /home/"$PERMUSER"
# cleanup
-rm -rf /home/$PERMUSER/.cache/go-build
-rm -f /home/$PERMUSER/.wget-hsts
+rm -rf /home/"$PERMUSER"/.cache/go-build
+rm -f /home/"$PERMUSER"/.wget-hsts
rm -f /home/"$PERMUSER"/uosc.zip
echo "Your linux is riced!"