deleted: .config/fnott/fnott.ini
deleted: .config/niri/config-01.kdl modified: README.md modified: apps-list.md deleted: background renamed: .config/btop/btop.conf -> config/btop/btop.conf renamed: .config/clipse/config.json -> config/clipse/config.json renamed: .config/clipse/custom_theme.json -> config/clipse/custom_theme.json renamed: .config/fastfetch/1.jsonc -> config/fastfetch/1.jsonc renamed: .config/fastfetch/19.jsonc -> config/fastfetch/19.jsonc renamed: .config/fastfetch/20.jsonc -> config/fastfetch/20.jsonc renamed: .config/fastfetch/config.jsonc -> config/fastfetch/config.jsonc renamed: .config/fish/completions/fisher.fish -> config/fish/completions/fisher.fish renamed: .config/fish/completions/fzf_configure_bindings.fish -> config/fish/completions/fzf_configure_bindings.fish renamed: .config/fish/conf.d/fish_frozen_key_bindings.fish -> config/fish/conf.d/fish_frozen_key_bindings.fish renamed: .config/fish/conf.d/fish_frozen_theme.fish -> config/fish/conf.d/fish_frozen_theme.fish renamed: .config/fish/conf.d/fzf.fish -> config/fish/conf.d/fzf.fish new file: config/fish/conf.d/nix.fish renamed: .config/fish/config.fish -> config/fish/config.fish renamed: .config/fish/fish_plugins -> config/fish/fish_plugins renamed: .config/fish/fish_variables -> config/fish/fish_variables renamed: .config/fish/functions/:q.fish -> config/fish/functions/:q.fish renamed: .config/fish/functions/_fzf_configure_bindings_help.fish -> config/fish/functions/_fzf_configure_bindings_help.fish renamed: .config/fish/functions/_fzf_extract_var_info.fish -> config/fish/functions/_fzf_extract_var_info.fish renamed: .config/fish/functions/_fzf_preview_changed_file.fish -> config/fish/functions/_fzf_preview_changed_file.fish renamed: .config/fish/functions/_fzf_preview_file.fish -> config/fish/functions/_fzf_preview_file.fish renamed: .config/fish/functions/_fzf_report_diff_type.fish -> config/fish/functions/_fzf_report_diff_type.fish renamed: .config/fish/functions/_fzf_report_file_type.fish -> config/fish/functions/_fzf_report_file_type.fish renamed: .config/fish/functions/_fzf_search_directory.fish -> config/fish/functions/_fzf_search_directory.fish renamed: .config/fish/functions/_fzf_search_git_log.fish -> config/fish/functions/_fzf_search_git_log.fish renamed: .config/fish/functions/_fzf_search_git_status.fish -> config/fish/functions/_fzf_search_git_status.fish renamed: .config/fish/functions/_fzf_search_history.fish -> config/fish/functions/_fzf_search_history.fish renamed: .config/fish/functions/_fzf_search_processes.fish -> config/fish/functions/_fzf_search_processes.fish renamed: .config/fish/functions/_fzf_search_variables.fish -> config/fish/functions/_fzf_search_variables.fish renamed: .config/fish/functions/_fzf_wrapper.fish -> config/fish/functions/_fzf_wrapper.fish renamed: .config/fish/functions/ff.fish -> config/fish/functions/ff.fish renamed: .config/fish/functions/fish_prompt.fish -> config/fish/functions/fish_prompt.fish renamed: .config/fish/functions/fish_prompt.fish.bak -> config/fish/functions/fish_prompt.fish.bak renamed: .config/fish/functions/fisher.fish -> config/fish/functions/fisher.fish renamed: .config/fish/functions/fzf_configure_bindings.fish -> config/fish/functions/fzf_configure_bindings.fish renamed: .config/fish/functions/ls.fish -> config/fish/functions/ls.fish renamed: .config/fish/functions/n.fish -> config/fish/functions/n.fish renamed: .config/fish/functions/nv.fish -> config/fish/functions/nv.fish renamed: .config/fish/functions/p.fish -> config/fish/functions/p.fish new file: config/fish/functions/sshp.fish renamed: .config/fish/functions/vpn.fish -> config/fish/functions/vpn.fish renamed: .config/fish/functions/webka.fish -> config/fish/functions/webka.fish renamed: .config/fish/functions/y.fish -> config/fish/functions/y.fish renamed: .config/fish/functions/yz.fish -> config/fish/functions/yz.fish renamed: ".config/fish/functions/\320\275\321\217.fish" -> "config/fish/functions/\320\275\321\217.fish" renamed: .config/fuzzel/fuzzel.ini -> config/fuzzel/fuzzel.ini renamed: .config/hypr/hyprland.conf -> config/hypr/hyprland.conf renamed: .config/hypr/hyprlock.conf -> config/hypr/hyprlock.conf new file: config/hyprwave/config.conf new file: config/hyprwave/style.css new file: config/kitty/current-theme.conf renamed: .config/kitty/kitty.conf.bak -> config/kitty/kitty.conf renamed: .config/kitty/kitty.conf -> config/kitty/kitty.conf.bak new file: config/mimeapps.list renamed: .config/niri/config.kdl -> config/niri/config.kdl renamed: .config/nvim/.gitignore -> config/nvim/.gitignore renamed: .config/nvim/.neoconf.json -> config/nvim/.neoconf.json renamed: .config/nvim/LICENSE -> config/nvim/LICENSE renamed: .config/nvim/README.md -> config/nvim/README.md renamed: .config/nvim/init.lua -> config/nvim/init.lua renamed: .config/nvim/lazy-lock.json -> config/nvim/lazy-lock.json renamed: .config/nvim/lazyvim.json -> config/nvim/lazyvim.json renamed: .config/nvim/lua/config/autocmds.lua -> config/nvim/lua/config/autocmds.lua renamed: .config/nvim/lua/config/keymaps.lua -> config/nvim/lua/config/keymaps.lua renamed: .config/nvim/lua/config/lazy.lua -> config/nvim/lua/config/lazy.lua renamed: .config/nvim/lua/config/options.lua -> config/nvim/lua/config/options.lua renamed: .config/nvim/lua/plugins/example.lua -> config/nvim/lua/plugins/example.lua renamed: .config/nvim/lua/plugins/luasnip.lua -> config/nvim/lua/plugins/luasnip.lua renamed: .config/nvim/lua/plugins/markview.lua -> config/nvim/lua/plugins/markview.lua renamed: .config/nvim/lua/plugins/marp-nvim.lua -> config/nvim/lua/plugins/marp-nvim.lua renamed: .config/nvim/lua/plugins/nvim-snippy.lua -> config/nvim/lua/plugins/nvim-snippy.lua renamed: .config/nvim/lua/plugins/render-markdown.lua -> config/nvim/lua/plugins/render-markdown.lua renamed: .config/nvim/lua/plugins/xkbswitch.lua -> config/nvim/lua/plugins/xkbswitch.lua renamed: .config/nvim/stylua.toml -> config/nvim/stylua.toml new file: config/termusic/tui.toml renamed: .config/waybar/config.jsonc -> config/waybar/config.jsonc renamed: .config/waybar/config01.jsonc -> config/waybar/config01.jsonc renamed: .config/waybar/style.css -> config/waybar/style.css renamed: .config/waybar/style01.css -> config/waybar/style01.css renamed: .config/yazi/yazi.toml -> config/yazi/yazi.toml deleted: mimeapps.list deleted: resolved.conf deleted: zen-mods-export.json
This commit is contained in:
parent
f8fae463a8
commit
4779ba49c0
88 changed files with 1182 additions and 1361 deletions
272
config/btop/btop.conf
Normal file
272
config/btop/btop.conf
Normal file
|
|
@ -0,0 +1,272 @@
|
|||
#? Config file for btop v.1.4.6
|
||||
|
||||
#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
|
||||
#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
|
||||
color_theme = "TTY"
|
||||
|
||||
#* If the theme set background should be shown, set to False if you want terminal background transparency.
|
||||
theme_background = true
|
||||
|
||||
#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
|
||||
truecolor = true
|
||||
|
||||
#* Set to true to force tty mode regardless if a real tty has been detected or not.
|
||||
#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols.
|
||||
force_tty = false
|
||||
|
||||
#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.
|
||||
#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box.
|
||||
#* Use whitespace " " as separator between different presets.
|
||||
#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty"
|
||||
presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty"
|
||||
|
||||
#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists.
|
||||
#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
|
||||
vim_keys = false
|
||||
|
||||
#* Rounded corners on boxes, is ignored if TTY mode is ON.
|
||||
rounded_corners = false
|
||||
|
||||
#* Use terminal synchronized output sequences to reduce flickering on supported terminals.
|
||||
terminal_sync = true
|
||||
|
||||
#* Default symbols to use for graph creation, "braille", "block" or "tty".
|
||||
#* "braille" offers the highest resolution but might not be included in all fonts.
|
||||
#* "block" has half the resolution of braille but uses more common characters.
|
||||
#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY.
|
||||
#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view.
|
||||
graph_symbol = "braille"
|
||||
|
||||
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||
graph_symbol_cpu = "default"
|
||||
|
||||
# Graph symbol to use for graphs in gpu box, "default", "braille", "block" or "tty".
|
||||
graph_symbol_gpu = "default"
|
||||
|
||||
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||
graph_symbol_mem = "default"
|
||||
|
||||
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||
graph_symbol_net = "default"
|
||||
|
||||
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||
graph_symbol_proc = "default"
|
||||
|
||||
#* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace.
|
||||
shown_boxes = "mem net proc gpu0 cpu"
|
||||
|
||||
#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs.
|
||||
update_ms = 2000
|
||||
|
||||
#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct",
|
||||
#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly.
|
||||
proc_sorting = "memory"
|
||||
|
||||
#* Reverse sorting order, True or False.
|
||||
proc_reversed = false
|
||||
|
||||
#* Show processes as a tree.
|
||||
proc_tree = true
|
||||
|
||||
#* Use the cpu graph colors in the process list.
|
||||
proc_colors = true
|
||||
|
||||
#* Use a darkening gradient in the process list.
|
||||
proc_gradient = true
|
||||
|
||||
#* If process cpu usage should be of the core it's running on or usage of the total available cpu power.
|
||||
proc_per_core = false
|
||||
|
||||
#* Show process memory as bytes instead of percent.
|
||||
proc_mem_bytes = true
|
||||
|
||||
#* Show cpu graph for each process.
|
||||
proc_cpu_graphs = true
|
||||
|
||||
#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate)
|
||||
proc_info_smaps = false
|
||||
|
||||
#* Show proc box on left side of screen instead of right.
|
||||
proc_left = false
|
||||
|
||||
#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
|
||||
proc_filter_kernel = false
|
||||
|
||||
#* In tree-view, always accumulate child process resources in the parent process.
|
||||
proc_aggregate = false
|
||||
|
||||
#* Should cpu and memory usage display be preserved for dead processes when paused.
|
||||
keep_dead_proc_usage = false
|
||||
|
||||
#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available.
|
||||
#* Select from a list of detected attributes from the options menu.
|
||||
cpu_graph_upper = "Auto"
|
||||
|
||||
#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available.
|
||||
#* Select from a list of detected attributes from the options menu.
|
||||
cpu_graph_lower = "Auto"
|
||||
|
||||
#* If gpu info should be shown in the cpu box. Available values = "Auto", "On" and "Off".
|
||||
show_gpu_info = "On"
|
||||
|
||||
#* Toggles if the lower CPU graph should be inverted.
|
||||
cpu_invert_lower = true
|
||||
|
||||
#* Set to True to completely disable the lower CPU graph.
|
||||
cpu_single_graph = false
|
||||
|
||||
#* Show cpu box at bottom of screen instead of top.
|
||||
cpu_bottom = false
|
||||
|
||||
#* Shows the system uptime in the CPU box.
|
||||
show_uptime = true
|
||||
|
||||
#* Shows the CPU package current power consumption in watts. Requires running `make setcap` or `make setuid` or running with sudo.
|
||||
show_cpu_watts = true
|
||||
|
||||
#* Show cpu temperature.
|
||||
check_temp = true
|
||||
|
||||
#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
|
||||
cpu_sensor = "Auto"
|
||||
|
||||
#* Show temperatures for cpu cores also if check_temp is True and sensors has been found.
|
||||
show_coretemp = true
|
||||
|
||||
#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core.
|
||||
#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine.
|
||||
#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries.
|
||||
#* Example: "4:0 5:1 6:3"
|
||||
cpu_core_map = ""
|
||||
|
||||
#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine".
|
||||
temp_scale = "celsius"
|
||||
|
||||
#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024.
|
||||
base_10_sizes = true
|
||||
|
||||
#* Show CPU frequency.
|
||||
show_cpu_freq = true
|
||||
|
||||
#* How to calculate CPU frequency, available values: "first", "range", "lowest", "highest" and "average".
|
||||
freq_mode = "first"
|
||||
|
||||
#* Draw a clock at top of screen, formatting according to strftime, empty string to disable.
|
||||
#* Special formatting: /host = hostname | /user = username | /uptime = system uptime
|
||||
clock_format = "%X"
|
||||
|
||||
#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort.
|
||||
background_update = true
|
||||
|
||||
#* Custom cpu model name, empty string to disable.
|
||||
custom_cpu_name = ""
|
||||
|
||||
#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ".
|
||||
#* Only disks matching the filter will be shown. Prepend exclude= to only show disks not matching the filter. Examples: disk_filter="/boot /home/user", disks_filter="exclude=/boot /home/user"
|
||||
disks_filter = ""
|
||||
|
||||
#* Show graphs instead of meters for memory values.
|
||||
mem_graphs = true
|
||||
|
||||
#* Show mem box below net box instead of above.
|
||||
mem_below_net = false
|
||||
|
||||
#* Count ZFS ARC in cached and available memory.
|
||||
zfs_arc_cached = true
|
||||
|
||||
#* If swap memory should be shown in memory box.
|
||||
show_swap = true
|
||||
|
||||
#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
|
||||
swap_disk = true
|
||||
|
||||
#* If mem box should be split to also show disks info.
|
||||
show_disks = true
|
||||
|
||||
#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
|
||||
only_physical = true
|
||||
|
||||
#* Read disks list from /etc/fstab. This also disables only_physical.
|
||||
use_fstab = true
|
||||
|
||||
#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool)
|
||||
zfs_hide_datasets = false
|
||||
|
||||
#* Set to true to show available disk space for privileged users.
|
||||
disk_free_priv = false
|
||||
|
||||
#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view.
|
||||
show_io_stat = true
|
||||
|
||||
#* Toggles io mode for disks, showing big graphs for disk read/write speeds.
|
||||
io_mode = false
|
||||
|
||||
#* Set to True to show combined read/write io graphs in io mode.
|
||||
io_graph_combined = false
|
||||
|
||||
#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ".
|
||||
#* Example: "/mnt/media:100 /:20 /boot:1".
|
||||
io_graph_speeds = ""
|
||||
|
||||
#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False.
|
||||
net_download = 100
|
||||
|
||||
net_upload = 100
|
||||
|
||||
#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.
|
||||
net_auto = true
|
||||
|
||||
#* Sync the auto scaling for download and upload to whichever currently has the highest scale.
|
||||
net_sync = true
|
||||
|
||||
#* Starts with the Network Interface specified here.
|
||||
net_iface = ""
|
||||
|
||||
#* "True" shows bitrates in base 10 (Kbps, Mbps). "False" shows bitrates in binary sizes (Kibps, Mibps, etc.). "Auto" uses base_10_sizes.
|
||||
base_10_bitrate = "Auto"
|
||||
|
||||
#* Show battery stats in top right if battery is present.
|
||||
show_battery = true
|
||||
|
||||
#* Which battery to use if multiple are present. "Auto" for auto detection.
|
||||
selected_battery = "Auto"
|
||||
|
||||
#* Show power stats of battery next to charge indicator.
|
||||
show_battery_watts = true
|
||||
|
||||
#* Set loglevel for "~/.local/state/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
|
||||
#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info.
|
||||
log_level = "DEBUG"
|
||||
|
||||
#* Automatically save current settings to config file on exit.
|
||||
save_config_on_exit = true
|
||||
|
||||
#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards.
|
||||
nvml_measure_pcie_speeds = true
|
||||
|
||||
#* Measure PCIe throughput on AMD cards, may impact performance on certain cards.
|
||||
rsmi_measure_pcie_speeds = true
|
||||
|
||||
#* Horizontally mirror the GPU graph.
|
||||
gpu_mirror_graph = true
|
||||
|
||||
#* Set which GPU vendors to show. Available values are "nvidia amd intel"
|
||||
shown_gpus = "nvidia amd intel"
|
||||
|
||||
#* Custom gpu0 model name, empty string to disable.
|
||||
custom_gpu_name0 = ""
|
||||
|
||||
#* Custom gpu1 model name, empty string to disable.
|
||||
custom_gpu_name1 = ""
|
||||
|
||||
#* Custom gpu2 model name, empty string to disable.
|
||||
custom_gpu_name2 = ""
|
||||
|
||||
#* Custom gpu3 model name, empty string to disable.
|
||||
custom_gpu_name3 = ""
|
||||
|
||||
#* Custom gpu4 model name, empty string to disable.
|
||||
custom_gpu_name4 = ""
|
||||
|
||||
#* Custom gpu5 model name, empty string to disable.
|
||||
custom_gpu_name5 = ""
|
||||
55
config/clipse/config.json
Normal file
55
config/clipse/config.json
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
{
|
||||
"allowDuplicates": false,
|
||||
"historyFile": "clipboard_history.json",
|
||||
"maxHistory": 1000000,
|
||||
"deleteAfter": 0,
|
||||
"logFile": "clipse.log",
|
||||
"pollInterval": 50,
|
||||
"maxEntryLength": 65,
|
||||
"themeFile": "custom_theme.json",
|
||||
"tempDir": "tmp_files",
|
||||
"keyBindings": {
|
||||
"choose": "enter",
|
||||
"clearSelected": "S",
|
||||
"down": "down",
|
||||
"end": "end",
|
||||
"filter": "/",
|
||||
"forceQuit": "Q",
|
||||
"home": "home",
|
||||
"more": "?",
|
||||
"nextPage": "right",
|
||||
"prevPage": "left",
|
||||
"preview": " ",
|
||||
"quit": "esc",
|
||||
"remove": "backspace",
|
||||
"selectDown": "shift+down",
|
||||
"selectSingle": "s",
|
||||
"selectUp": "shift+up",
|
||||
"togglePin": "p",
|
||||
"togglePinned": "tab",
|
||||
"up": "up",
|
||||
"yankFilter": "ctrl+s"
|
||||
},
|
||||
"imageDisplay": {
|
||||
"type": "kitty",
|
||||
"scaleX": 18,
|
||||
"scaleY": 20,
|
||||
"heightCut": 20
|
||||
},
|
||||
"excludedApps": [
|
||||
"1Password",
|
||||
"Bitwarden",
|
||||
"KeePassXC",
|
||||
"LastPass",
|
||||
"Dashlane",
|
||||
"Password Safe",
|
||||
"Keychain Access"
|
||||
],
|
||||
"autoPaste": {
|
||||
"enabled": false,
|
||||
"keybind": "ctrl+v",
|
||||
"buffer": 10
|
||||
},
|
||||
"enableMouse": true,
|
||||
"enableDescription": true
|
||||
}
|
||||
28
config/clipse/custom_theme.json
Normal file
28
config/clipse/custom_theme.json
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
{
|
||||
"UseCustom": true,
|
||||
"TitleFore": "#07090B",
|
||||
"TitleBack": "#A1F7C6",
|
||||
"TitleInfo": "#25C39F",
|
||||
"NormalTitle": "#E2F9F9",
|
||||
"DimmedTitle": "#718091",
|
||||
"SelectedTitle": "#E2F9F9",
|
||||
"NormalDesc": "#718091",
|
||||
"DimmedDesc": "#718091",
|
||||
"SelectedDesc": "#E2F9F9",
|
||||
"StatusMsg": "#2ecc71",
|
||||
"PinIndicatorColor": "#F87173",
|
||||
"SelectedBorder": "#E2F9F9",
|
||||
"SelectedDescBorder": "#E2F9F9",
|
||||
"FilteredMatch": "#E2F9F9",
|
||||
"FilterPrompt": "#25C39F",
|
||||
"FilterInfo": "#A1F7C6",
|
||||
"FilterText": "#E2F9F9",
|
||||
"FilterCursor": "#E2F9F9",
|
||||
"HelpKey": "#E2F9F9",
|
||||
"HelpDesc": "#718091",
|
||||
"PageActiveDot": "#E2F9F9",
|
||||
"PageInactiveDot": "#718091",
|
||||
"DividerDot": "#25C39F",
|
||||
"PreviewedText": "#E2F9F9",
|
||||
"PreviewBorder": "#A1F7C6"
|
||||
}
|
||||
40
config/fastfetch/1.jsonc
Normal file
40
config/fastfetch/1.jsonc
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
{
|
||||
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
|
||||
"logo":{
|
||||
"color":{
|
||||
"1": "white",
|
||||
"2": "white"
|
||||
}
|
||||
},
|
||||
"modules": [
|
||||
"title",
|
||||
"separator",
|
||||
"os",
|
||||
"host",
|
||||
"kernel",
|
||||
"uptime",
|
||||
"packages",
|
||||
"shell",
|
||||
"display",
|
||||
"de",
|
||||
"wm",
|
||||
"wmtheme",
|
||||
"theme",
|
||||
"icons",
|
||||
"font",
|
||||
"cursor",
|
||||
"terminal",
|
||||
"terminalfont",
|
||||
"cpu",
|
||||
"gpu",
|
||||
"memory",
|
||||
"swap",
|
||||
"disk",
|
||||
"localip",
|
||||
"battery",
|
||||
"poweradapter",
|
||||
"locale",
|
||||
"break",
|
||||
"colors"
|
||||
]
|
||||
}
|
||||
189
config/fastfetch/19.jsonc
Normal file
189
config/fastfetch/19.jsonc
Normal file
|
|
@ -0,0 +1,189 @@
|
|||
// _____ _____ _____ _____ _____ _____ _____ _____ _____
|
||||
// | __| _ | __|_ _| __| __|_ _| | | |
|
||||
// | __| |__ | | | | __| __| | | | --| |
|
||||
// |__| |__|__|_____| |_| |__| |_____| |_| |_____|__|__|
|
||||
//
|
||||
// By CarterLi - https://github.com/CarterLi
|
||||
// Homepage - https://github.com/fastfetch-cli/fastfetch
|
||||
// config.jsonc - ニリ @niri-san
|
||||
// pokemon-colorscripts - https://gitlab.com/phoneybadger/pokemon-colorscripts
|
||||
{
|
||||
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
|
||||
"logo": {
|
||||
"source": " _____ _____ _____ _____ _____ _____ _____ _____ _____\n| __| _ | __|_ _| __| __|_ _| | | |\n| __| |__ | | | | __| __| | | | --| |\n|__| |__|__|_____| |_| |__| |_____| |_| |_____|__|__|",
|
||||
"type": "data",
|
||||
"position": "top",
|
||||
"padding": {
|
||||
"right": 2
|
||||
}
|
||||
},
|
||||
"display": {
|
||||
"separator": " - "
|
||||
},
|
||||
"modules": [
|
||||
{
|
||||
"type": "custom", // HardwareInfo
|
||||
"format": "• {#green}SYSTEM INFORMATION"
|
||||
},
|
||||
{
|
||||
"type": "host",
|
||||
"key": "HOST",
|
||||
"format": "{name}{?vendor} ({vendor}){?}",
|
||||
"keyColor": "green"
|
||||
},
|
||||
{
|
||||
"type": "chassis",
|
||||
"key": "COMPUTER TYPE",
|
||||
"keyColor": "green"
|
||||
},
|
||||
{
|
||||
"type": "cpu",
|
||||
"key": "CPU",
|
||||
"keyColor": "green"
|
||||
},
|
||||
{
|
||||
"type": "gpu",
|
||||
"key": "GPU",
|
||||
"keyColor": "green"
|
||||
},
|
||||
{
|
||||
"type": "memory",
|
||||
"key": "MEMORY USED",
|
||||
"keyColor": "green"
|
||||
},
|
||||
{
|
||||
"type": "swap",
|
||||
"key": "SWAP USED",
|
||||
"keyColor": "green"
|
||||
},
|
||||
{
|
||||
"type": "disk",
|
||||
"key": "DISK",
|
||||
"folders": "/",
|
||||
"keyColor": "green"
|
||||
},
|
||||
{
|
||||
"type": "custom", // SoftwareInfo
|
||||
"format": "• {#red}SOFTWARE INFORMATION"
|
||||
},
|
||||
{
|
||||
"type": "os",
|
||||
"key": "DISTRO",
|
||||
"keyColor": "red"
|
||||
},
|
||||
{
|
||||
"type": "disk",
|
||||
"folders": "/", // Use "/System/Volumes/VM" or something else on macOS
|
||||
"format": "{create-time}",
|
||||
"key": "INSTALLED DATE",
|
||||
"keyColor": "red"
|
||||
},
|
||||
{
|
||||
"type": "kernel",
|
||||
"key": "KERNEL",
|
||||
"keyColor": "red"
|
||||
},
|
||||
{
|
||||
"type": "packages",
|
||||
"key": "PACKAGES",
|
||||
"keyColor": "red"
|
||||
},
|
||||
{
|
||||
"type": "uptime",
|
||||
"key": "UPTIME",
|
||||
"keyColor": "red"
|
||||
},
|
||||
{
|
||||
"type": "custom", // DisplayInfo
|
||||
"format": "• {#blue}DISPLAY INFORMATION"
|
||||
},
|
||||
{
|
||||
"type": "de",
|
||||
"key": "DESKTOP ENVIRONMENT",
|
||||
"keyColor": "blue"
|
||||
},
|
||||
{
|
||||
"type": "lm",
|
||||
"key": "LOGIN MANAGER",
|
||||
"format": "{type}",
|
||||
"keyColor": "blue"
|
||||
},
|
||||
{
|
||||
"type": "wm",
|
||||
"key": "WM",
|
||||
"keyColor": "blue"
|
||||
},
|
||||
{
|
||||
"type": "wmtheme",
|
||||
"key": "WM THEME",
|
||||
"keyColor": "blue"
|
||||
},
|
||||
{
|
||||
"type": "display",
|
||||
"key": "MONITOR ({name})",
|
||||
"keyColor": "blue",
|
||||
"format": "{width}x{height} @ {refresh-rate} Hz - {physical-width}x{physical-height} mm ({inch} inches, {ppi} ppi)"
|
||||
},
|
||||
{
|
||||
"type": "custom", // DesignInfo
|
||||
"format": "• {#yellow}DESIGN INFORMATION"
|
||||
},
|
||||
{
|
||||
"type": "wallpaper",
|
||||
"key": "WALLPAPER",
|
||||
"keyColor": "yellow"
|
||||
},
|
||||
{
|
||||
"type": "theme",
|
||||
"key": "KDE THEME",
|
||||
"format": "{1}",
|
||||
"keyColor": "yellow"
|
||||
},
|
||||
{
|
||||
"type": "icons",
|
||||
"key": "ICON THEME",
|
||||
"format": "{1}",
|
||||
"keyColor": "yellow"
|
||||
},
|
||||
{
|
||||
"type": "font",
|
||||
"key": "FONT",
|
||||
"format": "{?1}{1} [Qt]{?}{/1}Unknown", // Remove "[Qt]" if not using Qt
|
||||
"keyColor": "yellow"
|
||||
},
|
||||
{
|
||||
"type": "terminalfont",
|
||||
"key": "TERMINAL FONT",
|
||||
"keyColor": "yellow"
|
||||
},
|
||||
{
|
||||
"type": "cursor",
|
||||
"key": "CURSOR",
|
||||
"keyColor": "yellow"
|
||||
},
|
||||
{
|
||||
"type": "custom", // OtherInfo
|
||||
"format": "• {#cyan}VARIOUS INFORMATION"
|
||||
},
|
||||
{
|
||||
"type": "media",
|
||||
"key": "NOW PLAYING",
|
||||
"format": "{?artist}{artist} - {?}{title}",
|
||||
"keyColor": "cyan"
|
||||
},
|
||||
{
|
||||
"type": "weather",
|
||||
"key": "WEATHER",
|
||||
"timeout": 1000,
|
||||
"keyColor": "cyan"
|
||||
},
|
||||
{
|
||||
"type": "version",
|
||||
"key": "INFO",
|
||||
"keyColor": "cyan"
|
||||
},
|
||||
"break",
|
||||
"colors",
|
||||
"break"
|
||||
]
|
||||
}
|
||||
177
config/fastfetch/20.jsonc
Normal file
177
config/fastfetch/20.jsonc
Normal file
|
|
@ -0,0 +1,177 @@
|
|||
// Inspired by https://github.com/usgraphics/TR-100
|
||||
{
|
||||
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
|
||||
"logo":null,
|
||||
"display": {
|
||||
"pipe": true,
|
||||
"key": {
|
||||
"width": 16
|
||||
},
|
||||
"separator": "│ ",
|
||||
"percent": {
|
||||
"type": ["bar", "hide-others"]
|
||||
},
|
||||
"bar": {
|
||||
"border": null,
|
||||
"char": {
|
||||
"elapsed": "█",
|
||||
"total": "░"
|
||||
},
|
||||
"width": 40
|
||||
},
|
||||
"constants": [
|
||||
"\u001b[42C"
|
||||
]
|
||||
},
|
||||
"modules": [
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "┌┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┐"
|
||||
},
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "├┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┤"
|
||||
},
|
||||
{
|
||||
"type": "version",
|
||||
"key": " ",
|
||||
"format": "│ FASTFETCH v{version} │"
|
||||
},
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "│ TR-100 MACHINE REPORT │"
|
||||
},
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "├────────────┬──────────────────────────────────────────┤"
|
||||
},
|
||||
{
|
||||
"type": "os",
|
||||
"key": "│ OS │{$1}"
|
||||
},
|
||||
{
|
||||
"type": "kernel",
|
||||
"key": "│ KERNEL │{$1}"
|
||||
},
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "├────────────┼──────────────────────────────────────────┤"
|
||||
},
|
||||
{
|
||||
"type": "title",
|
||||
"key": "│ HOSTNAME │{$1}",
|
||||
"format": "{host-name}"
|
||||
},
|
||||
{
|
||||
"type": "localip",
|
||||
"key": "│ CLIENT IP │{$1}",
|
||||
"format": "{ipv4}"
|
||||
},
|
||||
{
|
||||
"type": "localip",
|
||||
"key": "│ MAC ADDR │{$1}",
|
||||
"format": "{mac} ({ifname})",
|
||||
"showIpv4": false,
|
||||
"showMac": true
|
||||
},
|
||||
{
|
||||
"type": "dns",
|
||||
"key": "│ DNS │{$1}",
|
||||
"showType": "ipv4"
|
||||
},
|
||||
{
|
||||
"type": "title",
|
||||
"key": "│ USER │{$1}",
|
||||
"format": "{user-name}"
|
||||
},
|
||||
{
|
||||
"type": "host",
|
||||
"key": "│ MACHINE │{$1}",
|
||||
"format": "{name}"
|
||||
},
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "├────────────┼──────────────────────────────────────────┤"
|
||||
},
|
||||
{
|
||||
"type": "cpu",
|
||||
"key": "│ PROCESSOR │{$1}",
|
||||
"format": "{name}"
|
||||
},
|
||||
{
|
||||
"type": "cpu",
|
||||
"key": "│ CORES │{$1}",
|
||||
"format": "{cores-physical} PHYSICAL CORES / {cores-logical} THREADS",
|
||||
"showPeCoreCount": false
|
||||
},
|
||||
{
|
||||
"type": "cpu",
|
||||
"key": "│ CPU FREQ │{$1}",
|
||||
"format": "{freq-max}{/freq-max}{freq-base}{/}"
|
||||
},
|
||||
{
|
||||
"type": "loadavg",
|
||||
"compact": false,
|
||||
"key": "│ LOAD {duration>2}m │{$1}" // pad duration to 2 chars
|
||||
},
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "├────────────┼──────────────────────────────────────────┤"
|
||||
},
|
||||
{
|
||||
"type": "memory",
|
||||
"key": "│ MEMORY │{$1}",
|
||||
"format": "{used} / {total} [{percentage}]",
|
||||
"percent": {
|
||||
"type": ["num"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "memory",
|
||||
"key": "│ USAGE │{$1}",
|
||||
"format": "",
|
||||
"percent": {
|
||||
"type": ["bar", "hide-others"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "├────────────┼──────────────────────────────────────────┤"
|
||||
},
|
||||
{
|
||||
"type": "disk",
|
||||
"key": "│ VOLUME │{$1}",
|
||||
"format": "{size-used} / {size-total} [{size-percentage}]",
|
||||
"folders": "/",
|
||||
"percent": {
|
||||
"type": ["num"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "disk",
|
||||
"key": "│ DISK USAGE │{$1}",
|
||||
"format": "",
|
||||
"percent": {
|
||||
"type": ["bar", "hide-others"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "├────────────┼──────────────────────────────────────────┤"
|
||||
},
|
||||
{
|
||||
"type": "users",
|
||||
"key": "│ LAST LOGIN │{$1}",
|
||||
"format": "{login-time}{?client-ip} ({client-ip})",
|
||||
"myselfOnly": true
|
||||
},
|
||||
{
|
||||
"type": "uptime",
|
||||
"key": "│ UPTIME │{$1}"
|
||||
},
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "└────────────┴──────────────────────────────────────────┘"
|
||||
}
|
||||
]
|
||||
}
|
||||
180
config/fastfetch/config.jsonc
Normal file
180
config/fastfetch/config.jsonc
Normal file
|
|
@ -0,0 +1,180 @@
|
|||
// Inspired by https://github.com/usgraphics/TR-100
|
||||
{
|
||||
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
|
||||
"logo":null,
|
||||
"display": {
|
||||
"pipe": true,
|
||||
"key": {
|
||||
"width": 16,
|
||||
},
|
||||
"separator": "│ ",
|
||||
"percent": {
|
||||
"type": 9,
|
||||
"color": {
|
||||
"green": "green",
|
||||
"yellow": "light_yellow",
|
||||
"red": "light_red"
|
||||
}
|
||||
|
||||
},
|
||||
"bar": {
|
||||
"border": null,
|
||||
"char": {
|
||||
"elapsed": "█",
|
||||
"total": "░"
|
||||
},
|
||||
"width": 40
|
||||
},
|
||||
"constants": [
|
||||
"\u001b[42C"
|
||||
]
|
||||
},
|
||||
"modules": [
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "┌┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┐"
|
||||
},
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "├┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┤"
|
||||
},
|
||||
{
|
||||
"type": "version",
|
||||
"key": " ",
|
||||
"format": "│ FASTFETCH v{version} │"
|
||||
},
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "│ TR-100 MACHINE REPORT │"
|
||||
},
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "├────────────┬──────────────────────────────────────────┤"
|
||||
},
|
||||
{
|
||||
"type": "datetime",
|
||||
"key": "│ TIME │{$1}",
|
||||
"format": "{hour-pretty}:{minute-pretty}",
|
||||
},
|
||||
|
||||
{
|
||||
"type": "datetime",
|
||||
"key": "│ DATE │{$1}",
|
||||
"format": "{day-pretty}.{month}.{year-short}, {weekday}",
|
||||
},
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "├────────────┼──────────────────────────────────────────┤"
|
||||
},
|
||||
|
||||
|
||||
|
||||
{
|
||||
"type": "os",
|
||||
"key": "│ OS │{$1}"
|
||||
},
|
||||
{
|
||||
"type": "kernel",
|
||||
"key": "│ KERNEL │{$1}"
|
||||
},
|
||||
|
||||
|
||||
|
||||
// {
|
||||
// "type":"display",
|
||||
// "key":"│ MONITOR │{$1}"
|
||||
// },
|
||||
|
||||
// {
|
||||
// "type": "custom",
|
||||
// "format": "├────────────┼──────────────────────────────────────────┤"
|
||||
//},
|
||||
//{
|
||||
// "type": "localip",
|
||||
//"key": "│ CLIENT IP │{$1}",
|
||||
//"format": "{ipv4}"
|
||||
// },
|
||||
// {
|
||||
// "type": "localip",
|
||||
// "key": "│ MAC ADDR │{$1}",
|
||||
// "format": "{mac} ({ifname})",
|
||||
// "showIpv4": false,
|
||||
// "showMac": true
|
||||
// },
|
||||
// {
|
||||
// "type": "dns",
|
||||
// "key": "│ DNS │{$1}",
|
||||
// "showType": "ipv4"
|
||||
// },
|
||||
|
||||
|
||||
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "├────────────┼──────────────────────────────────────────┤"
|
||||
},
|
||||
{
|
||||
"type": "cpu",
|
||||
"key": "│ CPU │{$1}",
|
||||
"temp": true,
|
||||
"format": "{name}, {freq-max}{/freq-max}{freq-base}{/} - {temperature}"
|
||||
},
|
||||
{
|
||||
"type": "gpu",
|
||||
"key": "│ GPU │{$1}",
|
||||
"temp": true,
|
||||
"format": "{name} - {temperature} {frequency}"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "memory",
|
||||
"key": "│ RAM │{$1}",
|
||||
"format": "{used} / {total} [{percentage}]",
|
||||
"percent": {
|
||||
"type": ["num"]
|
||||
}
|
||||
},
|
||||
//{
|
||||
// "type": "memory",
|
||||
// "key": "│ USAGE │{$1}",
|
||||
// "format": "",
|
||||
// "percent": {
|
||||
// "type": ["bar", "hide-others"]
|
||||
// }
|
||||
// },
|
||||
|
||||
|
||||
{
|
||||
"type": "disk",
|
||||
"key": "│ DISK │{$1}",
|
||||
"format": "{size-used} / {size-total} [{size-percentage}]",
|
||||
"folders": "/",
|
||||
"percent": {
|
||||
"type": ["num"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "├────────────┼──────────────────────────────────────────┤"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "uptime",
|
||||
"key": "│ UPTIME │{$1}"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "disk",
|
||||
"format": "{create-time}",
|
||||
"key": "│ BIRTH TIME │{$1}"
|
||||
},
|
||||
// {
|
||||
// "type": "DateTime",
|
||||
// "key": "│ DATE&TIME │{$1}"
|
||||
// },
|
||||
{
|
||||
"type": "custom",
|
||||
"format": "└────────────┴──────────────────────────────────────────┘"
|
||||
}
|
||||
]
|
||||
}
|
||||
7
config/fish/completions/fisher.fish
Normal file
7
config/fish/completions/fisher.fish
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
complete --command fisher --exclusive --long help --description "Print help"
|
||||
complete --command fisher --exclusive --long version --description "Print version"
|
||||
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments install --description "Install plugins"
|
||||
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments update --description "Update installed plugins"
|
||||
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments remove --description "Remove installed plugins"
|
||||
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments list --description "List installed plugins matching regex"
|
||||
complete --command fisher --exclusive --condition "__fish_seen_subcommand_from update remove" --arguments "(fisher list)"
|
||||
8
config/fish/completions/fzf_configure_bindings.fish
Normal file
8
config/fish/completions/fzf_configure_bindings.fish
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
complete fzf_configure_bindings --no-files
|
||||
complete fzf_configure_bindings --long help --short h --description "Print help" --condition "not __fish_seen_argument --help -h"
|
||||
complete fzf_configure_bindings --long directory --description "Change the key binding for Search Directory" --condition "not __fish_seen_argument --directory"
|
||||
complete fzf_configure_bindings --long git_log --description "Change the key binding for Search Git Log" --condition "not __fish_seen_argument --git_log"
|
||||
complete fzf_configure_bindings --long git_status --description "Change the key binding for Search Git Status" --condition "not __fish_seen_argument --git_status"
|
||||
complete fzf_configure_bindings --long history --description "Change the key binding for Search History" --condition "not __fish_seen_argument --history"
|
||||
complete fzf_configure_bindings --long processes --description "Change the key binding for Search Processes" --condition "not __fish_seen_argument --processes"
|
||||
complete fzf_configure_bindings --long variables --description "Change the key binding for Search Variables" --condition "not __fish_seen_argument --variables"
|
||||
14
config/fish/conf.d/fish_frozen_key_bindings.fish
Normal file
14
config/fish/conf.d/fish_frozen_key_bindings.fish
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
# This file was created by fish when upgrading to version 4.3, to migrate
|
||||
# the 'fish_key_bindings' variable from its old default scope (universal)
|
||||
# to its new default scope (global). We recommend you delete this file
|
||||
# and configure key bindings in ~/.config/fish/config.fish if needed.
|
||||
|
||||
# set --global fish_key_bindings fish_default_key_bindings
|
||||
|
||||
# Prior to version 4.3, fish shipped an event handler that runs
|
||||
# `set --universal fish_key_bindings fish_default_key_bindings`
|
||||
# whenever the fish_key_bindings variable is erased.
|
||||
# This means that as long as any fish < 4.3 is still running on this system,
|
||||
# we cannot complete the migration.
|
||||
# As a workaround, erase the universal variable at every shell startup.
|
||||
set --erase --universal fish_key_bindings
|
||||
37
config/fish/conf.d/fish_frozen_theme.fish
Normal file
37
config/fish/conf.d/fish_frozen_theme.fish
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
# This file was created by fish when upgrading to version 4.3, to migrate
|
||||
# theme variables from universal to global scope.
|
||||
# Don't edit this file, as it will be written by the web-config tool (`fish_config`).
|
||||
# To customize your theme, delete this file and see
|
||||
# help interactive#syntax-highlighting
|
||||
# or
|
||||
# man fish-interactive | less +/^SYNTAX.HIGHLIGHTING
|
||||
# for appropriate commands to add to ~/.config/fish/config.fish instead.
|
||||
# See also the release notes for fish 4.3.0 (run `help relnotes`).
|
||||
|
||||
set --global fish_color_autosuggestion brblack
|
||||
set --global fish_color_cancel -r
|
||||
set --global fish_color_command normal
|
||||
set --global fish_color_comment red
|
||||
set --global fish_color_cwd green
|
||||
set --global fish_color_cwd_root red
|
||||
set --global fish_color_end green
|
||||
set --global fish_color_error brred
|
||||
set --global fish_color_escape brcyan
|
||||
set --global fish_color_history_current --bold
|
||||
set --global fish_color_host normal
|
||||
set --global fish_color_host_remote yellow
|
||||
set --global fish_color_normal normal
|
||||
set --global fish_color_operator brcyan
|
||||
set --global fish_color_param cyan
|
||||
set --global fish_color_quote yellow
|
||||
set --global fish_color_redirection cyan --bold
|
||||
set --global fish_color_search_match white --background=brblack
|
||||
set --global fish_color_selection white --bold --background=brblack
|
||||
set --global fish_color_status red
|
||||
set --global fish_color_user brgreen
|
||||
set --global fish_color_valid_path --underline
|
||||
set --global fish_pager_color_completion normal
|
||||
set --global fish_pager_color_description yellow -i
|
||||
set --global fish_pager_color_prefix normal --bold --underline
|
||||
set --global fish_pager_color_progress brwhite --background=cyan
|
||||
set --global fish_pager_color_selected_background -r
|
||||
27
config/fish/conf.d/fzf.fish
Normal file
27
config/fish/conf.d/fzf.fish
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
# fzf.fish is only meant to be used in interactive mode. If not in interactive mode and not in CI, skip the config to speed up shell startup
|
||||
if not status is-interactive && test "$CI" != true
|
||||
exit
|
||||
end
|
||||
|
||||
# Because of scoping rules, to capture the shell variables exactly as they are, we must read
|
||||
# them before even executing _fzf_search_variables. We use psub to store the
|
||||
# variables' info in temporary files and pass in the filenames as arguments.
|
||||
# This variable is global so that it can be referenced by fzf_configure_bindings and in tests
|
||||
set --global _fzf_search_vars_command '_fzf_search_variables (set --show | psub) (set --names | psub)'
|
||||
|
||||
# Install the default bindings, which are mnemonic and minimally conflict with fish's preset bindings
|
||||
fzf_configure_bindings
|
||||
|
||||
# Doesn't erase autoloaded _fzf_* functions because they are not easily accessible once key bindings are erased
|
||||
function _fzf_uninstall --on-event fzf_uninstall
|
||||
_fzf_uninstall_bindings
|
||||
|
||||
set --erase _fzf_search_vars_command
|
||||
functions --erase _fzf_uninstall _fzf_migration_message _fzf_uninstall_bindings fzf_configure_bindings
|
||||
complete --erase fzf_configure_bindings
|
||||
|
||||
set_color cyan
|
||||
echo "fzf.fish uninstalled."
|
||||
echo "You may need to manually remove fzf_configure_bindings from your config.fish if you were using custom key bindings."
|
||||
set_color normal
|
||||
end
|
||||
2
config/fish/conf.d/nix.fish
Normal file
2
config/fish/conf.d/nix.fish
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
if test -e /home/unconfer/.nix-profile/etc/profile.d/nix.fish; . /home/unconfer/.nix-profile/etc/profile.d/nix.fish; end # added by Nix installer
|
||||
4
config/fish/config.fish
Normal file
4
config/fish/config.fish
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
if status is-interactive
|
||||
set -U fish_cursor_replace_one underscore
|
||||
# Commands to run in interactive sessions can go here
|
||||
end
|
||||
2
config/fish/fish_plugins
Normal file
2
config/fish/fish_plugins
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
jorgebucaran/fisher
|
||||
patrickf1/fzf.fish
|
||||
11
config/fish/fish_variables
Normal file
11
config/fish/fish_variables
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
# This file contains fish universal variable definitions.
|
||||
# VERSION: 3.0
|
||||
SETUVAR --export EDITOR:nvim
|
||||
SETUVAR __fish_initialized:4300
|
||||
SETUVAR _fisher_jorgebucaran_2F_fisher_files:\x7e/\x2econfig/fish/functions/fisher\x2efish\x1e\x7e/\x2econfig/fish/completions/fisher\x2efish
|
||||
SETUVAR _fisher_patrickf1_2F_fzf_2E_fish_files:\x7e/\x2econfig/fish/functions/_fzf_configure_bindings_help\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_extract_var_info\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_preview_changed_file\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_preview_file\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_report_diff_type\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_report_file_type\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_directory\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_git_log\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_git_status\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_history\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_processes\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_variables\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_wrapper\x2efish\x1e\x7e/\x2econfig/fish/functions/fzf_configure_bindings\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/fzf\x2efish\x1e\x7e/\x2econfig/fish/completions/fzf_configure_bindings\x2efish
|
||||
SETUVAR _fisher_plugins:jorgebucaran/fisher\x1epatrickf1/fzf\x2efish
|
||||
SETUVAR _fisher_upgraded_to_4_4:\x1d
|
||||
SETUVAR fish_cursor_default:block
|
||||
SETUVAR fish_cursor_replace_one:underscore
|
||||
SETUVAR fish_greeting:\x1d
|
||||
3
config/fish/functions/:q.fish
Normal file
3
config/fish/functions/:q.fish
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
function :q --wraps=exit --description 'alias :q=exit'
|
||||
exit $argv
|
||||
end
|
||||
44
config/fish/functions/_fzf_configure_bindings_help.fish
Normal file
44
config/fish/functions/_fzf_configure_bindings_help.fish
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
function _fzf_configure_bindings_help --description "Prints the help message for fzf_configure_bindings."
|
||||
echo "\
|
||||
USAGE:
|
||||
fzf_configure_bindings [--COMMAND=[KEY_SEQUENCE]...]
|
||||
|
||||
DESCRIPTION
|
||||
fzf_configure_bindings installs key bindings for fzf.fish's commands and erases any bindings it
|
||||
previously installed. It installs bindings for both default and insert modes. fzf.fish executes
|
||||
it without options on fish startup to install the out-of-the-box key bindings.
|
||||
|
||||
By default, commands are bound to a mnemonic key sequence, shown below. Each command's binding
|
||||
can be configured using a namesake corresponding option:
|
||||
COMMAND | DEFAULT KEY SEQUENCE | CORRESPONDING OPTION
|
||||
Search Directory | Ctrl+Alt+F (F for file) | --directory
|
||||
Search Git Log | Ctrl+Alt+L (L for log) | --git_log
|
||||
Search Git Status | Ctrl+Alt+S (S for status) | --git_status
|
||||
Search History | Ctrl+R (R for reverse) | --history
|
||||
Search Processes | Ctrl+Alt+P (P for process) | --processes
|
||||
Search Variables | Ctrl+V (V for variable) | --variables
|
||||
Override a command's binding by specifying its corresponding option with the desired key
|
||||
sequence using fish's key name syntax (e.g. ctrl-f, ctrl-alt-v). Disable a command's binding
|
||||
by specifying its corresponding option with no value.
|
||||
|
||||
Because fzf_configure_bindings erases bindings it previously installed, it can be cleanly
|
||||
executed multiple times. Once the desired fzf_configure_bindings command has been found, add it
|
||||
to your config.fish in order to persist the customized bindings.
|
||||
|
||||
In terms of validation, fzf_configure_bindings fails if passed unknown options. It expects an
|
||||
equals sign between an option's name and value. However, it does not validate key sequences.
|
||||
|
||||
Pass -h or --help to print this help message and exit.
|
||||
|
||||
EXAMPLES
|
||||
Default bindings but bind Search Directory to Ctrl+F and Search Variables to Ctrl+Alt+V
|
||||
\$ fzf_configure_bindings --directory=ctrl-f --variables=ctrl-alt-v
|
||||
Default bindings but disable Search History
|
||||
\$ fzf_configure_bindings --history=
|
||||
An agglomeration of different options
|
||||
\$ fzf_configure_bindings --git_status=ctrl-g --history=ctrl-h --variables= --processes=
|
||||
|
||||
SEE Also
|
||||
To learn more about fish key bindings, see bind(1) and fish_key_reader(1).
|
||||
"
|
||||
end
|
||||
13
config/fish/functions/_fzf_extract_var_info.fish
Normal file
13
config/fish/functions/_fzf_extract_var_info.fish
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
# helper function for _fzf_search_variables
|
||||
function _fzf_extract_var_info --argument-names variable_name set_show_output --description "Extract and reformat lines pertaining to \$variable_name from \$set_show_output."
|
||||
# Extract only the lines about the variable, all of which begin with either
|
||||
# $variable_name: ...or... $variable_name[
|
||||
string match --regex "^\\\$$variable_name(?::|\[).*" <$set_show_output |
|
||||
# Strip the variable name prefix, including ": " for scope info lines
|
||||
string replace --regex "^\\\$$variable_name(?:: )?" '' |
|
||||
# Distill the lines of values, replacing...
|
||||
# [1]: |value|
|
||||
# ...with...
|
||||
# [1] value
|
||||
string replace --regex ": \|(.*)\|" ' $1'
|
||||
end
|
||||
49
config/fish/functions/_fzf_preview_changed_file.fish
Normal file
49
config/fish/functions/_fzf_preview_changed_file.fish
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
# helper for _fzf_search_git_status
|
||||
# arg should be a line from git status --short, e.g.
|
||||
# MM functions/_fzf_preview_changed_file.fish
|
||||
# D README.md
|
||||
# R LICENSE -> "New License"
|
||||
function _fzf_preview_changed_file --argument-names path_status --description "Show the git diff of the given file."
|
||||
# remove quotes because they'll be interpreted literally by git diff
|
||||
# no need to requote when referencing $path because fish does not perform word splitting
|
||||
# https://fishshell.com/docs/current/fish_for_bash_users.html
|
||||
set -f path (string unescape (string sub --start 4 $path_status))
|
||||
# first letter of short format shows index, second letter shows working tree
|
||||
# https://git-scm.com/docs/git-status/2.35.0#_short_format
|
||||
set -f index_status (string sub --length 1 $path_status)
|
||||
set -f working_tree_status (string sub --start 2 --length 1 $path_status)
|
||||
|
||||
set -f diff_opts --color=always
|
||||
|
||||
if test $index_status = '?'
|
||||
_fzf_report_diff_type Untracked
|
||||
_fzf_preview_file $path
|
||||
else if contains {$index_status}$working_tree_status DD AU UD UA DU AA UU
|
||||
# Unmerged statuses taken directly from git status help's short format table
|
||||
# Unmerged statuses are mutually exclusive with other statuses, so if we see
|
||||
# these, then safe to assume the path is unmerged
|
||||
_fzf_report_diff_type Unmerged
|
||||
git diff $diff_opts -- $path
|
||||
else
|
||||
if test $index_status != ' '
|
||||
_fzf_report_diff_type Staged
|
||||
|
||||
# renames are only detected in the index, never working tree, so only need to test for it here
|
||||
# https://stackoverflow.com/questions/73954214
|
||||
if test $index_status = R
|
||||
# diff the post-rename path with the original path, otherwise the diff will show the entire file as being added
|
||||
set -f orig_and_new_path (string split --max 1 -- ' -> ' $path)
|
||||
git diff --staged $diff_opts -- $orig_and_new_path[1] $orig_and_new_path[2]
|
||||
# path currently has the form of "original -> current", so we need to correct it before it's used below
|
||||
set path $orig_and_new_path[2]
|
||||
else
|
||||
git diff --staged $diff_opts -- $path
|
||||
end
|
||||
end
|
||||
|
||||
if test $working_tree_status != ' '
|
||||
_fzf_report_diff_type Unstaged
|
||||
git diff $diff_opts -- $path
|
||||
end
|
||||
end
|
||||
end
|
||||
43
config/fish/functions/_fzf_preview_file.fish
Normal file
43
config/fish/functions/_fzf_preview_file.fish
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
# helper function for _fzf_search_directory and _fzf_search_git_status
|
||||
function _fzf_preview_file --description "Print a preview for the given file based on its file type."
|
||||
# because there's no way to guarantee that _fzf_search_directory passes the path to _fzf_preview_file
|
||||
# as one argument, we collect all the arguments into one single variable and treat that as the path
|
||||
set -f file_path $argv
|
||||
|
||||
if test -L "$file_path" # symlink
|
||||
# notify user and recurse on the target of the symlink, which can be any of these file types
|
||||
set -l target_path (realpath "$file_path")
|
||||
|
||||
set_color yellow
|
||||
echo "'$file_path' is a symlink to '$target_path'."
|
||||
set_color normal
|
||||
|
||||
_fzf_preview_file "$target_path"
|
||||
else if test -f "$file_path" # regular file
|
||||
if set --query fzf_preview_file_cmd
|
||||
# need to escape quotes to make sure eval receives file_path as a single arg
|
||||
eval "$fzf_preview_file_cmd '$file_path'"
|
||||
else
|
||||
bat --style=numbers --color=always "$file_path"
|
||||
end
|
||||
else if test -d "$file_path" # directory
|
||||
if set --query fzf_preview_dir_cmd
|
||||
# see above
|
||||
eval "$fzf_preview_dir_cmd '$file_path'"
|
||||
else
|
||||
# -A list hidden files as well, except for . and ..
|
||||
# -F helps classify files by appending symbols after the file name
|
||||
command ls -A -F "$file_path"
|
||||
end
|
||||
else if test -c "$file_path"
|
||||
_fzf_report_file_type "$file_path" "character device file"
|
||||
else if test -b "$file_path"
|
||||
_fzf_report_file_type "$file_path" "block device file"
|
||||
else if test -S "$file_path"
|
||||
_fzf_report_file_type "$file_path" socket
|
||||
else if test -p "$file_path"
|
||||
_fzf_report_file_type "$file_path" "named pipe"
|
||||
else
|
||||
echo "$file_path doesn't exist." >&2
|
||||
end
|
||||
end
|
||||
18
config/fish/functions/_fzf_report_diff_type.fish
Normal file
18
config/fish/functions/_fzf_report_diff_type.fish
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
# helper for _fzf_preview_changed_file
|
||||
# prints out something like
|
||||
# ╭────────╮
|
||||
# │ Staged │
|
||||
# ╰────────╯
|
||||
function _fzf_report_diff_type --argument-names diff_type --description "Print a distinct colored header meant to preface a git patch."
|
||||
# number of "-" to draw is the length of the string to box + 2 for padding
|
||||
set -f repeat_count (math 2 + (string length $diff_type))
|
||||
set -f line (string repeat --count $repeat_count ─)
|
||||
set -f top_border ╭$line╮
|
||||
set -f btm_border ╰$line╯
|
||||
|
||||
set_color yellow
|
||||
echo $top_border
|
||||
echo "│ $diff_type │"
|
||||
echo $btm_border
|
||||
set_color normal
|
||||
end
|
||||
6
config/fish/functions/_fzf_report_file_type.fish
Normal file
6
config/fish/functions/_fzf_report_file_type.fish
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
# helper function for _fzf_preview_file
|
||||
function _fzf_report_file_type --argument-names file_path file_type --description "Explain the file type for a file."
|
||||
set_color red
|
||||
echo "Cannot preview '$file_path': it is a $file_type."
|
||||
set_color normal
|
||||
end
|
||||
32
config/fish/functions/_fzf_search_directory.fish
Normal file
32
config/fish/functions/_fzf_search_directory.fish
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
function _fzf_search_directory --description "Search the current directory. Replace the current token with the selected file paths."
|
||||
# Directly use fd binary to avoid output buffering delay caused by a fd alias, if any.
|
||||
# Debian-based distros install fd as fdfind and the fd package is something else, so
|
||||
# check for fdfind first. Fall back to "fd" for a clear error message.
|
||||
set -f fd_cmd (command -v fdfind || command -v fd || echo "fd")
|
||||
set -f --append fd_cmd --color=always $fzf_fd_opts
|
||||
|
||||
set -f fzf_arguments --multi --ansi $fzf_directory_opts
|
||||
set -f token (commandline --current-token)
|
||||
# expand any variables or leading tilde (~) in the token
|
||||
set -f expanded_token (eval echo -- $token)
|
||||
# unescape token because it's already quoted so backslashes will mess up the path
|
||||
set -f unescaped_exp_token (string unescape -- $expanded_token)
|
||||
|
||||
# If the current token is a directory and has a trailing slash,
|
||||
# then use it as fd's base directory.
|
||||
if string match --quiet -- "*/" $unescaped_exp_token && test -d "$unescaped_exp_token"
|
||||
set --append fd_cmd --base-directory=$unescaped_exp_token
|
||||
# use the directory name as fzf's prompt to indicate the search is limited to that directory
|
||||
set --prepend fzf_arguments --prompt="Directory $unescaped_exp_token> " --preview="_fzf_preview_file $expanded_token{}"
|
||||
set -f file_paths_selected $unescaped_exp_token($fd_cmd 2>/dev/null | _fzf_wrapper $fzf_arguments)
|
||||
else
|
||||
set --prepend fzf_arguments --prompt="Directory> " --query="$unescaped_exp_token" --preview='_fzf_preview_file {}'
|
||||
set -f file_paths_selected ($fd_cmd 2>/dev/null | _fzf_wrapper $fzf_arguments)
|
||||
end
|
||||
|
||||
if test $status -eq 0
|
||||
commandline --current-token --replace -- (string escape -- $file_paths_selected | string join ' ')
|
||||
end
|
||||
|
||||
commandline --function repaint
|
||||
end
|
||||
36
config/fish/functions/_fzf_search_git_log.fish
Normal file
36
config/fish/functions/_fzf_search_git_log.fish
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
function _fzf_search_git_log --description "Search the output of git log and preview commits. Replace the current token with the selected commit hash."
|
||||
if not git rev-parse --git-dir >/dev/null 2>&1
|
||||
echo '_fzf_search_git_log: Not in a git repository.' >&2
|
||||
else
|
||||
if not set --query fzf_git_log_format
|
||||
# %h gives you the abbreviated commit hash, which is useful for saving screen space, but we will have to expand it later below
|
||||
set -f fzf_git_log_format '%C(bold blue)%h%C(reset) - %C(cyan)%ad%C(reset) %C(yellow)%d%C(reset) %C(normal)%s%C(reset) %C(dim normal)[%an]%C(reset)'
|
||||
end
|
||||
|
||||
set -f preview_cmd 'git show --color=always --stat --patch {1}'
|
||||
if set --query fzf_diff_highlighter
|
||||
set preview_cmd "$preview_cmd | $fzf_diff_highlighter"
|
||||
end
|
||||
|
||||
set -f selected_log_lines (
|
||||
git log --no-show-signature --color=always --format=format:$fzf_git_log_format --date=short | \
|
||||
_fzf_wrapper --ansi \
|
||||
--multi \
|
||||
--scheme=history \
|
||||
--prompt="Git Log> " \
|
||||
--preview=$preview_cmd \
|
||||
--query=(commandline --current-token) \
|
||||
$fzf_git_log_opts
|
||||
)
|
||||
if test $status -eq 0
|
||||
for line in $selected_log_lines
|
||||
set -f abbreviated_commit_hash (string split --field 1 " " $line)
|
||||
set -f full_commit_hash (git rev-parse $abbreviated_commit_hash)
|
||||
set -f --append commit_hashes $full_commit_hash
|
||||
end
|
||||
commandline --current-token --replace (string join ' ' $commit_hashes)
|
||||
end
|
||||
end
|
||||
|
||||
commandline --function repaint
|
||||
end
|
||||
41
config/fish/functions/_fzf_search_git_status.fish
Normal file
41
config/fish/functions/_fzf_search_git_status.fish
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
function _fzf_search_git_status --description "Search the output of git status. Replace the current token with the selected file paths."
|
||||
if not git rev-parse --git-dir >/dev/null 2>&1
|
||||
echo '_fzf_search_git_status: Not in a git repository.' >&2
|
||||
else
|
||||
set -f preview_cmd '_fzf_preview_changed_file {}'
|
||||
if set --query fzf_diff_highlighter
|
||||
set preview_cmd "$preview_cmd | $fzf_diff_highlighter"
|
||||
end
|
||||
|
||||
set -f selected_paths (
|
||||
# Pass configuration color.status=always to force status to use colors even though output is sent to a pipe
|
||||
git -c color.status=always status --short |
|
||||
_fzf_wrapper --ansi \
|
||||
--multi \
|
||||
--prompt="Git Status> " \
|
||||
--query=(commandline --current-token) \
|
||||
--preview=$preview_cmd \
|
||||
--nth="2.." \
|
||||
$fzf_git_status_opts
|
||||
)
|
||||
if test $status -eq 0
|
||||
# git status --short automatically escapes the paths of most files for us so not going to bother trying to handle
|
||||
# the few edges cases of weird file names that should be extremely rare (e.g. "this;needs;escaping")
|
||||
set -f cleaned_paths
|
||||
|
||||
for path in $selected_paths
|
||||
if test (string sub --length 1 $path) = R
|
||||
# path has been renamed and looks like "R LICENSE -> LICENSE.md"
|
||||
# extract the path to use from after the arrow
|
||||
set --append cleaned_paths (string split -- "-> " $path)[-1]
|
||||
else
|
||||
set --append cleaned_paths (string sub --start=4 $path)
|
||||
end
|
||||
end
|
||||
|
||||
commandline --current-token --replace -- (string join ' ' $cleaned_paths)
|
||||
end
|
||||
end
|
||||
|
||||
commandline --function repaint
|
||||
end
|
||||
39
config/fish/functions/_fzf_search_history.fish
Normal file
39
config/fish/functions/_fzf_search_history.fish
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
function _fzf_search_history --description "Search command history. Replace the command line with the selected command."
|
||||
# history merge incorporates history changes from other fish sessions
|
||||
# it errors out if called in private mode
|
||||
if test -z "$fish_private_mode"
|
||||
builtin history merge
|
||||
end
|
||||
|
||||
if not set --query fzf_history_time_format
|
||||
# Reference https://devhints.io/strftime to understand strftime format symbols
|
||||
set -f fzf_history_time_format "%m-%d %H:%M:%S"
|
||||
end
|
||||
|
||||
# Delinate time from command in history entries using the vertical box drawing char (U+2502).
|
||||
# Then, to get raw command from history entries, delete everything up to it. The ? on regex is
|
||||
# necessary to make regex non-greedy so it won't match into commands containing the char.
|
||||
set -f time_prefix_regex '^.*? │ '
|
||||
# Delinate commands throughout pipeline using null rather than newlines because commands can be multi-line
|
||||
set -f commands_selected (
|
||||
builtin history --null --show-time="$fzf_history_time_format │ " |
|
||||
_fzf_wrapper --read0 \
|
||||
--print0 \
|
||||
--multi \
|
||||
--scheme=history \
|
||||
--prompt="History> " \
|
||||
--query=(commandline) \
|
||||
--preview="string replace --regex '$time_prefix_regex' '' -- {} | fish_indent --ansi" \
|
||||
--preview-window="bottom:3:wrap" \
|
||||
$fzf_history_opts |
|
||||
string split0 |
|
||||
# remove timestamps from commands selected
|
||||
string replace --regex $time_prefix_regex ''
|
||||
)
|
||||
|
||||
if test $status -eq 0
|
||||
commandline --replace -- $commands_selected
|
||||
end
|
||||
|
||||
commandline --function repaint
|
||||
end
|
||||
32
config/fish/functions/_fzf_search_processes.fish
Normal file
32
config/fish/functions/_fzf_search_processes.fish
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
function _fzf_search_processes --description "Search all running processes. Replace the current token with the pid of the selected process."
|
||||
# Directly use ps command because it is often aliased to a different command entirely
|
||||
# or with options that dirty the search results and preview output
|
||||
set -f ps_cmd (command -v ps || echo "ps")
|
||||
# use all caps to be consistent with ps default format
|
||||
# snake_case because ps doesn't seem to allow spaces in the field names
|
||||
set -f ps_preview_fmt (string join ',' 'pid' 'ppid=PARENT' 'user' '%cpu' 'rss=RSS_IN_KB' 'start=START_TIME' 'command')
|
||||
set -f processes_selected (
|
||||
$ps_cmd -A -opid,command | \
|
||||
_fzf_wrapper --multi \
|
||||
--prompt="Processes> " \
|
||||
--query (commandline --current-token) \
|
||||
--ansi \
|
||||
# first line outputted by ps is a header, so we need to mark it as so
|
||||
--header-lines=1 \
|
||||
# ps uses exit code 1 if the process was not found, in which case show an message explaining so
|
||||
--preview="$ps_cmd -o '$ps_preview_fmt' -p {1} || echo 'Cannot preview {1} because it exited.'" \
|
||||
--preview-window="bottom:4:wrap" \
|
||||
$fzf_processes_opts
|
||||
)
|
||||
|
||||
if test $status -eq 0
|
||||
for process in $processes_selected
|
||||
set -f --append pids_selected (string split --no-empty --field=1 -- " " $process)
|
||||
end
|
||||
|
||||
# string join to replace the newlines outputted by string split with spaces
|
||||
commandline --current-token --replace -- (string join ' ' $pids_selected)
|
||||
end
|
||||
|
||||
commandline --function repaint
|
||||
end
|
||||
47
config/fish/functions/_fzf_search_variables.fish
Normal file
47
config/fish/functions/_fzf_search_variables.fish
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
# This function expects the following two arguments:
|
||||
# argument 1 = output of (set --show | psub), i.e. a file with the scope info and values of all variables
|
||||
# argument 2 = output of (set --names | psub), i.e. a file with all variable names
|
||||
function _fzf_search_variables --argument-names set_show_output set_names_output --description "Search and preview shell variables. Replace the current token with the selected variable."
|
||||
if test -z "$set_names_output"
|
||||
printf '%s\n' '_fzf_search_variables requires 2 arguments.' >&2
|
||||
|
||||
commandline --function repaint
|
||||
return 22 # 22 means invalid argument in POSIX
|
||||
end
|
||||
|
||||
# Exclude the history variable from being piped into fzf because
|
||||
# 1. it's not included in $set_names_output
|
||||
# 2. it tends to be a very large value => increases computation time
|
||||
# 3._fzf_search_history is a much better way to examine history anyway
|
||||
set -f all_variable_names (string match --invert history <$set_names_output)
|
||||
|
||||
set -f current_token (commandline --current-token)
|
||||
# Use the current token to pre-populate fzf's query. If the current token begins
|
||||
# with a $, remove it from the query so that it will better match the variable names
|
||||
set -f cleaned_curr_token (string replace -- '$' '' $current_token)
|
||||
|
||||
set -f variable_names_selected (
|
||||
printf '%s\n' $all_variable_names |
|
||||
_fzf_wrapper --preview "_fzf_extract_var_info {} $set_show_output" \
|
||||
--prompt="Variables> " \
|
||||
--preview-window="wrap" \
|
||||
--multi \
|
||||
--query=$cleaned_curr_token \
|
||||
$fzf_variables_opts
|
||||
)
|
||||
|
||||
if test $status -eq 0
|
||||
# If the current token begins with a $, do not overwrite the $ when
|
||||
# replacing the current token with the selected variable.
|
||||
# Uses brace expansion to prepend $ to each variable name.
|
||||
commandline --current-token --replace (
|
||||
if string match --quiet -- '$*' $current_token
|
||||
string join " " \${$variable_names_selected}
|
||||
else
|
||||
string join " " $variable_names_selected
|
||||
end
|
||||
)
|
||||
end
|
||||
|
||||
commandline --function repaint
|
||||
end
|
||||
21
config/fish/functions/_fzf_wrapper.fish
Normal file
21
config/fish/functions/_fzf_wrapper.fish
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
function _fzf_wrapper --description "Prepares some environment variables before executing fzf."
|
||||
# Make sure fzf uses fish to execute preview commands, some of which
|
||||
# are autoloaded fish functions so don't exist in other shells.
|
||||
# Use --function so that it doesn't clobber SHELL outside this function.
|
||||
set -f --export SHELL (command --search fish)
|
||||
|
||||
# If neither FZF_DEFAULT_OPTS nor FZF_DEFAULT_OPTS_FILE are set, then set some sane defaults.
|
||||
# See https://github.com/junegunn/fzf#environment-variables
|
||||
set --query FZF_DEFAULT_OPTS FZF_DEFAULT_OPTS_FILE
|
||||
if test $status -eq 2
|
||||
# cycle allows jumping between the first and last results, making scrolling faster
|
||||
# layout=reverse lists results top to bottom, mimicking the familiar layouts of git log, history, and env
|
||||
# border shows where the fzf window begins and ends
|
||||
# height=90% leaves space to see the current command and some scrollback, maintaining context of work
|
||||
# preview-window=wrap wraps long lines in the preview window, making reading easier
|
||||
# marker=* makes the multi-select marker more distinguishable from the pointer (since both default to >)
|
||||
set --export FZF_DEFAULT_OPTS '--cycle --layout=reverse --border --height=90% --preview-window=wrap --marker="*"'
|
||||
end
|
||||
|
||||
fzf $argv
|
||||
end
|
||||
3
config/fish/functions/ff.fish
Normal file
3
config/fish/functions/ff.fish
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
function ff --wraps=fastfetch --description 'alias ff=fastfetch'
|
||||
fastfetch $argv
|
||||
end
|
||||
30
config/fish/functions/fish_prompt.fish
Normal file
30
config/fish/functions/fish_prompt.fish
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
function fish_prompt --description 'Write out the prompt'
|
||||
set -l last_status $status
|
||||
set -l normal (set_color normal)
|
||||
set -l status_color (set_color brgreen)
|
||||
set -l cwd_color (set_color $fish_color_cwd)
|
||||
set -l vcs_color (set_color brpurple)
|
||||
set -l prompt_status ""
|
||||
|
||||
# Since we display the prompt on a new line allow the directory names to be longer.
|
||||
set -q fish_prompt_pwd_dir_length
|
||||
or set -lx fish_prompt_pwd_dir_length 0
|
||||
|
||||
# Color the prompt differently when we're root
|
||||
set -l suffix '❯'
|
||||
if functions -q fish_is_root_user; and fish_is_root_user
|
||||
if set -q fish_color_cwd_root
|
||||
set cwd_color (set_color $fish_color_cwd_root)
|
||||
end
|
||||
set suffix '#'
|
||||
end
|
||||
|
||||
# Color the prompt in red on error
|
||||
if test $last_status -ne 0
|
||||
set status_color (set_color $fish_color_error)
|
||||
set prompt_status $status_color "[" $last_status "]" $normal
|
||||
end
|
||||
|
||||
echo -s (prompt_login) ' ' $cwd_color (prompt_pwd) $vcs_color (fish_vcs_prompt) $normal ' ' $prompt_status
|
||||
echo -n -s $status_color $suffix ' ' $normal
|
||||
end
|
||||
31
config/fish/functions/fish_prompt.fish.bak
Normal file
31
config/fish/functions/fish_prompt.fish.bak
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
function fish_prompt --description 'Write out the prompt'
|
||||
set -l last_pipestatus $pipestatus
|
||||
set -lx __fish_last_status $status # Export for __fish_print_pipestatus.
|
||||
set -l normal (set_color normal)
|
||||
set -q fish_color_status
|
||||
or set -g fish_color_status red
|
||||
|
||||
# Color the prompt differently when we're root
|
||||
set -l color_cwd $fish_color_cwd
|
||||
set -l suffix '>'
|
||||
if functions -q fish_is_root_user; and fish_is_root_user
|
||||
if set -q fish_color_cwd_root
|
||||
set color_cwd $fish_color_cwd_root
|
||||
end
|
||||
set suffix '#'
|
||||
end
|
||||
|
||||
# Write pipestatus
|
||||
# If the status was carried over (if no command is issued or if `set` leaves the status untouched), don't bold it.
|
||||
set -l bold_flag --bold
|
||||
set -q __fish_prompt_status_generation; or set -g __fish_prompt_status_generation $status_generation
|
||||
if test $__fish_prompt_status_generation = $status_generation
|
||||
set bold_flag
|
||||
end
|
||||
set __fish_prompt_status_generation $status_generation
|
||||
set -l status_color (set_color $fish_color_status)
|
||||
set -l statusb_color (set_color $bold_flag $fish_color_status)
|
||||
set -l prompt_status (__fish_print_pipestatus "[" "]" "|" "$status_color" "$statusb_color" $last_pipestatus)
|
||||
|
||||
echo -n -s (prompt_login)' ' (set_color $color_cwd) (prompt_pwd) $normal (fish_vcs_prompt) $normal " "$prompt_status $suffix " "
|
||||
end
|
||||
251
config/fish/functions/fisher.fish
Normal file
251
config/fish/functions/fisher.fish
Normal file
|
|
@ -0,0 +1,251 @@
|
|||
function fisher --argument-names cmd --description "A plugin manager for Fish"
|
||||
set --query fisher_path || set --local fisher_path $__fish_config_dir
|
||||
set --local fisher_version 4.4.8
|
||||
set --local fish_plugins $__fish_config_dir/fish_plugins
|
||||
|
||||
switch "$cmd"
|
||||
case -v --version
|
||||
echo "fisher, version $fisher_version"
|
||||
case "" -h --help
|
||||
echo "Usage: fisher install <plugins...> Install plugins"
|
||||
echo " fisher remove <plugins...> Remove installed plugins"
|
||||
echo " fisher uninstall <plugins...> Remove installed plugins (alias)"
|
||||
echo " fisher update <plugins...> Update installed plugins"
|
||||
echo " fisher update Update all installed plugins"
|
||||
echo " fisher list [<regex>] List installed plugins matching regex"
|
||||
echo "Options:"
|
||||
echo " -v, --version Print version"
|
||||
echo " -h, --help Print this help message"
|
||||
echo "Variables:"
|
||||
echo " \$fisher_path Plugin installation path. Default: $__fish_config_dir" | string replace --regex -- $HOME \~
|
||||
case ls list
|
||||
string match --entire --regex -- "$argv[2]" $_fisher_plugins
|
||||
case install update remove uninstall
|
||||
isatty || read --local --null --array stdin && set --append argv $stdin
|
||||
|
||||
test "$cmd" = uninstall && set cmd remove
|
||||
|
||||
set --local install_plugins
|
||||
set --local update_plugins
|
||||
set --local remove_plugins
|
||||
set --local arg_plugins $argv[2..-1]
|
||||
set --local old_plugins $_fisher_plugins
|
||||
set --local new_plugins
|
||||
|
||||
test -e $fish_plugins && set --local file_plugins (string match --regex -- '^[^\s]+$' <$fish_plugins | string replace -- \~ ~)
|
||||
|
||||
if ! set --query argv[2]
|
||||
if test "$cmd" != update
|
||||
echo "fisher: Not enough arguments for command: \"$cmd\"" >&2 && return 1
|
||||
else if ! set --query file_plugins
|
||||
echo "fisher: \"$fish_plugins\" file not found: \"$cmd\"" >&2 && return 1
|
||||
end
|
||||
set arg_plugins $file_plugins
|
||||
else if test "$cmd" = install && ! set --query old_plugins[1]
|
||||
set --append arg_plugins $file_plugins
|
||||
end
|
||||
|
||||
for plugin in $arg_plugins
|
||||
set plugin (test -e "$plugin" && realpath $plugin || string lower -- $plugin)
|
||||
contains -- "$plugin" $new_plugins || set --append new_plugins $plugin
|
||||
end
|
||||
|
||||
if set --query argv[2]
|
||||
for plugin in $new_plugins
|
||||
if contains -- "$plugin" $old_plugins
|
||||
test "$cmd" = remove &&
|
||||
set --append remove_plugins $plugin ||
|
||||
set --append update_plugins $plugin
|
||||
else if test "$cmd" = install
|
||||
set --append install_plugins $plugin
|
||||
else
|
||||
echo "fisher: Plugin not installed: \"$plugin\"" >&2 && return 1
|
||||
end
|
||||
end
|
||||
else
|
||||
for plugin in $new_plugins
|
||||
contains -- "$plugin" $old_plugins &&
|
||||
set --append update_plugins $plugin ||
|
||||
set --append install_plugins $plugin
|
||||
end
|
||||
|
||||
for plugin in $old_plugins
|
||||
contains -- "$plugin" $new_plugins || set --append remove_plugins $plugin
|
||||
end
|
||||
end
|
||||
|
||||
set --local pid_list
|
||||
set --local source_plugins
|
||||
set --local fetch_plugins $update_plugins $install_plugins
|
||||
set --local fish_path (status fish-path)
|
||||
|
||||
echo (set_color --bold)fisher $cmd version $fisher_version(set_color normal)
|
||||
|
||||
for plugin in $fetch_plugins
|
||||
set --local source (command mktemp -d)
|
||||
set --append source_plugins $source
|
||||
|
||||
command mkdir -p $source/{completions,conf.d,themes,functions}
|
||||
|
||||
$fish_path --command "
|
||||
if test -e $plugin
|
||||
command cp -Rf $plugin/* $source
|
||||
else
|
||||
set resp (command mktemp)
|
||||
set temp (command mktemp -d)
|
||||
set repo (string split -- \@ $plugin) || set repo[2] HEAD
|
||||
|
||||
if set path (string replace --regex -- '^(https://)?gitlab.com/' '' \$repo[1])
|
||||
set name (string split -- / \$path)[-1]
|
||||
set url https://gitlab.com/\$path/-/archive/\$repo[2]/\$name-\$repo[2].tar.gz
|
||||
else
|
||||
set url https://api.github.com/repos/\$repo[1]/tarball/\$repo[2]
|
||||
end
|
||||
|
||||
echo Fetching (set_color --underline)\$url(set_color normal)
|
||||
|
||||
set http (command curl -q --silent -L -o \$resp -w %{http_code} \$url)
|
||||
|
||||
if test \"\$http\" = 200 && command tar -xzC \$temp -f \$resp 2>/dev/null
|
||||
command cp -Rf \$temp/*/* $source
|
||||
else if test \"\$http\" = 403
|
||||
echo fisher: GitHub API rate limit exceeded \(HTTP 403\) >&2
|
||||
command rm -rf $source
|
||||
else
|
||||
echo fisher: Invalid plugin name or host unavailable: \\\"$plugin\\\" >&2
|
||||
command rm -rf $source
|
||||
end
|
||||
|
||||
command rm -rf \$temp
|
||||
end
|
||||
|
||||
set files $source/* && string match --quiet --regex -- .+\.fish\\\$ \$files
|
||||
" &
|
||||
|
||||
set --append pid_list (jobs --last --pid)
|
||||
end
|
||||
|
||||
wait $pid_list 2>/dev/null
|
||||
|
||||
for plugin in $fetch_plugins
|
||||
if set --local source $source_plugins[(contains --index -- "$plugin" $fetch_plugins)] && test ! -e $source
|
||||
if set --local index (contains --index -- "$plugin" $install_plugins)
|
||||
set --erase install_plugins[$index]
|
||||
else
|
||||
set --erase update_plugins[(contains --index -- "$plugin" $update_plugins)]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
for plugin in $update_plugins $remove_plugins
|
||||
if set --local index (contains --index -- "$plugin" $_fisher_plugins)
|
||||
set --local plugin_files_var _fisher_(string escape --style=var -- $plugin)_files
|
||||
|
||||
if contains -- "$plugin" $remove_plugins
|
||||
for name in (string replace --filter --regex -- '.+/conf\.d/([^/]+)\.fish$' '$1' $$plugin_files_var)
|
||||
emit {$name}_uninstall
|
||||
end
|
||||
printf "%s\n" Removing\ (set_color red --bold)$plugin(set_color normal) " "$$plugin_files_var | string replace -- \~ ~
|
||||
set --erase _fisher_plugins[$index]
|
||||
end
|
||||
|
||||
command rm -rf (string replace -- \~ ~ $$plugin_files_var)
|
||||
|
||||
functions --erase (string replace --filter --regex -- '.+/functions/([^/]+)\.fish$' '$1' $$plugin_files_var)
|
||||
|
||||
for name in (string replace --filter --regex -- '.+/completions/([^/]+)\.fish$' '$1' $$plugin_files_var)
|
||||
complete --erase --command $name
|
||||
end
|
||||
|
||||
set --erase $plugin_files_var
|
||||
end
|
||||
end
|
||||
|
||||
if set --query update_plugins[1] || set --query install_plugins[1]
|
||||
command mkdir -p $fisher_path/{functions,themes,conf.d,completions}
|
||||
end
|
||||
|
||||
for plugin in $update_plugins $install_plugins
|
||||
set --local source $source_plugins[(contains --index -- "$plugin" $fetch_plugins)]
|
||||
set --local files $source/{functions,themes,conf.d,completions}/*
|
||||
|
||||
if set --local index (contains --index -- $plugin $install_plugins)
|
||||
set --local user_files $fisher_path/{functions,themes,conf.d,completions}/*
|
||||
set --local conflict_files
|
||||
|
||||
for file in (string replace -- $source/ $fisher_path/ $files)
|
||||
contains -- $file $user_files && set --append conflict_files $file
|
||||
end
|
||||
|
||||
if set --query conflict_files[1] && set --erase install_plugins[$index]
|
||||
echo -s "fisher: Cannot install \"$plugin\": please remove or move conflicting files first:" \n" "$conflict_files >&2
|
||||
continue
|
||||
end
|
||||
end
|
||||
|
||||
for file in (string replace -- $source/ "" $files)
|
||||
command cp -RLf $source/$file $fisher_path/$file
|
||||
end
|
||||
|
||||
set --local plugin_files_var _fisher_(string escape --style=var -- $plugin)_files
|
||||
|
||||
set --query files[1] && set --universal $plugin_files_var (string replace -- $source $fisher_path $files | string replace -- ~ \~)
|
||||
|
||||
contains -- $plugin $_fisher_plugins || set --universal --append _fisher_plugins $plugin
|
||||
contains -- $plugin $install_plugins && set --local event install || set --local event update
|
||||
|
||||
printf "%s\n" Installing\ (set_color --bold)$plugin(set_color normal) " "$$plugin_files_var | string replace -- \~ ~
|
||||
|
||||
for file in (string match --regex -- '.+/[^/]+\.fish$' $$plugin_files_var | string replace -- \~ ~)
|
||||
source $file
|
||||
if set --local name (string replace --regex -- '.+conf\.d/([^/]+)\.fish$' '$1' $file)
|
||||
emit {$name}_$event
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
command rm -rf $source_plugins
|
||||
|
||||
if set --query _fisher_plugins[1]
|
||||
set --local commit_plugins
|
||||
|
||||
for plugin in $file_plugins
|
||||
contains -- (string lower -- $plugin) (string lower -- $_fisher_plugins) && set --append commit_plugins $plugin
|
||||
end
|
||||
|
||||
for plugin in $_fisher_plugins
|
||||
contains -- (string lower -- $plugin) (string lower -- $commit_plugins) || set --append commit_plugins $plugin
|
||||
end
|
||||
|
||||
string replace --regex -- $HOME \~ $commit_plugins >$fish_plugins
|
||||
else
|
||||
set --erase _fisher_plugins
|
||||
command rm -f $fish_plugins
|
||||
end
|
||||
|
||||
set --local total (count $install_plugins) (count $update_plugins) (count $remove_plugins)
|
||||
|
||||
test "$total" != "0 0 0" && echo (string join ", " (
|
||||
test $total[1] = 0 || echo "Installed $total[1]") (
|
||||
test $total[2] = 0 || echo "Updated $total[2]") (
|
||||
test $total[3] = 0 || echo "Removed $total[3]")
|
||||
) plugin/s
|
||||
case \*
|
||||
echo "fisher: Unknown command: \"$cmd\"" >&2 && return 1
|
||||
end
|
||||
end
|
||||
|
||||
if ! set --query _fisher_upgraded_to_4_4
|
||||
set --universal _fisher_upgraded_to_4_4
|
||||
if functions --query _fisher_list
|
||||
set --query XDG_DATA_HOME[1] || set --local XDG_DATA_HOME ~/.local/share
|
||||
command rm -rf $XDG_DATA_HOME/fisher
|
||||
functions --erase _fisher_{list,plugin_parse}
|
||||
fisher update >/dev/null 2>/dev/null
|
||||
else
|
||||
for var in (set --names | string match --entire --regex '^_fisher_.+_files$')
|
||||
set $var (string replace -- ~ \~ $$var)
|
||||
end
|
||||
functions --erase _fisher_fish_postexec
|
||||
end
|
||||
end
|
||||
46
config/fish/functions/fzf_configure_bindings.fish
Normal file
46
config/fish/functions/fzf_configure_bindings.fish
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
# Always installs bindings for insert and default mode for simplicity and b/c it has almost no side-effect
|
||||
# https://gitter.im/fish-shell/fish-shell?at=60a55915ee77a74d685fa6b1
|
||||
function fzf_configure_bindings --description "Installs the default key bindings for fzf.fish with user overrides passed as options."
|
||||
# no need to install bindings if not in interactive mode or running tests
|
||||
status is-interactive || test "$CI" = true; or return
|
||||
|
||||
set -f options_spec h/help 'directory=?' 'git_log=?' 'git_status=?' 'history=?' 'processes=?' 'variables=?'
|
||||
argparse --max-args=0 --ignore-unknown $options_spec -- $argv 2>/dev/null
|
||||
if test $status -ne 0
|
||||
echo "Invalid option or a positional argument was provided." >&2
|
||||
_fzf_configure_bindings_help
|
||||
return 22
|
||||
else if set --query _flag_help
|
||||
_fzf_configure_bindings_help
|
||||
return
|
||||
else
|
||||
# Initialize with default key sequences and then override or disable them based on flags
|
||||
# index 1 = directory, 2 = git_log, 3 = git_status, 4 = history, 5 = processes, 6 = variables
|
||||
set -f key_sequences ctrl-alt-f ctrl-alt-l ctrl-alt-s ctrl-r ctrl-alt-p ctrl-v
|
||||
set --query _flag_directory && set key_sequences[1] "$_flag_directory"
|
||||
set --query _flag_git_log && set key_sequences[2] "$_flag_git_log"
|
||||
set --query _flag_git_status && set key_sequences[3] "$_flag_git_status"
|
||||
set --query _flag_history && set key_sequences[4] "$_flag_history"
|
||||
set --query _flag_processes && set key_sequences[5] "$_flag_processes"
|
||||
set --query _flag_variables && set key_sequences[6] "$_flag_variables"
|
||||
|
||||
# If fzf bindings already exists, uninstall it first for a clean slate
|
||||
if functions --query _fzf_uninstall_bindings
|
||||
_fzf_uninstall_bindings
|
||||
end
|
||||
|
||||
for mode in default insert
|
||||
test -n $key_sequences[1] && bind --mode $mode $key_sequences[1] _fzf_search_directory
|
||||
test -n $key_sequences[2] && bind --mode $mode $key_sequences[2] _fzf_search_git_log
|
||||
test -n $key_sequences[3] && bind --mode $mode $key_sequences[3] _fzf_search_git_status
|
||||
test -n $key_sequences[4] && bind --mode $mode $key_sequences[4] _fzf_search_history
|
||||
test -n $key_sequences[5] && bind --mode $mode $key_sequences[5] _fzf_search_processes
|
||||
test -n $key_sequences[6] && bind --mode $mode $key_sequences[6] "$_fzf_search_vars_command"
|
||||
end
|
||||
|
||||
function _fzf_uninstall_bindings --inherit-variable key_sequences
|
||||
bind --erase -- $key_sequences
|
||||
bind --erase --mode insert -- $key_sequences
|
||||
end
|
||||
end
|
||||
end
|
||||
3
config/fish/functions/ls.fish
Normal file
3
config/fish/functions/ls.fish
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
function ls --wraps='eza --color' --description 'alias ls=eza --color'
|
||||
eza --icons always --color always $argv
|
||||
end
|
||||
3
config/fish/functions/n.fish
Normal file
3
config/fish/functions/n.fish
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
function n --wraps=nvim --description 'alias n=nvim'
|
||||
nvim $argv
|
||||
end
|
||||
4
config/fish/functions/nv.fish
Normal file
4
config/fish/functions/nv.fish
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
function nv --wraps=nvim --description 'alias nv=nvim'
|
||||
nvim $argv
|
||||
|
||||
end
|
||||
3
config/fish/functions/p.fish
Normal file
3
config/fish/functions/p.fish
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
function p --wraps='paru -Syu' --description 'alias p=paru -Syu'
|
||||
paru -Syu $argv
|
||||
end
|
||||
3
config/fish/functions/sshp.fish
Normal file
3
config/fish/functions/sshp.fish
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
function sshp --wraps='ssh -P 49111' --description 'alias sshp=ssh -P 49111'
|
||||
ssh -P 49111 $argv
|
||||
end
|
||||
3
config/fish/functions/vpn.fish
Normal file
3
config/fish/functions/vpn.fish
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
function vpn --wraps='sudo ~/./sing-box-sh' --description 'alias vpn=sudo ~/./sing-box-sh'
|
||||
sudo ~/./sing-box-sh $argv
|
||||
end
|
||||
3
config/fish/functions/webka.fish
Normal file
3
config/fish/functions/webka.fish
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
function webka --wraps='scrcpy --v4l2-sink=/dev/video0 --camera-size=1920x1080 --video-source=camera --video-codec=h265 --video-encoder=c2.qti.hevc.encoder --video-buffer=100' --description 'alias webka=scrcpy --v4l2-sink=/dev/video0 --camera-size=1920x1080 --video-source=camera --video-codec=h265 --video-encoder=c2.qti.hevc.encoder --video-buffer=100'
|
||||
scrcpy --v4l2-sink=/dev/video0 --camera-size=1920x1080 --video-source=camera --video-codec=h265 --video-encoder=c2.qti.hevc.encoder --video-buffer=100 $argv
|
||||
end
|
||||
8
config/fish/functions/y.fish
Normal file
8
config/fish/functions/y.fish
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
function y
|
||||
set tmp (mktemp -t "yazi-cwd.XXXXXX")
|
||||
yazi $argv --cwd-file="$tmp"
|
||||
if read -z cwd <"$tmp"; and [ -n "$cwd" ]; and [ "$cwd" != "$PWD" ]
|
||||
builtin cd -- "$cwd"
|
||||
end
|
||||
rm -f -- "$tmp"
|
||||
end
|
||||
3
config/fish/functions/yz.fish
Normal file
3
config/fish/functions/yz.fish
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
function yz --wraps=yazi --description 'alias yz=yazi'
|
||||
yazi $argv
|
||||
end
|
||||
3
config/fish/functions/ня.fish
Normal file
3
config/fish/functions/ня.fish
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
function ня --wraps=yazi --description 'alias ня=yazi'
|
||||
yazi $argv
|
||||
end
|
||||
119
config/fuzzel/fuzzel.ini
Normal file
119
config/fuzzel/fuzzel.ini
Normal file
|
|
@ -0,0 +1,119 @@
|
|||
# output=<not set>
|
||||
font=IosevkaTerm NFP ExtraBold:size=15
|
||||
dpi-aware=auto
|
||||
# use-bold=no
|
||||
# prompt="> "
|
||||
# placeholder=
|
||||
icon-theme=hicolor
|
||||
# icons-enabled=yes
|
||||
# hide-before-typing=no
|
||||
# fields=filename,name,generic
|
||||
# password-character=*
|
||||
# filter-desktop=no
|
||||
match-mode=fzf
|
||||
# sort-result=yes
|
||||
# match-counter=no
|
||||
# delayed-filter-ms=300
|
||||
# delayed-filter-limit=20000
|
||||
# show-actions=no
|
||||
terminal=kitty -e
|
||||
# launch-prefix=<not set>
|
||||
# list-executables-in-path=no
|
||||
|
||||
anchor=center
|
||||
# x-margin=0
|
||||
# y-margin=0
|
||||
# lines=15
|
||||
# width=30
|
||||
tabs=4
|
||||
horizontal-pad=40
|
||||
# vertical-pad=8
|
||||
# inner-pad=0
|
||||
|
||||
# image-size-ratio=0.5
|
||||
|
||||
# line-height=<use font metrics>
|
||||
# letter-spacing=0
|
||||
|
||||
# layer=overlay
|
||||
# keyboard-focus=on-demand
|
||||
# exit-on-keyboard-focus-loss=yes
|
||||
|
||||
# cache=<not set>
|
||||
|
||||
# render-workers=<number of logical CPUs>
|
||||
# match-workers=<number of logical CPUs>
|
||||
|
||||
[colors]
|
||||
background=07090Bff
|
||||
text=c1d6d6ff
|
||||
prompt=E2F9F9ff
|
||||
placeholder=07090Bff
|
||||
input=e2f9f9ff
|
||||
match=07090bff
|
||||
selection=e2f9f9ff
|
||||
selection-text=5A6B7Eff
|
||||
selection-match=5A6B7Eff
|
||||
counter=e2f9f9ff
|
||||
border=c1d6d6ff
|
||||
|
||||
|
||||
[border]
|
||||
width=2
|
||||
radius=8
|
||||
#selection-radius=01
|
||||
|
||||
[dmenu]
|
||||
# mode=text # text|index
|
||||
# exit-immediately-if-empty=no
|
||||
|
||||
[key-bindings]
|
||||
cancel=Escape Control+g Control+c Control+bracketleft
|
||||
# execute=Return KP_Enter Control+y
|
||||
# execute-or-next=Tab
|
||||
# execute-input=Shift+Return Shift+KP_Enter
|
||||
# cursor-left=Left Control+b
|
||||
# cursor-left-word=Control+Left Mod1+b
|
||||
# cursor-right=Right Control+f
|
||||
# cursor-right-word=Control+Right Mod1+f
|
||||
# cursor-home=Home Control+a
|
||||
# cursor-end=End Control+e
|
||||
# delete-prev=BackSpace Control+h
|
||||
# delete-prev-word=Mod1+BackSpace Control+BackSpace Control+w
|
||||
# delete-line-backward=Control+u
|
||||
# delete-next=Delete KP_Delete Control+d
|
||||
# delete-next-word=Mod1+d Control+Delete Control+KP_Delete
|
||||
# delete-line-forward=Control+k
|
||||
# prev=Up Control+p
|
||||
# prev-with-wrap=ISO_Left_Tab
|
||||
# prev-page=Page_Up KP_Page_Up
|
||||
# next=Down Control+n
|
||||
# next-with-wrap=none
|
||||
# next-page=Page_Down KP_Page_Down
|
||||
# expunge=Shift+Delete
|
||||
# clipboard-paste=Control+v XF86Paste
|
||||
# primary-paste=Shift+Insert Shift+KP_Insert
|
||||
|
||||
# custom-N: *dmenu mode only*. Like execute, but with a non-zero
|
||||
# exit-code; custom-1 exits with code 10, custom-2 with 11, custom-3
|
||||
# with 12, and so on.
|
||||
|
||||
# custom-1=Mod1+1
|
||||
# custom-2=Mod1+2
|
||||
# custom-3=Mod1+3
|
||||
# custom-4=Mod1+4
|
||||
# custom-5=Mod1+5
|
||||
# custom-6=Mod1+6
|
||||
# custom-7=Mod1+7
|
||||
# custom-8=Mod1+8
|
||||
# custom-9=Mod1+9
|
||||
# custom-10=Mod1+0
|
||||
# custom-11=Mod1+exclam
|
||||
# custom-12=Mod1+at
|
||||
# custom-13=Mod1+numbersign
|
||||
# custom-14=Mod1+dollar
|
||||
# custom-15=Mod1+percent
|
||||
# custom-16=Mod1+dead_circumflex
|
||||
# custom-17=Mod1+ampersand
|
||||
# custom-18=Mod1+asterix
|
||||
# custom-19=Mod1+parentleft
|
||||
334
config/hypr/hyprland.conf
Normal file
334
config/hypr/hyprland.conf
Normal file
|
|
@ -0,0 +1,334 @@
|
|||
|
||||
################
|
||||
### MONITORS ###
|
||||
################
|
||||
|
||||
monitor=DP-1,1920x1080@165, 0x0,1
|
||||
|
||||
|
||||
###################
|
||||
### MY PROGRAMS ###
|
||||
###################
|
||||
|
||||
|
||||
# Set programs that you use
|
||||
$terminal = kitty
|
||||
$fileManager = dolphin
|
||||
#$menu = wofi --show drun
|
||||
|
||||
|
||||
#################
|
||||
### AUTOSTART ###
|
||||
#################
|
||||
|
||||
|
||||
# exec-once = $terminal
|
||||
# exec-once = nm-applet &
|
||||
# exec-once = waybar & hyprpaper & firefox
|
||||
exec-once = fnott
|
||||
exec-once = clipse -listen
|
||||
exec-once = swww-daemon
|
||||
exec-once = throne
|
||||
exec-once = waybar
|
||||
#############################
|
||||
### ENVIRONMENT VARIABLES ###
|
||||
#############################
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Environment-variables/
|
||||
|
||||
env = XCURSOR_SIZE,24
|
||||
env = HYPRCURSOR_SIZE,24
|
||||
|
||||
#env = XDG_CURRENT_DESKTOP, hyprland
|
||||
env = LIBVA_DRIVER_NAME,nvidia
|
||||
env = __GLX_VENDOR_LIBRARY_NAME,nvidia
|
||||
|
||||
###################
|
||||
### PERMISSIONS ###
|
||||
###################
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Permissions/
|
||||
# Please note permission changes here require a Hyprland restart and are not applied on-the-fly
|
||||
# for security reasons
|
||||
|
||||
# ecosystem {
|
||||
# enforce_permissions = 1
|
||||
# }
|
||||
|
||||
# permission = /usr/(bin|local/bin)/grim, screencopy, allow
|
||||
# permission = /usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland, screencopy, allow
|
||||
# permission = /usr/(bin|local/bin)/hyprpm, plugin, allow
|
||||
|
||||
|
||||
#####################
|
||||
### LOOK AND FEEL ###
|
||||
#####################
|
||||
|
||||
# Refer to https://wiki.hypr.land/Configuring/Variables/
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#general
|
||||
general {
|
||||
gaps_in = 4
|
||||
gaps_out = 5
|
||||
|
||||
border_size = 2
|
||||
float_gaps = 5
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#variable-types for info about colors
|
||||
col.active_border = rgba(C1D6D6ff)
|
||||
col.inactive_border = rgba(00000000)
|
||||
|
||||
# Set to true enable resizing windows by clicking and dragging on borders and gaps
|
||||
resize_on_border = false
|
||||
|
||||
# Please see https://wiki.hypr.land/Configuring/Tearing/ before you turn this on
|
||||
allow_tearing = false
|
||||
|
||||
layout = dwindle
|
||||
snap {
|
||||
enabled = true
|
||||
window_gap = 15
|
||||
monitor_gap = 15
|
||||
border_overlap = true
|
||||
respect_gaps = true
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#decoration
|
||||
decoration {
|
||||
rounding = 5
|
||||
rounding_power = 10
|
||||
|
||||
# Change transparency of focused and unfocused windows
|
||||
active_opacity = 1.0
|
||||
inactive_opacity = 1.0
|
||||
border_part_of_window = true
|
||||
|
||||
shadow {
|
||||
enabled = false
|
||||
range = 4
|
||||
render_power = 3
|
||||
color = rgba(1a1a1aee)
|
||||
}
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#blur
|
||||
blur {
|
||||
enabled = true
|
||||
size = 6
|
||||
passes = 3
|
||||
|
||||
vibrancy = 0.1696
|
||||
}
|
||||
}
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#animations
|
||||
animations {
|
||||
enabled = yes, please :)
|
||||
|
||||
# Default animations, see https://wiki.hypr.land/Configuring/Animations/ for more
|
||||
|
||||
#bezier = easeOutQuint,0.23,1,0.32,1
|
||||
#bezier =SeaseInOutCubic,0.65,0.05,0.36,1
|
||||
#bezier = linear,0,0,1,1
|
||||
#bezier = almostLinear,0.5,0.5,0.75,1.0
|
||||
#bezier = quick,0.15,0,0.1,1
|
||||
|
||||
bezier = easeOutQuint, 0, 1, 0.6, 0.99
|
||||
bezier = easeInOutCubic,0.65,0.05,0.36,1
|
||||
bezier = linear,0,0,1,1
|
||||
bezier = almostLinear,0.5,0.5,0.75,1.0
|
||||
bezier = quick,0.15,0,0.1,1
|
||||
|
||||
animation = global, 1, 10, default
|
||||
animation = border, 1, 5.39, easeOutQuint
|
||||
animation = windows, 1, 4.79, easeOutQuint
|
||||
animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
|
||||
animation = windowsOut, 1, 1.49, linear, popin 87%
|
||||
animation = fadeIn, 1, 1.73, almostLinear
|
||||
animation = fadeOut, 1, 1.46, almostLinear
|
||||
animation = fade, 1, 3.03, quick
|
||||
animation = layers, 1, 3.81, easeOutQuint
|
||||
animation = layersIn, 1, 4, easeOutQuint, fade
|
||||
animation = layersOut, 1, 1.5, linear, fade
|
||||
animation = fadeLayersIn, 1, 1.79, almostLinear
|
||||
animation = fadeLayersOut, 1, 1.39, almostLinear
|
||||
animation = workspaces, 1, 1.94, almostLinear, fade
|
||||
animation = workspacesIn, 1, 1.21, almostLinear, fade
|
||||
animation = workspacesOut, 1, 1.94, almostLinear, fade
|
||||
}
|
||||
|
||||
# Ref https://wiki.hypr.land/Configuring/Workspace-Rules/
|
||||
# "Smart gaps" / "No gaps when only"
|
||||
# uncomment all if you wish to use that.
|
||||
# workspace = w[tv1], gapsout:0, gapsin:0
|
||||
# workspace = f[1], gapsout:0, gapsin:0
|
||||
# windowrule = bordersize 0, floating:0, onworkspace:w[tv1]
|
||||
# windowrule = rounding 0, floating:0, onworkspace:w[tv1]
|
||||
# windowrule = bordersize 0, floating:0, onworkspace:f[1]
|
||||
# windowrule = rounding 0, floating:0, onworkspace:f[1]
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Dwindle-Layout/ for more
|
||||
dwindle {
|
||||
pseudotile = true # Master switch for pseudotiling. Enabling is bound to m + P in the keybinds section below
|
||||
preserve_split = true # You probably want this
|
||||
}
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Master-Layout/ for more
|
||||
master {
|
||||
new_status = master
|
||||
}
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#misc
|
||||
misc {
|
||||
force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
|
||||
disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :(
|
||||
font_family = FiraCodeNFM-Reg
|
||||
animate_manual_resizes = false
|
||||
animate_mouse_windowdragging = true
|
||||
focus_on_activate = false
|
||||
}
|
||||
|
||||
|
||||
#############
|
||||
### INPUT ###
|
||||
#############
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#input
|
||||
input {
|
||||
kb_layout = us, ru
|
||||
kb_variant =
|
||||
kb_model =
|
||||
kb_options = grp:caps_toggle
|
||||
kb_rules =
|
||||
resolve_binds_by_sym = false
|
||||
repeat_rate = 25
|
||||
repeat_delay = 250
|
||||
|
||||
follow_mouse = 1
|
||||
|
||||
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
||||
accel_profile = adaptive
|
||||
scroll_method = on_button_down
|
||||
float_switch_override_focus = 2
|
||||
touchpad {
|
||||
natural_scroll = false
|
||||
}
|
||||
}
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#gestures
|
||||
gestures {
|
||||
# workspace_swipe = false
|
||||
}
|
||||
|
||||
# Example per-device config
|
||||
# See https://wiki.hypr.land/Configuring/Keywords/#per-device-input-configs for more
|
||||
device {
|
||||
name = epic-mouse-v1
|
||||
sensitivity = -0.5
|
||||
}
|
||||
|
||||
|
||||
cursor {
|
||||
enable_hyprcursor = true
|
||||
hide_on_key_press = true
|
||||
|
||||
}
|
||||
###################
|
||||
### KEYBINDINGS ###
|
||||
###################
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Keywords/
|
||||
$m = SUPER # Sets "Windows" key as main modifier
|
||||
$a = ALT
|
||||
$s = SHIFT
|
||||
# Example binds, see https://wiki.hypr.land/Configuring/Binds/ for more
|
||||
bind = $m, Q, exec, $terminal
|
||||
bind = $m, C, killactive,
|
||||
bind = $m, M, exit,
|
||||
bind = $m, E, exec, kitty -e yazi kitty
|
||||
bind = $m, F, togglefloating,
|
||||
bind = $m, P, pseudo, # dwindle
|
||||
bind = $m, A, fullscreenstate, 1
|
||||
bind = $m, D, exec, fuzzel
|
||||
bind = $m $s, A, fullscreenstate, 3
|
||||
bind = $m $s, Q, exec, wleave
|
||||
bind = $a, C, exec, hyprpicker -a
|
||||
# Move focus with m + arrow keys<D-A>
|
||||
bind = $m, left, movefocus, l
|
||||
bind = $m, right, movefocus, r
|
||||
bind = $m, up, movefocus, u
|
||||
bind = $m, down, movefocus, d
|
||||
|
||||
bind = $m, H, movefocus, l
|
||||
bind = $m, L, movefocus, r
|
||||
bind = $m, K, movefocus, u
|
||||
bind = $m, J, movefocus, d
|
||||
|
||||
bind = $m $s, H, movewindow, l
|
||||
bind = $m $s, L, movewindow, r
|
||||
bind = $m $s, K, movewindow, u
|
||||
bind = $m $s, J, movewindow, d
|
||||
|
||||
bind = $m $s, S, exec, hyprshot -m region --clipbnoard-only
|
||||
bind = $m, W, exec, kitty --class clipse -e 'clipse'
|
||||
# Switch workspaces with m + [0-9]
|
||||
bind = $m, 1, workspace, 1
|
||||
bind = $m, 2, workspace, 2
|
||||
bind = $m, 3, workspace, 3
|
||||
bind = $m, 4, workspace, 4
|
||||
bind = $m, 5, workspace, 5
|
||||
bind = $m, 6, workspace, 6
|
||||
bind = $m, 7, workspace, 7
|
||||
bind = $m, 8, workspace, 8
|
||||
bind = $m, 9, workspace, 9
|
||||
bind = $m, 0, workspace, 10
|
||||
|
||||
# Move active window to a workspace with m + SHIFT + [0-9]
|
||||
bind = $m SHIFT, 1, movetoworkspacesilent, 1
|
||||
bind = $m SHIFT, 2, movetoworkspacesilent, 2
|
||||
bind = $m SHIFT, 3, movetoworkspacesilent, 3
|
||||
bind = $m SHIFT, 4, movetoworkspacesilent, 4
|
||||
bind = $m SHIFT, 5, movetoworkspacesilent, 5
|
||||
bind = $m SHIFT, 6, movetoworkspacesilent, 6
|
||||
bind = $m SHIFT, 7, movetoworkspacesilent, 7
|
||||
bind = $m SHIFT, 8, movetoworkspacesilent, 8
|
||||
bind = $m SHIFT, 9, movetoworkspacesilent, 9
|
||||
bind = $m SHIFT, 0, movetoworkspacesilent, 10
|
||||
|
||||
# Example special workspace (scratchpad)
|
||||
#bind = $m, S, togglespecialworkspace, magic
|
||||
#bind = $m SHIFT, S, movetoworkspace, special:magic
|
||||
|
||||
# Scroll through existing workspaces with m + scroll
|
||||
bind = $m, mouse_down, workspace, e+1
|
||||
bind = $m, mouse_up, workspace, e-1
|
||||
|
||||
# Move/resize windows with m + LMB/RMB and dragging
|
||||
bindm = $m, mouse:272, movewindow
|
||||
bindm = $m, mouse:273, resizewindow
|
||||
|
||||
# Laptop multimedia keys for volume and LCD brightness
|
||||
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
|
||||
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
||||
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
||||
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
|
||||
bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+
|
||||
bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-
|
||||
|
||||
# Requires playerctl
|
||||
bindl = , XF86AudioNext, exec, playerctl next
|
||||
bindl = , XF86AudioPause, exec, playerctl play-pause
|
||||
bindl = , XF86AudioPlay, exec, playerctl play-pause
|
||||
bindl = , XF86AudioPrev, exec, playerctl previous
|
||||
##############################
|
||||
### WINDOWS AND WORKSPACES ###
|
||||
##############################
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Window-Rules/ for more
|
||||
# See https://wiki.hypr.land/Configuring/Workspace-Rules/ for workspace rules
|
||||
|
||||
# Example windowrule
|
||||
# windowrule = float,class:^(kitty)$,title:^(kitty)$
|
||||
|
||||
# Ignore maximize requests from apps. You'll probably like this.
|
||||
110
config/hypr/hyprlock.conf
Normal file
110
config/hypr/hyprlock.conf
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
# sample hyprlock.conf
|
||||
# for more configuration options, refer https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock
|
||||
#
|
||||
# rendered text in all widgets supports pango markup (e.g. <b> or <i> tags)
|
||||
# ref. https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock/#general-remarks
|
||||
#
|
||||
# shortcuts to clear password buffer: ESC, Ctrl+U, Ctrl+Backspace
|
||||
#
|
||||
# you can get started by copying this config to ~/.config/hypr/hyprlock.conf
|
||||
#
|
||||
|
||||
$font = IosevkaTerm NFM ExtraBold
|
||||
|
||||
general {
|
||||
hide_cursor = true
|
||||
}
|
||||
|
||||
# uncomment to enable fingerprint authentication
|
||||
# auth {
|
||||
# fingerprint {
|
||||
# enabled = true
|
||||
# ready_message = Scan fingerprint to unlock
|
||||
# present_message = Scanning...
|
||||
# retry_delay = 250 # in milliseconds
|
||||
# }
|
||||
# }
|
||||
|
||||
animations {
|
||||
enabled = false
|
||||
bezier = linear, 1, 1, 0, 0
|
||||
animation = fadeIn, 1, 5, linear
|
||||
animation = fadeOut, 1, 5, linear
|
||||
animation = inputFieldDots, 1, 2, linear
|
||||
}
|
||||
|
||||
background {
|
||||
monitor =
|
||||
path = screenshot
|
||||
blur_passes = 4
|
||||
}
|
||||
|
||||
input-field {
|
||||
monitor =
|
||||
size = 20%, 5%
|
||||
outline_thickness = 3
|
||||
inner_color = rgba(0, 0, 0, 0.0) # no fill
|
||||
|
||||
#outer_color = rgba(33ccffee) rgba(00ff99ee) 45deg
|
||||
#check_color = rgba(00ff99ee) rgba(ff6633ee) 120deg
|
||||
#fail_color = rgba(ff6633ee) rgba(ff0066ee) 40deg
|
||||
|
||||
outer_color = rgba(EEF7FDee)
|
||||
check_color = rgba(FFDE00ee)
|
||||
fail_color = rgba(FF0100ee)
|
||||
|
||||
font_color = rgb(143, 143, 143)
|
||||
fade_on_empty = false
|
||||
rounding = 3
|
||||
|
||||
font_family = $font
|
||||
placeholder_text = Password here:
|
||||
fail_text = $PAMFAIL
|
||||
|
||||
# uncomment to use a letter instead of a dot to indicate the typed password
|
||||
# dots_text_format = *
|
||||
# dots_size = 0.4
|
||||
dots_spacing = 0.3
|
||||
|
||||
# uncomment to use an input indicator that does not show the password length (similar to swaylock's input indicator)
|
||||
# hide_input = true
|
||||
|
||||
position = 0, -200
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
# TIME
|
||||
label {
|
||||
monitor =
|
||||
text = $TIME # ref. https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock/#variable-substitution
|
||||
font_size = 90
|
||||
font_family = $font
|
||||
|
||||
position = 0, -40
|
||||
halign = center
|
||||
valign = top
|
||||
}
|
||||
|
||||
# DATE
|
||||
label {
|
||||
monitor =
|
||||
text = cmd[update:60000] date +"%A, %d %B %Y" # update every 60 seconds
|
||||
font_size = 25
|
||||
font_family = $font
|
||||
|
||||
position = 0, -200
|
||||
halign = center
|
||||
valign = top
|
||||
}
|
||||
|
||||
label {
|
||||
monitor =
|
||||
text = $LAYOUT[en,ru]
|
||||
font_size = 24
|
||||
onclick = hyprctl switchxkblayout all next
|
||||
|
||||
position = 250, -200
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
35
config/hyprwave/config.conf
Normal file
35
config/hyprwave/config.conf
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
# HyprWave Configuration File
|
||||
|
||||
[General]
|
||||
# Edge to anchor HyprWave to
|
||||
# Options: right, left, top, bottom
|
||||
edge = top
|
||||
|
||||
# Margin from the screen edge (in pixels)
|
||||
margin = 10
|
||||
|
||||
# Layer to render on
|
||||
# Options: background, bottom, top, overlay
|
||||
layer = top
|
||||
|
||||
# Exclusive zone: 0 = respect other surfaces, -1 = overlap everything
|
||||
exclusive_zone = 0
|
||||
|
||||
[Notifications]
|
||||
enabled = true
|
||||
now_playing = true
|
||||
|
||||
[Visualizer]
|
||||
# Enable/disable visualizer (horizontal layout only)
|
||||
enabled = true
|
||||
|
||||
# Idle timeout in seconds before visualizer appears
|
||||
# Set to 0 to disable auto-activation
|
||||
idle_timeout = 5
|
||||
|
||||
[VerticalDisplay]
|
||||
enabled=true
|
||||
idle_timeout=5
|
||||
|
||||
[MusicPlayer]
|
||||
preference = spotify,vlc
|
||||
567
config/hyprwave/style.css
Normal file
567
config/hyprwave/style.css
Normal file
|
|
@ -0,0 +1,567 @@
|
|||
/* ========================================
|
||||
HyprWave - Mystic Portal Theme
|
||||
Inspired by purple/pink portal with blue depths
|
||||
======================================== */
|
||||
|
||||
:root {
|
||||
/* Background Colors - Deep Void */
|
||||
--bg-primary: rgba(15, 12, 30, 0.75);
|
||||
--bg-secondary: rgba(20, 18, 40, 0.75);
|
||||
--bg-album-cover: rgba(25, 22, 48, 0.85);
|
||||
--bg-album-secondary: rgba(30, 28, 55, 0.85);
|
||||
|
||||
/* Button Colors - Default (Prev/Next) - Mystic Purple */
|
||||
--btn-default: rgba(140, 100, 180, 0.85);
|
||||
--btn-default-secondary: rgba(130, 90, 170, 0.85);
|
||||
--btn-default-hover: rgba(160, 120, 200, 0.92);
|
||||
--btn-default-hover-secondary: rgba(150, 110, 190, 0.92);
|
||||
|
||||
/* Button Colors - Play/Pause - Bright Pink Portal */
|
||||
--btn-play: rgba(255, 100, 200, 0.95);
|
||||
--btn-play-secondary: rgba(240, 80, 180, 0.95);
|
||||
--btn-play-hover: rgba(255, 120, 215, 0.98);
|
||||
--btn-play-hover-secondary: rgba(255, 110, 205, 0.98);
|
||||
--btn-play-active: rgba(230, 70, 170, 0.95);
|
||||
--btn-play-active-secondary: rgba(220, 60, 160, 0.95);
|
||||
|
||||
/* Button Colors - Expand - Deep Violet */
|
||||
--btn-expand: rgba(120, 60, 200, 0.95);
|
||||
--btn-expand-secondary: rgba(110, 50, 190, 0.95);
|
||||
--btn-expand-hover: rgba(140, 80, 220, 0.98);
|
||||
--btn-expand-hover-secondary: rgba(130, 70, 210, 0.98);
|
||||
--btn-expand-active: rgba(100, 40, 180, 0.95);
|
||||
--btn-expand-active-secondary: rgba(90, 35, 170, 0.95);
|
||||
|
||||
/* Progress Bar Colors */
|
||||
--progress-bg: rgba(40, 30, 60, 0.25);
|
||||
--progress-fill-start: rgba(255, 100, 200, 0.95);
|
||||
--progress-fill-end: rgba(120, 60, 200, 0.95);
|
||||
|
||||
/* Slider Handle Colors */
|
||||
--handle-color: rgba(255, 100, 200, 0.98);
|
||||
--handle-hover: rgba(255, 120, 215, 1.0);
|
||||
--handle-border: rgba(230, 70, 170, 0.5);
|
||||
--handle-shadow: rgba(255, 100, 200, 0.6);
|
||||
|
||||
/* Text Colors - Soft pink/purple on dark */
|
||||
--text-primary: rgba(255, 220, 245, 0.95);
|
||||
--text-secondary: rgba(230, 190, 220, 0.85);
|
||||
--text-tertiary: rgba(200, 160, 195, 0.75);
|
||||
--text-muted: rgba(160, 120, 165, 0.65);
|
||||
|
||||
/* Border Colors */
|
||||
--border-primary: rgba(100, 70, 140, 0.35);
|
||||
--border-button: rgba(120, 85, 160, 0.3);
|
||||
--border-button-hover: rgba(140, 100, 180, 0.45);
|
||||
--border-play: rgba(255, 100, 200, 0.4);
|
||||
--border-play-hover: rgba(255, 120, 215, 0.55);
|
||||
--border-expand: rgba(120, 60, 200, 0.4);
|
||||
--border-expand-hover: rgba(140, 80, 220, 0.55);
|
||||
|
||||
/* Shadow Colors */
|
||||
--shadow-default: rgba(0, 0, 0, 0.6);
|
||||
--shadow-button: rgba(0, 0, 0, 0.5);
|
||||
--shadow-play: rgba(255, 100, 200, 0.5);
|
||||
--shadow-play-hover: rgba(255, 120, 215, 0.7);
|
||||
--shadow-expand: rgba(120, 60, 200, 0.5);
|
||||
--shadow-expand-hover: rgba(140, 80, 220, 0.7);
|
||||
--shadow-focus: rgba(255, 100, 200, 0.7);
|
||||
|
||||
/* Spacing & Sizes */
|
||||
--border-radius-container: 100px;
|
||||
--border-radius-section: 20px;
|
||||
--border-radius-album: 16px;
|
||||
--border-radius-button: 50%;
|
||||
--border-radius-progress: 2px;
|
||||
|
||||
--padding-container: 12px;
|
||||
--padding-section: 16px;
|
||||
}
|
||||
|
||||
/* Visualizer bars - mystic portal glow */
|
||||
.visualizer-bar {
|
||||
background: linear-gradient(180deg,
|
||||
rgba(255, 120, 215, 0.98),
|
||||
rgba(180, 100, 220, 0.98),
|
||||
rgba(140, 80, 220, 0.98));
|
||||
border-radius: 0px;
|
||||
transition: all 0.05s ease-out;
|
||||
margin: 0px;
|
||||
min-width: 1px;
|
||||
min-height: 3px;
|
||||
box-shadow: 0 0 16px rgba(255, 100, 200, 0.8),
|
||||
0 0 10px rgba(140, 80, 220, 0.6);
|
||||
}
|
||||
|
||||
.vertical-display-label {
|
||||
font-family: 'VT323', monospace;
|
||||
font-size: 28px;
|
||||
font-weight: bold;
|
||||
color: rgba(255, 120, 215, 0.98);
|
||||
letter-spacing: 0px;
|
||||
line-height: 1.2;
|
||||
}
|
||||
/* CRITICAL: Disable CSS transitions during JavaScript animations */
|
||||
.no-transition,
|
||||
.no-transition * {
|
||||
transition: none !important;
|
||||
animation: none !important;
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Base Styles
|
||||
======================================== */
|
||||
|
||||
/* GTK4 transparent window - CRITICAL for compositor transparency */
|
||||
window,
|
||||
window.background,
|
||||
.hyprwave-window {
|
||||
background-color: transparent;
|
||||
background-image: none;
|
||||
}
|
||||
|
||||
/* Ensure ALL window-level elements are transparent */
|
||||
window > * {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/* Main container - transparent */
|
||||
.main-container {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Control Container (Vertical Bar)
|
||||
======================================== */
|
||||
|
||||
.control-container {
|
||||
background: linear-gradient(145deg, var(--bg-primary), var(--bg-secondary));
|
||||
border-radius: var(--border-radius-container);
|
||||
border: 1px solid var(--border-primary);
|
||||
|
||||
padding: var(--padding-container);
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Control Container (Horizontal Bar)
|
||||
For Top/Bottom Layouts
|
||||
======================================== */
|
||||
|
||||
.control-container-horizontal {
|
||||
/* Match the vertical style exactly for consistency */
|
||||
background: linear-gradient(145deg, var(--bg-primary), var(--bg-secondary));
|
||||
border-radius: var(--border-radius-container); /* Keeps the pill shape */
|
||||
border: 1px solid var(--border-primary);
|
||||
|
||||
/* Horizontal padding is critical here to prevent buttons
|
||||
from touching the rounded edges */
|
||||
padding: 8px 24px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Expanded Section (Album Details Card)
|
||||
======================================== */
|
||||
|
||||
.expanded-section {
|
||||
background: linear-gradient(145deg, var(--bg-primary), var(--bg-secondary));
|
||||
border-radius: var(--border-radius-section);
|
||||
border: 1px solid var(--border-primary);
|
||||
padding: var(--padding-section);
|
||||
margin: 0;
|
||||
margin-top: 4px; /* Reduced spacing from control bar */
|
||||
|
||||
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Expanded Section (Horizontal Layout)
|
||||
For Top/Bottom Layouts
|
||||
======================================== */
|
||||
|
||||
.expanded-section-horizontal {
|
||||
background: linear-gradient(145deg, var(--bg-primary), var(--bg-secondary));
|
||||
border-radius: var(--border-radius-section);
|
||||
border: 1px solid var(--border-primary);
|
||||
|
||||
|
||||
/* Slightly different padding/margin to look good below/above the bar */
|
||||
padding: var(--padding-section);
|
||||
margin-top: 2px; /* Adds gap between control bar and this panel */
|
||||
margin-bottom: 2px;
|
||||
|
||||
/* Ensure it doesn't get too squeezed */
|
||||
min-width: 300px;
|
||||
}
|
||||
|
||||
/* Album cover */
|
||||
.album-cover {
|
||||
background: linear-gradient(135deg, var(--bg-album-cover), var(--bg-album-secondary));
|
||||
border-radius: var(--border-radius-album);
|
||||
border: 1px solid var(--border-button);
|
||||
box-shadow: 0 4px 16px var(--shadow-button);
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Text Styles
|
||||
======================================== */
|
||||
|
||||
/* Source label (e.g., "Spotify") */
|
||||
.source-label {
|
||||
color: var(--text-muted);
|
||||
font-size: 11px;
|
||||
font-weight: 500;
|
||||
margin-top: 8px;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.5px;
|
||||
}
|
||||
|
||||
/* Track title */
|
||||
.track-title {
|
||||
color: var(--text-primary);
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
margin-top: 4px;
|
||||
}
|
||||
|
||||
/* Artist label */
|
||||
.artist-label {
|
||||
color: var(--text-secondary);
|
||||
font-size: 12px;
|
||||
font-weight: 500;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
/* Time remaining */
|
||||
.time-remaining {
|
||||
color: var(--text-tertiary);
|
||||
font-size: 12px;
|
||||
font-weight: 500;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Progress Bar - FIXED FOR GTK4
|
||||
======================================== */
|
||||
|
||||
.track-progress {
|
||||
min-height: 4px;
|
||||
margin-top: 8px;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
/* The background track */
|
||||
.track-progress trough {
|
||||
background: var(--progress-bg);
|
||||
border-radius: var(--border-radius-progress);
|
||||
min-height: 4px;
|
||||
}
|
||||
|
||||
/* The filled progress portion - GTK4 specific */
|
||||
.track-progress progress {
|
||||
background: linear-gradient(90deg, var(--progress-fill-start), var(--progress-fill-end));
|
||||
border-radius: var(--border-radius-progress);
|
||||
min-height: 4px;
|
||||
}
|
||||
|
||||
/* GTK4 also needs this for the fill bar to show */
|
||||
progressbar trough {
|
||||
background: var(--progress-bg);
|
||||
border-radius: var(--border-radius-progress);
|
||||
min-height: 4px;
|
||||
}
|
||||
|
||||
progressbar progress {
|
||||
background: linear-gradient(90deg, var(--progress-fill-start), var(--progress-fill-end));
|
||||
border-radius: var(--border-radius-progress);
|
||||
min-height: 4px;
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Control Buttons - FIXED ROUNDED SHAPE
|
||||
======================================== */
|
||||
|
||||
/* All control buttons - base styles */
|
||||
.control-button {
|
||||
padding: 0;
|
||||
|
||||
/* Add margin to compensate for removed border */
|
||||
margin: 1.5px; /* Same as the old border width */
|
||||
|
||||
min-width: 44px;
|
||||
min-height: 44px;
|
||||
|
||||
background: linear-gradient(135deg, var(--btn-default), var(--btn-default-secondary));
|
||||
|
||||
border: none;
|
||||
box-shadow:
|
||||
inset 0 0 0 1.5px var(--border-button),
|
||||
0 4px 16px var(--shadow-button),
|
||||
inset 0 1px 1px rgba(255, 255, 255, 0.2);
|
||||
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.control-button:hover {
|
||||
background: linear-gradient(135deg, var(--btn-default-hover), var(--btn-default-hover-secondary));
|
||||
border-color: var(--border-button-hover);
|
||||
box-shadow:
|
||||
0 6px 20px var(--shadow-button),
|
||||
inset 0 1px 1px rgba(255, 255, 255, 0.25);
|
||||
transform: translateY(-1px);
|
||||
}
|
||||
|
||||
.control-button:active {
|
||||
transform: scale(0.96);
|
||||
box-shadow:
|
||||
0 2px 8px var(--shadow-button),
|
||||
inset 0 2px 4px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Play/Pause Button (Blue)
|
||||
======================================== */
|
||||
|
||||
.play-button {
|
||||
background: linear-gradient(135deg, var(--btn-play), var(--btn-play-secondary));
|
||||
border-color: var(--border-play);
|
||||
box-shadow:
|
||||
0 4px 16px var(--shadow-play),
|
||||
inset 0 1px 1px rgba(255, 255, 255, 0.3);
|
||||
}
|
||||
|
||||
.play-button:hover {
|
||||
background: linear-gradient(135deg, var(--btn-play-hover), var(--btn-play-hover-secondary));
|
||||
border-color: var(--border-play-hover);
|
||||
box-shadow:
|
||||
0 6px 20px var(--shadow-play-hover),
|
||||
inset 0 1px 1px rgba(255, 255, 255, 0.4);
|
||||
}
|
||||
|
||||
.play-button:active {
|
||||
background: linear-gradient(135deg, var(--btn-play-active), var(--btn-play-active-secondary));
|
||||
box-shadow:
|
||||
0 2px 10px var(--shadow-play),
|
||||
inset 0 2px 4px rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Expand Button (Purple)
|
||||
======================================== */
|
||||
|
||||
.expand-button {
|
||||
background: linear-gradient(135deg, var(--btn-expand), var(--btn-expand-secondary));
|
||||
border-color: var(--border-expand);
|
||||
box-shadow:
|
||||
0 4px 16px var(--shadow-expand),
|
||||
inset 0 1px 1px rgba(255, 255, 255, 0.3);
|
||||
}
|
||||
|
||||
.expand-button:hover {
|
||||
background: linear-gradient(135deg, var(--btn-expand-hover), var(--btn-expand-hover-secondary));
|
||||
border-color: var(--border-expand-hover);
|
||||
box-shadow:
|
||||
0 6px 20px var(--shadow-expand-hover),
|
||||
inset 0 1px 1px rgba(255, 255, 255, 0.4);
|
||||
}
|
||||
|
||||
.expand-button:active {
|
||||
background: linear-gradient(135deg, var(--btn-expand-active), var(--btn-expand-active-secondary));
|
||||
box-shadow:
|
||||
0 2px 10px var(--shadow-expand),
|
||||
inset 0 2px 4px rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Previous/Next Buttons
|
||||
======================================== */
|
||||
|
||||
.prev-button, .next-button {
|
||||
background: linear-gradient(135deg, var(--btn-default), var(--btn-default-secondary));
|
||||
}
|
||||
|
||||
.prev-button:hover, .next-button:hover {
|
||||
background: linear-gradient(135deg, var(--btn-default-hover), var(--btn-default-hover-secondary));
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Focus & Accessibility
|
||||
======================================== */
|
||||
|
||||
button {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
button:focus {
|
||||
outline: none;
|
||||
box-shadow:
|
||||
0 0 0 3px var(--shadow-focus),
|
||||
0 4px 16px var(--shadow-play),
|
||||
inset 0 1px 1px rgba(255, 255, 255, 0.3);
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Notification Styles
|
||||
======================================== */
|
||||
|
||||
.notification-window {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.notification-container {
|
||||
background: linear-gradient(145deg, var(--bg-primary), var(--bg-secondary));
|
||||
border-radius: var(--border-radius-section);
|
||||
border: 1px solid var(--border-primary);
|
||||
padding: 10px 12px; /* Reduced from 12px to 10px vertical padding */
|
||||
min-width: 280px; /* Reduced from 320px */
|
||||
max-width: 300px; /* Added max-width */
|
||||
}
|
||||
|
||||
.notification-album {
|
||||
background: linear-gradient(135deg, var(--bg-album-cover), var(--bg-album-secondary));
|
||||
border-radius: var(--border-radius-album);
|
||||
border: 1px solid var(--border-button);
|
||||
}
|
||||
|
||||
.notification-header {
|
||||
color: var(--text-muted);
|
||||
font-size: 10px; /* Reduced from 11px */
|
||||
font-weight: 600;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.5px;
|
||||
margin-bottom: 6px; /* Reduced from 8px */
|
||||
}
|
||||
|
||||
.notification-song {
|
||||
color: var(--text-primary);
|
||||
font-size: 13px; /* Reduced from 14px */
|
||||
font-weight: 600;
|
||||
line-height: 1.2; /* Added for tighter spacing */
|
||||
}
|
||||
|
||||
.notification-artist {
|
||||
color: var(--text-secondary);
|
||||
font-size: 11px; /* Reduced from 12px */
|
||||
font-weight: 500;
|
||||
line-height: 1.2; /* Added for tighter spacing */
|
||||
}
|
||||
|
||||
/* ========================================
|
||||
Volume Control Styles
|
||||
======================================== */
|
||||
|
||||
.volume-container {
|
||||
background: linear-gradient(145deg, var(--bg-primary), var(--bg-secondary));
|
||||
border-radius: var(--border-radius-section);
|
||||
border: 1px solid var(--border-primary);
|
||||
padding: 12px;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.volume-icon {
|
||||
min-width: 20px;
|
||||
min-height: 20px;
|
||||
}
|
||||
|
||||
.volume-percentage {
|
||||
color: var(--text-primary);
|
||||
font-size: 13px;
|
||||
font-weight: 600;
|
||||
min-width: 40px;
|
||||
}
|
||||
|
||||
/* Volume slider - similar to progress bar but with different colors */
|
||||
.volume-slider {
|
||||
min-height: 24px;
|
||||
min-width: 24px;
|
||||
}
|
||||
|
||||
/* The background track */
|
||||
.volume-slider trough {
|
||||
background: var(--progress-bg);
|
||||
border-radius: var(--border-radius-progress);
|
||||
min-height: 6px;
|
||||
min-width: 6px;
|
||||
}
|
||||
|
||||
/* The filled portion */
|
||||
.volume-slider progress {
|
||||
background: linear-gradient(90deg, var(--btn-default), var(--btn-default-secondary));
|
||||
border-radius: var(--border-radius-progress);
|
||||
min-height: 6px;
|
||||
min-width: 6px;
|
||||
}
|
||||
|
||||
/* The slider handle */
|
||||
.volume-slider slider {
|
||||
min-height: 16px;
|
||||
min-width: 16px;
|
||||
background: linear-gradient(135deg, var(--btn-default), var(--btn-default-secondary));
|
||||
border: 2px solid var(--border-button);
|
||||
border-radius: 50%;
|
||||
|
||||
}
|
||||
|
||||
.volume-slider slider:hover {
|
||||
background: linear-gradient(135deg, var(--btn-default-hover), var(--btn-default-hover-secondary));
|
||||
border-color: var(--border-button-hover);
|
||||
transform: scale(1.1);
|
||||
}
|
||||
|
||||
.volume-slider slider:active {
|
||||
background: linear-gradient(135deg, var(--btn-default), var(--btn-default-secondary));
|
||||
transform: scale(0.95);
|
||||
}
|
||||
|
||||
/* GTK4 specific for vertical sliders */
|
||||
.volume-slider.vertical trough {
|
||||
min-width: 6px;
|
||||
}
|
||||
|
||||
.volume-slider.vertical progress {
|
||||
min-width: 6px;
|
||||
}
|
||||
|
||||
|
||||
/* ========================================
|
||||
Visualizer Bars - Idle Mode Animation
|
||||
======================================== */
|
||||
|
||||
/* Container padding to keep bars inside control bar edges */
|
||||
.visualizer-container {
|
||||
padding: 0px; /* 5px padding on left/right keeps bars inside */
|
||||
padding-bottom: 1px; /* Small bottom padding to align with control bar bottom */
|
||||
border-radius: 0 0 12px 12px;
|
||||
}
|
||||
|
||||
Smooth control bar height transitions for idle mode */
|
||||
.control-container-horizontal {
|
||||
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||
}
|
||||
|
||||
/* Smooth button fade transitions */
|
||||
.control-button {
|
||||
transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1),
|
||||
opacity 0.3s ease-in-out;
|
||||
}
|
||||
|
||||
/* Ensure overlay respects size changes */
|
||||
overlay {
|
||||
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||
}
|
||||
|
||||
/* Vertical Display (for vertical layouts) */
|
||||
.vertical-display-container {
|
||||
background: transparent;
|
||||
padding: 8px 4px;
|
||||
}
|
||||
|
||||
.vertical-display-label {
|
||||
font-family: 'VT323', monospace;
|
||||
font-size: 28px;
|
||||
font-weight: bold;
|
||||
color: white; /* Match visualizer bar color */
|
||||
letter-spacing: 0px;
|
||||
line-height: 1.2;
|
||||
}
|
||||
50
config/kitty/current-theme.conf
Normal file
50
config/kitty/current-theme.conf
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
# vim:ft=kitty
|
||||
|
||||
## name: Tokyo Night
|
||||
## license: popachcka-rulet
|
||||
## author: an idiot
|
||||
## upstream: /////////gol
|
||||
|
||||
|
||||
background #07090B
|
||||
foreground #EEF7FD
|
||||
selection_background #C1D6D6
|
||||
selection_foreground #07090B
|
||||
url_color #73daca
|
||||
cursor #c0caf5
|
||||
cursor_text_color #1a1b26
|
||||
|
||||
# Tabs
|
||||
active_tab_background #C1D6D6
|
||||
active_tab_foreground #25C39F
|
||||
inactive_tab_background #5C6871
|
||||
inactive_tab_foreground #07090B
|
||||
#tab_bar_background #15161e
|
||||
|
||||
# Windows
|
||||
active_border_color #25C39F
|
||||
inactive_border_color #C0CAF5
|
||||
|
||||
# normal
|
||||
color0 #07090B
|
||||
color1 #FF0100
|
||||
color2 #25C39F
|
||||
color3 #FFDE00
|
||||
color4 #109FFF
|
||||
color5 #FE31FF
|
||||
color6 #00FED4
|
||||
color7 #EEF7FD
|
||||
|
||||
# bright
|
||||
color8 #5C6871
|
||||
color9 #E46468
|
||||
color10 #82D1B9
|
||||
color11 #F6DB8B
|
||||
color12 #8FD2F7
|
||||
color13 #F79DE7
|
||||
color14 #7EFEDE
|
||||
color15 #C1D6D6
|
||||
|
||||
# extended colors
|
||||
color16 #ff9e64
|
||||
color17 #db4b4b
|
||||
2840
config/kitty/kitty.conf
Normal file
2840
config/kitty/kitty.conf
Normal file
File diff suppressed because it is too large
Load diff
2845
config/kitty/kitty.conf.bak
Normal file
2845
config/kitty/kitty.conf.bak
Normal file
File diff suppressed because it is too large
Load diff
75
config/mimeapps.list
Normal file
75
config/mimeapps.list
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
[Added Associations]
|
||||
application/json=neovide.desktop;
|
||||
application/octet-stream=mpv.desktop;
|
||||
application/x-extension-htm=firefox.desktop;userapp-Zen-PIXJK3.desktop;zen.desktop;
|
||||
application/x-extension-html=firefox.desktop;userapp-Zen-PIXJK3.desktop;zen.desktop;
|
||||
application/x-extension-shtml=firefox.desktop;userapp-Zen-PIXJK3.desktop;zen.desktop;
|
||||
application/x-extension-xht=firefox.desktop;userapp-Zen-PIXJK3.desktop;zen.desktop;
|
||||
application/x-extension-xhtml=firefox.desktop;userapp-Zen-PIXJK3.desktop;zen.desktop;
|
||||
application/x-msdownload=ru.launcher.StartWine.desktop;
|
||||
application/x-php=mpv.desktop;
|
||||
application/xhtml+xml=firefox.desktop;userapp-Zen-PIXJK3.desktop;zen.desktop;
|
||||
application/zip=org.gnome.Nautilus.desktop;
|
||||
audio/flac=mpv.desktop;
|
||||
audio/mp4=mpv.desktop;
|
||||
audio/ogg=mpv.desktop;
|
||||
audio/vorbis=mpv.desktop;
|
||||
audio/x-oggflac=mpv.desktop;
|
||||
audio/x-vorbis=mpv.desktop;
|
||||
audio/x-vorbis+ogg=mpv.desktop;
|
||||
image/jpeg=gimp.desktop;org.gnome.gThumb.desktop;org.gnome.eog.desktop;
|
||||
image/png=gimp.desktop;org.gnome.eog.desktop;
|
||||
image/webp=org.gnome.eog.desktop;
|
||||
text/html=zen.desktop;userapp-Zen-PIXJK3.desktop;
|
||||
text/plain=neovide.desktop;
|
||||
video/mp4=mpv.desktop;
|
||||
video/webm=mpv.desktop;
|
||||
x-scheme-handler/chrome=zen.desktop;userapp-Zen-PIXJK3.desktop;firefox.desktop;
|
||||
x-scheme-handler/http=zen.desktop;userapp-Zen-PIXJK3.desktop;firefox.desktop;
|
||||
x-scheme-handler/https=zen.desktop;userapp-Zen-PIXJK3.desktop;firefox.desktop;
|
||||
x-scheme-handler/mailto=zen.desktop;
|
||||
x-scheme-handler/tg=org.telegram.desktop.desktop;userapp-AyuGram Desktop-YAGQF3.desktop;userapp-AyuGram Desktop-352WJ3.desktop;org.fagram.desktop;
|
||||
x-scheme-handler/tonsite=org.telegram.desktop.desktop;userapp-AyuGram Desktop-UNJQF3.desktop;userapp-AyuGram Desktop-31ZUJ3.desktop;org.fagram.desktop;
|
||||
|
||||
[Default Applications]
|
||||
application/fb2=org.pwmt.zathura.desktop
|
||||
application/json=neovide.desktop
|
||||
application/octet-stream=mpv.desktop
|
||||
application/pdf=org.pwmt.zathura.desktop
|
||||
application/x-extension-htm=zen.desktop
|
||||
application/x-extension-html=zen.desktop
|
||||
application/x-extension-shtml=zen.desktop
|
||||
application/x-extension-xht=zen.desktop
|
||||
application/x-extension-xhtml=zen.desktop
|
||||
application/x-ms-dos-executable;application/x-wine-extension-msp;application/x-msi;application/x-msdos-program;text/win-bat;=PortProton.desktop
|
||||
application/x-msdownload=ru.launcher.StartWine.desktop
|
||||
application/x-php=mpv.desktop
|
||||
application/x-zip-compressed-fb2=org.pwmt.zathura.desktop
|
||||
application/xhtml+xml=zen.desktop
|
||||
application/zip=org.gnome.Nautilus.desktop
|
||||
audio/flac=mpv.desktop
|
||||
audio/mp4=mpv.desktop
|
||||
audio/ogg=mpv.desktop;
|
||||
audio/vorbis=mpv.desktop;
|
||||
audio/x-oggflac=mpv.desktop;
|
||||
audio/x-vorbis=mpv.desktop;
|
||||
audio/x-vorbis+ogg=mpv.desktop;
|
||||
image/gif=imv.desktop
|
||||
image/jpeg=org.gnome.eog.desktop
|
||||
image/png=org.gnome.eog.desktop
|
||||
image/vnd.djvu=org.pwmt.zathura.desktop
|
||||
image/webp=org.gnome.eog.desktop
|
||||
text/fb2+xml=org.pwmt.zathura.desktop
|
||||
text/html=zen.desktop
|
||||
text/plain=neovide.desktop
|
||||
text/xml=com.github.johnfactotum.Foliate.desktop
|
||||
video/mp4=mpv.desktop
|
||||
video/webm=mpv.desktop
|
||||
x-scheme-handler/anytype=anytype.desktop
|
||||
x-scheme-handler/chrome=zen.desktop
|
||||
x-scheme-handler/discord=vesktop.desktop
|
||||
x-scheme-handler/http=zen.desktop
|
||||
x-scheme-handler/https=zen.desktop
|
||||
x-scheme-handler/mailto=zen.desktop;
|
||||
x-scheme-handler/tg=org.fagram.desktop
|
||||
x-scheme-handler/tonsite=org.fagram.desktop
|
||||
716
config/niri/config.kdl
Normal file
716
config/niri/config.kdl
Normal file
|
|
@ -0,0 +1,716 @@
|
|||
input {
|
||||
keyboard {
|
||||
xkb {
|
||||
layout "us,ru"
|
||||
options "grp:caps_toggle"
|
||||
}
|
||||
repeat-delay 225
|
||||
repeat-rate 25
|
||||
// track-layout "global"
|
||||
numlock
|
||||
}
|
||||
touchpad {
|
||||
// off
|
||||
tap
|
||||
// dwt
|
||||
// dwtp
|
||||
// drag false
|
||||
// drag-lock
|
||||
natural-scroll
|
||||
// accel-speed 0.2
|
||||
// accel-profile "flat"
|
||||
// scroll-method "two-finger"
|
||||
// disabled-on-external-mouse
|
||||
}
|
||||
|
||||
mouse {
|
||||
// off
|
||||
// natural-scroll
|
||||
// accel-speed 0.2
|
||||
accel-profile "adaptive"
|
||||
scroll-button 274
|
||||
|
||||
scroll-method "on-button-down"
|
||||
}
|
||||
warp-mouse-to-focus
|
||||
focus-follows-mouse max-scroll-amount="0%"
|
||||
|
||||
trackpoint {
|
||||
// off
|
||||
// natural-scroll
|
||||
// accel-speed 0.2
|
||||
// accel-profile "flat"
|
||||
// scroll-method "on-button-down"
|
||||
// scroll-button 273
|
||||
// scroll-button-lock
|
||||
// middle-emulation
|
||||
}
|
||||
|
||||
}
|
||||
output "DP-1" {
|
||||
// off
|
||||
mode "1920x1080@165.000"
|
||||
scale 1.0
|
||||
transform "normal"
|
||||
position x=1280 y=0
|
||||
variable-refresh-rate on-demand=true
|
||||
|
||||
}
|
||||
|
||||
layout {
|
||||
gaps 10
|
||||
background-color "transparent"
|
||||
center-focused-column "never"
|
||||
default-column-display "normal"
|
||||
preset-column-widths {
|
||||
proportion 0.33333
|
||||
proportion 0.5
|
||||
proportion 0.66666
|
||||
}
|
||||
|
||||
preset-window-heights {
|
||||
proportion 0.5
|
||||
proportion 1.0
|
||||
}
|
||||
|
||||
default-column-width { proportion 1.0; }
|
||||
|
||||
// By default focus ring and border are rendered as a solid background rectangle
|
||||
// behind windows. That is, they will show up through semitransparent windows.
|
||||
// This is because windows using client-side decorations can have an arbitrary shape.
|
||||
//
|
||||
// If you don't like that, you should uncomment `prefer-no-csd` below.
|
||||
// Niri will draw focus ring and border *around* windows that agree to omit their
|
||||
// client-side decorations.
|
||||
//
|
||||
// Alternatively, you can override it with a window rule called
|
||||
// `draw-border-with-background`.
|
||||
|
||||
// You can change how the focus ring looks.
|
||||
focus-ring {
|
||||
off
|
||||
|
||||
width 2
|
||||
// - CSS named colors: "red"
|
||||
// - RGB hex: "#rgb", "#rgba", "#rrggbb", "#rrggbbaa"
|
||||
// - CSS-like notation: "rgb(255, 127, 0)", rgba(), hsl() and a few others.
|
||||
// active-color "#EEF7FD"
|
||||
//active-color "#EEF7FD"
|
||||
// foreground #C1D6D6
|
||||
//background #07090B
|
||||
// inactive-color "#5C6871"
|
||||
// Changing the color space is also supported, check the wiki for more info.
|
||||
//
|
||||
// active-gradient from="#80c8ff" to="#c7ff7f" angle=45
|
||||
|
||||
// You can also color the gradient relative to the entire view
|
||||
// of the workspace, rather than relative to just the window itself.
|
||||
// To do that, set relative-to="workspace-view".
|
||||
//
|
||||
// inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view"
|
||||
}
|
||||
|
||||
// You can also add a border. It's similar to the focus ring, but always visible.
|
||||
border {
|
||||
//off
|
||||
width 4
|
||||
active-color "#25c39f"
|
||||
inactive-color "#c1d6d6"
|
||||
}
|
||||
|
||||
shadow {
|
||||
off
|
||||
color "#0007"
|
||||
}
|
||||
|
||||
// Struts shrink the area occupied by windows, similarly to layer-shell panels.
|
||||
// You can think of them as a kind of outer gaps. They are set in logical pixels.
|
||||
// Left and right struts will cause the next window to the side to always be visible.
|
||||
// Top and bottom struts will simply add outer gaps in addition to the area occupied by
|
||||
// layer-shell panels and regular gaps.
|
||||
struts {
|
||||
left 0
|
||||
right 0
|
||||
top 0
|
||||
bottom 0
|
||||
}
|
||||
tab-indicator {
|
||||
//off
|
||||
active-color "#f6db8b"
|
||||
inactive-color "#8fd2f7"
|
||||
urgent-color "#eef7fd"
|
||||
width 5
|
||||
}
|
||||
insert-hint {
|
||||
//off
|
||||
color "#EEF7FD"
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
overview {
|
||||
zoom 0.4
|
||||
backdrop-color "#07090b"
|
||||
|
||||
workspace-shadow {
|
||||
off
|
||||
}
|
||||
}
|
||||
clipboard {
|
||||
disable-primary
|
||||
}
|
||||
cursor {
|
||||
xcursor-theme "BreezeX-Black"
|
||||
xcursor-size 26
|
||||
hide-when-typing
|
||||
hide-after-inactive-ms 1000
|
||||
}
|
||||
|
||||
spawn-at-startup "niri-screen-time" "-daemon"
|
||||
spawn-at-startup "swayosd-server"
|
||||
spawn-at-startup "walker" "--gapplication-service"
|
||||
|
||||
spawn-at-startup "hyprwave"
|
||||
spawn-at-startup "swaync"
|
||||
spawn-at-startup "clipse" "-listen"
|
||||
spawn-at-startup "swaybg" "-i" "imgs/bafkreiax76e2p3xqoikrkbppjl4mipnaamqrgxkcfgwqtrsa3glksq644m"
|
||||
|
||||
// To run a shell command (with variables, pipes, etc.), use spawn-sh-at-startup:
|
||||
// spawn-sh-at-startup "qs -c ~/source/qs/MyAwesomeShell"
|
||||
|
||||
hotkey-overlay {
|
||||
// Uncomment this line to disable the "Important Hotkeys" pop-up at startup.
|
||||
skip-at-startup
|
||||
}
|
||||
|
||||
// Uncomment this line to ask the clients to omit their client-side decorations if possible.
|
||||
// If the client will specifically ask for CSD, the request will be honored.
|
||||
// Additionally, clients will be informed that they are tiled, removing some client-side rounded corners.
|
||||
// This option will also fix border/focus ring drawing behind some semitransparent windows.
|
||||
// After enabling or disabling this, you need to restart the apps for this to take effect.
|
||||
prefer-no-csd
|
||||
|
||||
// You can change the path where screenshots are saved.
|
||||
// A ~ at the front will be expanded to the home directory.
|
||||
// The path is formatted with strftime(3) to give you the screenshot date and time.
|
||||
screenshot-path "~/imgs/screenshots/screenshot-from-%Y-%m-%d %H-%M-%S.png"
|
||||
//spawn-at-startup "throne"
|
||||
//spawn-at-startup "kitty" "sudo" "sing-box" "run" "-c" "/home/unconfer/.sing-box/sing-box-03.json"
|
||||
|
||||
// You can also set this to null to disable saving screenshots to disk.
|
||||
// screenshot-path null
|
||||
|
||||
// Animation settings.
|
||||
// The wiki explains how to configure individual animations:
|
||||
// https://yalter.github.io/niri/Configuration:-Animations
|
||||
animations {
|
||||
// Uncomment to turn off all animations.
|
||||
// off
|
||||
|
||||
// Slow down all animations by this factor. Values below 1 speed them up instead.
|
||||
slowdown 1.0
|
||||
workspace-switch {
|
||||
spring damping-ratio=0.8 stiffness=1000 epsilon=0.00001
|
||||
}
|
||||
window-open {
|
||||
duration-ms 200
|
||||
curve "ease-out-quad"
|
||||
|
||||
}
|
||||
window-close {
|
||||
duration-ms 200
|
||||
|
||||
curve "ease-out-quad"
|
||||
}
|
||||
horizontal-view-movement {
|
||||
spring damping-ratio=0.8 stiffness=1000 epsilon=0.0001
|
||||
}
|
||||
|
||||
window-movement {
|
||||
spring damping-ratio=0.8 stiffness=800 epsilon=0.0001
|
||||
}
|
||||
|
||||
window-resize {
|
||||
spring damping-ratio=0.8 stiffness=800 epsilon=0.0001
|
||||
}
|
||||
|
||||
config-notification-open-close {
|
||||
spring damping-ratio=0.6 stiffness=1000 epsilon=0.001
|
||||
}
|
||||
|
||||
exit-confirmation-open-close {
|
||||
spring damping-ratio=0.6 stiffness=500 epsilon=0.01
|
||||
}
|
||||
|
||||
screenshot-ui-open {
|
||||
duration-ms 200
|
||||
curve "ease-out-quad"
|
||||
}
|
||||
|
||||
overview-open-close {
|
||||
spring damping-ratio=0.8 stiffness=800 epsilon=0.0001
|
||||
}
|
||||
|
||||
recent-windows-close {
|
||||
spring damping-ratio=1.0 stiffness=800 epsilon=0.001
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Window rules let you adjust behavior for individual windows.
|
||||
// Find more information on the wiki:
|
||||
// https://yalter.github.io/niri/Configuration:-Window-Rules
|
||||
|
||||
// Work around WezTerm's initial configure bug
|
||||
// by setting an empty default-column-width.
|
||||
window-rule {
|
||||
// This regular expression is intentionally made as specific as possible,
|
||||
// since this is the default config, and we want no false positives.
|
||||
// You can get away with just app-id="wezterm" if you want.
|
||||
match app-id=r#"^org\.wezfurlong\.wezterm$"#
|
||||
default-column-width {
|
||||
proportion 0.5
|
||||
}
|
||||
}
|
||||
|
||||
window-rule {
|
||||
match app-id="clipse"
|
||||
// match is-floating=true
|
||||
open-maximized true
|
||||
open-floating true
|
||||
tiled-state true
|
||||
}
|
||||
window-rule {
|
||||
// open-maximized false
|
||||
geometry-corner-radius 10
|
||||
tiled-state true
|
||||
clip-to-geometry true
|
||||
|
||||
}
|
||||
|
||||
window-rule {
|
||||
match app-id="one.alynx.showmethekey"
|
||||
open-floating true
|
||||
open-focused false
|
||||
default-floating-position x=990 y=28 relative-to="top-left"
|
||||
min-width 900
|
||||
min-height 170
|
||||
|
||||
border {
|
||||
off
|
||||
}
|
||||
}
|
||||
|
||||
// Open the Firefox picture-in-picture player as floating by default.
|
||||
window-rule {
|
||||
// This app-id regular expression will work for both:
|
||||
// - host Firefox (app-id is "firefox")
|
||||
// - Flatpak Firefox (app-id is "org.mozilla.firefox")
|
||||
match app-id=r#"firefox$"# title="^Picture-in-Picture$"
|
||||
open-floating true
|
||||
}
|
||||
|
||||
// Example: block out two password managers from screen capture.
|
||||
// (This example rule is commented out with a "/-" in front.)
|
||||
/-window-rule {
|
||||
match app-id=r#"^org\.keepassxc\.KeePassXC$"#
|
||||
match app-id=r#"^org\.gnome\.World\.Secrets$"#
|
||||
|
||||
block-out-from "screen-capture"
|
||||
|
||||
// Use this instead if you want them visible on third-party screenshot tools.
|
||||
// block-out-from "screencast"
|
||||
}
|
||||
window-rule {
|
||||
match title="Media viewer"
|
||||
default-column-width {
|
||||
proportion 0.5
|
||||
}
|
||||
|
||||
}
|
||||
window-rule {
|
||||
match title="sudo"
|
||||
|
||||
border {
|
||||
active-color "#ff0100"
|
||||
}
|
||||
}
|
||||
|
||||
// Example: enable rounded corners for all windows.
|
||||
// (This example rule is commented out with a "/-" in front.)
|
||||
window-rule {
|
||||
geometry-corner-radius 10
|
||||
clip-to-geometry true
|
||||
}
|
||||
layer-rule {
|
||||
match namespace="waybar"
|
||||
match at-startup=true
|
||||
|
||||
// Properties that apply continuously.
|
||||
opacity 1.0
|
||||
// block-out-from "screen-capture"
|
||||
|
||||
shadow {
|
||||
|
||||
off
|
||||
softness 40
|
||||
spread 5
|
||||
offset x=0 y=5
|
||||
draw-behind-window true
|
||||
// inactive-color "#00000064"
|
||||
}
|
||||
|
||||
geometry-corner-radius 20
|
||||
place-within-backdrop true
|
||||
}
|
||||
// Put swaybg inside the overview backdrop.
|
||||
layer-rule {
|
||||
match namespace="^wallpaper$"
|
||||
|
||||
place-within-backdrop true
|
||||
}
|
||||
|
||||
|
||||
environment{
|
||||
|
||||
|
||||
}
|
||||
xwayland-satellite {
|
||||
// off
|
||||
path "xwayland-satellite"
|
||||
}
|
||||
|
||||
binds {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//ВНИМАНИЕ СЕКЦИЯ НЕЙРОСЛОПА
|
||||
|
||||
// Keys consist of modifiers separated by + signs, followed by an XKB key name
|
||||
// in the end. To find an XKB name for a particular key, you may use a program
|
||||
// like wev.
|
||||
//
|
||||
// "Mod" is a special modifier equal to Super when running on a TTY, and to Alt
|
||||
// when running as a winit window.
|
||||
//
|
||||
// Most actions that you can bind here can also be invoked programmatically with
|
||||
// `niri msg action do-something`.
|
||||
|
||||
// Mod-Shift-/, which is usually the same as Mod-?,
|
||||
// shows a list of important hotkeys.
|
||||
Mod+Shift+Slash { show-hotkey-overlay; }
|
||||
Super+F{ maximize-column;}
|
||||
Mod+M { spawn "hyprwave-toggle" "visibility"; }
|
||||
|
||||
// Suggested binds for running programs: terminal, app launcher, screen locker.
|
||||
Mod+Q { spawn "kitty"; }
|
||||
//Mod+D { spawn "fuzzel"; }
|
||||
|
||||
Mod+D { spawn "walker"; }
|
||||
Mod+Grave repeat=false { toggle-overview; }
|
||||
Mod+Shift+Grave repeat=false { spawn "kitty" "--class" "-e" "btop" ; }
|
||||
Super+W { spawn "kitty" "--class" "clipse" "-e" "clipse"; }
|
||||
Mod+Escape { spawn "hyprlock"; }
|
||||
Mod+Shift+Return { spawn "shutdown" "now"; }
|
||||
Mod+Ctrl+S { screenshot-window write-to-disk=false; }
|
||||
Mod+T repeat=false { spawn "swaync-client" "--toggle-panel";}
|
||||
|
||||
|
||||
Mod+Ctrl+Return { spawn "reboot"; }
|
||||
Mod+Shift+P{spawn "shutdown" "-c";}
|
||||
Alt+I repeat=false {spawn "hyprpicker" "-a";}
|
||||
// Mod+Alt+C {;}
|
||||
|
||||
// Use spawn-sh to run a shell command. Do this if you need pipes, multiple commands, etc.
|
||||
// Note: the entire command goes as a single argument. It's passed verbatim to `sh -c`.
|
||||
// For example, this is a standard bind to toggle the screen reader (orca).
|
||||
// Super+Alt+S allow-when-locked=true hotkey-overlay-title=null { spawn-sh "pkill orca || exec orca"; }
|
||||
|
||||
// Example volume keys mappings for PipeWire & WirePlumber.
|
||||
//
|
||||
// The allow-when-locked=true property makes them work even when the session is locked.
|
||||
// Using spawn-sh allows to pass multiple arguments together with the command.
|
||||
// XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+"; }
|
||||
// XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; }
|
||||
// XF86AudioMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; }
|
||||
//XF86AudioMicMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; }
|
||||
|
||||
// XF86AudioMicMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; }
|
||||
|
||||
XF86AudioRaiseVolume { spawn "swayosd-client" "--output-volume" "5" "--max-volume" "200";}
|
||||
|
||||
XF86AudioMute allow-when-locked=true { spawn "swayosd-client" "--output-volume" "mute-toggle"; }
|
||||
|
||||
XF86AudioLowerVolume { spawn "swayosd-client" "--output-volume" "-5" "--max-volume" "200";}
|
||||
Mod+Y allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; }
|
||||
|
||||
// Example brightness key mappings for brightnessctl.
|
||||
// You can use regular spawn with multiple arguments too (to avoid going through "sh"),
|
||||
// but you need to manually put each argument in separate "" quotes.
|
||||
XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "+10%"; }
|
||||
XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "10%-"; }
|
||||
|
||||
// Open/close the Overview: a zoomed-out view of workspaces and windows.
|
||||
// You can also move the mouse into the top-left hot corner,
|
||||
// or do a four-finger swipe up on a touchpad.
|
||||
Mod+O repeat=false { toggle-overview; }
|
||||
|
||||
//Mod+Escape repeat=false { toggle-overview; }
|
||||
|
||||
Mod+Shift+C repeat=false { close-window; }
|
||||
|
||||
Mod+Left { focus-column-left; }
|
||||
Mod+Down { focus-window-down; }
|
||||
Mod+Up { focus-window-up; }
|
||||
Mod+Right { focus-column-right; }
|
||||
Mod+H { focus-column-left; }
|
||||
Mod+J { focus-window-down; }
|
||||
Mod+K { focus-window-up; }
|
||||
Mod+L { focus-column-right; }
|
||||
|
||||
|
||||
Mod+Shift+Z { focus-column-left; }
|
||||
Mod+Shift+X { focus-column-right; }
|
||||
|
||||
Mod+Ctrl+Left { move-column-left; }
|
||||
Mod+Ctrl+Down { move-window-down; }
|
||||
Mod+Ctrl+Up { move-window-up; }
|
||||
Mod+Ctrl+Right { move-column-right; }
|
||||
Mod+Ctrl+H { move-column-left; }
|
||||
Mod+Ctrl+J { move-window-down; }
|
||||
Mod+Ctrl+K { move-window-up; }
|
||||
Mod+Ctrl+L { move-column-right; }
|
||||
|
||||
Mod+Ctrl+MouseForward { move-column-right; }
|
||||
Mod+Ctrl+MouseBack { move-column-left; }
|
||||
|
||||
// Alternative commands that move across workspaces when reaching
|
||||
// the first or last window in a column.
|
||||
// Mod+J { focus-window-or-workspace-down; }
|
||||
// Mod+K { focus-window-or-workspace-up; }
|
||||
// Mod+Ctrl+J { move-window-down-or-to-workspace-down; }
|
||||
// Mod+Ctrl+K { move-window-up-or-to-workspace-up; }
|
||||
|
||||
Mod+Home { focus-column-first; }
|
||||
Mod+End { focus-column-last; }
|
||||
Mod+Ctrl+Home { move-column-to-first; }
|
||||
Mod+Ctrl+End { move-column-to-last; }
|
||||
|
||||
Mod+Shift+Left { focus-monitor-left; }
|
||||
Mod+Shift+Down { focus-monitor-down; }
|
||||
Mod+Shift+Up { focus-monitor-up; }
|
||||
Mod+Shift+Right { focus-monitor-right; }
|
||||
Mod+Shift+H { focus-monitor-left; }
|
||||
Mod+Shift+J { focus-monitor-down; }
|
||||
Mod+Shift+K { focus-monitor-up; }
|
||||
// Mod+Shift+L { focus-monitor-right; }
|
||||
|
||||
Mod+Shift+Ctrl+Left { move-column-to-monitor-left; }
|
||||
Mod+Shift+Ctrl+Down { move-column-to-monitor-down; }
|
||||
Mod+Shift+Ctrl+Up { move-column-to-monitor-up; }
|
||||
Mod+Shift+Ctrl+Right { move-column-to-monitor-right; }
|
||||
Mod+Shift+Ctrl+H { move-column-to-monitor-left; }
|
||||
Mod+Shift+Ctrl+J { move-column-to-monitor-down; }
|
||||
Mod+Shift+Ctrl+K { move-column-to-monitor-up; }
|
||||
Mod+Shift+Ctrl+L { move-column-to-monitor-right; }
|
||||
|
||||
// Alternatively, there are commands to move just a single window:
|
||||
// Mod+Shift+Ctrl+Left { move-window-to-monitor-left; }
|
||||
// ...
|
||||
|
||||
// And you can also move a whole workspace to another monitor:
|
||||
// Mod+Shift+Ctrl+Left { move-workspace-to-monitor-left; }
|
||||
// ...
|
||||
|
||||
Mod+Page_Down { focus-workspace-down; }
|
||||
Mod+Page_Up { focus-workspace-up; }
|
||||
Mod+U { focus-workspace-down; }
|
||||
Mod+I { focus-workspace-up; }
|
||||
|
||||
Mod+2 { focus-workspace-down; }
|
||||
Mod+1 { focus-workspace-up; }
|
||||
|
||||
Mod+Ctrl+2 { move-column-to-workspace-down; }
|
||||
Mod+Ctrl+1 { move-column-to-workspace-up; }
|
||||
|
||||
|
||||
Mod+Shift+1 {focus-column-left;}
|
||||
Mod+Shift+2 {focus-column-right;}
|
||||
|
||||
Mod+Ctrl+Page_Down { move-column-to-workspace-down; }
|
||||
Mod+Ctrl+Page_Up { move-column-to-workspace-up; }
|
||||
Mod+Ctrl+U { move-column-to-workspace-down; }
|
||||
Mod+Ctrl+I { move-column-to-workspace-up; }
|
||||
|
||||
// Alternatively, there are commands to move just a single window:
|
||||
// Mod+Ctrl+Page_Down { move-window-to-workspace-down; }
|
||||
// ...
|
||||
|
||||
Mod+Shift+Page_Down { move-workspace-down; }
|
||||
Mod+Shift+Page_Up { move-workspace-up; }
|
||||
Mod+Shift+U { move-workspace-down; }
|
||||
Mod+Shift+I { move-workspace-up; }
|
||||
|
||||
|
||||
|
||||
|
||||
Mod+Shift+MouseForward { focus-workspace-down; }
|
||||
Mod+Shift+MouseBack { focus-workspace-up; }
|
||||
|
||||
Mod+MouseForward { focus-column-right; }
|
||||
Mod+MouseBack { focus-column-left; }
|
||||
// You can bind mouse wheel scroll ticks using the following syntax.
|
||||
// These binds will change direction based on the natural-scroll setting.
|
||||
//
|
||||
// To avoid scrolling through workspaces really fast, you can use
|
||||
// the cooldown-ms property. The bind will be rate-limited to this value.
|
||||
// You can set a cooldown on any bind, but it's most useful for the wheel.
|
||||
Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; }
|
||||
Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; }
|
||||
|
||||
//Mod+Shift+WheelScrollDown cooldown-ms=150 { focus-column-left; }
|
||||
//Mod+Shift+WheelScrollUp cooldown-ms=150 { focus-column-right; }
|
||||
|
||||
Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; }
|
||||
Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; }
|
||||
|
||||
Mod+WheelScrollRight { focus-column-right; }
|
||||
Mod+WheelScrollLeft { focus-column-left; }
|
||||
Mod+Ctrl+WheelScrollRight { move-column-right; }
|
||||
Mod+Ctrl+WheelScrollLeft { move-column-left; }
|
||||
|
||||
// Usually scrolling up and down with Shift in applications results in
|
||||
// horizontal scrolling; these binds replicate that.
|
||||
Mod+Shift+WheelScrollDown { focus-column-right; }
|
||||
Mod+Shift+WheelScrollUp { focus-column-left; }
|
||||
Mod+Ctrl+Shift+WheelScrollDown { move-column-right; }
|
||||
Mod+Ctrl+Shift+WheelScrollUp { move-column-left; }
|
||||
|
||||
// Similarly, you can bind touchpad scroll "ticks".
|
||||
// Touchpad scrolling is continuous, so for these binds it is split into
|
||||
// discrete intervals.
|
||||
// These binds are also affected by touchpad's natural-scroll, so these
|
||||
// example binds are "inverted", since we have natural-scroll enabled for
|
||||
// touchpads by default.
|
||||
// Mod+TouchpadScrollDown { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02+"; }
|
||||
// Mod+TouchpadScrollUp { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02-"; }
|
||||
|
||||
// You can refer to workspaces by index. However, keep in mind that
|
||||
// niri is a dynamic workspace system, so these commands are kind of
|
||||
// "best effort". Trying to refer to a workspace index bigger than
|
||||
// the current workspace count will instead refer to the bottommost
|
||||
// (empty) workspace.
|
||||
//
|
||||
// For example, with 2 workspaces + 1 empty, indices 3, 4, 5 and so on
|
||||
// will all refer to the 3rd workspace.
|
||||
// Mod+1 { focus-workspace 1; }
|
||||
//Mod+2 { focus-workspace 2; }
|
||||
//Mod+3 repeat=false { toggle-overview; }
|
||||
// Mod+4 { focus-workspace 4; }
|
||||
//Mod+5 { focus-workspace 5; }
|
||||
//Mod+6 { focus-workspace 6; }
|
||||
//Mod+7 { focus-workspace 7; }
|
||||
//Mod+8 { focus-workspace 8; }
|
||||
//Mod+9 { focus-workspace 9; }
|
||||
//Mod+Ctrl+1 { move-column-to-workspace 1; }
|
||||
//Mod+Ctrl+2 { move-column-to-workspace 2; }
|
||||
Mod+Ctrl+3 { move-column-to-workspace 3; }
|
||||
//Mod+Ctrl+4 { move-column-to-workspace 4; }
|
||||
//Mod+Ctrl+5 { move-column-to-workspace 5; }
|
||||
//Mod+Ctrl+6 { move-column-to-workspace 6; }
|
||||
//Mod+Ctrl+7 { move-column-to-workspace 7; }
|
||||
//Mod+Ctrl+8 { move-column-to-workspace 8; }
|
||||
//Mod+Ctrl+9 { move-column-to-workspace 9; }
|
||||
|
||||
// Alternatively, there are commands to move just a single window:
|
||||
// Mod+Ctrl+1 { move-window-to-workspace 1; }
|
||||
|
||||
// Switches focus between the current and the previous workspace.
|
||||
Mod+Tab { focus-workspace-previous; }
|
||||
|
||||
// The following binds move the focused window in and out of a column.
|
||||
// If the window is alone, they will consume it into the nearby column to the side.
|
||||
// If the window is already in a column, they will expel it out.
|
||||
Mod+BracketLeft { consume-or-expel-window-left; }
|
||||
Mod+BracketRight { consume-or-expel-window-right; }
|
||||
|
||||
// Consume one window from the right to the bottom of the focused column.
|
||||
Mod+3 { consume-window-into-column; }
|
||||
// Expel the bottom window from the focused column to the right.
|
||||
Mod+4 { expel-window-from-column; }
|
||||
|
||||
Mod+A repeat=false { switch-preset-column-width; }
|
||||
Mod+Shift+W { toggle-column-tabbed-display; }
|
||||
// Cycling through the presets in reverse order is also possible.
|
||||
// Mod+R { switch-preset-column-width-back; }
|
||||
Mod+Shift+R repeat=false { switch-preset-window-height; }
|
||||
Mod+Ctrl+R { reset-window-height; }
|
||||
Mod+Shift+F repeat=false { fullscreen-window; }
|
||||
|
||||
// Expand the focused column to space not taken up by other fully visible columns.
|
||||
// Makes the column "fill the rest of the space".
|
||||
Mod+Ctrl+F { expand-column-to-available-width; }
|
||||
|
||||
//Mod+M { center-column; }
|
||||
|
||||
// Center all fully visible columns on screen.
|
||||
Mod+C { center-column; }
|
||||
|
||||
// Finer width adjustments.
|
||||
// This command can also:
|
||||
// * set width in pixels: "1000"
|
||||
// * adjust width in pixels: "-5" or "+5"
|
||||
// * set width as a percentage of screen width: "25%"
|
||||
// * adjust width as a percentage of screen width: "-10%" or "+10%"
|
||||
// Pixel sizes use logical, or scaled, pixels. I.e. on an output with scale 2.0,
|
||||
// set-column-width "100" will make the column occupy 200 physical screen pixels.
|
||||
Mod+Minus { set-column-width "-10%"; }
|
||||
Mod+Equal { set-column-width "+10%"; }
|
||||
|
||||
// Finer height adjustments when in column with other windows.
|
||||
Mod+Shift+Minus { set-window-height "-10%"; }
|
||||
Mod+Shift+Equal { set-window-height "+10%"; }
|
||||
|
||||
Mod+V { toggle-window-floating; }
|
||||
// Move the focused window between the floating and the tiling layout.
|
||||
//Mod+V {spawn "pavucontrol"; }
|
||||
Mod+Shift+V { switch-focus-between-floating-and-tiling; }
|
||||
|
||||
// Toggle tabbed column display mode.
|
||||
// Windows in this column will appear as vertical tabs,
|
||||
// rather than stacked on top of each other.
|
||||
Mod+N { toggle-column-tabbed-display; }
|
||||
|
||||
// Actions to switch layouts.
|
||||
// Note: if you uncomment these, make sure you do NOT have
|
||||
// a matching layout switch hotkey configured in xkb options above.
|
||||
// Having both at once on the same hotkey will break the switching,
|
||||
// since it will switch twice upon pressing the hotkey (once by xkb, once by niri).
|
||||
// Mod+Space { switch-layout "next"; }
|
||||
// Mod+Shift+Space { switch-layout "prev"; }
|
||||
|
||||
Mod+S { screenshot; }
|
||||
Super+Shift+S { screenshot-screen; }
|
||||
|
||||
// Applications such as remote-desktop clients and software KVM switches may
|
||||
// request that niri stops processing the keyboard shortcuts defined here
|
||||
// so they may, for example, forward the key presses as-is to a remote machine.
|
||||
// It's a good idea to bind an escape hatch to toggle the inhibitor,
|
||||
// so a buggy application can't hold your session hostage.
|
||||
//
|
||||
// The allow-inhibiting=false property can be applied to other binds as well,
|
||||
// which ensures niri always processes them, even when an inhibitor is active.
|
||||
//Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; }
|
||||
|
||||
// The quit action will show a confirmation dialog to avoid accidental exits.
|
||||
Mod+Shift+Escape { quit; }
|
||||
Ctrl+Alt+Delete { quit; }
|
||||
|
||||
// Powers off the monitors. To turn them back on, do any input like
|
||||
// moving the mouse or pressing any other key.
|
||||
//Mod+Shift+P { power-off-monitors; }
|
||||
}
|
||||
8
config/nvim/.gitignore
vendored
Normal file
8
config/nvim/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
tt.*
|
||||
.tests
|
||||
doc/tags
|
||||
debug
|
||||
.repro
|
||||
foo.*
|
||||
*.log
|
||||
data
|
||||
15
config/nvim/.neoconf.json
Normal file
15
config/nvim/.neoconf.json
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"neodev": {
|
||||
"library": {
|
||||
"enabled": true,
|
||||
"plugins": true
|
||||
}
|
||||
},
|
||||
"neoconf": {
|
||||
"plugins": {
|
||||
"lua_ls": {
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
201
config/nvim/LICENSE
Normal file
201
config/nvim/LICENSE
Normal file
|
|
@ -0,0 +1,201 @@
|
|||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
4
config/nvim/README.md
Normal file
4
config/nvim/README.md
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# 💤 LazyVim
|
||||
|
||||
A starter template for [LazyVim](https://github.com/LazyVim/LazyVim).
|
||||
Refer to the [documentation](https://lazyvim.github.io/installation) to get started.
|
||||
2
config/nvim/init.lua
Normal file
2
config/nvim/init.lua
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
-- bootstrap lazy.nvim, LazyVim and your plugins
|
||||
require("config.lazy")
|
||||
41
config/nvim/lazy-lock.json
Normal file
41
config/nvim/lazy-lock.json
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
{
|
||||
"LazyVim": { "branch": "main", "commit": "28db03f958d58dfff3c647ce28fdc1cb88ac158d" },
|
||||
"LuaSnip": { "branch": "master", "commit": "5a1e39223db9a0498024a77b8441169d260c8c25" },
|
||||
"blink.cmp": { "branch": "main", "commit": "327fff91fe6af358e990be7be1ec8b78037d2138" },
|
||||
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
|
||||
"catppuccin": { "branch": "main", "commit": "234fc048de931a0e42ebcad675bf6559d75e23df" },
|
||||
"conform.nvim": { "branch": "master", "commit": "cde4da5c1083d3527776fee69536107d98dae6c9" },
|
||||
"flash.nvim": { "branch": "main", "commit": "fcea7ff883235d9024dc41e638f164a450c14ca2" },
|
||||
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
|
||||
"gitsigns.nvim": { "branch": "main", "commit": "20ad4419564d6e22b189f6738116b38871082332" },
|
||||
"grug-far.nvim": { "branch": "main", "commit": "3e72397465f774b01aa38e4fe8e6eecf23d766d9" },
|
||||
"lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" },
|
||||
"lazydev.nvim": { "branch": "main", "commit": "5231c62aa83c2f8dc8e7ba957aa77098cda1257d" },
|
||||
"lualine.nvim": { "branch": "master", "commit": "3946f0122255bc377d14a59b27b609fb3ab25768" },
|
||||
"markview.nvim": { "branch": "main", "commit": "d72e1bd8634f7abad68a77ad3c6f97342c09ae0a" },
|
||||
"marp-nvim": { "branch": "main", "commit": "4f38e6ffe2f5ea260f35f7ff3e4e424b9f8bea29" },
|
||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "d7b5feb6e769e995f7fcf44d92f49f811c51d10c" },
|
||||
"mason.nvim": { "branch": "main", "commit": "ad7146aa61dcaeb54fa900144d768f040090bff0" },
|
||||
"mini.ai": { "branch": "main", "commit": "0d3c9cf22e37b86b7a0dfbe7ef129ee7a5f4f93c" },
|
||||
"mini.icons": { "branch": "main", "commit": "ff2e4f1d29f659cc2bad0f9256f2f6195c6b2428" },
|
||||
"mini.nvim": { "branch": "main", "commit": "68d4478920c7afdfa21c13706464e275d9ce3255" },
|
||||
"mini.pairs": { "branch": "main", "commit": "b316e68f2d242d5bd010deaab645daa27ed86297" },
|
||||
"noice.nvim": { "branch": "main", "commit": "7bfd942445fb63089b59f97ca487d605e715f155" },
|
||||
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
|
||||
"nvim-lint": { "branch": "master", "commit": "8b349e822a36e9480aed96c6dd2f757f80524a35" },
|
||||
"nvim-lspconfig": { "branch": "master", "commit": "2010fc6ec03e2da552b4886fceb2f7bc0fc2e9c0" },
|
||||
"nvim-snippy": { "branch": "master", "commit": "504ab14eeb14301d9b2a858a2a6cf99ccc8d60d0" },
|
||||
"nvim-treesitter": { "branch": "main", "commit": "d97d226cfd4c00af000b3b8529261352677fc6a8" },
|
||||
"nvim-treesitter-textobjects": { "branch": "main", "commit": "7024f8687b060dd9a425bde1fa8621c896a38138" },
|
||||
"nvim-ts-autotag": { "branch": "main", "commit": "c4ca798ab95b316a768d51eaaaee48f64a4a46bc" },
|
||||
"persistence.nvim": { "branch": "main", "commit": "b20b2a7887bd39c1a356980b45e03250f3dce49c" },
|
||||
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
|
||||
"render-markdown.nvim": { "branch": "main", "commit": "060c911c62f995a9db4467dde6fafd699cf94d55" },
|
||||
"snacks.nvim": { "branch": "main", "commit": "eee204d690f8d8e755229ff20f63d23d48565d7c" },
|
||||
"todo-comments.nvim": { "branch": "main", "commit": "411503d3bedeff88484de572f2509c248e499b38" },
|
||||
"tokyonight.nvim": { "branch": "main", "commit": "5da1b76e64daf4c5d410f06bcb6b9cb640da7dfd" },
|
||||
"trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" },
|
||||
"ts-comments.nvim": { "branch": "main", "commit": "123a9fb12e7229342f807ec9e6de478b1102b041" },
|
||||
"which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" },
|
||||
"xkbswitch.nvim": { "branch": "master", "commit": "aae56d49db9baf0d9b9675a77da35173d8d87a30" }
|
||||
}
|
||||
10
config/nvim/lazyvim.json
Normal file
10
config/nvim/lazyvim.json
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"extras": [
|
||||
|
||||
],
|
||||
"install_version": 8,
|
||||
"news": {
|
||||
"NEWS.md": "11866"
|
||||
},
|
||||
"version": 8
|
||||
}
|
||||
8
config/nvim/lua/config/autocmds.lua
Normal file
8
config/nvim/lua/config/autocmds.lua
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
-- Autocmds are automatically loaded on the VeryLazy event
|
||||
-- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua
|
||||
--
|
||||
-- Add any additional autocmds here
|
||||
-- with `vim.api.nvim_create_autocmd`
|
||||
--
|
||||
-- Or remove existing autocmds by their group name (which is prefixed with `lazyvim_` for the defaults)
|
||||
-- e.g. vim.api.nvim_del_augroup_by_name("lazyvim_wrap_spell")
|
||||
3
config/nvim/lua/config/keymaps.lua
Normal file
3
config/nvim/lua/config/keymaps.lua
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
-- Keymaps are automatically loaded on the VeryLazy event
|
||||
-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua
|
||||
-- Add any additional keymaps here
|
||||
53
config/nvim/lua/config/lazy.lua
Normal file
53
config/nvim/lua/config/lazy.lua
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
||||
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
|
||||
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
|
||||
if vim.v.shell_error ~= 0 then
|
||||
vim.api.nvim_echo({
|
||||
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
|
||||
{ out, "WarningMsg" },
|
||||
{ "\nPress any key to exit..." },
|
||||
}, true, {})
|
||||
vim.fn.getchar()
|
||||
os.exit(1)
|
||||
end
|
||||
end
|
||||
vim.opt.rtp:prepend(lazypath)
|
||||
|
||||
require("lazy").setup({
|
||||
spec = {
|
||||
-- add LazyVim and import its plugins
|
||||
{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
|
||||
-- import/override with your plugins
|
||||
{ import = "plugins" },
|
||||
},
|
||||
defaults = {
|
||||
-- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup.
|
||||
-- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default.
|
||||
lazy = false,
|
||||
-- It's recommended to leave version=false for now, since a lot the plugin that support versioning,
|
||||
-- have outdated releases, which may break your Neovim install.
|
||||
version = false, -- always use the latest git commit
|
||||
-- version = "*", -- try installing the latest stable version for plugins that support semver
|
||||
},
|
||||
install = { colorscheme = { "tokyonight", "habamax" } },
|
||||
checker = {
|
||||
enabled = true, -- check for plugin updates periodically
|
||||
notify = false, -- notify on update
|
||||
}, -- automatically check for plugin updates
|
||||
performance = {
|
||||
rtp = {
|
||||
-- disable some rtp plugins
|
||||
disabled_plugins = {
|
||||
"gzip",
|
||||
-- "matchit",
|
||||
-- "matchparen",
|
||||
-- "netrwPlugin",
|
||||
"tarPlugin",
|
||||
"tohtml",
|
||||
"tutor",
|
||||
"zipPlugin",
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
3
config/nvim/lua/config/options.lua
Normal file
3
config/nvim/lua/config/options.lua
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
-- Options are automatically loaded before lazy.nvim startup
|
||||
-- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua
|
||||
-- Add any additional options here
|
||||
197
config/nvim/lua/plugins/example.lua
Normal file
197
config/nvim/lua/plugins/example.lua
Normal file
|
|
@ -0,0 +1,197 @@
|
|||
-- since this is just an example spec, don't actually load anything here and return an empty spec
|
||||
-- stylua: ignore
|
||||
if true then return {} end
|
||||
|
||||
-- every spec file under the "plugins" directory will be loaded automatically by lazy.nvim
|
||||
--
|
||||
-- In your plugin files, you can:
|
||||
-- * add extra plugins
|
||||
-- * disable/enabled LazyVim plugins
|
||||
-- * override the configuration of LazyVim plugins
|
||||
return {
|
||||
-- add gruvbox
|
||||
{ "ellisonleao/gruvbox.nvim" },
|
||||
|
||||
-- Configure LazyVim to load gruvbox
|
||||
{
|
||||
"LazyVim/LazyVim",
|
||||
opts = {
|
||||
colorscheme = "gruvbox",
|
||||
},
|
||||
},
|
||||
|
||||
-- change trouble config
|
||||
{
|
||||
"folke/trouble.nvim",
|
||||
-- opts will be merged with the parent spec
|
||||
opts = { use_diagnostic_signs = true },
|
||||
},
|
||||
|
||||
-- disable trouble
|
||||
{ "folke/trouble.nvim", enabled = false },
|
||||
|
||||
-- override nvim-cmp and add cmp-emoji
|
||||
{
|
||||
"hrsh7th/nvim-cmp",
|
||||
dependencies = { "hrsh7th/cmp-emoji" },
|
||||
---@param opts cmp.ConfigSchema
|
||||
opts = function(_, opts)
|
||||
table.insert(opts.sources, { name = "emoji" })
|
||||
end,
|
||||
},
|
||||
|
||||
-- change some telescope options and a keymap to browse plugin files
|
||||
{
|
||||
"nvim-telescope/telescope.nvim",
|
||||
keys = {
|
||||
-- add a keymap to browse plugin files
|
||||
-- stylua: ignore
|
||||
{
|
||||
"<leader>fp",
|
||||
function() require("telescope.builtin").find_files({ cwd = require("lazy.core.config").options.root }) end,
|
||||
desc = "Find Plugin File",
|
||||
},
|
||||
},
|
||||
-- change some options
|
||||
opts = {
|
||||
defaults = {
|
||||
layout_strategy = "horizontal",
|
||||
layout_config = { prompt_position = "top" },
|
||||
sorting_strategy = "ascending",
|
||||
winblend = 0,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- add pyright to lspconfig
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
---@class PluginLspOpts
|
||||
opts = {
|
||||
---@type lspconfig.options
|
||||
servers = {
|
||||
-- pyright will be automatically installed with mason and loaded with lspconfig
|
||||
pyright = {},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- add tsserver and setup with typescript.nvim instead of lspconfig
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
dependencies = {
|
||||
"jose-elias-alvarez/typescript.nvim",
|
||||
init = function()
|
||||
require("lazyvim.util").lsp.on_attach(function(_, buffer)
|
||||
-- stylua: ignore
|
||||
vim.keymap.set( "n", "<leader>co", "TypescriptOrganizeImports", { buffer = buffer, desc = "Organize Imports" })
|
||||
vim.keymap.set("n", "<leader>cR", "TypescriptRenameFile", { desc = "Rename File", buffer = buffer })
|
||||
end)
|
||||
end,
|
||||
},
|
||||
---@class PluginLspOpts
|
||||
opts = {
|
||||
---@type lspconfig.options
|
||||
servers = {
|
||||
-- tsserver will be automatically installed with mason and loaded with lspconfig
|
||||
tsserver = {},
|
||||
},
|
||||
-- you can do any additional lsp server setup here
|
||||
-- return true if you don't want this server to be setup with lspconfig
|
||||
---@type table<string, fun(server:string, opts:_.lspconfig.options):boolean?>
|
||||
setup = {
|
||||
-- example to setup with typescript.nvim
|
||||
tsserver = function(_, opts)
|
||||
require("typescript").setup({ server = opts })
|
||||
return true
|
||||
end,
|
||||
-- Specify * to use this function as a fallback for any server
|
||||
-- ["*"] = function(server, opts) end,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- for typescript, LazyVim also includes extra specs to properly setup lspconfig,
|
||||
-- treesitter, mason and typescript.nvim. So instead of the above, you can use:
|
||||
{ import = "lazyvim.plugins.extras.lang.typescript" },
|
||||
|
||||
-- add more treesitter parsers
|
||||
{
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
opts = {
|
||||
ensure_installed = {
|
||||
"bash",
|
||||
"html",
|
||||
"javascript",
|
||||
"json",
|
||||
"lua",
|
||||
"markdown",
|
||||
"markdown_inline",
|
||||
"python",
|
||||
"query",
|
||||
"regex",
|
||||
"tsx",
|
||||
"typescript",
|
||||
"vim",
|
||||
"yaml",
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- since `vim.tbl_deep_extend`, can only merge tables and not lists, the code above
|
||||
-- would overwrite `ensure_installed` with the new value.
|
||||
-- If you'd rather extend the default config, use the code below instead:
|
||||
{
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
opts = function(_, opts)
|
||||
-- add tsx and treesitter
|
||||
vim.list_extend(opts.ensure_installed, {
|
||||
"tsx",
|
||||
"typescript",
|
||||
})
|
||||
end,
|
||||
},
|
||||
|
||||
-- the opts function can also be used to change the default opts:
|
||||
{
|
||||
"nvim-lualine/lualine.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = function(_, opts)
|
||||
table.insert(opts.sections.lualine_x, {
|
||||
function()
|
||||
return "😄"
|
||||
end,
|
||||
})
|
||||
end,
|
||||
},
|
||||
|
||||
-- or you can return new options to override all the defaults
|
||||
{
|
||||
"nvim-lualine/lualine.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = function()
|
||||
return {
|
||||
--[[add your custom lualine config here]]
|
||||
}
|
||||
end,
|
||||
},
|
||||
|
||||
-- use mini.starter instead of alpha
|
||||
{ import = "lazyvim.plugins.extras.ui.mini-starter" },
|
||||
|
||||
-- add jsonls and schemastore packages, and setup treesitter for json, json5 and jsonc
|
||||
{ import = "lazyvim.plugins.extras.lang.json" },
|
||||
|
||||
-- add any tools you want to have installed below
|
||||
{
|
||||
"williamboman/mason.nvim",
|
||||
opts = {
|
||||
ensure_installed = {
|
||||
"stylua",
|
||||
"shellcheck",
|
||||
"shfmt",
|
||||
"flake8",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
7
config/nvim/lua/plugins/luasnip.lua
Normal file
7
config/nvim/lua/plugins/luasnip.lua
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
return {
|
||||
"L3MON4D3/LuaSnip",
|
||||
-- follow latest release.
|
||||
version = "v2.*", -- Replace <CurrentMajor> by the latest released major (first number of latest release)
|
||||
-- install jsregexp (optional!).
|
||||
build = "make install_jsregexp",
|
||||
}
|
||||
4
config/nvim/lua/plugins/markview.lua
Normal file
4
config/nvim/lua/plugins/markview.lua
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
return {
|
||||
"OXY2DEV/markview.nvim",
|
||||
lazy = false,
|
||||
}
|
||||
10
config/nvim/lua/plugins/marp-nvim.lua
Normal file
10
config/nvim/lua/plugins/marp-nvim.lua
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
return {
|
||||
"mpas/marp-nvim",
|
||||
config = function()
|
||||
require("marp").setup({
|
||||
port = 44666,
|
||||
wait_for_response_timeout = 30,
|
||||
wait_for_response_delay = 1,
|
||||
})
|
||||
end,
|
||||
}
|
||||
3
config/nvim/lua/plugins/nvim-snippy.lua
Normal file
3
config/nvim/lua/plugins/nvim-snippy.lua
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
return {
|
||||
"dcampos/nvim-snippy",
|
||||
}
|
||||
9
config/nvim/lua/plugins/render-markdown.lua
Normal file
9
config/nvim/lua/plugins/render-markdown.lua
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
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
|
||||
-- dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-tree/nvim-web-devicons' }, -- if you prefer nvim-web-devicons
|
||||
---@module 'render-markdown'
|
||||
---@type render.md.UserConfig
|
||||
opts = {},
|
||||
}
|
||||
3
config/nvim/lua/plugins/xkbswitch.lua
Normal file
3
config/nvim/lua/plugins/xkbswitch.lua
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
return {
|
||||
{ "ivanesmantovich/xkbswitch.nvim" },
|
||||
}
|
||||
3
config/nvim/stylua.toml
Normal file
3
config/nvim/stylua.toml
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
indent_type = "Spaces"
|
||||
indent_width = 2
|
||||
column_width = 120
|
||||
172
config/termusic/tui.toml
Normal file
172
config/termusic/tui.toml
Normal file
|
|
@ -0,0 +1,172 @@
|
|||
version = "2"
|
||||
com = "same"
|
||||
|
||||
[behavior]
|
||||
quit_server_on_exit = false
|
||||
confirm_quit = false
|
||||
|
||||
[coverart]
|
||||
align = "bottom right"
|
||||
size_scale = 0
|
||||
hidden = false
|
||||
|
||||
[style.library]
|
||||
foreground_color = "Foreground"
|
||||
background_color = "Background"
|
||||
border_color = "Green"
|
||||
highlight_color = "LightWhite"
|
||||
highlight_symbol = ">"
|
||||
|
||||
[style.playlist]
|
||||
foreground_color = "Foreground"
|
||||
background_color = "Background"
|
||||
border_color = "Green"
|
||||
highlight_color = "LightWhite"
|
||||
highlight_symbol = "!"
|
||||
current_track_symbol = "!"
|
||||
use_loop_mode_symbol = true
|
||||
|
||||
[style.lyric]
|
||||
foreground_color = "Foreground"
|
||||
background_color = "Background"
|
||||
border_color = "Green"
|
||||
|
||||
[style.progress]
|
||||
foreground_color = "LightBlack"
|
||||
background_color = "Background"
|
||||
border_color = "Green"
|
||||
|
||||
[style.important_popup]
|
||||
foreground_color = "Yellow"
|
||||
background_color = "Reset"
|
||||
border_color = "Yellow"
|
||||
|
||||
[style.fallback]
|
||||
foreground_color = "Foreground"
|
||||
background_color = "Reset"
|
||||
border_color = "Blue"
|
||||
highlight_color = "LightYellow"
|
||||
|
||||
[theme]
|
||||
name = "Native"
|
||||
author = "Termusic Developers"
|
||||
|
||||
[theme.primary]
|
||||
background = "native"
|
||||
foreground = "native"
|
||||
|
||||
[theme.cursor]
|
||||
text = "native"
|
||||
cursor = "native"
|
||||
|
||||
[theme.normal]
|
||||
black = "native"
|
||||
red = "native"
|
||||
green = "native"
|
||||
yellow = "native"
|
||||
blue = "native"
|
||||
magenta = "native"
|
||||
cyan = "native"
|
||||
white = "native"
|
||||
|
||||
[theme.bright]
|
||||
black = "native"
|
||||
red = "native"
|
||||
green = "native"
|
||||
yellow = "native"
|
||||
blue = "native"
|
||||
magenta = "native"
|
||||
cyan = "native"
|
||||
white = "native"
|
||||
|
||||
[keys]
|
||||
escape = "escape"
|
||||
quit = "q"
|
||||
|
||||
[keys.view]
|
||||
view_library = "1"
|
||||
view_database = "2"
|
||||
view_podcasts = "3"
|
||||
open_config = "shift+C"
|
||||
open_help = "control+h"
|
||||
|
||||
[keys.navigation]
|
||||
up = "k"
|
||||
down = "j"
|
||||
left = "h"
|
||||
right = "l"
|
||||
goto_top = "g"
|
||||
goto_bottom = "shift+G"
|
||||
|
||||
[keys.global_player]
|
||||
toggle_pause = "space"
|
||||
next_track = "n"
|
||||
previous_track = "shift+N"
|
||||
volume_up = "+"
|
||||
volume_down = "-"
|
||||
seek_forward = "f"
|
||||
seek_backward = "b"
|
||||
speed_up = "control+f"
|
||||
speed_down = "control+b"
|
||||
toggle_prefetch = "control+g"
|
||||
save_playlist = "control+s"
|
||||
|
||||
[keys.global_lyric]
|
||||
adjust_offset_forwards = "shift+F"
|
||||
adjust_offset_backwards = "shift+B"
|
||||
cycle_frames = "shift+T"
|
||||
|
||||
[keys.library]
|
||||
load_track = "l"
|
||||
load_dir = "shift+L"
|
||||
delete = "d"
|
||||
yank = "y"
|
||||
paste = "p"
|
||||
cycle_root = "o"
|
||||
add_root = "a"
|
||||
remove_root = "shift+A"
|
||||
search = "/"
|
||||
youtube_search = "s"
|
||||
open_tag_editor = "t"
|
||||
|
||||
[keys.playlist]
|
||||
delete = "d"
|
||||
delete_all = "shift+D"
|
||||
shuffle = "r"
|
||||
cycle_loop_mode = "m"
|
||||
play_selected = "l"
|
||||
search = "/"
|
||||
swap_up = "shift+K"
|
||||
swap_down = "shift+J"
|
||||
add_random_songs = "s"
|
||||
add_random_album = "shift+S"
|
||||
|
||||
[keys.database]
|
||||
add_selected = "l"
|
||||
add_all = "shift+L"
|
||||
|
||||
[keys.podcast]
|
||||
search = "s"
|
||||
mark_played = "m"
|
||||
mark_all_played = "shift+M"
|
||||
refresh_feed = "r"
|
||||
refresh_all_feeds = "shift+R"
|
||||
download_episode = "d"
|
||||
delete_local_episode = "shift+D"
|
||||
delete_feed = "x"
|
||||
delete_all_feeds = "shift+X"
|
||||
|
||||
[keys.adjust_cover_art]
|
||||
move_left = "control+shift+arrowleft"
|
||||
move_right = "control+shift+arrowright"
|
||||
move_up = "control+shift+arrowup"
|
||||
move_down = "control+shift+arrowdown"
|
||||
increase_size = "control+shift+pageup"
|
||||
decrease_size = "control+shift+pagedown"
|
||||
toggle_hide = "control+shift+end"
|
||||
|
||||
[keys.config]
|
||||
save = "control+s"
|
||||
|
||||
[ytdlp]
|
||||
extra_args = ""
|
||||
234
config/waybar/config.jsonc
Normal file
234
config/waybar/config.jsonc
Normal file
|
|
@ -0,0 +1,234 @@
|
|||
// -*- mode: jsonc -*-
|
||||
{
|
||||
// "layer": "top", // Waybar at top layer
|
||||
"position": "top", // Waybar position (top|bottom|left|right)
|
||||
"height": 34, // Waybar height (to be removed for auto height)
|
||||
// "width": 1280, // Waybar width
|
||||
"spacing": 4, // Gaps between modules (4px)
|
||||
"reload_style_on_change": true,
|
||||
|
||||
// Choose the order of the modules
|
||||
// "modules-left": [
|
||||
|
||||
// "sway/mode",
|
||||
// "sway/scratchpad",
|
||||
// "hyprland/window",
|
||||
// "custom/media"
|
||||
// ],
|
||||
// "modules-center": [
|
||||
// "hyprland/workspaces"
|
||||
//],
|
||||
"modules-right": [
|
||||
//"idle_inhibitor",
|
||||
"tray",
|
||||
// "mpd",
|
||||
"pulseaudio",
|
||||
// "network",
|
||||
//"power-profiles-daemon",
|
||||
//"cpu",
|
||||
//"memory",
|
||||
// "temperature",
|
||||
// "backlight",
|
||||
//"keyboard-state",
|
||||
//"sway/language",
|
||||
//"battery",
|
||||
//"battery#bat2",
|
||||
"clock",
|
||||
"custom/calendar",
|
||||
"custom/fuzzel"
|
||||
// "custom/power"
|
||||
],
|
||||
// Modules configuration
|
||||
// "sway/workspaces": {
|
||||
// "disable-scroll": true,
|
||||
// "all-outputs": true,
|
||||
// "warp-on-scroll": false,
|
||||
// "format": "{name}: {icon}",
|
||||
// "format-icons": {
|
||||
// "1": "",
|
||||
// "2": "",
|
||||
// "3": "",
|
||||
// "4": "",
|
||||
// "5": "",
|
||||
// "urgent": "",
|
||||
// "focused": "",
|
||||
// "default": ""
|
||||
// }
|
||||
// },
|
||||
"hyprland/workspaces": {
|
||||
"format": "{icon}",
|
||||
"on-scroll-up": "hyprctl dispatch workspace e+1",
|
||||
"on-scroll-down": "hyprctl dispatch workspace e-1"
|
||||
},
|
||||
"keyboard-state": {
|
||||
"numlock": true,
|
||||
"capslock": true,
|
||||
"format": "{name} {icon}",
|
||||
"format-icons": {
|
||||
"locked": "",
|
||||
"unlocked": ""
|
||||
}
|
||||
},
|
||||
"sway/mode": {
|
||||
"format": "<span style=\"italic\">{}</span>"
|
||||
},
|
||||
"sway/scratchpad": {
|
||||
"format": "{icon} {count}",
|
||||
"show-empty": false,
|
||||
"format-icons": ["", ""],
|
||||
"tooltip": true,
|
||||
"tooltip-format": "{app}: {title}"
|
||||
},
|
||||
"mpd": {
|
||||
"format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ",
|
||||
"format-disconnected": "Disconnected ",
|
||||
"format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
|
||||
"unknown-tag": "N/A",
|
||||
"interval": 5,
|
||||
"consume-icons": {
|
||||
"on": " "
|
||||
},
|
||||
"random-icons": {
|
||||
"off": "<span color=\"#f53c3c\"></span> ",
|
||||
"on": " "
|
||||
},
|
||||
"repeat-icons": {
|
||||
"on": " "
|
||||
},
|
||||
"single-icons": {
|
||||
"on": "1 "
|
||||
},
|
||||
"state-icons": {
|
||||
"paused": "",
|
||||
"playing": ""
|
||||
},
|
||||
"tooltip-format": "MPD (connected)",
|
||||
"tooltip-format-disconnected": "MPD (disconnected)"
|
||||
},
|
||||
"idle_inhibitor": {
|
||||
"format": "{icon}",
|
||||
"format-icons": {
|
||||
"activated": "",
|
||||
"deactivated": ""
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
// "icon-size": 21,
|
||||
"spacing": 10,
|
||||
// "icons": {
|
||||
// "blueman": "bluetooth",
|
||||
// "TelegramDesktop": "$HOME/.local/share/icons/hicolor/16x16/apps/telegram.png"
|
||||
// }
|
||||
},
|
||||
"clock": {
|
||||
// "timezone": "America/New_York",
|
||||
// "tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
|
||||
// "format-alt": "{:%Y-%m-%d}",
|
||||
"format":"{:%H:%M | %d.%m.%y, %A}",
|
||||
"tooltip": "false",
|
||||
"on-click": "kitty --class calcurse -e calcurse"
|
||||
// "on-click": "tclock -c '#C1D6D6'
|
||||
},
|
||||
"custom/calendar": {
|
||||
"format": "{:%d.%m.%y}",
|
||||
"tooltip": "false"
|
||||
|
||||
},
|
||||
"cpu": {
|
||||
"format": "{usage}% ",
|
||||
"tooltip": false
|
||||
},
|
||||
"memory": {
|
||||
"format": "{}% "
|
||||
},
|
||||
"temperature": {
|
||||
// "thermal-zone": 2,
|
||||
// "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
|
||||
"critical-threshold": 80,
|
||||
// "format-critical": "{temperatureC}°C {icon}",
|
||||
"format": "{temperatureC}°C {icon}",
|
||||
"format-icons": ["", "", ""]
|
||||
},
|
||||
"backlight": {
|
||||
// "device": "acpi_video1",
|
||||
"format": "{percent}% {icon}",
|
||||
"format-icons": ["", "", "", "", "", "", "", "", ""]
|
||||
},
|
||||
"battery": {
|
||||
"states": {
|
||||
// "good": 95,
|
||||
"warning": 30,
|
||||
"critical": 15
|
||||
},
|
||||
"format": "{capacity}% {icon}",
|
||||
"format-full": "{capacity}% {icon}",
|
||||
"format-charging": "{capacity}% ",
|
||||
"format-plugged": "{capacity}% ",
|
||||
"format-alt": "{time} {icon}",
|
||||
// "format-good": "", // An empty format will hide the module
|
||||
// "format-full": "",
|
||||
"format-icons": ["", "", "", "", ""]
|
||||
},
|
||||
"battery#bat2": {
|
||||
"bat": "BAT2"
|
||||
},
|
||||
"power-profiles-daemon": {
|
||||
"format": "{icon}",
|
||||
"tooltip-format": "Power profile: {profile}\nDriver: {driver}",
|
||||
"tooltip": true,
|
||||
"format-icons": {
|
||||
"default": "",
|
||||
"performance": "",
|
||||
"balanced": "",
|
||||
"power-saver": ""
|
||||
}
|
||||
},
|
||||
"network": {
|
||||
// "interface": "wlp2*", // (Optional) To force the use of this interface
|
||||
"format-wifi": "{essid} ({signalStrength}%) ",
|
||||
"format-ethernet": "{ipaddr}/{cidr} ",
|
||||
"tooltip-format": "{ifname} via {gwaddr} ",
|
||||
"format-linked": "{ifname} (No IP) ",
|
||||
"format-disconnected": "Disconnected ⚠",
|
||||
"format-alt": "{ifname}: {ipaddr}/{cidr}"
|
||||
},
|
||||
"pulseaudio": {
|
||||
// "scroll-step": 1, // %, can be a float
|
||||
"format": "{volume}% {icon} {format_source}",
|
||||
"format-bluetooth": "{volume}% {icon} {format_source}",
|
||||
"format-bluetooth-muted": " {icon} {format_source}",
|
||||
"format-muted": " {format_source}",
|
||||
"format-source": "{volume}% ",
|
||||
"format-source-muted": "",
|
||||
"format-icons": {
|
||||
"headphone": "",
|
||||
"hands-free": "",
|
||||
"headset": "",
|
||||
"phone": "",
|
||||
"portable": "",
|
||||
"car": "",
|
||||
"default": ["", "", ""]
|
||||
},
|
||||
"on-click": "pavucontrol"
|
||||
},
|
||||
"custom/media": {
|
||||
"format": "{icon} {text}",
|
||||
"return-type": "json",
|
||||
"max-length": 40,
|
||||
"format-icons": {
|
||||
"spotify": "",
|
||||
"default": "🎜"
|
||||
},
|
||||
"escape": true,
|
||||
"exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder
|
||||
// "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
|
||||
},
|
||||
"custom/power": {
|
||||
"format" : "⏻ ",
|
||||
"on-click": "wleave"
|
||||
},
|
||||
"custom/fuzzel": {
|
||||
"format": " ",
|
||||
"on-click": "fuzzel"
|
||||
}
|
||||
}
|
||||
76
config/waybar/config01.jsonc
Normal file
76
config/waybar/config01.jsonc
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
// -*- mode: jsonc -*-
|
||||
{
|
||||
// "layer": "top", // Waybar at top layer
|
||||
// "position": "bottom", // Waybar position (top|bottom|left|right)
|
||||
"height": 25, // Waybar height (to be removed for auto height)
|
||||
// "width": 1280, // Waybar width
|
||||
"spacing": 8, // Gaps between modules (4px)
|
||||
// Choose the order of the modules
|
||||
"modules-left": [
|
||||
|
||||
"hyprland/window",
|
||||
"custom/media"
|
||||
],
|
||||
"modules-center": [
|
||||
"hyprland/workspaces"
|
||||
],
|
||||
"modules-right": [
|
||||
// "mpd",
|
||||
//"idle_inhibitor",
|
||||
"pulseaudio",
|
||||
"clock",
|
||||
"custom/cal",
|
||||
"tray",
|
||||
"custom/power"
|
||||
],
|
||||
"hyprland/workspaces": {
|
||||
"format": "{icon}",
|
||||
"on-scroll-up": "hyprctl dispatch workspace e+1",
|
||||
"on-scroll-down": "hyprctl dispatch workspace e-1"
|
||||
},
|
||||
|
||||
"tray": {
|
||||
// "icon-size": 21,
|
||||
"spacing": 10
|
||||
// "icons": {
|
||||
// "blueman": "bluetooth",
|
||||
// "TelegramDesktop": "$HOME/.local/share/icons/hicolor/16x16/apps/telegram.png"
|
||||
// }
|
||||
},
|
||||
"clock": {
|
||||
// "timezone": "America/New_York",
|
||||
// "tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
|
||||
// "format-alt": "{:%Y-%m-%d}",
|
||||
"format":"{:%H:%M}",
|
||||
"tooltip": "false"
|
||||
// "on-click": "tclock -c '#C1D6D6'
|
||||
},
|
||||
"custom/cal": {
|
||||
"format": "{:"%d.%m.%y"}",
|
||||
"tooltip": "false"
|
||||
|
||||
},
|
||||
"pulseaudio": {
|
||||
// "scroll-step": 1, // %, can be a float
|
||||
"format": "{volume}% {icon} {format_source}",
|
||||
"format-bluetooth": "{volume}% {icon} {format_source}",
|
||||
"format-bluetooth-muted": " {icon} {format_source}",
|
||||
"format-muted": " {format_source}",
|
||||
"format-source": "{volume}% ",
|
||||
"format-source-muted": "",
|
||||
"format-icons": {
|
||||
"headphone": "",
|
||||
"hands-free": "",
|
||||
"headset": "",
|
||||
"phone": "",
|
||||
"portable": "",
|
||||
"car": "",
|
||||
"default": ["", "", ""]
|
||||
},
|
||||
"on-click": "pavucontrol"
|
||||
},
|
||||
"custom/power": {
|
||||
"format" : "⏻ ",
|
||||
"on-click": "wleave"
|
||||
}
|
||||
}
|
||||
93
config/waybar/style.css
Normal file
93
config/waybar/style.css
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
* {
|
||||
font-family: IosevkaTerm NFP ExtraBold,FiraCode Nerd Font , CodeNewRoman Nerd Font , FontAwesome, Roboto, Arial, sans-serif;
|
||||
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background-color: rgba(26, 27, 38, 0);
|
||||
/*transition-property: background-color ;*/
|
||||
transition-duration: 10s;
|
||||
|
||||
}
|
||||
box.modules-right {
|
||||
padding: 0px 4px 0px 0px;
|
||||
margin: 4px 4px 2px 0px;
|
||||
color: #C1D6D6;
|
||||
border: 2px solid #C1D6D6;
|
||||
border-radius: 5px;
|
||||
|
||||
background-color: #07090B;
|
||||
|
||||
}
|
||||
#clock#calendar,
|
||||
|
||||
hyprland#window {
|
||||
|
||||
}
|
||||
#clock,
|
||||
#custom-logout {
|
||||
padding: 0px 4px 0px 10px
|
||||
}
|
||||
|
||||
|
||||
|
||||
#pulseaudio {
|
||||
min-width: 120px;
|
||||
padding: 0px 0px 0px 0px;
|
||||
}
|
||||
|
||||
/* box.modules-left {
|
||||
margin: 4px 10px 2px 4px;
|
||||
padding: 0px 5px 0px 4px;
|
||||
border-radius: 5px;
|
||||
border: 2px solid #C1D6D6;
|
||||
color: #C1D6D6;
|
||||
background-color: #07090B;
|
||||
}
|
||||
*/
|
||||
#tray {
|
||||
margin: 0px;
|
||||
padding: 0px 10px 0px 10px;
|
||||
/*border: 1px solid #c0caf5;*/
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
label.modules-right {
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
background-color: #07090B;
|
||||
color: #C1D6D6;
|
||||
border-radius: 5px;
|
||||
padding: 0px 10px 0px 10px;
|
||||
min-height: 8px;
|
||||
margin: 4px 2px 2px 2px;
|
||||
border: 2px solid rgba(0,0,0, 0);
|
||||
}
|
||||
|
||||
#workspaces button.focused {
|
||||
border: 2px solid #C1D6D6;
|
||||
background-color : #07090B;
|
||||
|
||||
}
|
||||
#workspaces button:hover {
|
||||
border: 2px solid #C1D6D6;
|
||||
background-color : #07090B;
|
||||
|
||||
}
|
||||
#workspaces button.active
|
||||
{
|
||||
border: 2px solid #C1D6D6;
|
||||
color: #C1D6D6;
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
background-color: #07090B;
|
||||
border: 2px solid #A1F7C6;
|
||||
}
|
||||
|
||||
327
config/waybar/style01.css
Normal file
327
config/waybar/style01.css
Normal file
|
|
@ -0,0 +1,327 @@
|
|||
* {
|
||||
/* `otf-font-awesome` is required to be installed for icons */
|
||||
font-family: FontAwesome, Roboto, Helvetica, Arial, sans-serif;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background-color: rgba(43, 48, 59, 0);
|
||||
border-bottom: 3px solid rgba(100, 114, 125, 0.5);
|
||||
color: #ffffff;
|
||||
transition-property: background-color;
|
||||
transition-duration: .5s;
|
||||
}
|
||||
|
||||
window#waybar.hidden {
|
||||
opacity: 0.2;
|
||||
}
|
||||
|
||||
/*
|
||||
window#waybar.empty {
|
||||
background-color: transparent;
|
||||
}
|
||||
window#waybar.solo {
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
*/
|
||||
|
||||
window#waybar.termite {
|
||||
background-color: #3F3F3F;
|
||||
}
|
||||
|
||||
window#waybar.chromium {
|
||||
background-color: #000000;
|
||||
border: none;
|
||||
}
|
||||
|
||||
button {
|
||||
/* Use box-shadow instead of border so the text isn't offset */
|
||||
box-shadow: inset 0 -3px transparent;
|
||||
/* Avoid rounded borders under each button name */
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
|
||||
button:hover {
|
||||
background: inherit;
|
||||
box-shadow: inset 0 -3px #ffffff;
|
||||
}
|
||||
|
||||
/* you can set a style on hover for any module like this */
|
||||
#pulseaudio:hover {
|
||||
background-color: #a37800;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
padding: 0 5px;
|
||||
background-color: transparent;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
#workspaces button.focused {
|
||||
background-color: #64727D;
|
||||
box-shadow: inset 0 -3px #ffffff;
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
background-color: #eb4d4b;
|
||||
}
|
||||
|
||||
#mode {
|
||||
background-color: #64727D;
|
||||
box-shadow: inset 0 -3px #ffffff;
|
||||
}
|
||||
|
||||
#clock,
|
||||
#battery,
|
||||
#cpu,
|
||||
#memory,
|
||||
#disk,
|
||||
#temperature,
|
||||
#backlight,
|
||||
#network,
|
||||
#pulseaudio,
|
||||
#wireplumber,
|
||||
#custom-media,
|
||||
#tray,
|
||||
#mode,
|
||||
#idle_inhibitor,
|
||||
#scratchpad,
|
||||
#power-profiles-daemon,
|
||||
#mpd {
|
||||
padding: 0 10px;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
#window,
|
||||
#workspaces {
|
||||
margin: 0 4px;
|
||||
}
|
||||
|
||||
/* If workspaces is the leftmost module, omit left margin */
|
||||
.modules-left > widget:first-child > #workspaces {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
/* If workspaces is the rightmost module, omit right margin */
|
||||
.modules-right > widget:last-child > #workspaces {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
#clock {
|
||||
background-color: #64727D;
|
||||
}
|
||||
|
||||
#battery {
|
||||
background-color: #ffffff;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
#battery.charging, #battery.plugged {
|
||||
color: #ffffff;
|
||||
background-color: #26A65B;
|
||||
}
|
||||
|
||||
@keyframes blink {
|
||||
to {
|
||||
background-color: #ffffff;
|
||||
color: #000000;
|
||||
}
|
||||
}
|
||||
|
||||
/* Using steps() instead of linear as a timing function to limit cpu usage */
|
||||
#battery.critical:not(.charging) {
|
||||
background-color: #f53c3c;
|
||||
color: #ffffff;
|
||||
animation-name: blink;
|
||||
animation-duration: 0.5s;
|
||||
animation-timing-function: steps(12);
|
||||
animation-iteration-count: infinite;
|
||||
animation-direction: alternate;
|
||||
}
|
||||
|
||||
#power-profiles-daemon {
|
||||
padding-right: 15px;
|
||||
}
|
||||
|
||||
#power-profiles-daemon.performance {
|
||||
background-color: #f53c3c;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
#power-profiles-daemon.balanced {
|
||||
background-color: #2980b9;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
#power-profiles-daemon.power-saver {
|
||||
background-color: #2ecc71;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
label:focus {
|
||||
background-color: #000000;
|
||||
}
|
||||
|
||||
#cpu {
|
||||
background-color: #2ecc71;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
#memory {
|
||||
background-color: #9b59b6;
|
||||
}
|
||||
|
||||
#disk {
|
||||
background-color: #964B00;
|
||||
}
|
||||
|
||||
#backlight {
|
||||
background-color: #90b1b1;
|
||||
}
|
||||
|
||||
#network {
|
||||
background-color: #2980b9;
|
||||
}
|
||||
|
||||
#network.disconnected {
|
||||
background-color: #f53c3c;
|
||||
}
|
||||
|
||||
#pulseaudio {
|
||||
background-color: #f1c40f;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
#pulseaudio.muted {
|
||||
background-color: #90b1b1;
|
||||
color: #2a5c45;
|
||||
}
|
||||
|
||||
#wireplumber {
|
||||
background-color: #fff0f5;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
#wireplumber.muted {
|
||||
background-color: #f53c3c;
|
||||
}
|
||||
|
||||
#custom-media {
|
||||
background-color: #66cc99;
|
||||
color: #2a5c45;
|
||||
min-width: 100px;
|
||||
}
|
||||
|
||||
#custom-media.custom-spotify {
|
||||
background-color: #66cc99;
|
||||
}
|
||||
|
||||
#custom-media.custom-vlc {
|
||||
background-color: #ffa000;
|
||||
}
|
||||
|
||||
#temperature {
|
||||
background-color: #f0932b;
|
||||
}
|
||||
|
||||
#temperature.critical {
|
||||
background-color: #eb4d4b;
|
||||
}
|
||||
|
||||
#tray {
|
||||
background-color: #2980b9;
|
||||
}
|
||||
|
||||
#tray > .passive {
|
||||
-gtk-icon-effect: dim;
|
||||
}
|
||||
|
||||
#tray > .needs-attention {
|
||||
-gtk-icon-effect: highlight;
|
||||
background-color: #eb4d4b;
|
||||
}
|
||||
|
||||
#idle_inhibitor {
|
||||
background-color: #2d3436;
|
||||
}
|
||||
|
||||
#idle_inhibitor.activated {
|
||||
background-color: #ecf0f1;
|
||||
color: #2d3436;
|
||||
}
|
||||
|
||||
#mpd {
|
||||
background-color: #66cc99;
|
||||
color: #2a5c45;
|
||||
}
|
||||
|
||||
#mpd.disconnected {
|
||||
background-color: #f53c3c;
|
||||
}
|
||||
|
||||
#mpd.stopped {
|
||||
background-color: #90b1b1;
|
||||
}
|
||||
|
||||
#mpd.paused {
|
||||
background-color: #51a37a;
|
||||
}
|
||||
|
||||
#language {
|
||||
background: #00b093;
|
||||
color: #740864;
|
||||
padding: 0 5px;
|
||||
margin: 0 5px;
|
||||
min-width: 16px;
|
||||
}
|
||||
|
||||
#keyboard-state {
|
||||
background: #97e1ad;
|
||||
color: #000000;
|
||||
padding: 0 0px;
|
||||
margin: 0 5px;
|
||||
min-width: 16px;
|
||||
}
|
||||
|
||||
#keyboard-state > label {
|
||||
padding: 0 5px;
|
||||
}
|
||||
|
||||
#keyboard-state > label.locked {
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
#scratchpad {
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
#scratchpad.empty {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
#privacy {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#privacy-item {
|
||||
padding: 0 5px;
|
||||
color: white;
|
||||
}
|
||||
|
||||
#privacy-item.screenshare {
|
||||
background-color: #cf5700;
|
||||
}
|
||||
|
||||
#privacy-item.audio-in {
|
||||
background-color: #1ca000;
|
||||
}
|
||||
|
||||
#privacy-item.audio-out {
|
||||
background-color: #0069d4;
|
||||
}
|
||||
7
config/yazi/yazi.toml
Normal file
7
config/yazi/yazi.toml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
[mgr]
|
||||
linemode = "size"
|
||||
mouse_events = ["click", "scroll", "touch", "move", "drag"]
|
||||
[opener]
|
||||
edit = [
|
||||
{ run = "neovide %s", block = true, for = "unix" },
|
||||
]
|
||||
Loading…
Add table
Add a link
Reference in a new issue