Compare commits

...

10 commits

Author SHA1 Message Date
9923f42b6a modified: apps-list.md
new file:   config/mpDris2/mpDris2.conf
	new file:   config/mpd/mpd.conf
	new file:   config/rmpc/config.ron
	new file:   config/rmpc/themes/zzz.ron
2026-03-26 23:38:37 +05:00
46faf5b8de modified: apps-list.md
modified:   config/hyprwave/config.conf
	modified:   config/hyprwave/style.css
	modified:   config/niri/config.kdl
	new file:   config/swaync/config.json
	new file:   config/swaync/style.css
	new file:   config/swayosd/style.css
	new file:   local/share/hyprwave/style.css
	new file:   local/share/hyprwave/themes/zzz.css
2026-03-16 20:26:36 +05:00
4779ba49c0 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
2026-03-12 22:12:13 +05:00
f8fae463a8 modified: .config/niri/config.kdl 2026-03-12 21:17:10 +05:00
2d266ca85b new file: .config/yazi/yazi.toml 2026-02-19 23:48:07 +05:00
b968a1466f modified: .config/clipse/config.json
modified:   .config/clipse/custom_theme.json
2026-02-19 23:31:34 +05:00
d1a119cbae new file: .config/fish/conf.d/fish_frozen_key_bindings.fish
new file:   .config/fish/conf.d/fish_frozen_theme.fish
	modified:   .config/fish/fish_variables
	new file:   .config/fish/functions/ff.fish
	modified:   .config/fish/functions/ls.fish
	new file:   .config/fish/functions/n.fish
	new file:   .config/fish/functions/p.fish
	new file:   .config/fish/functions/vpn.fish
	new file:   .config/fish/functions/webka.fish
2026-02-19 23:27:55 +05:00
11166e082c modified: .config/btop/btop.conf
modified:   .config/hypr/hyprland.conf
	new file:   .config/hypr/hyprlock.conf
	modified:   .config/niri/config.kdl
	modified:   apps-list.md
	deleted:    pavucontrol.ini
	modified:   user-dirs.dirs
	deleted:    user-dirs.locale
2026-02-19 23:23:01 +05:00
fe0aa07f3c deleted: .config/QtProject.conf
deleted:    .config/apps-list.md
	modified:   .config/btop/btop.conf
	deleted:    .config/config.kdl
	new file:   .config/fish/completions/fisher.fish
	new file:   .config/fish/completions/fzf_configure_bindings.fish
	new file:   .config/fish/conf.d/fzf.fish
	new file:   .config/fish/fish_plugins
	modified:   .config/fish/fish_variables
	new file:   .config/fish/functions/_fzf_configure_bindings_help.fish
	new file:   .config/fish/functions/_fzf_extract_var_info.fish
	new file:   .config/fish/functions/_fzf_preview_changed_file.fish
	new file:   .config/fish/functions/_fzf_preview_file.fish
	new file:   .config/fish/functions/_fzf_report_diff_type.fish
	new file:   .config/fish/functions/_fzf_report_file_type.fish
	new file:   .config/fish/functions/_fzf_search_directory.fish
	new file:   .config/fish/functions/_fzf_search_git_log.fish
	new file:   .config/fish/functions/_fzf_search_git_status.fish
	new file:   .config/fish/functions/_fzf_search_history.fish
	new file:   .config/fish/functions/_fzf_search_processes.fish
	new file:   .config/fish/functions/_fzf_search_variables.fish
	new file:   .config/fish/functions/_fzf_wrapper.fish
	new file:   .config/fish/functions/fisher.fish
	new file:   .config/fish/functions/fzf_configure_bindings.fish
	new file:   .config/fish/functions/y.fish
	new file:   .config/fish/functions/yz.fish
	new file:   ".config/fish/functions/\320\275\321\217.fish"
	modified:   .config/kitty/kitty.conf
	modified:   .config/niri/config.kdl
	modified:   .config/nvim/lazy-lock.json
	new file:   .config/nvim/lua/plugins/luasnip.lua
	new file:   .config/nvim/lua/plugins/markview.lua
	new file:   .config/nvim/lua/plugins/marp-nvim.lua
	new file:   .config/nvim/lua/plugins/nvim-snippy.lua
	new file:   .config/nvim/lua/plugins/render-markdown.lua
	deleted:    .config/nwg-look/config
	deleted:    .config/zathura/zathurarc
	modified:   apps-list.md
	new file:   background
	renamed:    .config/mimeapps.list -> mimeapps.list
	renamed:    .config/pavucontrol.ini -> pavucontrol.ini
	deleted:    sing-box-03.json
	renamed:    .config/user-dirs.dirs -> user-dirs.dirs
	renamed:    .config/user-dirs.locale -> user-dirs.locale
2025-11-14 05:38:02 +05:00
68cd6cd58e new file: sing-box-03.json 2025-10-29 18:20:53 +05:00
107 changed files with 6389 additions and 4691 deletions

View file

@ -1,8 +0,0 @@
[FileDialog]
history=file:///home/unconfer/dwnlds, file:///home/unconfer/adrenaline/chem, file:///home/unconfer/vids
lastVisited=file:///home/unconfer/vids
qtVersion=6.9.2
shortcuts=file:, file:///home/unconfer, file:///home/unconfer/Desktop, file:///home/unconfer/Downloads, file:///home/unconfer/Music, file:///home/unconfer/Documents/lmms
sidebarWidth=111
treeViewHeader=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1\xb5\0\0\0\x4\x1\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\x4\0\0\0\xe1\0\0\0\x1\0\0\0\0\0\0\0\x39\0\0\0\x1\0\0\0\0\0\0\0\x39\0\0\0\x1\0\0\0\0\0\0\0\x62\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1)
viewMode=Detail

File diff suppressed because it is too large Load diff

View file

@ -1,35 +0,0 @@
{
"allowDuplicates": false,
"historyFile": "clipboard_history.json",
"maxHistory": 10000,
"logFile": "clipse.log",
"themeFile": "custom_theme.json",
"tempDir": "tmp_files",
"keyBindings": {
"choose": "enter",
"clearSelected": "S",
"down": "down",
"end": "end",
"filter": "/",
"home": "home",
"more": "?",
"nextPage": "right",
"prevPage": "left",
"preview": " ",
"quit": "q",
"remove": "x",
"selectDown": "ctrl+down",
"selectSingle": "s",
"selectUp": "ctrl+up",
"togglePin": "p",
"togglePinned": "tab",
"up": "up",
"yankFilter": "ctrl+s"
},
"imageDisplay": {
"type": "kitty",
"scaleX": 9,
"scaleY": 9,
"heightCut": 2
}
}

View file

@ -1,32 +0,0 @@
# This file contains fish universal variable definitions.
# VERSION: 3.0
SETUVAR __fish_initialized:3800
SETUVAR fish_color_autosuggestion:brblack
SETUVAR fish_color_cancel:\x2dr
SETUVAR fish_color_command:normal
SETUVAR fish_color_comment:red
SETUVAR fish_color_cwd:green
SETUVAR fish_color_cwd_root:red
SETUVAR fish_color_end:green
SETUVAR fish_color_error:brred
SETUVAR fish_color_escape:brcyan
SETUVAR fish_color_history_current:\x2d\x2dbold
SETUVAR fish_color_host:normal
SETUVAR fish_color_host_remote:yellow
SETUVAR fish_color_normal:normal
SETUVAR fish_color_operator:brcyan
SETUVAR fish_color_param:cyan
SETUVAR fish_color_quote:yellow
SETUVAR fish_color_redirection:cyan\x1e\x2d\x2dbold
SETUVAR fish_color_search_match:white\x1e\x2d\x2dbackground\x3dbrblack
SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack
SETUVAR fish_color_status:red
SETUVAR fish_color_user:brgreen
SETUVAR fish_color_valid_path:\x2d\x2dunderline
SETUVAR fish_greeting:\x1d
SETUVAR fish_key_bindings:fish_default_key_bindings
SETUVAR fish_pager_color_completion:normal
SETUVAR fish_pager_color_description:yellow\x1e\x2di
SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan
SETUVAR fish_pager_color_selected_background:\x2dr

View file

@ -1,75 +0,0 @@
# -*- conf -*-
# For documentation on these options, see `man fnott.ini`
# Global values
# output=<undefined>#
# min-width=0
# max-width=0
# max-height=0
# stacking-order=bottom-up
anchor=top-right
edge-margin-vertical=8
edge-margin-horizontal=8
selection-helper=fuzzel
selection-helper-uses-null-separator=no
default-timeout=10
# notification-margin=10
icon-theme=
max-icon-size=32
# selection-helper=dmenu
# selection-helper-uses-null-separator=no
# play-sound=aplay ${filename}
# Default values, may be overridden in 'urgency' specific sections
# layer=top
background=07090Bff
border-color=C1D6D6ff
border-radius=5
border-size=4
# padding-vertical=20
# padding-horizontal=20
dpi-aware=no
title-font=IosevkaTerm NFP:size=17:weight=bold
# title-color=ffffffff
title-format=<b>%a%A</b>
summary-font=IosevkaTerm NFP:size=13:weight=bold:slant=italic
title-color=c1d6d6ff
summary-color=c1d6d6ff
summary-format=%s</b>\n
body-font=IosevkaTerm NFP:size=12:weight=bold
body-color=C1D6D6ff
body-format=%b
# progress-bar-height=20
progress-color=c1d6d6ff
# progress-style=bar
# sound-file=
#icon=
# Timeout values are in seconds. 0 to disable
# max-timeout=0
# default-timeout=0
# idle-timeout=0
# [low]
# background=2b2b2bff
# title-color=888888ff
# summary-color=888888ff
# body-color=888888ff
# [normal]
# [critical]
# background=6c3333ff

View file

@ -1,32 +0,0 @@
[Default Applications]
x-scheme-handler/http=zen.desktop
x-scheme-handler/https=zen.desktop
x-scheme-handler/chrome=zen.desktop
text/html=zen.desktop
application/x-extension-htm=zen.desktop
application/x-extension-html=zen.desktop
application/x-extension-shtml=zen.desktop
application/xhtml+xml=zen.desktop
application/x-extension-xhtml=zen.desktop
application/x-extension-xht=zen.desktop
application/pdf=org.pwmt.zathura.desktop
image/vnd.djvu=org.pwmt.zathura.desktop
image/gif=imv.desktop
image/png=imv.desktop
x-scheme-handler/discord=vesktop.desktop
x-scheme-handler/tg=org.telegram.desktop.desktop
x-scheme-handler/tonsite=org.telegram.desktop.desktop
[Added Associations]
x-scheme-handler/http=zen.desktop;firefox.desktop;
x-scheme-handler/https=zen.desktop;firefox.desktop;
x-scheme-handler/chrome=zen.desktop;firefox.desktop;
text/html=firefox.desktop;
application/x-extension-htm=firefox.desktop;
application/x-extension-html=firefox.desktop;
application/x-extension-shtml=firefox.desktop;
application/xhtml+xml=firefox.desktop;
application/x-extension-xhtml=firefox.desktop;
application/x-extension-xht=firefox.desktop;
x-scheme-handler/tg=org.telegram.desktop.desktop;
x-scheme-handler/tonsite=org.telegram.desktop.desktop;

View file

@ -1,708 +0,0 @@
// This config is in the KDL format: https://kdl.dev
// "/-" comments out the following node.
// Check the wiki for a full description of the configuration:
// https://yalter.github.io/niri/Configuration:-Introduction
// Input device configuration.
// Find the full list of options on the wiki:
// https://yalter.github.io/niri/Configuration:-Input
input {
keyboard {
xkb {
// You can set rules, model, layout, variant and options.
// For more information, see xkeyboard-config(7).
// For example:
layout "us,ru"
options "grp:caps_toggle"
// If this section is empty, niri will fetch xkb settings
// from org.freedesktop.locale1. You can control these using
// localectl set-x11-keymap.
}
repeat-delay 250
repeat-rate 25
// track-layout "global"
// Enable numlock on startup, omitting this setting disables it.
numlock
}
// Next sections include libinput settings.
// Omitting settings disables them, or leaves them at their default values.
// All commented-out settings here are examples, not defaults.
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="50%"
trackpoint {
// off
// natural-scroll
// accel-speed 0.2
// accel-profile "flat"
// scroll-method "on-button-down"
// scroll-button 273
// scroll-button-lock
// middle-emulation
}
// Uncomment this to make the mouse warp to the center of newly focused windows.
// warp-mouse-to-focus
// Focus windows and outputs automatically when moving the mouse into them.
// Setting max-scroll-amount="0%" makes it work only on windows already fully on screen.
// focus-follows-mouse max-scroll-amount="0%"
}
// You can configure outputs by their name, which you can find
// by running `niri msg outputs` while inside a niri instance.
// The built-in laptop monitor is usually called "eDP-1".
// Find more information on the wiki:
// https://yalter.github.io/niri/Configuration:-Outputs
// Remember to uncomment the node by removing "/-"!
/-output "DP-1" {
// Uncomment this line to disable this output.
// off
// Resolution and, optionally, refresh rate of the output.
// The format is "<width>x<height>" or "<width>x<height>@<refresh rate>".
// If the refresh rate is omitted, niri will pick the highest refresh rate
// for the resolution.
// If the mode is omitted altogether or is invalid, niri will pick one automatically.
// Run `niri msg outputs` while inside a niri instance to list all outputs and their modes.
mode "1920x1080@165.000"
// You can use integer or fractional scale, for example use 1.5 for 150% scale.
scale 1.0
// Transform allows to rotate the output counter-clockwise, valid values are:
// normal, 90, 180, 270, flipped, flipped-90, flipped-180 and flipped-270.
transform "normal"
// Position of the output in the global coordinate space.
// This affects directional monitor actions like "focus-monitor-left", and cursor movement.
// The cursor can only move between directly adjacent outputs.
// Output scale and rotation has to be taken into account for positioning:
// outputs are sized in logical, or scaled, pixels.
// For example, a 3840×2160 output with scale 2.0 will have a logical size of 1920×1080,
// so to put another output directly adjacent to it on the right, set its x to 1920.
// If the position is unset or results in an overlap, the output is instead placed
// automatically.
position x=1280 y=0
variable-refresh-rate on-demand=true
}
// Settings that influence how windows are positioned and sized.
// Find more information on the wiki:
// https://yalter.github.io/niri/Configuration:-Layout
layout {
// Set gaps around windows in logical pixels.
gaps 10
// When to center a column when changing focus, options are:
// - "never", default behavior, focusing an off-screen column will keep at the left
// or right edge of the screen.
// - "always", the focused column will always be centered.
// - "on-overflow", focusing a column will center it if it doesn't fit
// together with the previously focused column.
center-focused-column "never"
default-column-display "normal"
// You can customize the widths that "switch-preset-column-width" (Mod+R) toggles between.
preset-column-widths {
// Proportion sets the width as a fraction of the output width, taking gaps into account.
// For example, you can perfectly fit four windows sized "proportion 0.25" on an output.
// The default preset widths are 1/3, 1/2 and 2/3 of the output.
proportion 0.33333
proportion 0.5
proportion 0.66667
// Fixed sets the width in logical pixels exactly.
// fixed 1920
}
// You can also customize the heights that "switch-preset-window-height" (Mod+Shift+R) toggles between.
// preset-window-heights { }
// You can change the default width of the new windows.
default-column-width { proportion 0.5; }
// If you leave the brackets empty, the windows themselves will decide their initial width.
// default-column-width {}
// 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 {
// Uncomment this line to disable the focus ring.
// off
// How many logical pixels the ring extends out from the windows.
width 4
// Colors can be set in a variety of ways:
// - CSS named colors: "red"
// - RGB hex: "#rgb", "#rgba", "#rrggbb", "#rrggbbaa"
// - CSS-like notation: "rgb(255, 127, 0)", rgba(), hsl() and a few others.
// Color of the ring on the active monitor.
active-color "#C1D6D6"
// foreground #C1D6D6
//background #07090B
// Color of the ring on inactive monitors.
//
// The focus ring only draws around the active window, so the only place
// where you can see its inactive-color is on other monitors.
inactive-color "#000000"
// You can also use gradients. They take precedence over solid colors.
// Gradients are rendered the same as CSS linear-gradient(angle, from, to).
// The angle is the same as in linear-gradient, and is optional,
// defaulting to 180 (top-to-bottom gradient).
// You can use any CSS linear-gradient tool on the web to set these up.
// 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 {
// The settings are the same as for the focus ring.
// If you enable the border, you probably want to disable the focus ring.
off
width 2
active-color "#ffc87f"
inactive-color "#505050"
// Color of the border around windows that request your attention.
urgent-color "#9b0000"
// Gradients can use a few different interpolation color spaces.
// For example, this is a pastel rainbow gradient via in="oklch longer hue".
//
// active-gradient from="#e5989b" to="#ffb4a2" angle=45 relative-to="workspace-view" in="oklch longer hue"
// inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view"
}
// You can enable drop shadows for windows.
shadow {
// Uncomment the next line to enable shadows.
// on
// By default, the shadow draws only around its window, and not behind it.
// Uncomment this setting to make the shadow draw behind its window.
//
// Note that niri has no way of knowing about the CSD window corner
// radius. It has to assume that windows have square corners, leading to
// shadow artifacts inside the CSD rounded corners. This setting fixes
// those artifacts.
//
// However, instead you may want to set prefer-no-csd and/or
// geometry-corner-radius. Then, niri will know the corner radius and
// draw the shadow correctly, without having to draw it behind the
// window. These will also remove client-side shadows if the window
// draws any.
//
// draw-behind-window true
// You can change how shadows look. The values below are in logical
// pixels and match the CSS box-shadow properties.
// Softness controls the shadow blur radius.
softness 30
// Spread expands the shadow.
spread 5
// Offset moves the shadow relative to the window.
offset x=0 y=5
// You can also change the shadow color and opacity.
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 64
// right 64
// top 64
// bottom 64
}
tab-indicator{
// off
}
insert-hint {
off
color "#ffc87f80"
gradient from="#ffbb6680" to="#ffc88080" angle=45 relative-to="workspace-view"
}
background-color "#07090B"
}
overview {
zoom 0.45
backdrop-color "#07090b"
workspace-shadow {
off
softness 40
spread 10
offset x=0 y=10
color "#00000050"
}
}
clipboard {
disable-primary
}
cursor {
//xcursor-theme "Dot-Dark"
xcursor-size 12
hide-when-typing
hide-after-inactive-ms 1000
}
// Add lines like this to spawn processes at startup.
// Note that running niri as a session supports xdg-desktop-autostart,
// which may be more convenient to use.
// See the binds section below for more spawn examples.
// This line starts waybar, a commonly used bar for Wayland compositors.
spawn-at-startup "waybar"
spawn-at-startup "fnott"
spawn-at-startup "clipse -listen"
// 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"
// 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 3.0
}
// 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 {}
}
window-rule {
match app-id="clipse"
// match is-floating=true
open-maximized true
// open-floating true
tiled-state false
}
window-rule {
open-maximized false
geometry-corner-radius 5
tiled-state true
clip-to-geometry true
}
// 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"
}
// Example: enable rounded corners for all windows.
// (This example rule is commented out with a "/-" in front.)
/-window-rule {
geometry-corner-radius 12
clip-to-geometry true
}
layer-rule {
//clip-to-geometry true
match namespace="fnott"
baba-is-float true
geometry-corner-radius 5
}
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{ toggle-window-floating;}
// Mod+Shift+L{spawn "gtklock";}
// Suggested binds for running programs: terminal, app launcher, screen locker.
Mod+Q hotkey-overlay-title="Open a Terminal: alacritty" { spawn "kitty"; }
Mod+D hotkey-overlay-title="Run an Application: fuzzel" { spawn "fuzzel"; }
Super+W { spawn "kitty" "--class" "clipse" "-e" "clipse"; }
Mod+Alt+L hotkey-overlay-title="Lock the Screen: swaylock" { spawn "gtklock"; }
// 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"; }
// 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+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+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; }
// 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+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+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 { focus-workspace 3; }
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+Comma { consume-window-into-column; }
// Expel the bottom window from the focused column to the right.
Mod+Period { expel-window-from-column; }
Mod+R { 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 { switch-preset-window-height; }
Mod+Ctrl+R { reset-window-height; }
Mod+A { maximize-column; }
Mod+Shift+A { 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+Ctrl+C { center-visible-columns; }
// 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%"; }
// Move the focused window between the floating and the tiling layout.
Mod+V { toggle-window-floating; }
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+W { 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+Shift+S { screenshot; }
Ctrl+Print { screenshot-screen; }
Alt+Print { screenshot-window; }
// 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+E { 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; }
}

View file

@ -1,563 +0,0 @@
input {
keyboard {
xkb {
layout "us,ru"
options "grp:caps_toggle"
}
repeat-delay 250
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="50%"
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 5
center-focused-column "never"
default-column-display "normal"
preset-column-widths {
proportion 0.5
proportion 1.0
}
preset-window-heights {
proportion 0.5
proportion 1.0
}
default-column-width { proportion 0.5; }
// 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 "#C1D6D6"
// foreground #C1D6D6
//background #07090B
inactive-color "#000000"
// 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
urgent-color "#9b0000"
}
shadow {
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 64
// right 64
// top 64
// bottom 64
}
tab-indicator{
// off
}
insert-hint {
off
color "#ffc87f80"
gradient from="#ffbb6680" to="#ffc88080" angle=45 relative-to="workspace-view"
}
background-color "#07090B"
}
overview {
zoom 0.45
backdrop-color "#07090b"
workspace-shadow {
off
}
}
clipboard {
disable-primary
}
cursor {
//xcursor-theme "Dot-Dark"
xcursor-size 12
hide-when-typing
hide-after-inactive-ms 1000
}
spawn-at-startup "waybar"
spawn-at-startup "fnott"
spawn-at-startup "clipse" "-listen"
// 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"
// 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
}
// 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 false
}
window-rule {
open-maximized false
geometry-corner-radius 5
tiled-state true
clip-to-geometry true
}
// 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"
}
// Example: enable rounded corners for all windows.
// (This example rule is commented out with a "/-" in front.)
/-window-rule {
geometry-corner-radius 12
clip-to-geometry true
}
layer-rule {
//clip-to-geometry true
match namespace="fnott"
geometry-corner-radius 5
}
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{ toggle-window-floating;}
// Suggested binds for running programs: terminal, app launcher, screen locker.
Mod+Q { spawn "kitty"; }
Mod+D { spawn "fuzzel"; }
Super+W { spawn "kitty" "--class" "clipse" "-e" "clipse"; }
Mod+Alt+L { spawn "gtklock"; }
Mod+Shift+P{spawn "shutdown" "now";}
Mod+Shift+Alt+P{spawn "shutdown" "-" "c";}
Alt+C{spawn "hyprpicker" "-a";}
// 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"; }
// 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+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+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; }
// 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+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 { focus-workspace 3; }
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+Comma { consume-window-into-column; }
// Expel the bottom window from the focused column to the right.
Mod+Period { expel-window-from-column; }
Mod+R 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+A repeat=false { maximize-column; }
Mod+Shift+A 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+Ctrl+C { center-visible-columns; }
// 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%"; }
// Move the focused window between the floating and the tiling layout.
Mod+V { toggle-window-floating; }
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; }
Alt+Print { screenshot-window; }
// 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; }
}

View file

@ -1,35 +0,0 @@
{
"LazyVim": { "branch": "main", "commit": "060e6dfaf7d4157b1a144df7d83179640dc52400" },
"blink.cmp": { "branch": "main", "commit": "327fff91fe6af358e990be7be1ec8b78037d2138" },
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
"catppuccin": { "branch": "main", "commit": "5af9374957a65be8770696da295dc9016b96f241" },
"conform.nvim": { "branch": "master", "commit": "016bc8174a675e1dbf884b06a165cd0c6c03f9af" },
"flash.nvim": { "branch": "main", "commit": "b68bda044d68e4026c4e1ec6df3c5afd7eb8e341" },
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
"gitsigns.nvim": { "branch": "main", "commit": "23ae90a2a52fdc9b8c50dc61d6c30ebb18521343" },
"grug-far.nvim": { "branch": "main", "commit": "48f9afb684de1c191af7bed96bc1db85ba33f6a4" },
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
"lazydev.nvim": { "branch": "main", "commit": "258d2a5ef4a3e3d6d9ba9da72c9725c53e9afcbd" },
"lualine.nvim": { "branch": "master", "commit": "b8c23159c0161f4b89196f74ee3a6d02cdc3a955" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "f760507df8c49a4bf46a4d12e1fc616797508979" },
"mason.nvim": { "branch": "main", "commit": "b3689a41dd77e5294498dba9757fb22cc80cbebd" },
"mini.ai": { "branch": "main", "commit": "e0d00c227112e942ed2789dd4c21d651002831c0" },
"mini.icons": { "branch": "main", "commit": "e8fae66cb400744daeedf6e387347df50271c252" },
"mini.pairs": { "branch": "main", "commit": "bada72fe4ec607f882a098d15aa4a3279bc6883d" },
"noice.nvim": { "branch": "main", "commit": "0427460c2d7f673ad60eb02b35f5e9926cf67c59" },
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
"nvim-lint": { "branch": "master", "commit": "335a6044be16d7701001059cba9baa36fbeef422" },
"nvim-lspconfig": { "branch": "master", "commit": "0867a61e745920dd754c660a504fed4afb44bd0f" },
"nvim-treesitter": { "branch": "main", "commit": "77362027f7aa850c87419fd571151e76b0b342a6" },
"nvim-treesitter-textobjects": { "branch": "main", "commit": "1b2d85d3de6114c4bcea89ffb2cd1ce9e3a19931" },
"nvim-ts-autotag": { "branch": "main", "commit": "c4ca798ab95b316a768d51eaaaee48f64a4a46bc" },
"persistence.nvim": { "branch": "main", "commit": "166a79a55bfa7a4db3e26fc031b4d92af71d0b51" },
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
"snacks.nvim": { "branch": "main", "commit": "5d9dacd09876eed33bde204d224fa7596ac850e8" },
"todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" },
"tokyonight.nvim": { "branch": "main", "commit": "4d159616aee17796c2c94d2f5f87d2ee1a3f67c7" },
"trouble.nvim": { "branch": "main", "commit": "f176232e7759c4f8abd923c21e3e5a5c76cd6837" },
"ts-comments.nvim": { "branch": "main", "commit": "1bd9d0ba1d8b336c3db50692ffd0955fe1bb9f0c" },
"which-key.nvim": { "branch": "main", "commit": "904308e6885bbb7b60714c80ab3daf0c071c1492" },
"xkbswitch.nvim": { "branch": "master", "commit": "aae56d49db9baf0d9b9675a77da35173d8d87a30" }
}

View file

@ -1,7 +0,0 @@
{
"export-settings-ini": true,
"export-gtkrc-20": true,
"export-index-theme": true,
"export-xsettingsd": true,
"export-gtk4-symlinks": true
}

View file

@ -1,9 +0,0 @@
[window]
width=500
height=400
sinkInputType=0
sourceOutputType=0
sinkType=0
sourceType=0
showVolumeMeters=1
hideUnavailableCardProfiles=0

View file

@ -1 +0,0 @@
en_US

View file

@ -1 +0,0 @@
set selection-clipboard clipboard

View file

@ -1 +1,32 @@
my .conf files for arch
# This is my configuration files for:
- niri
- kitty
- btop
- clipse
- fastfetch
- hypr (outdated)
- fuzzel
- hyprwave
- neovim
- termusic
- yazi
- waybar (outdated)
- fish
also here is the list of arch packages that i use
if you want to use the niri config without editing, you should install the dependencies:
```
paru -Syu niri-screen-time swayosd walker swaync clipse swaybg xwayland-satellite hyprwave hyprlock hyprpicker
```
if u wanna install **all** packages that i use do next:
copy that repository
```
cd arch-conf
xargs -a apps-list.md paru -Syu
```
(not recommended)

File diff suppressed because it is too large Load diff

View file

@ -1,18 +1,18 @@
#? Config file for btop v. 1.4.5
#? 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 = False
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
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
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.
@ -22,10 +22,13 @@ presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:defaul
#* 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
vim_keys = false
#* Rounded corners on boxes, is ignored if TTY mode is ON.
rounded_corners = True
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.
@ -60,37 +63,40 @@ update_ms = 2000
proc_sorting = "memory"
#* Reverse sorting order, True or False.
proc_reversed = False
proc_reversed = false
#* Show processes as a tree.
proc_tree = True
proc_tree = true
#* Use the cpu graph colors in the process list.
proc_colors = True
proc_colors = true
#* Use a darkening gradient in the process list.
proc_gradient = True
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 = True
proc_per_core = false
#* Show process memory as bytes instead of percent.
proc_mem_bytes = True
proc_mem_bytes = true
#* Show cpu graph for each process.
proc_cpu_graphs = True
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
proc_info_smaps = false
#* Show proc box on left side of screen instead of right.
proc_left = False
proc_left = false
#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
proc_filter_kernel = False
proc_filter_kernel = false
#* In tree-view, always accumulate child process resources in the parent process.
proc_aggregate = False
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.
@ -101,31 +107,31 @@ cpu_graph_upper = "Auto"
cpu_graph_lower = "Auto"
#* If gpu info should be shown in the cpu box. Available values = "Auto", "On" and "Off".
show_gpu_info = "Auto"
show_gpu_info = "On"
#* Toggles if the lower CPU graph should be inverted.
cpu_invert_lower = True
cpu_invert_lower = true
#* Set to True to completely disable the lower CPU graph.
cpu_single_graph = False
cpu_single_graph = false
#* Show cpu box at bottom of screen instead of top.
cpu_bottom = False
cpu_bottom = false
#* Shows the system uptime in the CPU box.
show_uptime = True
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_watts = true
#* Show cpu temperature.
check_temp = True
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
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.
@ -137,17 +143,20 @@ cpu_core_map = ""
temp_scale = "celsius"
#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024.
base_10_sizes = False
base_10_sizes = true
#* Show CPU frequency.
show_cpu_freq = True
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
background_update = true
#* Custom cpu model name, empty string to disable.
custom_cpu_name = ""
@ -157,43 +166,43 @@ custom_cpu_name = ""
disks_filter = ""
#* Show graphs instead of meters for memory values.
mem_graphs = True
mem_graphs = true
#* Show mem box below net box instead of above.
mem_below_net = False
mem_below_net = false
#* Count ZFS ARC in cached and available memory.
zfs_arc_cached = True
zfs_arc_cached = true
#* If swap memory should be shown in memory box.
show_swap = True
show_swap = true
#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
swap_disk = True
swap_disk = true
#* If mem box should be split to also show disks info.
show_disks = True
show_disks = true
#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
only_physical = True
only_physical = true
#* Read disks list from /etc/fstab. This also disables only_physical.
use_fstab = True
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
zfs_hide_datasets = false
#* Set to true to show available disk space for privileged users.
disk_free_priv = False
disk_free_priv = false
#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view.
show_io_stat = True
show_io_stat = true
#* Toggles io mode for disks, showing big graphs for disk read/write speeds.
io_mode = False
io_mode = false
#* Set to True to show combined read/write io graphs in io mode.
io_graph_combined = False
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".
@ -205,10 +214,10 @@ 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
net_auto = true
#* Sync the auto scaling for download and upload to whichever currently has the highest scale.
net_sync = False
net_sync = true
#* Starts with the Network Interface specified here.
net_iface = ""
@ -217,26 +226,32 @@ net_iface = ""
base_10_bitrate = "Auto"
#* Show battery stats in top right if battery is present.
show_battery = True
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
show_battery_watts = true
#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
#* 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 = "WARNING"
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
nvml_measure_pcie_speeds = true
#* Measure PCIe throughput on AMD cards, may impact performance on certain cards.
rsmi_measure_pcie_speeds = True
rsmi_measure_pcie_speeds = true
#* Horizontally mirror the GPU graph.
gpu_mirror_graph = True
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 = ""

55
config/clipse/config.json Normal file
View 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
}

View file

@ -1,5 +1,5 @@
{
"useCustomTheme": true,
"UseCustom": true,
"TitleFore": "#07090B",
"TitleBack": "#A1F7C6",
"TitleInfo": "#25C39F",

View file

@ -5,11 +5,17 @@
"display": {
"pipe": true,
"key": {
"width": 16
"width": 16,
},
"separator": "│ ",
"percent": {
"type": ["bar", "hide-others"]
"type": 9,
"color": {
"green": "green",
"yellow": "light_yellow",
"red": "light_red"
}
},
"bar": {
"border": null,
@ -45,6 +51,24 @@
"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}"
@ -54,18 +78,8 @@
"key": "│ KERNEL │{$1}"
},
{
"type": "title",
"key": "│ HOSTNAME │{$1}",
"format": "{host-name}"
},
{
"type": "host",
"key": "│ MACHINE │{$1}",
"format": "{name}{?vendor}({vendor}){?}"
},
// {
// "type":"display",
// "key":"│ MONITOR │{$1}"
@ -94,11 +108,6 @@
// },
{
"type": "packages",
"key": "│ PACKAGES │{$1}"
},
{
"type": "custom",
@ -106,23 +115,15 @@
},
{
"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}{/}"
"key": "│ CPU │{$1}",
"temp": true,
"format": "{name}, {freq-max}{/freq-max}{freq-base}{/} - {temperature}"
},
{
"type": "gpu",
"key": "│ GPU │{$1}"
"key": "│ GPU │{$1}",
"temp": true,
"format": "{name} - {temperature} {frequency}"
},
{
@ -142,75 +143,25 @@
// }
// },
{
"type": "custom",
"format": "├────────────┼──────────────────────────────────────────┤"
},
{
"type": "disk",
"key": "│ DISK USAGE │{$1}",
"key": "│ DISK │{$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": "wm",
"key": "│ WM │{$1}",
"keyColor": "blue"
},
{
"type": "LM",
"key": "│ LM │{$1}"
},
{
"type":"Shell",
"key":"│ SHELL │{$1}"
},
{
"type": "terminal",
"key":"│ TERMINAL │{$1}"
},
{
"type": "weather",
"key":"│ WEATHER │{$1}",
"timeout": 1000
},
{
"type": "custom",
"format": "├────────────┼──────────────────────────────────────────┤"
},
{
"type": "users",
"key": "│ LAST LOGIN │{$1}",
"format": "{login-time}{?client-ip} ({client-ip})",
"myselfOnly": true
},
{
"type": "uptime",
"key": "│ UPTIME │{$1}"
},
{
"type": "title",
"key": "│ USER │{$1}",
"format": "{user-name}"
},
{
"type": "disk",

View 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)"

View 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"

View 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

View 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

View 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

View 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

View file

@ -1,3 +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
View file

@ -0,0 +1,2 @@
jorgebucaran/fisher
patrickf1/fzf.fish

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View file

@ -0,0 +1,3 @@
function ff --wraps=fastfetch --description 'alias ff=fastfetch'
fastfetch $argv
end

View 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

View 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

View file

@ -1,3 +1,3 @@
function ls --wraps='eza --color' --description 'alias ls=eza --color'
eza --color $argv
eza --icons always --color always $argv
end

View file

@ -0,0 +1,3 @@
function n --wraps=nvim --description 'alias n=nvim'
nvim $argv
end

View file

@ -0,0 +1,3 @@
function p --wraps='paru -Syu' --description 'alias p=paru -Syu'
paru -Syu $argv
end

View file

@ -0,0 +1,3 @@
function sshp --wraps='ssh -P 49111' --description 'alias sshp=ssh -P 49111'
ssh -P 49111 $argv
end

View 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

View 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

View 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

View file

@ -0,0 +1,3 @@
function yz --wraps=yazi --description 'alias yz=yazi'
yazi $argv
end

View file

@ -0,0 +1,3 @@
function ня --wraps=yazi --description 'alias ня=yazi'
yazi $argv
end

View file

@ -187,8 +187,6 @@ misc {
animate_manual_resizes = false
animate_mouse_windowdragging = true
focus_on_activate = false
new_window_takes_over_fullscreen = 2
middle_click_paste = false
}
@ -334,21 +332,3 @@ bindl = , XF86AudioPrev, exec, playerctl previous
# windowrule = float,class:^(kitty)$,title:^(kitty)$
# Ignore maximize requests from apps. You'll probably like this.
windowrule = suppressevent maximize, class:.*
# Fix some dragging issues with XWayland
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
windowrule = float, class:(clipse)
windowrule = fullscreenstate 1, class:(clipse)
#windowrule = size 622 652, class:(clipse)
windowrule = stayfocused, class:(clipse)
windowrule = opacity 1.0 override 1.0 override,title:(.*)(- YouTube — Zen Browser)
windowrule = float, title:(Picture-in-Picture)
windowrule = float, title:(Media viewer)
windowrule = float, title:(Save Image)
windowrule = float, title:(Save File)
windowrule = float, title:(Save Video)
windowrule = fullscreenstate 1, title:(Media viewer)

110
config/hypr/hyprlock.conf Normal file
View 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
}

View file

@ -0,0 +1,37 @@
# HyprWave Configuration File
[General]
# Edge to anchor HyprWave to
# Options: right, left, top, bottom
edge = top
# Margin from the screen edge (in pixels)
margin = 20
# Layer to render on
# Options: background, bottom, top, overlay
layer = overlay
idle_timeout= 1
# Exclusive zone: 0 = respect other surfaces, -1 = overlap everything
exclusive_zone = -1
[Notifications]
enabled = true
now_playing = true
[Visualizer]
# Enable/disable visualizer (horizontal layout only)
enabled = false
# Idle timeout in seconds before visualizer appears
# Set to 0 to disable auto-activation
idle_timeout = 1
[VerticalDisplay]
enabled=true
idle_timeout=1
[MusicPlayer]
preference = mpd

585
config/hyprwave/style.css Normal file
View file

@ -0,0 +1,585 @@
/* ========================================
HyprWave - Mystic Portal Theme
Inspired by purple/pink portal with blue depths
======================================== */
:root {
/* Background Colors - Deep Void */
--bg-primary: rgba(15, 12, 30, 1.0);
--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: 4px solid rgb(255, 1, 0, 1.0);
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: 4px 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: 4px 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;
}

View 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

View file

@ -267,7 +267,7 @@
#: Text cursor customization {{{
# cursor #cccccc
cursor #eef7fd
#: Default text cursor color. If set to the special value none the
#: cursor will be rendered with a "reverse video" effect. Its color
@ -279,7 +279,7 @@
#: some themes set this value, so if you want to override it, place
#: your value after the lines where the theme file is included.
# cursor_text_color #111111
cursor_text_color background
#: The color of text under the cursor. If you want it rendered with
#: the background color of the cell underneath instead, use the
@ -288,7 +288,7 @@
#: so if you want to override it, place your value after the lines
#: where the theme file is included.
# cursor_shape block
cursor_shape underline
#: The cursor shape can be one of block, beam, underline. Note that
#: when reloading the config this will be changed only if the cursor
@ -299,7 +299,7 @@
#: the cursor shape to beam at shell prompts. You can avoid this by
#: setting shell_integration to no-cursor.
# cursor_shape_unfocused hollow
cursor_shape_unfocused beam
#: Defines the text cursor shape when the OS window is not focused.
#: The unfocused cursor shape can be one of block, beam, underline,
@ -1001,7 +1001,7 @@
#: set the vertical and horizontal sides. Three values set top,
#: horizontal and bottom. Four values set top, right, bottom and left.
# window_padding_width 0
window_padding_width 5
#: The window padding (in pts) (blank area between the text and the
#: window border). A single value sets all four sides. Two values set
@ -1314,9 +1314,8 @@
#: }}}
#: Color scheme {{{
foreground #C1D6D6
background #07090B
#foreground #C1D6D6
# background #07090B
#: The foreground and background colors.
@ -1442,9 +1441,9 @@
#: How much to dim text that has the DIM/FAINT attribute set. One
#: means no dimming and zero means fully dimmed (i.e. invisible).
# selection_foreground #07090B
# selection_background #ffffff
selection_foreground #07090B
selection_background #E2F9F9
#: The foreground and background colors for text selected with the
#: mouse. Setting both of these to none will cause a "reverse video"
@ -1459,44 +1458,83 @@ selection_background #E2F9F9
#: The 256 terminal colors. There are 8 basic colors, each color has a
#: dull and bright version, for the first 16 colors. You can set the
#: remaining 240 colors as color16 to color255.
color0 #07090B
color8 #718091
#color0 #07090B
#color8 #5C6871
#596269 good
#464646
#7E7E7F
#545256
#B2B2B2
#BCBEBF
#B2B2B2
#9F9F9F
#181818
#: black
color1 #FE3F48
color9 #F87173
#color1 #FF0100
#color9 #E46468
#F87173
#: red
color2 #25C39F
color10 #A1F7C6
# color2 #25C39F
# color10 #82D1B9
#92ED47 from zzz
#A1F7C6
#: green
color3 #EFFF2B
color11 #ECE782
# color3 #FFDE00
#FEDE00
#F4DA00
#F4DA00
#EFFF2B
##BAF000
# color11 #F6DB8B
#FFC777
#F6DB8B
#FDC849
#FFEC38
#ECE782
#: yellow
color4 #3783FF
color12 #96E1FF
# color4 #109FFF
#1C55E3
#00A9FF
# color12 #8FD2F7
#1BB7F9
#2EB6FF
#8077EA
#606ECF
#072857 --best
#0F474B
#13545E
#2CDCE1
#96E1FF
#: blue
color5 #FE31FF
color13 #F586FF
# color5 #FE31FF
# color13 #F79DE7
#EF61D6
#FFA4A5
#FF498C
#F978F2
#F586FF
#: magenta
color6 #22BEE8
color14 #DFFBE8
# color6 #00FED4
#00FFD3
#22BEE8
# color14 #7EFEDE
#7EFEDE
#65E09F good green
#4EC2D9
#4CBBC1 --best
#1CE0EF
#6BE6E4
#DFFBE8
#: cyan
color7 #C1D6D6
color15 #E2F9F9
#color7 #EEF7FD
#color15 #C1D6D6
#: white
@ -2794,3 +2832,9 @@ bold_font auto
italic_font auto
bold_italic_font auto
# END_KITTY_FONTS
# BEGIN_KITTY_THEME
#Tokyo Night
include current-theme.conf
# END_KITTY_THEME

View file

@ -288,7 +288,7 @@
#: so if you want to override it, place your value after the lines
#: where the theme file is included.
# cursor_shape block
cursor_shape underline
#: The cursor shape can be one of block, beam, underline. Note that
#: when reloading the config this will be changed only if the cursor
@ -1315,7 +1315,7 @@
#: Color scheme {{{
foreground #E2F9F9
foreground #C1D6D6
background #07090B
#: The foreground and background colors.
@ -1443,8 +1443,9 @@
#: How much to dim text that has the DIM/FAINT attribute set. One
#: means no dimming and zero means fully dimmed (i.e. invisible).
# selection_foreground #000000
# selection_background #fffacd
selection_foreground #07090B
selection_background #ffffff
#: The foreground and background colors for text selected with the
#: mouse. Setting both of these to none will cause a "reverse video"
@ -1461,42 +1462,90 @@
#: remaining 240 colors as color16 to color255.
color0 #07090B
color8 #6D8199
color8 #5C6871
#596269 good
#464646
#7E7E7F
#545256
#B2B2B2
#BCBEBF
#B2B2B2
#9F9F9F
#181818
#: black
# color1 #FA444E
# color9 #FB8087
color1 #FF0100
color9 #E46468
#F87173
#: red
# color2 #2DEAC4
# color10 #BEF9F9
color2 #25C39F
color10 #82D1B9
#92ED47 from zzz
#A1F7C6
#: green
# color3 #FBFB43
# color11 #FBFBB4
color3 #FFDE00
#FEDE00
#F4DA00
#F4DA00
#EFFF2B
##BAF000
color11 #F6DB8B
#FFC777
#F6DB8B
#FDC849
#FFEC38
#ECE782
#: yellow
# color4 #409FFC
# color12 #A9FAFA
color4 #109FFF
#1C55E3
#00A9FF
color12 #8FD2F7
#1BB7F9
#2EB6FF
#8077EA
#606ECF
#072857 --best
#0F474B
#13545E
#2CDCE1
#96E1FF
#: blue
# color5 #F932F9
# color13 #F99FFA
color5 #FE31FF
color13 #F79DE7
#EF61D6
#FFA4A5
#FF498C
#F978F2
#F586FF
#: magenta
# color6 #2EECF9
# color14 #FDFDFD
color6 #00FED4
#00FFD3
#22BEE8
color14 #7EFEDE
#7EFEDE
#65E09F good green
#4EC2D9
#4CBBC1 --best
#1CE0EF
#6BE6E4
#DFFBE8
#: cyan
# color7 #F2F9F9
# color15 #F7F7F7
color7 #EEF7FD
color15 #C1D6D6
#: white
@ -2789,7 +2838,7 @@ color8 #6D8199
# BEGIN_KITTY_FONTS
font_family family='Terminess Nerd Font Mono' postscript_name=TerminessNFM
font_family family="IosevkaTerm Nerd Font"
bold_font auto
italic_font auto
bold_italic_font auto

75
config/mimeapps.list Normal file
View 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

View file

@ -0,0 +1,36 @@
# Copy this to /etc/mpDris2.conf or ~/.config/mpDris2/mpDris2.conf
# Default values are shown here, commented out.
[Connection]
# You can also export $MPD_HOST and/or $MPD_PORT to change the server.
host = /run/user/1000/mpd/socket
#port = 6600
#password =
[Library]
music_dir = ~/mus/
cover_regex = ^(album|cover|\.?folder|front).*\.(gif|jpeg|jpg|png)$
[Bling]
#mmkeys = True
notify = False
# Send notifications while paused?
#notify_paused = True
# CD-like previous command: if playback is past 3 seconds, seek to the beginning
#cdprev = True
#[Notify]
# Urgency of the notification: 0 for low, 1 for medium and 2 for high.
#urgency = 0
# Timeout of the notification in milliseconds. -1 uses the notification's default
# and 0 sets the notification to never timeout.
#timeout = -1
# Format the notification's summary and body in either playing or paused state.
# Leave blank to use mpDris2's internal defaults.
# Possible values:
# %album%, %title%, %id%, %time%, %timeposition%, %date%, %track%,
# %disc%, %artist%, %albumartist%, %composer%, %genre%, %file%
#summary =
#body =
#paused_summary =
#paused_body =

403
config/mpd/mpd.conf Normal file
View file

@ -0,0 +1,403 @@
# An example configuration file for MPD.
# Read the user manual for documentation: http://www.mausicpd.org/doc/user/
# Files and directories #######################################################
#
# This setting controls the top directory which MPD will search to discover the
# available audio files and add them to the daemon's online database. This
# setting defaults to the XDG directory, otherwise the music directory will be
# be disabled and audio files will only be accepted over ipc socket (using
# file:// protocol) or streaming files over an accepted protocol.
#
music_directory "/home/unconfer/mus"
#music_directory "~/music"
playlist_plugin {
name "save"
enabled "yes"
}
#
# This setting sets the MPD internal playlist directory. The purpose of this
# directory is storage for playlists created by MPD. The server will use
# playlist files not created by the server but only if they are in the MPD
# format. This setting defaults to playlist saving being disabled.
#
#playlist_directory "$XDG_CONFIG_HOME/mpd/playlists"
playlist_directory "$XDG_MUSIC_DIR/playlists"
#
# This setting sets the location of the MPD database. This file is used to
# load the database at server start up and store the database while the
# server is not up. This setting defaults to disabled which will allow
# MPD to accept files over ipc socket (using file:// protocol) or streaming
# files over an accepted protocol.
#
#db_file "$XDG_CACHE_HOME/mpd/database"
db_file "~/.mpd/database"
# These settings are the locations for the daemon log files for the daemon.
#
# The special value "syslog" makes MPD use the local syslog daemon. This
# setting defaults to logging to syslog.
#
# If you use systemd, do not configure a log_file. With systemd, MPD
# defaults to the systemd journal, which is fine.
#
#log_file "$XDG_CACHE_HOME/mpd/log"
#log_file "~/.mpd/log"
# This setting sets the location of the file which stores the process ID
# for use of mpd --kill and some init scripts. This setting is disabled by
# default and the pid file will not be stored.
#
# If you use systemd, do not configure a pid_file.
#
pid_file "$XDG_RUNTIME_DIR/mpd/mpd.pid"
#pid_file "~/.mpd/pid"
# This setting sets the location of the file which contains information about
# most variables to get MPD back into the same general shape it was in before
# it was brought down. This setting is disabled by default and the server
# state will be reset on server start up.
#
state_file "$XDG_RUNTIME_DIR/mpd/state"
#state_file "~/.mpd/state"
#
# The location of the sticker database. This is a database which
# manages dynamic information attached to songs.
#
#sticker_file "$XDG_CACHE_HOME/sticker.sql"
#sticker_file "~/.mpd/sticker.sql"
#
###############################################################################
# General music daemon options ################################################
#
# This setting specifies the user that MPD will run as. MPD should never run as
# root and you may use this setting to make MPD change its user ID after
# initialization. This setting is disabled by default and MPD is run as the
# current user.
#
#user "nobody"
#
# This setting sets the address for the daemon to listen on. Careful attention
# should be paid if this is assigned to anything other than the default, any.
# This setting can deny access to control of the daemon. Not effective if
# systemd socket activation is in use.
#
# For network
#bind_to_address "any"
#
# And for Unix Socket
#bind_to_address "$XDG_RUNTIME_DIR/mpd/socket"
bind_to_address "/tmp/mpd_socket"
#
# This setting is the TCP port that is desired for the daemon to get assigned
# to.
#port "6601"
#
# Suppress all messages below the given threshold. Use "verbose" for
# troubleshooting. Available setting arguments are "notice", "info", "verbose",
# "warning" and "error".
#
#log_level "notice"
#
# Setting "restore_paused" to "yes" puts MPD into pause mode instead
# of starting playback after startup.
#
#restore_paused "no"
#
# This setting enables MPD to create playlists in a format usable by other
# music players.
#
#save_absolute_paths_in_playlists "no"
#
# This setting defines a list of tag types that will be extracted during the
# audio file discovery process. The complete list of possible values can be
# found in the user manual.
#metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc"
#
# This example just enables the "comment" tag without disabling all
# the other supported tags:
#metadata_to_use "+comment"
#
# This setting enables automatic update of MPD's database when files in
# music_directory are changed. (Linux only)
#
auto_update "yes"
#
# Limit the depth of the directories being watched, 0 means only watch
# the music directory itself. There is no limit by default.
#
#auto_update_depth "3"
#
###############################################################################
# Symbolic link behavior ######################################################
#
# If this setting is set to "yes", MPD will discover audio files by following
# symbolic links outside of the configured music_directory.
#
#follow_outside_symlinks "yes"
#
# If this setting is set to "yes", MPD will discover audio files by following
# symbolic links inside of the configured music_directory.
#
#follow_inside_symlinks "yes"
#
###############################################################################
# Zeroconf / Avahi Service Discovery ##########################################
#
# If this setting is set to "yes", service information will be published with
# Zeroconf / Avahi.
#
#zeroconf_enabled "yes"
#
# The argument to this setting will be the Zeroconf / Avahi unique name for
# this MPD server on the network. %h will be replaced with the hostname.
#
#zeroconf_name "Music Player @ %h"
#
###############################################################################
# Permissions #################################################################
#
# If this setting is set, MPD will require password authorization. The password
# setting can be specified multiple times for different password profiles.
#
#password "password@read,add,control,admin"
#
# This setting specifies the permissions a user has who has not yet logged in.
#
#default_permissions "read,add,control,admin"
#
###############################################################################
# Database #######################################################################
#
# An example of a database section instead of the old 'db_file' setting.
# It enables mounting other storages into the music directory.
#
#database {
# plugin "simple"
# path "~/.local/share/mpd/db"
# cache_directory "~/.local/share/mpd/cache"
#}
#
# An example of database config for a satellite setup
#
#music_directory "nfs://fileserver.local/srv/mp3"
#database {
# plugin "proxy"
# host "other.mpd.host"
# port "6600"
#}
# Input #######################################################################
#
input {
plugin "curl"
# proxy "proxy.isp.com:8080"
# proxy_user "user"
# proxy_password "password"
}
#
###############################################################################
# Audio Output ################################################################
#
# MPD supports various audio output types, as well as playing through multiple
# audio outputs at the same time, through multiple audio_output settings
# blocks. Setting this block is optional, though the server will only attempt
# autodetection for one sound card.
#
# An example of an ALSA output:
#
#audio_output {
# type "alsa"
# name "My ALSA Device"
## device "hw:0,0" # optional
## mixer_type "hardware" # optional
## mixer_device "default" # optional
## mixer_control "PCM" # optional
## mixer_index "0" # optional
#}
audio_output {
type "pipewire"
name "PipeWire Sound Server"
}
#
# An example of an OSS output:
#
#audio_output {
# type "oss"
# name "My OSS Device"
## device "/dev/dsp" # optional
## mixer_type "hardware" # optional
## mixer_device "/dev/mixer" # optional
## mixer_control "PCM" # optional
#}
#
# An example of a shout output (for streaming to Icecast):
#
#audio_output {
# type "shout"
# encoder "vorbis" # optional
# name "My Shout Stream"
# host "localhost"
# port "8000"
# mount "/mpd.ogg"
# password "hackme"
# quality "5.0"
# bitrate "128"
# format "44100:16:1"
## protocol "icecast2" # optional
## user "source" # optional
## description "My Stream Description" # optional
## url "http://example.com" # optional
## genre "jazz" # optional
## public "no" # optional
## timeout "2" # optional
## mixer_type "software" # optional
#}
#
# An example of a recorder output:
#
#audio_output {
# type "recorder"
# name "My recorder"
# encoder "vorbis" # optional, vorbis or lame
# path "/var/lib/mpd/recorder/mpd.ogg"
## quality "5.0" # do not define if bitrate is defined
# bitrate "128" # do not define if quality is defined
# format "44100:16:1"
#}
#
# An example of a httpd output (built-in HTTP streaming server):
#
#audio_output {
# type "httpd"
# name "My HTTP Stream"
# encoder "vorbis" # optional, vorbis or lame
# port "8000"
# bind_to_address "0.0.0.0" # optional, IPv4 or IPv6
## quality "5.0" # do not define if bitrate is defined
# bitrate "128" # do not define if quality is defined
# format "44100:16:1"
# max_clients "0" # optional 0=no limit
#}
#
# An example of a pulseaudio output (streaming to a remote pulseaudio server)
#
#audio_output {
# type "pulse"
# name "My Pulse Output"
## server "remote_server" # optional
## sink "remote_server_sink" # optional
## media_role "media_role" #optional
#}
#
# An example of a winmm output (Windows multimedia API).
#
#audio_output {
# type "winmm"
# name "My WinMM output"
## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
# or
## device "0" # optional
## mixer_type "hardware" # optional
#}
#
# An example of a wasapi output (Windows multimedia API).
#
#audio_output {
# type "wasapi"
# name "My WASAPI output"
## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
# or
## device "0" # optional
## mixer_type "hardware" # optional
## Exclusive mode blocks all other audio source, and get best audio quality without resampling.
## exclusive "no" # optional
## Enumerate all devices in log.
## enumerate "no" # optional
#}
#
# An example of an openal output.
#
#audio_output {
# type "openal"
# name "My OpenAL output"
## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
#}
#
# An example of an sndio output.
#
#audio_output {
# type "sndio"
# name "sndio output"
# mixer_type "hardware"
#}
#
# An example of an OS X output:
#
#audio_output {
# type "osx"
# name "My OS X Device"
## device "Built-in Output" # optional
## channel_map "-1,-1,0,1" # optional
#}
#
## Example "pipe" output:
#
#audio_output {
# type "pipe"
# name "my pipe"
# command "aplay -f cd 2>/dev/null"
## Or if you're want to use AudioCompress
# command "AudioCompress -m | aplay -f cd 2>/dev/null"
## Or to send raw PCM stream through PCM:
# command "nc example.org 8765"
# format "44100:16:2"
#}
#
## An example of a null output (for no audio output):
#
#audio_output {
# type "null"
# name "My Null Output"
# mixer_type "none" # optional
#}
#
###############################################################################
# Normalization automatic volume adjustments ##################################
#
# This setting specifies the type of ReplayGain to use. This setting can have
# the argument "off", "album", "track" or "auto". "auto" is a special mode that
# chooses between "track" and "album" depending on the current state of
# random playback. If random playback is enabled then "track" mode is used.
# See <https://wiki.hydrogenaud.io/index.php?title=Replaygain> for
# more details about ReplayGain.
# This setting is off by default.
#
#replaygain "album"
#
###############################################################################
# Character Encoding ##########################################################
#
# If file or directory names do not display correctly for your locale then you
# may need to modify this setting.
#
#filesystem_charset "UTF-8"
#
###############################################################################

View file

@ -4,7 +4,7 @@ input {
layout "us,ru"
options "grp:caps_toggle"
}
repeat-delay 250
repeat-delay 225
repeat-rate 25
// track-layout "global"
numlock
@ -33,7 +33,7 @@ input {
scroll-method "on-button-down"
}
warp-mouse-to-focus
focus-follows-mouse max-scroll-amount="50%"
focus-follows-mouse max-scroll-amount="0%"
trackpoint {
// off
@ -47,7 +47,7 @@ input {
}
}
/-output "DP-1" {
output "DP-1" {
// off
mode "1920x1080@165.000"
scale 1.0
@ -58,13 +58,14 @@ input {
}
layout {
gaps 5
gaps 10
background-color "transparent"
center-focused-column "never"
default-column-display "normal"
preset-column-widths {
proportion 0.33333
proportion 0.5
proportion 1.0
proportion 0.66666
}
preset-window-heights {
@ -72,7 +73,7 @@ layout {
proportion 1.0
}
default-column-width { proportion 0.5; }
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.
@ -87,17 +88,17 @@ layout {
// You can change how the focus ring looks.
focus-ring {
// off
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 "#C1D6D6"
//active-color "#EEF7FD"
// foreground #C1D6D6
//background #07090B
inactive-color "#000000"
// inactive-color "#5C6871"
// Changing the color space is also supported, check the wiki for more info.
//
// active-gradient from="#80c8ff" to="#c7ff7f" angle=45
@ -111,11 +112,14 @@ layout {
// You can also add a border. It's similar to the focus ring, but always visible.
border {
off
urgent-color "#9b0000"
//off
width 4
active-color "#25c39f"
inactive-color "#eef7fd"
}
shadow {
off
color "#0007"
}
@ -125,27 +129,29 @@ layout {
// Top and bottom struts will simply add outer gaps in addition to the area occupied by
// layer-shell panels and regular gaps.
struts {
// left 64
// right 64
// top 64
// bottom 64
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 "#ffc87f80"
gradient from="#ffbb6680" to="#ffc88080" angle=45 relative-to="workspace-view"
//off
color "#EEF7FD"
}
background-color "#07090B"
}
overview {
zoom 0.45
zoom 0.4
backdrop-color "#07090b"
workspace-shadow {
@ -156,16 +162,22 @@ clipboard {
disable-primary
}
cursor {
//xcursor-theme "Dot-Dark"
xcursor-size 12
xcursor-theme "BreezeX-Black"
xcursor-size 26
hide-when-typing
hide-after-inactive-ms 1000
}
spawn-at-startup "waybar"
spawn-at-startup "niri-screen-time" "-daemon"
spawn-at-startup "fnott"
spawn-at-startup "mpDris2"
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"
@ -185,9 +197,9 @@ 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"
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"
//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
@ -201,6 +213,59 @@ animations {
// Slow down all animations by this factor. Values below 1 speed them up instead.
slowdown 1.0
workspace-switch {
spring damping-ratio=0.65 stiffness=600 epsilon=0.0001
}
window-open {
// duration-ms 200
// curve "ease-out-quad"
//
spring damping-ratio=0.65 stiffness=600 epsilon=0.0001
}
window-close {
//duration-ms 200
//curve "ease-out-quad"
//
spring damping-ratio=0.65 stiffness=600 epsilon=0.0001
}
horizontal-view-movement {
spring damping-ratio=0.65 stiffness=600 epsilon=0.0001
}
window-movement {
spring damping-ratio=0.65 stiffness=600 epsilon=0.0001
}
window-resize {
spring damping-ratio=0.65 stiffness=600 epsilon=0.0001
}
config-notification-open-close {
spring damping-ratio=0.65 stiffness=600 epsilon=0.0001
}
exit-confirmation-open-close {
spring damping-ratio=0.65 stiffness=600 epsilon=0.0001
}
screenshot-ui-open {
// duration-ms 200
//curve "ease-out-quad"
spring damping-ratio=0.65 stiffness=600 epsilon=0.0001
}
overview-open-close {
spring damping-ratio=0.65 stiffness=600 epsilon=0.0001
}
recent-windows-close {
spring damping-ratio=0.65 stiffness=600 epsilon=0.0001
}
}
// Window rules let you adjust behavior for individual windows.
@ -223,17 +288,30 @@ window-rule {
match app-id="clipse"
// match is-floating=true
open-maximized true
// open-floating true
tiled-state false
open-floating true
tiled-state true
}
window-rule {
open-maximized false
geometry-corner-radius 5
// 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:
@ -254,20 +332,56 @@ window-rule {
// 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 12
window-rule {
geometry-corner-radius 10
clip-to-geometry true
}
layer-rule {
//clip-to-geometry true
match namespace="fnott"
geometry-corner-radius 5
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{
@ -278,6 +392,30 @@ xwayland-satellite {
}
binds {
// MOD+SHIFT+M { spawn "hyprwave-toggle visibility"; }
// MOD+M { spawn-sh "hyprwave-toggle expand"; }
//Mod+M { spawn "hyprwave-toggle" "visibility"; }
// Media Controls
Mod+P { spawn-sh "playerctl -p mpd play-pause"; }
Mod+Period { spawn-sh "playerctl -p mpd next"; }
Mod+Comma { spawn-sh "playerctl -p mpd previous"; }
// Theme Switching (v1.0)
// MOD+SHIFT+T { spawn-sh "hyprwave-toggle set-theme zzz"; }
// Position Switching (v1.0)
// MOD+SHIFT+LEFT { spawn-sh "hyprwave-toggle set-position left"; }
//MOD+SHIFT+RIGHT { spawn-sh "hyprwave-toggle set-position right"; }
//MOD+SHIFT+UP { spawn-sh "hyprwave-toggle set-position top"; }
//MOD+SHIFT+DOWN { spawn-sh "hyprwave-toggle set-position bottom"; }
//ВНИМАНИЕ СЕКЦИЯ НЕЙРОСЛОПА
// 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.
@ -291,29 +429,50 @@ binds {
// Mod-Shift-/, which is usually the same as Mod-?,
// shows a list of important hotkeys.
Mod+Shift+Slash { show-hotkey-overlay; }
Super+F{ toggle-window-floating;}
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 "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+Alt+L { spawn "gtklock"; }
Mod+Shift+P{spawn "shutdown" "now";}
Mod+Shift+Alt+P{spawn "shutdown" "-" "c";}
Alt+C{spawn "hyprpicker" "-a";}
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"; }
// 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"; }
// 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"),
@ -326,7 +485,9 @@ binds {
// or do a four-finger swipe up on a touchpad.
Mod+O repeat=false { toggle-overview; }
Mod+C repeat=false { close-window; }
//Mod+Escape repeat=false { toggle-overview; }
Mod+Shift+C repeat=false { close-window; }
Mod+Left { focus-column-left; }
Mod+Down { focus-window-down; }
@ -337,6 +498,10 @@ binds {
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; }
@ -346,6 +511,9 @@ binds {
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; }
@ -388,6 +556,17 @@ binds {
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; }
@ -454,24 +633,24 @@ binds {
//
// 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 { focus-workspace 3; }
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+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; }
//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; }
@ -486,27 +665,26 @@ binds {
Mod+BracketRight { consume-or-expel-window-right; }
// Consume one window from the right to the bottom of the focused column.
Mod+Comma { consume-window-into-column; }
Mod+3 { consume-window-into-column; }
// Expel the bottom window from the focused column to the right.
Mod+Period { expel-window-from-column; }
Mod+4 { expel-window-from-column; }
Mod+R repeat=false { switch-preset-column-width; }
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+A repeat=false { maximize-column; }
Mod+Shift+A repeat=false { fullscreen-window; }
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; }
//Mod+M { center-column; }
// Center all fully visible columns on screen.
Mod+Ctrl+C { center-visible-columns; }
Mod+C { center-column; }
// Finer width adjustments.
// This command can also:
@ -516,15 +694,16 @@ binds {
// * 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%"; }
Mod+Minus { set-column-width "-5%"; }
Mod+Equal { set-column-width "+5%"; }
// Finer height adjustments when in column with other windows.
Mod+Shift+Minus { set-window-height "-10%"; }
Mod+Shift+Equal { set-window-height "+10%"; }
Mod+Shift+Minus { set-window-height "-5%"; }
Mod+Shift+Equal { set-window-height "+5%"; }
// Move the focused window between the floating and the tiling layout.
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.
@ -542,7 +721,6 @@ binds {
Mod+S { screenshot; }
Super+Shift+S { screenshot-screen; }
Alt+Print { screenshot-window; }
// Applications such as remote-desktop clients and software KVM switches may
// request that niri stops processing the keyboard shortcuts defined here

View 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" }
}

View 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",
}

View file

@ -0,0 +1,4 @@
return {
"OXY2DEV/markview.nvim",
lazy = false,
}

View 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,
}

View file

@ -0,0 +1,3 @@
return {
"dcampos/nvim-snippy",
}

View 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 = {},
}

281
config/rmpc/config.ron Normal file
View file

@ -0,0 +1,281 @@
#![enable(implicit_some)]
#![enable(unwrap_newtypes)]
#![enable(unwrap_variant_newtypes)]
(
address: "/run/user/1000/mpd/socket",
password: None,
theme: None,
cache_dir: None,
on_song_change: None,
volume_step: 5,
max_fps: 165,
scrolloff: 0,
wrap_navigation: false,
enable_mouse: true,
scroll_amount: 1,
enable_config_hot_reload: true,
enable_lyrics_hot_reload: false,
status_update_interval_ms: 1000,
rewind_to_start_sec: None,
keep_state_on_song_change: true,
reflect_changes_to_playlist: false,
select_current_song_on_change: false,
ignore_leading_the: false,
browser_song_sort: [Disc, Track, Artist, Title],
directories_sort: SortFormat(group_by_type: true, reverse: false),
auto_open_downloads: true,
album_art: (
method: Auto,
max_size_px: (width: 1200, height: 1200),
disabled_protocols: ["http://", "https://"],
vertical_align: Center,
horizontal_align: Center,
),
keybinds: (
global: {
"q": Quit,
"?": ShowHelp,
":": CommandMode,
"oI": ShowCurrentSongInfo,
"oo": ShowOutputs,
"op": ShowDecoders,
"od": ShowDownloads,
"oP": Partition(),
"z": ToggleRepeat,
"x": ToggleRandom,
"c": ToggleConsume,
"v": ToggleSingle,
"p": TogglePause,
"s": Stop,
">": NextTrack,
"<": PreviousTrack,
"f": SeekForward,
"b": SeekBack,
".": VolumeUp,
",": VolumeDown,
"<Tab>": NextTab,
"gt": NextTab,
"<S-Tab>": PreviousTab,
"gT": PreviousTab,
"1": SwitchToTab("Queue"),
"2": SwitchToTab("Directories"),
"3": SwitchToTab("Artists"),
"4": SwitchToTab("Album Artists"),
"5": SwitchToTab("Albums"),
"6": SwitchToTab("Playlists"),
"7": SwitchToTab("Search"),
"<C-u>": Update,
"<C-U>": Rescan,
"R": AddRandom,
},
navigation: {
"<C-c>": Close,
"<Esc>": Close,
"<CR>": Confirm,
"k": Up,
"<Up>": Up,
"j": Down,
"<Down>": Down,
"h": Left,
"<Left>": Left,
"l": Right,
"<Right>": Right,
"<C-w>k": PaneUp,
"<C-Up>": PaneUp,
"<C-w>j": PaneDown,
"<C-Down>": PaneDown,
"<C-w>h": PaneLeft,
"<C-Left>": PaneLeft,
"<C-w>l": PaneRight,
"<C-Right>": PaneRight,
"K": MoveUp,
"J": MoveDown,
"<C-u>": UpHalf,
"<C-d>": DownHalf,
"<C-b>": PageUp,
"<PageUp>": PageUp,
"<C-f>": PageDown,
"<PageDown>": PageDown,
"gg": Top,
"G": Bottom,
"<Space>": Select,
"<C-Space>": InvertSelection,
"/": EnterSearch,
"n": NextResult,
"N": PreviousResult,
"a": Add,
"A": AddAll,
"D": Delete,
"<C-r>": Rename,
"i": FocusInput,
"oi": ShowInfo,
"<C-z>": ContextMenu(),
"<C-s>s": Save(kind: Modal(all: false, duplicates_strategy: Ask)),
"<C-s>a": Save(kind: Modal(all: true, duplicates_strategy: Ask)),
"r": Rate(),
},
queue: {
"d": Delete,
"D": DeleteAll,
"<CR>": Play,
"C": JumpToCurrent,
"X": Shuffle,
},
),
search: (
case_sensitive: false,
ignore_diacritics: false,
search_button: false,
mode: Contains,
tags: [
(value: "any", label: "Any Tag"),
(value: "artist", label: "Artist"),
(value: "album", label: "Album"),
(value: "albumartist", label: "Album Artist"),
(value: "title", label: "Title"),
(value: "filename", label: "Filename"),
(value: "genre", label: "Genre"),
],
),
artists: (
album_display_mode: SplitByDate,
album_sort_by: Date,
album_date_tags: [Date],
),
tabs: [
(
name: "Queue",
pane: Split(
direction: Horizontal,
panes: [
(
size: "35%",
pane: Split(
direction: Vertical,
panes: [
(
size: "100%",
borders: "LEFT | RIGHT | TOP",
border_symbols: Rounded,
pane: Pane(AlbumArt)
),
(
size: "7",
borders: "ALL",
border_symbols: Inherited(parent: Rounded, top_left: "├", top_right: "┤",),
border_title: [(kind: Text(" Lyrics "))],
border_title_alignment: Right,
pane: Pane(Lyrics)
),
],
),
),
(
size: "65%",
pane: Split(
direction: Vertical,
panes: [
(
size: "3",
borders: "ALL",
border_symbols: Inherited(parent: Rounded, bottom_left: "├", bottom_right: "┤",),
pane: Split(
direction: Horizontal,
panes: [
(
size: "1",
pane: Pane(Empty())
),
(
size: "100%",
pane: Pane(QueueHeader())
),
]
)
),
(
size: "100%",
borders: "LEFT | RIGHT | BOTTOM",
border_symbols: Rounded,
pane: Split(
direction: Horizontal,
panes: [
(
size: "1",
pane: Pane(Empty())
),
(
size: "100%",
pane: Pane(Queue)
),
]
)
),
],
)
),
],
),
),
(
name: "Directories",
borders: "ALL",
border_symbols: Rounded,
pane: Split(
size: "100%",
direction: Vertical,
panes: [(pane: Pane(Directories), size: "100%", borders: "ALL", border_symbols: Rounded)],
)
),
(
name: "Artists",
borders: "ALL",
border_symbols: Rounded,
pane: Split(
size: "100%",
direction: Vertical,
panes: [(pane: Pane(Artists), size: "100%", borders: "ALL", border_symbols: Rounded)],
)
),
(
name: "Album Artists",
borders: "ALL",
border_symbols: Rounded,
pane: Split(
size: "100%",
direction: Vertical,
panes: [(pane: Pane(AlbumArtists), size: "100%", borders: "ALL", border_symbols: Rounded)],
)
),
(
name: "Albums",
borders: "ALL",
border_symbols: Rounded,
pane: Split(
size: "100%",
direction: Vertical,
panes: [(pane: Pane(Albums), size: "100%", borders: "ALL", border_symbols: Rounded)],
)
),
(
name: "Playlists",
borders: "ALL",
border_symbols: Rounded,
pane: Split(
size: "100%",
direction: Vertical,
panes: [(pane: Pane(Playlists), size: "100%", borders: "ALL", border_symbols: Rounded)],
)
),
(
name: "Search",
borders: "ALL",
border_symbols: Rounded,
pane: Split(
size: "100%",
direction: Vertical,
panes: [(pane: Pane(Search), size: "100%", borders: "ALL", border_symbols: Rounded)],
)
),
],
)

307
config/rmpc/themes/zzz.ron Normal file
View file

@ -0,0 +1,307 @@
#![enable(implicit_some)]
#![enable(unwrap_newtypes)]
#![enable(unwrap_variant_newtypes)]
(
default_album_art_path: None,
format_tag_separator: " | ",
browser_column_widths: [20, 38, 42],
background_color: None,
text_color: None,
header_background_color: None,
modal_background_color: None,
modal_backdrop: false,
preview_label_style: (fg: "yellow"),
preview_metadata_group_style: (fg: "yellow", modifiers: "Bold"),
highlighted_item_style: (fg: "blue", modifiers: "Bold"),
current_item_style: (fg: "black", bg: "blue", modifiers: "Bold"),
borders_style: (fg: "blue"),
highlight_border_style: (fg: "blue"),
symbols: (
song: "S",
dir: "D",
playlist: "P",
marker: "M",
ellipsis: "...",
song_style: None,
dir_style: None,
playlist_style: None,
),
level_styles: (
info: (fg: "green", bg: "black"),
warn: (fg: "yellow", bg: "black"),
error: (fg: "red", bg: "black"),
debug: (fg: "light_green", bg: "black"),
trace: (fg: "magenta", bg: "black"),
),
progress_bar: (
symbols: ["█", "█", "█", " ", "█"],
track_style: None,
elapsed_style: (fg: "green"),
thumb_style: (fg: "blue"),
use_track_when_empty: true,
),
scrollbar: (
symbols: ["│", "█", "▲", "▼"],
track_style: (),
ends_style: (),
thumb_style: (fg: "blue"),
),
tab_bar: (
active_style: (fg: "black", bg: "blue", modifiers: "Bold"),
inactive_style: (),
),
lyrics: (
timestamp: false
),
browser_song_format: [
(
kind: Group([
(kind: Property(Track)),
(kind: Text(" ")),
])
),
(
kind: Group([
(kind: Property(Artist)),
(kind: Text(" - ")),
(kind: Property(Title)),
]),
default: (kind: Property(Filename))
),
],
song_table_format: [
(
prop: (kind: Property(Artist),
default: (kind: Text("Unknown"))
),
label_prop: (kind: Text("Artist")),
width: "20%",
),
(
prop: (kind: Property(Title),
default: (kind: Text("Unknown"))
),
label_prop: (kind: Text("Title")),
width: "35%",
),
(
prop: (kind: Property(Album), style: (fg: "white"),
default: (kind: Text("Unknown Album"), style: (fg: "white"))
),
label_prop: (kind: Text("Album")),
width: "30%",
),
(
prop: (kind: Property(Duration),
default: (kind: Text("-"))
),
label_prop: (kind: Text("Duration")),
width: "15%",
alignment: Right,
),
],
layout: Split(
direction: Vertical,
panes: [
(
size: "4",
pane: Split(
direction: Horizontal,
panes: [
(
size: "35",
borders: "LEFT | TOP | BOTTOM",
border_symbols: Inherited(parent: Rounded, bottom_left: "├"),
pane: Component("header_left")
),
(
size: "100%",
borders: "ALL",
border_symbols: Inherited(parent: Rounded, top_left: "┬", top_right: "┬", bottom_left: "┴", bottom_right: "┴"),
pane: Component("header_center")
),
(
size: "35",
borders: "RIGHT | TOP | BOTTOM",
border_symbols: Inherited(parent: Rounded, bottom_right: "┤"),
pane: Component("header_right")
),
]
)
),
(
pane: Pane(Tabs),
borders: "RIGHT | LEFT | BOTTOM",
border_symbols: Rounded,
size: "2",
),
(
pane: Pane(TabContent),
size: "100%",
),
(
size: "3",
pane: Split(
direction: Horizontal,
panes: [
(
size: "12",
borders: "ALL",
border_symbols: Inherited(parent: Rounded, top_right: "┬", bottom_right: "┴"),
pane: Component("input_mode")
),
(
size: "100%",
borders: "TOP | BOTTOM | RIGHT",
border_symbols: Rounded,
border_title: [(kind: Text(" ")), (kind: Property(Status(QueueLength()))), (kind: Text(" songs / ")), (kind: Property(Status(QueueTimeTotal()))), (kind: Text(" total time "))],
border_title_alignment: Right,
pane: Component("progress_bar"),
),
]
),
),
],
),
components: {
"state": Pane(Property(
content: [
(kind: Text("["), style: (fg: "yellow", modifiers: "Bold")),
(kind: Property(Status(StateV2( ))), style: (fg: "yellow", modifiers: "Bold")),
(kind: Text("]"), style: (fg: "yellow", modifiers: "Bold")),
], align: Left,
)),
"title": Pane(Property(
content: [
(kind: Property(Song(Title)), style: (modifiers: "Bold"),
default: (kind: Text("No Song"), style: (modifiers: "Bold"))),
], align: Center, scroll_speed: 1
)),
"volume": Split(
direction: Horizontal,
panes: [
(size: "1", pane: Pane(Property(content: [(kind: Text(""))]))),
(size: "100%", pane: Pane(Volume(kind: Slider(symbols: (filled: "─", thumb: "●", track: "─"))))),
(size: "3", pane: Pane(Property(content: [(kind: Property(Status(Volume)), style: (fg: "blue"))], align: Right))),
(size: "2", pane: Pane(Property(content: [(kind: Text("%"), style: (fg: "blue"))]))),
]
),
"elapsed_and_bitrate": Pane(Property(
content: [
(kind: Property(Status(Elapsed))),
(kind: Text(" / ")),
(kind: Property(Status(Duration))),
(kind: Group([
(kind: Text(" (")),
(kind: Property(Status(Bitrate))),
(kind: Text(" kbps)")),
])),
],
align: Left,
)),
"artist_and_album": Pane(Property(
content: [
(kind: Property(Song(Artist)), style: (fg: "yellow", modifiers: "Bold"),
default: (kind: Text("Unknown"), style: (fg: "yellow", modifiers: "Bold"))),
(kind: Text(" - ")),
(kind: Property(Song(Album)), default: (kind: Text("Unknown Album"))),
], align: Center, scroll_speed: 1
)),
"states": Split(
direction: Horizontal,
panes: [
(
size: "1",
pane: Pane(Empty())
),
(
size: "100%",
pane: Pane(Property(content: [(kind: Property(Status(InputBuffer())), style: (fg: "blue"), align: Left)]))
),
(
size: "6",
pane: Pane(Property(content: [
(kind: Text("["), style: (fg: "blue", modifiers: "Bold")),
(kind: Property(Status(RepeatV2(
on_label: "z",
off_label: "z",
on_style: (fg: "yellow", modifiers: "Bold"),
off_style: (fg: "blue", modifiers: "Dim"),
)))),
(kind: Property(Status(RandomV2(
on_label: "x",
off_label: "x",
on_style: (fg: "yellow", modifiers: "Bold"),
off_style: (fg: "blue", modifiers: "Dim"),
)))),
(kind: Property(Status(ConsumeV2(
on_label: "c",
off_label: "c",
oneshot_label: "c",
on_style: (fg: "yellow", modifiers: "Bold"),
off_style: (fg: "blue", modifiers: "Dim"),
oneshot_style: (fg: "red", modifiers: "Dim"),
)))),
(kind: Property(Status(SingleV2(
on_label: "v",
off_label: "v",
oneshot_label: "v",
on_style: (fg: "yellow", modifiers: "Bold"),
off_style: (fg: "blue", modifiers: "Dim"),
oneshot_style: (fg: "red", modifiers: "Bold"),
)))),
(kind: Text("]"), style: (fg: "blue", modifiers: "Bold")),
],
align: Right
))
),
]
),
"input_mode": Pane(Property(
content: [
(kind: Transform(Replace(content: (kind: Property(Status(InputMode()))), replacements: [
(match: "Normal", replace: (kind: Text(" NORMAL "), style: (fg: "black", bg: "blue"))),
(match: "Insert", replace: (kind: Text(" INSERT "), style: (fg: "black", bg: "green"))),
])))
], align: Center
)),
"header_left": Split(
direction: Vertical,
panes: [
(size: "1", pane: Component("state")),
(size: "1", pane: Component("elapsed_and_bitrate")),
]
),
"header_center": Split(
direction: Vertical,
panes: [
(size: "1", pane: Component("title")),
(size: "1", pane: Component("artist_and_album")),
]
),
"header_right": Split(
direction: Vertical,
panes: [
(size: "1", pane: Component("volume")),
(size: "1", pane: Component("states")),
]
),
"progress_bar": Split(
direction: Horizontal,
panes: [
(
size: "1",
pane: Pane(Empty())
),
(
size: "100%",
pane: Pane(ProgressBar)
),
(
size: "1",
pane: Pane(Empty())
),
]
)
},
)

99
config/swaync/config.json Normal file
View file

@ -0,0 +1,99 @@
{
"$schema": "/etc/xdg/swaync/configSchema.json",
"ignore-gtk-theme": true,
"positionX": "right",
"positionY": "top",
"layer": "overlay",
"control-center-layer": "top",
"layer-shell": true,
"layer-shell-cover-screen": true,
"cssPriority": "user",
"control-center-margin-top": 0,
"control-center-margin-bottom": 0,
"control-center-margin-right":0,
"control-center-margin-left": 0,
"notification-2fa-action": true,
"notification-inline-replies": false,
"notification-body-image-height": 100,
"notification-body-image-width": 200,
"timeout": 10,
"timeout-low": 5,
"timeout-critical": 0,
"fit-to-screen": true,
"relative-timestamps": true,
"control-center-width": 500,
"control-center-height": 600,
"notification-window-width": 500,
"keyboard-shortcuts": true,
"notification-grouping": true,
"image-visibility": "when-available",
"transition-time": 200,
"hide-on-clear": false,
"hide-on-action": true,
"text-empty": "No Notifications",
"script-fail-notify": true,
"scripts": {
"example-script": {
"exec": "echo 'Do something...'",
"urgency": "Normal"
},
"example-action-script": {
"exec": "echo 'Do something actionable!'",
"urgency": "Normal",
"run-on": "action"
}
},
"notification-visibility": {
"example-name": {
"state": "muted",
"urgency": "Low",
"app-name": "Spotify"
}
},
"widgets": [
"inhibitors",
"title",
"dnd",
"notifications"
],
"widget-config": {
"notifications": {
"vexpand": true
},
"inhibitors": {
"text": "Inhibitors",
"button-text": "Clear All",
"clear-all-button": true
},
"title": {
"text": "Notifications",
"clear-all-button": true,
"button-text": "Clear All"
},
"dnd": {
"text": "Do Not Disturb"
},
"label": {
"max-lines": 5,
"text": "Label Text"
},
"mpris": {
"blacklist": [],
"autohide": false,
"show-album-art": "always",
"loop-carousel": false
},
"buttons-grid": {
"buttons-per-row": 7,
"actions": [
{
"label": "直",
"type": "toggle",
"active": true,
"command": "sh -c '[[ $SWAYNC_TOGGLE_STATE == true ]] && nmcli radio wifi on || nmcli radio wifi off'",
"update-command": "sh -c '[[ $(nmcli radio wifi) == \"enabled\" ]] && echo true || echo false'"
}
]
}
}
}

569
config/swaync/style.css Normal file
View file

@ -0,0 +1,569 @@
:root {
--cc-bg: #07090b;
--noti-border-color: #eef7fd;
--noti-bg: #07090b;
--noti-bg-alpha: 0.0;
--noti-bg-darker: #07090b;
--noti-bg-hover: #07090b;
--noti-bg-focus: #07090b;
--noti-close-bg: #1f2830;
--noti-close-bg-hover: #444446;
--text-color: #eef7fd;
--text-color-disabled: rgb(150, 150, 150);
--bg-selected: #1f2830;
--notification-icon-size: 64px;
--notification-app-icon-size: calc(var(--notification-icon-size) / 3);
--notification-group-icon-size: 32px;
--border: 4px solid var(--noti-border-color);
--border-radius: 10px;
--notification-shadow: 0 rgba(0, 0, 0, 0);
--font-size-body: 15px;
--font-size-summary: 16px;
/* Deprecated variables (because of their typos). Keeeping them around for backwards compatibility. */
--hover-tranistion: background 0.15s ease-out-quad;
--group-collapse-tranistion: opacity 100ms ease-out-quad;
--hover-transition: var(--hover-tranistion);
--group-collapse-transition: var(--group-collapse-tranistion);
}
/* Fallback for older CSS themes */
/* Fallback for older CSS themes
@define-color cc-bg #07090b;
@define-color noti-border-color #eef7fd;
@define-color noti-bg rgba(48, 48, 48, 0.8);
@define-color noti-bg-opaque rgb(48, 48, 48);
@define-color noti-bg-darker rgb(38, 38, 38);
@define-color noti-bg-hover rgb(56, 56, 56);
@define-color noti-bg-hover-opaque rgb(56, 56, 56);
@define-color noti-bg-focus rgba(68, 68, 68, 0.6);
@define-color noti-close-bg rgba(255, 255, 255, 0.1);
@define-color noti-close-bg-hover rgba(255, 255, 255, 0.15);
@define-color text-color rgb(255, 255, 255);
@define-color text-color-disabled rgb(150, 150, 150);
@define-color bg-selected rgb(0, 128, 255);
*/
notificationwindow,
blankwindow,
blankwindow {
background: #07090b;
}
.close-button {
/* The notification Close Button */
background: var(--noti-close-bg);
color: var(--text-color);
text-shadow: none;
padding: 0;
border-radius: 20%;
margin-top: 8px;
margin-right: 8px;
box-shadow: none;
border: none;
min-width: 24px;
min-height: 24px;
}
.close-button:hover {
box-shadow: none;
background: var(--noti-close-bg-hover);
transition: var(--hover-tranistion);
border: none;
}
.notification-row {
background: none;
outline: none;
}
.notification-row:focus {
background: var(--noti-bg-focus);
}
.notification-row .notification-background {
padding: 6px 12px;
}
.notification-row .notification-background .notification {
/* The actual notification */
border-radius: var(--border-radius);
border: var(--border);
padding: 0;
transition: var(--hover-tranistion);
background: rgba(var(--noti-bg), var(--noti-bg-alpha));
}
.notification-row .notification-background .notification.low {
/* Low Priority Notification */
}
.notification-row .notification-background .notification.normal {
/* Normal Priority Notification */
}
.notification-row .notification-background .notification.critical {
/* Critical Priority Notification */
}
.notification-row .notification-background .notification .notification-default-action {
/* The large action that also displays the notification summary and body */
padding: 10px;
margin: 0;
box-shadow: none;
background: #07090b;
border: none;
color: var(--text-color);
transition: var(--hover-tranistion);
border-radius: var(--border-radius);
}
.notification-row .notification-background .notification .notification-default-action:hover {
-gtk-icon-filter: none;
background: var(--noti-bg-hover);
}
.notification-row .notification-background .notification .notification-default-action:not(:only-child) {
/* When alternative actions are visible */
border-bottom-left-radius: 0px;
border-bottom-right-radius: 0px;
}
.notification-row .notification-background .notification .notification-default-action .notification-content {
background: #07090b;
border-radius: var(--border-radius);
padding: 0;
}
.notification-row .notification-background .notification .notification-default-action .notification-content .image {
/* Notification Primary Image */
-gtk-icon-filter: none;
-gtk-icon-size: var(--notification-icon-size);
border-radius: 20px;
/* Size in px */
margin: 10px;
}
.notification-row .notification-background .notification .notification-default-action .notification-content .app-icon {
/* Notification app icon (only visible when the primary image is set) */
-gtk-icon-filter: none;
-gtk-icon-size: var(--notification-app-icon-size);
-gtk-icon-shadow: 0 1px 4px black;
margin: 5px;
}
.notification-row .notification-background .notification .notification-default-action .notification-content .text-box label {
/* Fixes base GTK 4 CSS setting a filter of opacity 50% for some odd reason */
filter: none;
}
.notification-row .notification-background .notification .notification-default-action .notification-content .text-box .summary {
/* Notification summary/title */
font-size: var(--font-size-summary);
font-weight: bold;
background: #07090b;
color: var(--text-color);
text-shadow: none;
}
.notification-row .notification-background .notification .notification-default-action .notification-content .text-box .time {
/* Notification time-ago */
font-size: var(--font-size-summary);
font-weight: bold;
background: #07090b;
color: var(--text-color);
text-shadow: none;
margin-right: 30px;
}
.notification-row .notification-background .notification .notification-default-action .notification-content .text-box .body {
/* Notification body */
font-size: var(--font-size-body);
font-weight: normal;
background: #07090b;
color: var(--text-color);
text-shadow: none;
margin: 10px;
padding: 10px;
}
.notification-row .notification-background .notification .notification-default-action .notification-content progressbar {
/* The optional notification progress bar */
margin-top: 20px;
}
.notification-row .notification-background .notification .notification-default-action .notification-content .body-image {
/* The "extra" optional bottom notification image */
margin-top: 4px;
background-color: white;
-gtk-icon-filter: none;
}
.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply {
/* The inline reply section */
margin-top: 4px;
}
.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply .inline-reply-entry {
background: var(--noti-bg-darker);
color: var(--text-color);
caret-color: var(--text-color);
border: var(--border);
border-radius: var(--border-radius);
}
.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply .inline-reply-button {
margin-left: 4px;
background: rgba(var(--noti-bg), var(--noti-bg-alpha));
border: var(--border);
border-radius: var(--border-radius);
color: var(--text-color);
}
.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply .inline-reply-button:disabled {
background: initial;
color: var(--text-color-disabled);
border: var(--border);
border-color: #07090b;
}
.notification-row .notification-background .notification .notification-default-action .notification-content .inline-reply .inline-reply-button:hover {
background: var(--noti-bg-hover);
}
.notification-row .notification-background .notification .notification-alt-actions {
background: none;
border-bottom-left-radius: var(--border-radius);
border-bottom-right-radius: var(--border-radius);
padding: 4px;
}
.notification-row .notification-background .notification .notification-action {
/* The alternative actions below the default action */
margin: 4px;
padding: 0;
}
.notification-row .notification-background .notification .notification-action>button {
border-radius: var(--border-radius);
color: var(--text-color);
}
.notification-group {
/* Styling only for Grouped Notifications */
transition: opacity 200ms ease-in-out;
/* The groups close button */
}
.notification-group:focus {
background: var(--noti-bg-focus);
}
.notification-group.low {
/* Low Priority Group */
}
.notification-group.normal {
/* Low Priority Group */
}
.notification-group.critical {
/* Low Priority Group */
}
.notification-group .notification-group-close-button .close-button {
margin: 20px 20px;
}
.notification-group .notification-group-buttons,
.notification-group .notification-group-headers {
margin: 0 16px;
color: var(--text-color);
}
.notification-group .notification-group-headers {
/* Notification Group Headers */
}
.notification-group .notification-group-headers .notification-group-icon {
color: var(--text-color);
-gtk-icon-size: var(--notification-group-icon-size);
}
.notification-group .notification-group-headers .notification-group-header {
color: var(--text-color);
}
.notification-group .notification-group-buttons {
/* Notification Group Buttons */
}
.notification-group.collapsed {
/* When another group is expanded, lower the opacity of the collapsed ones */
}
.notification-group.collapsed.not-expanded {
opacity: 1.0;
}
.notification-group.collapsed .notification-row .notification {
background-color: rgba(var(--noti-bg), 1);
}
.notification-group.collapsed .notification-row:not(:last-child) {
/* Top notification in stack */
/* Set lower stacked notifications opacity to 0 */
}
.notification-group.collapsed .notification-row:not(:last-child) .notification-action,
.notification-group.collapsed .notification-row:not(:last-child) .notification-default-action {
opacity: 0;
}
.notification-group.collapsed:hover .notification-row:not(:only-child) .notification {
background-color: var(--noti-bg-hover);
}
.control-center {
/* The Control Center which contains the old notifications + widgets */
background: var(--cc-bg);
color: var(--text-color);
border-radius: var(--border-radius);
padding: 10px;
margin: 10px;
border: 4px solid var(--noti-border-color);
}
.control-center .control-center-list-placeholder {
/* The placeholder when there are no notifications */
opacity: 1.0;
}
.control-center .control-center-list {
/* List of notifications */
background: #07090b;
}
.control-center .control-center-list .notification {
box-shadow: var(--notification-shadow);
}
.control-center .control-center-list .notification .notification-default-action,
.control-center .control-center-list .notification .notification-action {
transition: var(--group-collapse-tranistion), var(--hover-tranistion);
}
.control-center .control-center-list .notification .notification-default-action:hover,
.control-center .control-center-list .notification .notification-action:hover {
background-color: var(--noti-bg-hover);
}
.blank-window {
/* Window behind control center and on all other monitors */
background: transparent;
}
.floating-notifications {
background: transparent;
}
.floating-notifications .notification {
box-shadow: none;
}
/*** Widgets ***/
.widget {
margin: 8px;
padding: 8px;
border-radius: var(--border-radius);
}
/* Title widget */
.widget-title>label {
margin-right: 8px;
font-size: 1.5rem;
}
.widget-title>button {
margin-left: 8px;
border-radius: var(--border-radius);
}
/* DND widget */
.widget-dnd label {
color: var(--text-color);
margin-right: 8px;
font-size: 1.1rem;
}
.widget-dnd switch {
border-radius: var(--border-radius);
margin-left: 8px;
}
.widget-dnd switch slider {
border-radius: var(--border-radius);
}
/* Label widget */
.widget-label>label {
font-size: 1.1rem;
}
/* Mpris widget */
:root {
--mpris-album-art-overlay: rgba(0, 0, 0, 0.55);
--mpris-button-hover: rgba(0, 0, 0, 0.5);
--mpris-album-art-icon-size: 96px;
--mpris-album-art-shadow: 0px 0px 10px rgba(0, 0, 0, 0.75);
}
.widget-mpris {
padding: 0;
/* The parent to all players */
}
.widget-mpris .widget-mpris-player {
margin: 16px 20px;
border-radius: var(--border-radius);
box-shadow: var(--mpris-album-art-shadow);
}
.widget-mpris .widget-mpris-player .mpris-background {
filter: blur(10px);
}
.widget-mpris .widget-mpris-player .mpris-overlay {
padding: 16px;
background-color: var(--mpris-album-art-overlay);
}
.widget-mpris .widget-mpris-player .mpris-overlay button:hover {
/* The media player buttons (play, pause, next, etc...) */
background: var(--noti-bg-hover);
}
.widget-mpris .widget-mpris-player .mpris-overlay .widget-mpris-album-art {
border-radius: var(--border-radius);
box-shadow: var(--mpris-album-art-shadow);
-gtk-icon-size: var(--mpris-album-art-icon-size);
}
.widget-mpris .widget-mpris-player .mpris-overlay .widget-mpris-title {
font-weight: bold;
font-size: 1.25rem;
}
.widget-mpris .widget-mpris-player .mpris-overlay .widget-mpris-subtitle {
font-size: 1.1rem;
}
.widget-mpris .widget-mpris-player .mpris-overlay>box>button {
/* Change player control buttons */
}
.widget-mpris .widget-mpris-player .mpris-overlay>box>button:hover {
background-color: var(--mpris-button-hover);
}
.widget-mpris>box>button {
/* Change player side buttons */
}
.widget-mpris>box>button:disabled {
/* Change player side buttons insensitive */
}
/* Buttons widget */
.widget-buttons-grid flowboxchild>button {
border-radius: var(--border-radius);
}
.widget-buttons-grid flowboxchild>button.toggle:checked {
/* style given to the active toggle button */
}
/* Menubar widget */
.widget-menubar {
/* The revealer buttons */
/* .AnyName { Name defined in config after #
background-color: rgba(var(--noti-bg), 1.0);
padding: 8px;
margin: 8px;
border-radius: 12px;
}
.AnyName>button {
background: transparent;
border: none;
}
.AnyName>button:hover {
background-color: var(--noti-bg-hover);
} */
}
.widget-menubar>.menu-button-bar {
/* The left button container */
/* The right button container */
/* The left and right button container */
}
.widget-menubar>.menu-button-bar>.start {
margin-left: 8px;
}
.widget-menubar>.menu-button-bar>.end {
margin-right: 8px;
}
.widget-menubar>.menu-button-bar>.widget-menubar-container button {
border-radius: var(--border-radius);
margin: 0 4px;
}
.widget-menubar>revealer * {
margin-top: 8px;
}
.widget-menubar>revealer * button {
border-radius: var(--border-radius);
margin: 8px;
margin-top: 0;
}
.widget-menubar>revealer * button:last-child {
margin-bottom: 0;
}
/* Volume widget */
:root {
--widget-volume-row-icon-size: 24px;
}
/* Each row app icon */
.widget-volume row image {
-gtk-icon-size: var(--widget-volume-row-icon-size);
}
.per-app-volume {
background-color: var(--noti-bg-alt);
margin: 8px;
margin-bottom: 0;
border-radius: var(--border-radius);
}
/* Slider widget */
.widget-slider label {
font-size: inherit;
}
/* Backlight widget */
/* Inhibitors widget */
.widget-inhibitors>label {
margin-right: 8px;
font-size: 1.5rem;
}
.widget-inhibitors>button {
margin-left: 8px;
border-radius: var(--border-radius);
}

51
config/swayosd/style.css Normal file
View file

@ -0,0 +1,51 @@
window#osd {
border-radius: 20px;
border: 4px solid #eef7fd;
background: #07090b;
#container {
margin: 16px;
}
image,
label {
color: #eef7fd;
}
progressbar:disabled,
image:disabled {
opacity: 1.0;
}
progressbar,
segmentedprogress {
min-height: 6px;
border-radius: 999px;
background: #d2dee7;
border: none;
}
trough,
segment {
min-height: inherit;
border-radius: inherit;
border: none;
background: #07090b;
}
progress,
segment.active {
min-height: inherit;
border-radius: inherit;
border: none;
background: #eef7fd;
}
segment {
margin-left: 8px;
&:first-child {
margin-left: 0;
}
}
}

172
config/termusic/tui.toml Normal file
View 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 = ""

Some files were not shown because too many files have changed in this diff Show more