Compare commits
10 commits
e18d6cba19
...
9923f42b6a
| Author | SHA1 | Date | |
|---|---|---|---|
| 9923f42b6a | |||
| 46faf5b8de | |||
| 4779ba49c0 | |||
| f8fae463a8 | |||
| 2d266ca85b | |||
| b968a1466f | |||
| d1a119cbae | |||
| 11166e082c | |||
| fe0aa07f3c | |||
| 68cd6cd58e |
107 changed files with 6389 additions and 4691 deletions
|
|
@ -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
|
||||
1190
.config/apps-list.md
1190
.config/apps-list.md
File diff suppressed because it is too large
Load diff
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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;
|
||||
|
|
@ -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; }
|
||||
}
|
||||
|
|
@ -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; }
|
||||
}
|
||||
|
|
@ -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" }
|
||||
}
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
{
|
||||
"export-settings-ini": true,
|
||||
"export-gtkrc-20": true,
|
||||
"export-index-theme": true,
|
||||
"export-xsettingsd": true,
|
||||
"export-gtk4-symlinks": true
|
||||
}
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
[window]
|
||||
width=500
|
||||
height=400
|
||||
sinkInputType=0
|
||||
sourceOutputType=0
|
||||
sinkType=0
|
||||
sourceType=0
|
||||
showVolumeMeters=1
|
||||
hideUnavailableCardProfiles=0
|
||||
|
|
@ -1 +0,0 @@
|
|||
en_US
|
||||
|
|
@ -1 +0,0 @@
|
|||
set selection-clipboard clipboard
|
||||
33
README.md
33
README.md
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
1762
apps-list.md
1762
apps-list.md
File diff suppressed because it is too large
Load diff
|
|
@ -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
55
config/clipse/config.json
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
{
|
||||
"allowDuplicates": false,
|
||||
"historyFile": "clipboard_history.json",
|
||||
"maxHistory": 1000000,
|
||||
"deleteAfter": 0,
|
||||
"logFile": "clipse.log",
|
||||
"pollInterval": 50,
|
||||
"maxEntryLength": 65,
|
||||
"themeFile": "custom_theme.json",
|
||||
"tempDir": "tmp_files",
|
||||
"keyBindings": {
|
||||
"choose": "enter",
|
||||
"clearSelected": "S",
|
||||
"down": "down",
|
||||
"end": "end",
|
||||
"filter": "/",
|
||||
"forceQuit": "Q",
|
||||
"home": "home",
|
||||
"more": "?",
|
||||
"nextPage": "right",
|
||||
"prevPage": "left",
|
||||
"preview": " ",
|
||||
"quit": "esc",
|
||||
"remove": "backspace",
|
||||
"selectDown": "shift+down",
|
||||
"selectSingle": "s",
|
||||
"selectUp": "shift+up",
|
||||
"togglePin": "p",
|
||||
"togglePinned": "tab",
|
||||
"up": "up",
|
||||
"yankFilter": "ctrl+s"
|
||||
},
|
||||
"imageDisplay": {
|
||||
"type": "kitty",
|
||||
"scaleX": 18,
|
||||
"scaleY": 20,
|
||||
"heightCut": 20
|
||||
},
|
||||
"excludedApps": [
|
||||
"1Password",
|
||||
"Bitwarden",
|
||||
"KeePassXC",
|
||||
"LastPass",
|
||||
"Dashlane",
|
||||
"Password Safe",
|
||||
"Keychain Access"
|
||||
],
|
||||
"autoPaste": {
|
||||
"enabled": false,
|
||||
"keybind": "ctrl+v",
|
||||
"buffer": 10
|
||||
},
|
||||
"enableMouse": true,
|
||||
"enableDescription": true
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"useCustomTheme": true,
|
||||
"UseCustom": true,
|
||||
"TitleFore": "#07090B",
|
||||
"TitleBack": "#A1F7C6",
|
||||
"TitleInfo": "#25C39F",
|
||||
|
|
@ -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",
|
||||
7
config/fish/completions/fisher.fish
Normal file
7
config/fish/completions/fisher.fish
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
complete --command fisher --exclusive --long help --description "Print help"
|
||||
complete --command fisher --exclusive --long version --description "Print version"
|
||||
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments install --description "Install plugins"
|
||||
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments update --description "Update installed plugins"
|
||||
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments remove --description "Remove installed plugins"
|
||||
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments list --description "List installed plugins matching regex"
|
||||
complete --command fisher --exclusive --condition "__fish_seen_subcommand_from update remove" --arguments "(fisher list)"
|
||||
8
config/fish/completions/fzf_configure_bindings.fish
Normal file
8
config/fish/completions/fzf_configure_bindings.fish
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
complete fzf_configure_bindings --no-files
|
||||
complete fzf_configure_bindings --long help --short h --description "Print help" --condition "not __fish_seen_argument --help -h"
|
||||
complete fzf_configure_bindings --long directory --description "Change the key binding for Search Directory" --condition "not __fish_seen_argument --directory"
|
||||
complete fzf_configure_bindings --long git_log --description "Change the key binding for Search Git Log" --condition "not __fish_seen_argument --git_log"
|
||||
complete fzf_configure_bindings --long git_status --description "Change the key binding for Search Git Status" --condition "not __fish_seen_argument --git_status"
|
||||
complete fzf_configure_bindings --long history --description "Change the key binding for Search History" --condition "not __fish_seen_argument --history"
|
||||
complete fzf_configure_bindings --long processes --description "Change the key binding for Search Processes" --condition "not __fish_seen_argument --processes"
|
||||
complete fzf_configure_bindings --long variables --description "Change the key binding for Search Variables" --condition "not __fish_seen_argument --variables"
|
||||
14
config/fish/conf.d/fish_frozen_key_bindings.fish
Normal file
14
config/fish/conf.d/fish_frozen_key_bindings.fish
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
# This file was created by fish when upgrading to version 4.3, to migrate
|
||||
# the 'fish_key_bindings' variable from its old default scope (universal)
|
||||
# to its new default scope (global). We recommend you delete this file
|
||||
# and configure key bindings in ~/.config/fish/config.fish if needed.
|
||||
|
||||
# set --global fish_key_bindings fish_default_key_bindings
|
||||
|
||||
# Prior to version 4.3, fish shipped an event handler that runs
|
||||
# `set --universal fish_key_bindings fish_default_key_bindings`
|
||||
# whenever the fish_key_bindings variable is erased.
|
||||
# This means that as long as any fish < 4.3 is still running on this system,
|
||||
# we cannot complete the migration.
|
||||
# As a workaround, erase the universal variable at every shell startup.
|
||||
set --erase --universal fish_key_bindings
|
||||
37
config/fish/conf.d/fish_frozen_theme.fish
Normal file
37
config/fish/conf.d/fish_frozen_theme.fish
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
# This file was created by fish when upgrading to version 4.3, to migrate
|
||||
# theme variables from universal to global scope.
|
||||
# Don't edit this file, as it will be written by the web-config tool (`fish_config`).
|
||||
# To customize your theme, delete this file and see
|
||||
# help interactive#syntax-highlighting
|
||||
# or
|
||||
# man fish-interactive | less +/^SYNTAX.HIGHLIGHTING
|
||||
# for appropriate commands to add to ~/.config/fish/config.fish instead.
|
||||
# See also the release notes for fish 4.3.0 (run `help relnotes`).
|
||||
|
||||
set --global fish_color_autosuggestion brblack
|
||||
set --global fish_color_cancel -r
|
||||
set --global fish_color_command normal
|
||||
set --global fish_color_comment red
|
||||
set --global fish_color_cwd green
|
||||
set --global fish_color_cwd_root red
|
||||
set --global fish_color_end green
|
||||
set --global fish_color_error brred
|
||||
set --global fish_color_escape brcyan
|
||||
set --global fish_color_history_current --bold
|
||||
set --global fish_color_host normal
|
||||
set --global fish_color_host_remote yellow
|
||||
set --global fish_color_normal normal
|
||||
set --global fish_color_operator brcyan
|
||||
set --global fish_color_param cyan
|
||||
set --global fish_color_quote yellow
|
||||
set --global fish_color_redirection cyan --bold
|
||||
set --global fish_color_search_match white --background=brblack
|
||||
set --global fish_color_selection white --bold --background=brblack
|
||||
set --global fish_color_status red
|
||||
set --global fish_color_user brgreen
|
||||
set --global fish_color_valid_path --underline
|
||||
set --global fish_pager_color_completion normal
|
||||
set --global fish_pager_color_description yellow -i
|
||||
set --global fish_pager_color_prefix normal --bold --underline
|
||||
set --global fish_pager_color_progress brwhite --background=cyan
|
||||
set --global fish_pager_color_selected_background -r
|
||||
27
config/fish/conf.d/fzf.fish
Normal file
27
config/fish/conf.d/fzf.fish
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
# fzf.fish is only meant to be used in interactive mode. If not in interactive mode and not in CI, skip the config to speed up shell startup
|
||||
if not status is-interactive && test "$CI" != true
|
||||
exit
|
||||
end
|
||||
|
||||
# Because of scoping rules, to capture the shell variables exactly as they are, we must read
|
||||
# them before even executing _fzf_search_variables. We use psub to store the
|
||||
# variables' info in temporary files and pass in the filenames as arguments.
|
||||
# This variable is global so that it can be referenced by fzf_configure_bindings and in tests
|
||||
set --global _fzf_search_vars_command '_fzf_search_variables (set --show | psub) (set --names | psub)'
|
||||
|
||||
# Install the default bindings, which are mnemonic and minimally conflict with fish's preset bindings
|
||||
fzf_configure_bindings
|
||||
|
||||
# Doesn't erase autoloaded _fzf_* functions because they are not easily accessible once key bindings are erased
|
||||
function _fzf_uninstall --on-event fzf_uninstall
|
||||
_fzf_uninstall_bindings
|
||||
|
||||
set --erase _fzf_search_vars_command
|
||||
functions --erase _fzf_uninstall _fzf_migration_message _fzf_uninstall_bindings fzf_configure_bindings
|
||||
complete --erase fzf_configure_bindings
|
||||
|
||||
set_color cyan
|
||||
echo "fzf.fish uninstalled."
|
||||
echo "You may need to manually remove fzf_configure_bindings from your config.fish if you were using custom key bindings."
|
||||
set_color normal
|
||||
end
|
||||
2
config/fish/conf.d/nix.fish
Normal file
2
config/fish/conf.d/nix.fish
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
if test -e /home/unconfer/.nix-profile/etc/profile.d/nix.fish; . /home/unconfer/.nix-profile/etc/profile.d/nix.fish; end # added by Nix installer
|
||||
|
|
@ -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
2
config/fish/fish_plugins
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
jorgebucaran/fisher
|
||||
patrickf1/fzf.fish
|
||||
11
config/fish/fish_variables
Normal file
11
config/fish/fish_variables
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
# This file contains fish universal variable definitions.
|
||||
# VERSION: 3.0
|
||||
SETUVAR --export EDITOR:nvim
|
||||
SETUVAR __fish_initialized:4300
|
||||
SETUVAR _fisher_jorgebucaran_2F_fisher_files:\x7e/\x2econfig/fish/functions/fisher\x2efish\x1e\x7e/\x2econfig/fish/completions/fisher\x2efish
|
||||
SETUVAR _fisher_patrickf1_2F_fzf_2E_fish_files:\x7e/\x2econfig/fish/functions/_fzf_configure_bindings_help\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_extract_var_info\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_preview_changed_file\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_preview_file\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_report_diff_type\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_report_file_type\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_directory\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_git_log\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_git_status\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_history\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_processes\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_variables\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_wrapper\x2efish\x1e\x7e/\x2econfig/fish/functions/fzf_configure_bindings\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/fzf\x2efish\x1e\x7e/\x2econfig/fish/completions/fzf_configure_bindings\x2efish
|
||||
SETUVAR _fisher_plugins:jorgebucaran/fisher\x1epatrickf1/fzf\x2efish
|
||||
SETUVAR _fisher_upgraded_to_4_4:\x1d
|
||||
SETUVAR fish_cursor_default:block
|
||||
SETUVAR fish_cursor_replace_one:underscore
|
||||
SETUVAR fish_greeting:\x1d
|
||||
44
config/fish/functions/_fzf_configure_bindings_help.fish
Normal file
44
config/fish/functions/_fzf_configure_bindings_help.fish
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
function _fzf_configure_bindings_help --description "Prints the help message for fzf_configure_bindings."
|
||||
echo "\
|
||||
USAGE:
|
||||
fzf_configure_bindings [--COMMAND=[KEY_SEQUENCE]...]
|
||||
|
||||
DESCRIPTION
|
||||
fzf_configure_bindings installs key bindings for fzf.fish's commands and erases any bindings it
|
||||
previously installed. It installs bindings for both default and insert modes. fzf.fish executes
|
||||
it without options on fish startup to install the out-of-the-box key bindings.
|
||||
|
||||
By default, commands are bound to a mnemonic key sequence, shown below. Each command's binding
|
||||
can be configured using a namesake corresponding option:
|
||||
COMMAND | DEFAULT KEY SEQUENCE | CORRESPONDING OPTION
|
||||
Search Directory | Ctrl+Alt+F (F for file) | --directory
|
||||
Search Git Log | Ctrl+Alt+L (L for log) | --git_log
|
||||
Search Git Status | Ctrl+Alt+S (S for status) | --git_status
|
||||
Search History | Ctrl+R (R for reverse) | --history
|
||||
Search Processes | Ctrl+Alt+P (P for process) | --processes
|
||||
Search Variables | Ctrl+V (V for variable) | --variables
|
||||
Override a command's binding by specifying its corresponding option with the desired key
|
||||
sequence using fish's key name syntax (e.g. ctrl-f, ctrl-alt-v). Disable a command's binding
|
||||
by specifying its corresponding option with no value.
|
||||
|
||||
Because fzf_configure_bindings erases bindings it previously installed, it can be cleanly
|
||||
executed multiple times. Once the desired fzf_configure_bindings command has been found, add it
|
||||
to your config.fish in order to persist the customized bindings.
|
||||
|
||||
In terms of validation, fzf_configure_bindings fails if passed unknown options. It expects an
|
||||
equals sign between an option's name and value. However, it does not validate key sequences.
|
||||
|
||||
Pass -h or --help to print this help message and exit.
|
||||
|
||||
EXAMPLES
|
||||
Default bindings but bind Search Directory to Ctrl+F and Search Variables to Ctrl+Alt+V
|
||||
\$ fzf_configure_bindings --directory=ctrl-f --variables=ctrl-alt-v
|
||||
Default bindings but disable Search History
|
||||
\$ fzf_configure_bindings --history=
|
||||
An agglomeration of different options
|
||||
\$ fzf_configure_bindings --git_status=ctrl-g --history=ctrl-h --variables= --processes=
|
||||
|
||||
SEE Also
|
||||
To learn more about fish key bindings, see bind(1) and fish_key_reader(1).
|
||||
"
|
||||
end
|
||||
13
config/fish/functions/_fzf_extract_var_info.fish
Normal file
13
config/fish/functions/_fzf_extract_var_info.fish
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
# helper function for _fzf_search_variables
|
||||
function _fzf_extract_var_info --argument-names variable_name set_show_output --description "Extract and reformat lines pertaining to \$variable_name from \$set_show_output."
|
||||
# Extract only the lines about the variable, all of which begin with either
|
||||
# $variable_name: ...or... $variable_name[
|
||||
string match --regex "^\\\$$variable_name(?::|\[).*" <$set_show_output |
|
||||
# Strip the variable name prefix, including ": " for scope info lines
|
||||
string replace --regex "^\\\$$variable_name(?:: )?" '' |
|
||||
# Distill the lines of values, replacing...
|
||||
# [1]: |value|
|
||||
# ...with...
|
||||
# [1] value
|
||||
string replace --regex ": \|(.*)\|" ' $1'
|
||||
end
|
||||
49
config/fish/functions/_fzf_preview_changed_file.fish
Normal file
49
config/fish/functions/_fzf_preview_changed_file.fish
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
# helper for _fzf_search_git_status
|
||||
# arg should be a line from git status --short, e.g.
|
||||
# MM functions/_fzf_preview_changed_file.fish
|
||||
# D README.md
|
||||
# R LICENSE -> "New License"
|
||||
function _fzf_preview_changed_file --argument-names path_status --description "Show the git diff of the given file."
|
||||
# remove quotes because they'll be interpreted literally by git diff
|
||||
# no need to requote when referencing $path because fish does not perform word splitting
|
||||
# https://fishshell.com/docs/current/fish_for_bash_users.html
|
||||
set -f path (string unescape (string sub --start 4 $path_status))
|
||||
# first letter of short format shows index, second letter shows working tree
|
||||
# https://git-scm.com/docs/git-status/2.35.0#_short_format
|
||||
set -f index_status (string sub --length 1 $path_status)
|
||||
set -f working_tree_status (string sub --start 2 --length 1 $path_status)
|
||||
|
||||
set -f diff_opts --color=always
|
||||
|
||||
if test $index_status = '?'
|
||||
_fzf_report_diff_type Untracked
|
||||
_fzf_preview_file $path
|
||||
else if contains {$index_status}$working_tree_status DD AU UD UA DU AA UU
|
||||
# Unmerged statuses taken directly from git status help's short format table
|
||||
# Unmerged statuses are mutually exclusive with other statuses, so if we see
|
||||
# these, then safe to assume the path is unmerged
|
||||
_fzf_report_diff_type Unmerged
|
||||
git diff $diff_opts -- $path
|
||||
else
|
||||
if test $index_status != ' '
|
||||
_fzf_report_diff_type Staged
|
||||
|
||||
# renames are only detected in the index, never working tree, so only need to test for it here
|
||||
# https://stackoverflow.com/questions/73954214
|
||||
if test $index_status = R
|
||||
# diff the post-rename path with the original path, otherwise the diff will show the entire file as being added
|
||||
set -f orig_and_new_path (string split --max 1 -- ' -> ' $path)
|
||||
git diff --staged $diff_opts -- $orig_and_new_path[1] $orig_and_new_path[2]
|
||||
# path currently has the form of "original -> current", so we need to correct it before it's used below
|
||||
set path $orig_and_new_path[2]
|
||||
else
|
||||
git diff --staged $diff_opts -- $path
|
||||
end
|
||||
end
|
||||
|
||||
if test $working_tree_status != ' '
|
||||
_fzf_report_diff_type Unstaged
|
||||
git diff $diff_opts -- $path
|
||||
end
|
||||
end
|
||||
end
|
||||
43
config/fish/functions/_fzf_preview_file.fish
Normal file
43
config/fish/functions/_fzf_preview_file.fish
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
# helper function for _fzf_search_directory and _fzf_search_git_status
|
||||
function _fzf_preview_file --description "Print a preview for the given file based on its file type."
|
||||
# because there's no way to guarantee that _fzf_search_directory passes the path to _fzf_preview_file
|
||||
# as one argument, we collect all the arguments into one single variable and treat that as the path
|
||||
set -f file_path $argv
|
||||
|
||||
if test -L "$file_path" # symlink
|
||||
# notify user and recurse on the target of the symlink, which can be any of these file types
|
||||
set -l target_path (realpath "$file_path")
|
||||
|
||||
set_color yellow
|
||||
echo "'$file_path' is a symlink to '$target_path'."
|
||||
set_color normal
|
||||
|
||||
_fzf_preview_file "$target_path"
|
||||
else if test -f "$file_path" # regular file
|
||||
if set --query fzf_preview_file_cmd
|
||||
# need to escape quotes to make sure eval receives file_path as a single arg
|
||||
eval "$fzf_preview_file_cmd '$file_path'"
|
||||
else
|
||||
bat --style=numbers --color=always "$file_path"
|
||||
end
|
||||
else if test -d "$file_path" # directory
|
||||
if set --query fzf_preview_dir_cmd
|
||||
# see above
|
||||
eval "$fzf_preview_dir_cmd '$file_path'"
|
||||
else
|
||||
# -A list hidden files as well, except for . and ..
|
||||
# -F helps classify files by appending symbols after the file name
|
||||
command ls -A -F "$file_path"
|
||||
end
|
||||
else if test -c "$file_path"
|
||||
_fzf_report_file_type "$file_path" "character device file"
|
||||
else if test -b "$file_path"
|
||||
_fzf_report_file_type "$file_path" "block device file"
|
||||
else if test -S "$file_path"
|
||||
_fzf_report_file_type "$file_path" socket
|
||||
else if test -p "$file_path"
|
||||
_fzf_report_file_type "$file_path" "named pipe"
|
||||
else
|
||||
echo "$file_path doesn't exist." >&2
|
||||
end
|
||||
end
|
||||
18
config/fish/functions/_fzf_report_diff_type.fish
Normal file
18
config/fish/functions/_fzf_report_diff_type.fish
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
# helper for _fzf_preview_changed_file
|
||||
# prints out something like
|
||||
# ╭────────╮
|
||||
# │ Staged │
|
||||
# ╰────────╯
|
||||
function _fzf_report_diff_type --argument-names diff_type --description "Print a distinct colored header meant to preface a git patch."
|
||||
# number of "-" to draw is the length of the string to box + 2 for padding
|
||||
set -f repeat_count (math 2 + (string length $diff_type))
|
||||
set -f line (string repeat --count $repeat_count ─)
|
||||
set -f top_border ╭$line╮
|
||||
set -f btm_border ╰$line╯
|
||||
|
||||
set_color yellow
|
||||
echo $top_border
|
||||
echo "│ $diff_type │"
|
||||
echo $btm_border
|
||||
set_color normal
|
||||
end
|
||||
6
config/fish/functions/_fzf_report_file_type.fish
Normal file
6
config/fish/functions/_fzf_report_file_type.fish
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
# helper function for _fzf_preview_file
|
||||
function _fzf_report_file_type --argument-names file_path file_type --description "Explain the file type for a file."
|
||||
set_color red
|
||||
echo "Cannot preview '$file_path': it is a $file_type."
|
||||
set_color normal
|
||||
end
|
||||
32
config/fish/functions/_fzf_search_directory.fish
Normal file
32
config/fish/functions/_fzf_search_directory.fish
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
function _fzf_search_directory --description "Search the current directory. Replace the current token with the selected file paths."
|
||||
# Directly use fd binary to avoid output buffering delay caused by a fd alias, if any.
|
||||
# Debian-based distros install fd as fdfind and the fd package is something else, so
|
||||
# check for fdfind first. Fall back to "fd" for a clear error message.
|
||||
set -f fd_cmd (command -v fdfind || command -v fd || echo "fd")
|
||||
set -f --append fd_cmd --color=always $fzf_fd_opts
|
||||
|
||||
set -f fzf_arguments --multi --ansi $fzf_directory_opts
|
||||
set -f token (commandline --current-token)
|
||||
# expand any variables or leading tilde (~) in the token
|
||||
set -f expanded_token (eval echo -- $token)
|
||||
# unescape token because it's already quoted so backslashes will mess up the path
|
||||
set -f unescaped_exp_token (string unescape -- $expanded_token)
|
||||
|
||||
# If the current token is a directory and has a trailing slash,
|
||||
# then use it as fd's base directory.
|
||||
if string match --quiet -- "*/" $unescaped_exp_token && test -d "$unescaped_exp_token"
|
||||
set --append fd_cmd --base-directory=$unescaped_exp_token
|
||||
# use the directory name as fzf's prompt to indicate the search is limited to that directory
|
||||
set --prepend fzf_arguments --prompt="Directory $unescaped_exp_token> " --preview="_fzf_preview_file $expanded_token{}"
|
||||
set -f file_paths_selected $unescaped_exp_token($fd_cmd 2>/dev/null | _fzf_wrapper $fzf_arguments)
|
||||
else
|
||||
set --prepend fzf_arguments --prompt="Directory> " --query="$unescaped_exp_token" --preview='_fzf_preview_file {}'
|
||||
set -f file_paths_selected ($fd_cmd 2>/dev/null | _fzf_wrapper $fzf_arguments)
|
||||
end
|
||||
|
||||
if test $status -eq 0
|
||||
commandline --current-token --replace -- (string escape -- $file_paths_selected | string join ' ')
|
||||
end
|
||||
|
||||
commandline --function repaint
|
||||
end
|
||||
36
config/fish/functions/_fzf_search_git_log.fish
Normal file
36
config/fish/functions/_fzf_search_git_log.fish
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
function _fzf_search_git_log --description "Search the output of git log and preview commits. Replace the current token with the selected commit hash."
|
||||
if not git rev-parse --git-dir >/dev/null 2>&1
|
||||
echo '_fzf_search_git_log: Not in a git repository.' >&2
|
||||
else
|
||||
if not set --query fzf_git_log_format
|
||||
# %h gives you the abbreviated commit hash, which is useful for saving screen space, but we will have to expand it later below
|
||||
set -f fzf_git_log_format '%C(bold blue)%h%C(reset) - %C(cyan)%ad%C(reset) %C(yellow)%d%C(reset) %C(normal)%s%C(reset) %C(dim normal)[%an]%C(reset)'
|
||||
end
|
||||
|
||||
set -f preview_cmd 'git show --color=always --stat --patch {1}'
|
||||
if set --query fzf_diff_highlighter
|
||||
set preview_cmd "$preview_cmd | $fzf_diff_highlighter"
|
||||
end
|
||||
|
||||
set -f selected_log_lines (
|
||||
git log --no-show-signature --color=always --format=format:$fzf_git_log_format --date=short | \
|
||||
_fzf_wrapper --ansi \
|
||||
--multi \
|
||||
--scheme=history \
|
||||
--prompt="Git Log> " \
|
||||
--preview=$preview_cmd \
|
||||
--query=(commandline --current-token) \
|
||||
$fzf_git_log_opts
|
||||
)
|
||||
if test $status -eq 0
|
||||
for line in $selected_log_lines
|
||||
set -f abbreviated_commit_hash (string split --field 1 " " $line)
|
||||
set -f full_commit_hash (git rev-parse $abbreviated_commit_hash)
|
||||
set -f --append commit_hashes $full_commit_hash
|
||||
end
|
||||
commandline --current-token --replace (string join ' ' $commit_hashes)
|
||||
end
|
||||
end
|
||||
|
||||
commandline --function repaint
|
||||
end
|
||||
41
config/fish/functions/_fzf_search_git_status.fish
Normal file
41
config/fish/functions/_fzf_search_git_status.fish
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
function _fzf_search_git_status --description "Search the output of git status. Replace the current token with the selected file paths."
|
||||
if not git rev-parse --git-dir >/dev/null 2>&1
|
||||
echo '_fzf_search_git_status: Not in a git repository.' >&2
|
||||
else
|
||||
set -f preview_cmd '_fzf_preview_changed_file {}'
|
||||
if set --query fzf_diff_highlighter
|
||||
set preview_cmd "$preview_cmd | $fzf_diff_highlighter"
|
||||
end
|
||||
|
||||
set -f selected_paths (
|
||||
# Pass configuration color.status=always to force status to use colors even though output is sent to a pipe
|
||||
git -c color.status=always status --short |
|
||||
_fzf_wrapper --ansi \
|
||||
--multi \
|
||||
--prompt="Git Status> " \
|
||||
--query=(commandline --current-token) \
|
||||
--preview=$preview_cmd \
|
||||
--nth="2.." \
|
||||
$fzf_git_status_opts
|
||||
)
|
||||
if test $status -eq 0
|
||||
# git status --short automatically escapes the paths of most files for us so not going to bother trying to handle
|
||||
# the few edges cases of weird file names that should be extremely rare (e.g. "this;needs;escaping")
|
||||
set -f cleaned_paths
|
||||
|
||||
for path in $selected_paths
|
||||
if test (string sub --length 1 $path) = R
|
||||
# path has been renamed and looks like "R LICENSE -> LICENSE.md"
|
||||
# extract the path to use from after the arrow
|
||||
set --append cleaned_paths (string split -- "-> " $path)[-1]
|
||||
else
|
||||
set --append cleaned_paths (string sub --start=4 $path)
|
||||
end
|
||||
end
|
||||
|
||||
commandline --current-token --replace -- (string join ' ' $cleaned_paths)
|
||||
end
|
||||
end
|
||||
|
||||
commandline --function repaint
|
||||
end
|
||||
39
config/fish/functions/_fzf_search_history.fish
Normal file
39
config/fish/functions/_fzf_search_history.fish
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
function _fzf_search_history --description "Search command history. Replace the command line with the selected command."
|
||||
# history merge incorporates history changes from other fish sessions
|
||||
# it errors out if called in private mode
|
||||
if test -z "$fish_private_mode"
|
||||
builtin history merge
|
||||
end
|
||||
|
||||
if not set --query fzf_history_time_format
|
||||
# Reference https://devhints.io/strftime to understand strftime format symbols
|
||||
set -f fzf_history_time_format "%m-%d %H:%M:%S"
|
||||
end
|
||||
|
||||
# Delinate time from command in history entries using the vertical box drawing char (U+2502).
|
||||
# Then, to get raw command from history entries, delete everything up to it. The ? on regex is
|
||||
# necessary to make regex non-greedy so it won't match into commands containing the char.
|
||||
set -f time_prefix_regex '^.*? │ '
|
||||
# Delinate commands throughout pipeline using null rather than newlines because commands can be multi-line
|
||||
set -f commands_selected (
|
||||
builtin history --null --show-time="$fzf_history_time_format │ " |
|
||||
_fzf_wrapper --read0 \
|
||||
--print0 \
|
||||
--multi \
|
||||
--scheme=history \
|
||||
--prompt="History> " \
|
||||
--query=(commandline) \
|
||||
--preview="string replace --regex '$time_prefix_regex' '' -- {} | fish_indent --ansi" \
|
||||
--preview-window="bottom:3:wrap" \
|
||||
$fzf_history_opts |
|
||||
string split0 |
|
||||
# remove timestamps from commands selected
|
||||
string replace --regex $time_prefix_regex ''
|
||||
)
|
||||
|
||||
if test $status -eq 0
|
||||
commandline --replace -- $commands_selected
|
||||
end
|
||||
|
||||
commandline --function repaint
|
||||
end
|
||||
32
config/fish/functions/_fzf_search_processes.fish
Normal file
32
config/fish/functions/_fzf_search_processes.fish
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
function _fzf_search_processes --description "Search all running processes. Replace the current token with the pid of the selected process."
|
||||
# Directly use ps command because it is often aliased to a different command entirely
|
||||
# or with options that dirty the search results and preview output
|
||||
set -f ps_cmd (command -v ps || echo "ps")
|
||||
# use all caps to be consistent with ps default format
|
||||
# snake_case because ps doesn't seem to allow spaces in the field names
|
||||
set -f ps_preview_fmt (string join ',' 'pid' 'ppid=PARENT' 'user' '%cpu' 'rss=RSS_IN_KB' 'start=START_TIME' 'command')
|
||||
set -f processes_selected (
|
||||
$ps_cmd -A -opid,command | \
|
||||
_fzf_wrapper --multi \
|
||||
--prompt="Processes> " \
|
||||
--query (commandline --current-token) \
|
||||
--ansi \
|
||||
# first line outputted by ps is a header, so we need to mark it as so
|
||||
--header-lines=1 \
|
||||
# ps uses exit code 1 if the process was not found, in which case show an message explaining so
|
||||
--preview="$ps_cmd -o '$ps_preview_fmt' -p {1} || echo 'Cannot preview {1} because it exited.'" \
|
||||
--preview-window="bottom:4:wrap" \
|
||||
$fzf_processes_opts
|
||||
)
|
||||
|
||||
if test $status -eq 0
|
||||
for process in $processes_selected
|
||||
set -f --append pids_selected (string split --no-empty --field=1 -- " " $process)
|
||||
end
|
||||
|
||||
# string join to replace the newlines outputted by string split with spaces
|
||||
commandline --current-token --replace -- (string join ' ' $pids_selected)
|
||||
end
|
||||
|
||||
commandline --function repaint
|
||||
end
|
||||
47
config/fish/functions/_fzf_search_variables.fish
Normal file
47
config/fish/functions/_fzf_search_variables.fish
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
# This function expects the following two arguments:
|
||||
# argument 1 = output of (set --show | psub), i.e. a file with the scope info and values of all variables
|
||||
# argument 2 = output of (set --names | psub), i.e. a file with all variable names
|
||||
function _fzf_search_variables --argument-names set_show_output set_names_output --description "Search and preview shell variables. Replace the current token with the selected variable."
|
||||
if test -z "$set_names_output"
|
||||
printf '%s\n' '_fzf_search_variables requires 2 arguments.' >&2
|
||||
|
||||
commandline --function repaint
|
||||
return 22 # 22 means invalid argument in POSIX
|
||||
end
|
||||
|
||||
# Exclude the history variable from being piped into fzf because
|
||||
# 1. it's not included in $set_names_output
|
||||
# 2. it tends to be a very large value => increases computation time
|
||||
# 3._fzf_search_history is a much better way to examine history anyway
|
||||
set -f all_variable_names (string match --invert history <$set_names_output)
|
||||
|
||||
set -f current_token (commandline --current-token)
|
||||
# Use the current token to pre-populate fzf's query. If the current token begins
|
||||
# with a $, remove it from the query so that it will better match the variable names
|
||||
set -f cleaned_curr_token (string replace -- '$' '' $current_token)
|
||||
|
||||
set -f variable_names_selected (
|
||||
printf '%s\n' $all_variable_names |
|
||||
_fzf_wrapper --preview "_fzf_extract_var_info {} $set_show_output" \
|
||||
--prompt="Variables> " \
|
||||
--preview-window="wrap" \
|
||||
--multi \
|
||||
--query=$cleaned_curr_token \
|
||||
$fzf_variables_opts
|
||||
)
|
||||
|
||||
if test $status -eq 0
|
||||
# If the current token begins with a $, do not overwrite the $ when
|
||||
# replacing the current token with the selected variable.
|
||||
# Uses brace expansion to prepend $ to each variable name.
|
||||
commandline --current-token --replace (
|
||||
if string match --quiet -- '$*' $current_token
|
||||
string join " " \${$variable_names_selected}
|
||||
else
|
||||
string join " " $variable_names_selected
|
||||
end
|
||||
)
|
||||
end
|
||||
|
||||
commandline --function repaint
|
||||
end
|
||||
21
config/fish/functions/_fzf_wrapper.fish
Normal file
21
config/fish/functions/_fzf_wrapper.fish
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
function _fzf_wrapper --description "Prepares some environment variables before executing fzf."
|
||||
# Make sure fzf uses fish to execute preview commands, some of which
|
||||
# are autoloaded fish functions so don't exist in other shells.
|
||||
# Use --function so that it doesn't clobber SHELL outside this function.
|
||||
set -f --export SHELL (command --search fish)
|
||||
|
||||
# If neither FZF_DEFAULT_OPTS nor FZF_DEFAULT_OPTS_FILE are set, then set some sane defaults.
|
||||
# See https://github.com/junegunn/fzf#environment-variables
|
||||
set --query FZF_DEFAULT_OPTS FZF_DEFAULT_OPTS_FILE
|
||||
if test $status -eq 2
|
||||
# cycle allows jumping between the first and last results, making scrolling faster
|
||||
# layout=reverse lists results top to bottom, mimicking the familiar layouts of git log, history, and env
|
||||
# border shows where the fzf window begins and ends
|
||||
# height=90% leaves space to see the current command and some scrollback, maintaining context of work
|
||||
# preview-window=wrap wraps long lines in the preview window, making reading easier
|
||||
# marker=* makes the multi-select marker more distinguishable from the pointer (since both default to >)
|
||||
set --export FZF_DEFAULT_OPTS '--cycle --layout=reverse --border --height=90% --preview-window=wrap --marker="*"'
|
||||
end
|
||||
|
||||
fzf $argv
|
||||
end
|
||||
3
config/fish/functions/ff.fish
Normal file
3
config/fish/functions/ff.fish
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
function ff --wraps=fastfetch --description 'alias ff=fastfetch'
|
||||
fastfetch $argv
|
||||
end
|
||||
251
config/fish/functions/fisher.fish
Normal file
251
config/fish/functions/fisher.fish
Normal file
|
|
@ -0,0 +1,251 @@
|
|||
function fisher --argument-names cmd --description "A plugin manager for Fish"
|
||||
set --query fisher_path || set --local fisher_path $__fish_config_dir
|
||||
set --local fisher_version 4.4.8
|
||||
set --local fish_plugins $__fish_config_dir/fish_plugins
|
||||
|
||||
switch "$cmd"
|
||||
case -v --version
|
||||
echo "fisher, version $fisher_version"
|
||||
case "" -h --help
|
||||
echo "Usage: fisher install <plugins...> Install plugins"
|
||||
echo " fisher remove <plugins...> Remove installed plugins"
|
||||
echo " fisher uninstall <plugins...> Remove installed plugins (alias)"
|
||||
echo " fisher update <plugins...> Update installed plugins"
|
||||
echo " fisher update Update all installed plugins"
|
||||
echo " fisher list [<regex>] List installed plugins matching regex"
|
||||
echo "Options:"
|
||||
echo " -v, --version Print version"
|
||||
echo " -h, --help Print this help message"
|
||||
echo "Variables:"
|
||||
echo " \$fisher_path Plugin installation path. Default: $__fish_config_dir" | string replace --regex -- $HOME \~
|
||||
case ls list
|
||||
string match --entire --regex -- "$argv[2]" $_fisher_plugins
|
||||
case install update remove uninstall
|
||||
isatty || read --local --null --array stdin && set --append argv $stdin
|
||||
|
||||
test "$cmd" = uninstall && set cmd remove
|
||||
|
||||
set --local install_plugins
|
||||
set --local update_plugins
|
||||
set --local remove_plugins
|
||||
set --local arg_plugins $argv[2..-1]
|
||||
set --local old_plugins $_fisher_plugins
|
||||
set --local new_plugins
|
||||
|
||||
test -e $fish_plugins && set --local file_plugins (string match --regex -- '^[^\s]+$' <$fish_plugins | string replace -- \~ ~)
|
||||
|
||||
if ! set --query argv[2]
|
||||
if test "$cmd" != update
|
||||
echo "fisher: Not enough arguments for command: \"$cmd\"" >&2 && return 1
|
||||
else if ! set --query file_plugins
|
||||
echo "fisher: \"$fish_plugins\" file not found: \"$cmd\"" >&2 && return 1
|
||||
end
|
||||
set arg_plugins $file_plugins
|
||||
else if test "$cmd" = install && ! set --query old_plugins[1]
|
||||
set --append arg_plugins $file_plugins
|
||||
end
|
||||
|
||||
for plugin in $arg_plugins
|
||||
set plugin (test -e "$plugin" && realpath $plugin || string lower -- $plugin)
|
||||
contains -- "$plugin" $new_plugins || set --append new_plugins $plugin
|
||||
end
|
||||
|
||||
if set --query argv[2]
|
||||
for plugin in $new_plugins
|
||||
if contains -- "$plugin" $old_plugins
|
||||
test "$cmd" = remove &&
|
||||
set --append remove_plugins $plugin ||
|
||||
set --append update_plugins $plugin
|
||||
else if test "$cmd" = install
|
||||
set --append install_plugins $plugin
|
||||
else
|
||||
echo "fisher: Plugin not installed: \"$plugin\"" >&2 && return 1
|
||||
end
|
||||
end
|
||||
else
|
||||
for plugin in $new_plugins
|
||||
contains -- "$plugin" $old_plugins &&
|
||||
set --append update_plugins $plugin ||
|
||||
set --append install_plugins $plugin
|
||||
end
|
||||
|
||||
for plugin in $old_plugins
|
||||
contains -- "$plugin" $new_plugins || set --append remove_plugins $plugin
|
||||
end
|
||||
end
|
||||
|
||||
set --local pid_list
|
||||
set --local source_plugins
|
||||
set --local fetch_plugins $update_plugins $install_plugins
|
||||
set --local fish_path (status fish-path)
|
||||
|
||||
echo (set_color --bold)fisher $cmd version $fisher_version(set_color normal)
|
||||
|
||||
for plugin in $fetch_plugins
|
||||
set --local source (command mktemp -d)
|
||||
set --append source_plugins $source
|
||||
|
||||
command mkdir -p $source/{completions,conf.d,themes,functions}
|
||||
|
||||
$fish_path --command "
|
||||
if test -e $plugin
|
||||
command cp -Rf $plugin/* $source
|
||||
else
|
||||
set resp (command mktemp)
|
||||
set temp (command mktemp -d)
|
||||
set repo (string split -- \@ $plugin) || set repo[2] HEAD
|
||||
|
||||
if set path (string replace --regex -- '^(https://)?gitlab.com/' '' \$repo[1])
|
||||
set name (string split -- / \$path)[-1]
|
||||
set url https://gitlab.com/\$path/-/archive/\$repo[2]/\$name-\$repo[2].tar.gz
|
||||
else
|
||||
set url https://api.github.com/repos/\$repo[1]/tarball/\$repo[2]
|
||||
end
|
||||
|
||||
echo Fetching (set_color --underline)\$url(set_color normal)
|
||||
|
||||
set http (command curl -q --silent -L -o \$resp -w %{http_code} \$url)
|
||||
|
||||
if test \"\$http\" = 200 && command tar -xzC \$temp -f \$resp 2>/dev/null
|
||||
command cp -Rf \$temp/*/* $source
|
||||
else if test \"\$http\" = 403
|
||||
echo fisher: GitHub API rate limit exceeded \(HTTP 403\) >&2
|
||||
command rm -rf $source
|
||||
else
|
||||
echo fisher: Invalid plugin name or host unavailable: \\\"$plugin\\\" >&2
|
||||
command rm -rf $source
|
||||
end
|
||||
|
||||
command rm -rf \$temp
|
||||
end
|
||||
|
||||
set files $source/* && string match --quiet --regex -- .+\.fish\\\$ \$files
|
||||
" &
|
||||
|
||||
set --append pid_list (jobs --last --pid)
|
||||
end
|
||||
|
||||
wait $pid_list 2>/dev/null
|
||||
|
||||
for plugin in $fetch_plugins
|
||||
if set --local source $source_plugins[(contains --index -- "$plugin" $fetch_plugins)] && test ! -e $source
|
||||
if set --local index (contains --index -- "$plugin" $install_plugins)
|
||||
set --erase install_plugins[$index]
|
||||
else
|
||||
set --erase update_plugins[(contains --index -- "$plugin" $update_plugins)]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
for plugin in $update_plugins $remove_plugins
|
||||
if set --local index (contains --index -- "$plugin" $_fisher_plugins)
|
||||
set --local plugin_files_var _fisher_(string escape --style=var -- $plugin)_files
|
||||
|
||||
if contains -- "$plugin" $remove_plugins
|
||||
for name in (string replace --filter --regex -- '.+/conf\.d/([^/]+)\.fish$' '$1' $$plugin_files_var)
|
||||
emit {$name}_uninstall
|
||||
end
|
||||
printf "%s\n" Removing\ (set_color red --bold)$plugin(set_color normal) " "$$plugin_files_var | string replace -- \~ ~
|
||||
set --erase _fisher_plugins[$index]
|
||||
end
|
||||
|
||||
command rm -rf (string replace -- \~ ~ $$plugin_files_var)
|
||||
|
||||
functions --erase (string replace --filter --regex -- '.+/functions/([^/]+)\.fish$' '$1' $$plugin_files_var)
|
||||
|
||||
for name in (string replace --filter --regex -- '.+/completions/([^/]+)\.fish$' '$1' $$plugin_files_var)
|
||||
complete --erase --command $name
|
||||
end
|
||||
|
||||
set --erase $plugin_files_var
|
||||
end
|
||||
end
|
||||
|
||||
if set --query update_plugins[1] || set --query install_plugins[1]
|
||||
command mkdir -p $fisher_path/{functions,themes,conf.d,completions}
|
||||
end
|
||||
|
||||
for plugin in $update_plugins $install_plugins
|
||||
set --local source $source_plugins[(contains --index -- "$plugin" $fetch_plugins)]
|
||||
set --local files $source/{functions,themes,conf.d,completions}/*
|
||||
|
||||
if set --local index (contains --index -- $plugin $install_plugins)
|
||||
set --local user_files $fisher_path/{functions,themes,conf.d,completions}/*
|
||||
set --local conflict_files
|
||||
|
||||
for file in (string replace -- $source/ $fisher_path/ $files)
|
||||
contains -- $file $user_files && set --append conflict_files $file
|
||||
end
|
||||
|
||||
if set --query conflict_files[1] && set --erase install_plugins[$index]
|
||||
echo -s "fisher: Cannot install \"$plugin\": please remove or move conflicting files first:" \n" "$conflict_files >&2
|
||||
continue
|
||||
end
|
||||
end
|
||||
|
||||
for file in (string replace -- $source/ "" $files)
|
||||
command cp -RLf $source/$file $fisher_path/$file
|
||||
end
|
||||
|
||||
set --local plugin_files_var _fisher_(string escape --style=var -- $plugin)_files
|
||||
|
||||
set --query files[1] && set --universal $plugin_files_var (string replace -- $source $fisher_path $files | string replace -- ~ \~)
|
||||
|
||||
contains -- $plugin $_fisher_plugins || set --universal --append _fisher_plugins $plugin
|
||||
contains -- $plugin $install_plugins && set --local event install || set --local event update
|
||||
|
||||
printf "%s\n" Installing\ (set_color --bold)$plugin(set_color normal) " "$$plugin_files_var | string replace -- \~ ~
|
||||
|
||||
for file in (string match --regex -- '.+/[^/]+\.fish$' $$plugin_files_var | string replace -- \~ ~)
|
||||
source $file
|
||||
if set --local name (string replace --regex -- '.+conf\.d/([^/]+)\.fish$' '$1' $file)
|
||||
emit {$name}_$event
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
command rm -rf $source_plugins
|
||||
|
||||
if set --query _fisher_plugins[1]
|
||||
set --local commit_plugins
|
||||
|
||||
for plugin in $file_plugins
|
||||
contains -- (string lower -- $plugin) (string lower -- $_fisher_plugins) && set --append commit_plugins $plugin
|
||||
end
|
||||
|
||||
for plugin in $_fisher_plugins
|
||||
contains -- (string lower -- $plugin) (string lower -- $commit_plugins) || set --append commit_plugins $plugin
|
||||
end
|
||||
|
||||
string replace --regex -- $HOME \~ $commit_plugins >$fish_plugins
|
||||
else
|
||||
set --erase _fisher_plugins
|
||||
command rm -f $fish_plugins
|
||||
end
|
||||
|
||||
set --local total (count $install_plugins) (count $update_plugins) (count $remove_plugins)
|
||||
|
||||
test "$total" != "0 0 0" && echo (string join ", " (
|
||||
test $total[1] = 0 || echo "Installed $total[1]") (
|
||||
test $total[2] = 0 || echo "Updated $total[2]") (
|
||||
test $total[3] = 0 || echo "Removed $total[3]")
|
||||
) plugin/s
|
||||
case \*
|
||||
echo "fisher: Unknown command: \"$cmd\"" >&2 && return 1
|
||||
end
|
||||
end
|
||||
|
||||
if ! set --query _fisher_upgraded_to_4_4
|
||||
set --universal _fisher_upgraded_to_4_4
|
||||
if functions --query _fisher_list
|
||||
set --query XDG_DATA_HOME[1] || set --local XDG_DATA_HOME ~/.local/share
|
||||
command rm -rf $XDG_DATA_HOME/fisher
|
||||
functions --erase _fisher_{list,plugin_parse}
|
||||
fisher update >/dev/null 2>/dev/null
|
||||
else
|
||||
for var in (set --names | string match --entire --regex '^_fisher_.+_files$')
|
||||
set $var (string replace -- ~ \~ $$var)
|
||||
end
|
||||
functions --erase _fisher_fish_postexec
|
||||
end
|
||||
end
|
||||
46
config/fish/functions/fzf_configure_bindings.fish
Normal file
46
config/fish/functions/fzf_configure_bindings.fish
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
# Always installs bindings for insert and default mode for simplicity and b/c it has almost no side-effect
|
||||
# https://gitter.im/fish-shell/fish-shell?at=60a55915ee77a74d685fa6b1
|
||||
function fzf_configure_bindings --description "Installs the default key bindings for fzf.fish with user overrides passed as options."
|
||||
# no need to install bindings if not in interactive mode or running tests
|
||||
status is-interactive || test "$CI" = true; or return
|
||||
|
||||
set -f options_spec h/help 'directory=?' 'git_log=?' 'git_status=?' 'history=?' 'processes=?' 'variables=?'
|
||||
argparse --max-args=0 --ignore-unknown $options_spec -- $argv 2>/dev/null
|
||||
if test $status -ne 0
|
||||
echo "Invalid option or a positional argument was provided." >&2
|
||||
_fzf_configure_bindings_help
|
||||
return 22
|
||||
else if set --query _flag_help
|
||||
_fzf_configure_bindings_help
|
||||
return
|
||||
else
|
||||
# Initialize with default key sequences and then override or disable them based on flags
|
||||
# index 1 = directory, 2 = git_log, 3 = git_status, 4 = history, 5 = processes, 6 = variables
|
||||
set -f key_sequences ctrl-alt-f ctrl-alt-l ctrl-alt-s ctrl-r ctrl-alt-p ctrl-v
|
||||
set --query _flag_directory && set key_sequences[1] "$_flag_directory"
|
||||
set --query _flag_git_log && set key_sequences[2] "$_flag_git_log"
|
||||
set --query _flag_git_status && set key_sequences[3] "$_flag_git_status"
|
||||
set --query _flag_history && set key_sequences[4] "$_flag_history"
|
||||
set --query _flag_processes && set key_sequences[5] "$_flag_processes"
|
||||
set --query _flag_variables && set key_sequences[6] "$_flag_variables"
|
||||
|
||||
# If fzf bindings already exists, uninstall it first for a clean slate
|
||||
if functions --query _fzf_uninstall_bindings
|
||||
_fzf_uninstall_bindings
|
||||
end
|
||||
|
||||
for mode in default insert
|
||||
test -n $key_sequences[1] && bind --mode $mode $key_sequences[1] _fzf_search_directory
|
||||
test -n $key_sequences[2] && bind --mode $mode $key_sequences[2] _fzf_search_git_log
|
||||
test -n $key_sequences[3] && bind --mode $mode $key_sequences[3] _fzf_search_git_status
|
||||
test -n $key_sequences[4] && bind --mode $mode $key_sequences[4] _fzf_search_history
|
||||
test -n $key_sequences[5] && bind --mode $mode $key_sequences[5] _fzf_search_processes
|
||||
test -n $key_sequences[6] && bind --mode $mode $key_sequences[6] "$_fzf_search_vars_command"
|
||||
end
|
||||
|
||||
function _fzf_uninstall_bindings --inherit-variable key_sequences
|
||||
bind --erase -- $key_sequences
|
||||
bind --erase --mode insert -- $key_sequences
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -1,3 +1,3 @@
|
|||
function ls --wraps='eza --color' --description 'alias ls=eza --color'
|
||||
eza --color $argv
|
||||
eza --icons always --color always $argv
|
||||
end
|
||||
3
config/fish/functions/n.fish
Normal file
3
config/fish/functions/n.fish
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
function n --wraps=nvim --description 'alias n=nvim'
|
||||
nvim $argv
|
||||
end
|
||||
3
config/fish/functions/p.fish
Normal file
3
config/fish/functions/p.fish
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
function p --wraps='paru -Syu' --description 'alias p=paru -Syu'
|
||||
paru -Syu $argv
|
||||
end
|
||||
3
config/fish/functions/sshp.fish
Normal file
3
config/fish/functions/sshp.fish
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
function sshp --wraps='ssh -P 49111' --description 'alias sshp=ssh -P 49111'
|
||||
ssh -P 49111 $argv
|
||||
end
|
||||
3
config/fish/functions/vpn.fish
Normal file
3
config/fish/functions/vpn.fish
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
function vpn --wraps='sudo ~/./sing-box-sh' --description 'alias vpn=sudo ~/./sing-box-sh'
|
||||
sudo ~/./sing-box-sh $argv
|
||||
end
|
||||
3
config/fish/functions/webka.fish
Normal file
3
config/fish/functions/webka.fish
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
function webka --wraps='scrcpy --v4l2-sink=/dev/video0 --camera-size=1920x1080 --video-source=camera --video-codec=h265 --video-encoder=c2.qti.hevc.encoder --video-buffer=100' --description 'alias webka=scrcpy --v4l2-sink=/dev/video0 --camera-size=1920x1080 --video-source=camera --video-codec=h265 --video-encoder=c2.qti.hevc.encoder --video-buffer=100'
|
||||
scrcpy --v4l2-sink=/dev/video0 --camera-size=1920x1080 --video-source=camera --video-codec=h265 --video-encoder=c2.qti.hevc.encoder --video-buffer=100 $argv
|
||||
end
|
||||
8
config/fish/functions/y.fish
Normal file
8
config/fish/functions/y.fish
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
function y
|
||||
set tmp (mktemp -t "yazi-cwd.XXXXXX")
|
||||
yazi $argv --cwd-file="$tmp"
|
||||
if read -z cwd <"$tmp"; and [ -n "$cwd" ]; and [ "$cwd" != "$PWD" ]
|
||||
builtin cd -- "$cwd"
|
||||
end
|
||||
rm -f -- "$tmp"
|
||||
end
|
||||
3
config/fish/functions/yz.fish
Normal file
3
config/fish/functions/yz.fish
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
function yz --wraps=yazi --description 'alias yz=yazi'
|
||||
yazi $argv
|
||||
end
|
||||
3
config/fish/functions/ня.fish
Normal file
3
config/fish/functions/ня.fish
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
function ня --wraps=yazi --description 'alias ня=yazi'
|
||||
yazi $argv
|
||||
end
|
||||
|
|
@ -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
110
config/hypr/hyprlock.conf
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
# sample hyprlock.conf
|
||||
# for more configuration options, refer https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock
|
||||
#
|
||||
# rendered text in all widgets supports pango markup (e.g. <b> or <i> tags)
|
||||
# ref. https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock/#general-remarks
|
||||
#
|
||||
# shortcuts to clear password buffer: ESC, Ctrl+U, Ctrl+Backspace
|
||||
#
|
||||
# you can get started by copying this config to ~/.config/hypr/hyprlock.conf
|
||||
#
|
||||
|
||||
$font = IosevkaTerm NFM ExtraBold
|
||||
|
||||
general {
|
||||
hide_cursor = true
|
||||
}
|
||||
|
||||
# uncomment to enable fingerprint authentication
|
||||
# auth {
|
||||
# fingerprint {
|
||||
# enabled = true
|
||||
# ready_message = Scan fingerprint to unlock
|
||||
# present_message = Scanning...
|
||||
# retry_delay = 250 # in milliseconds
|
||||
# }
|
||||
# }
|
||||
|
||||
animations {
|
||||
enabled = false
|
||||
bezier = linear, 1, 1, 0, 0
|
||||
animation = fadeIn, 1, 5, linear
|
||||
animation = fadeOut, 1, 5, linear
|
||||
animation = inputFieldDots, 1, 2, linear
|
||||
}
|
||||
|
||||
background {
|
||||
monitor =
|
||||
path = screenshot
|
||||
blur_passes = 4
|
||||
}
|
||||
|
||||
input-field {
|
||||
monitor =
|
||||
size = 20%, 5%
|
||||
outline_thickness = 3
|
||||
inner_color = rgba(0, 0, 0, 0.0) # no fill
|
||||
|
||||
#outer_color = rgba(33ccffee) rgba(00ff99ee) 45deg
|
||||
#check_color = rgba(00ff99ee) rgba(ff6633ee) 120deg
|
||||
#fail_color = rgba(ff6633ee) rgba(ff0066ee) 40deg
|
||||
|
||||
outer_color = rgba(EEF7FDee)
|
||||
check_color = rgba(FFDE00ee)
|
||||
fail_color = rgba(FF0100ee)
|
||||
|
||||
font_color = rgb(143, 143, 143)
|
||||
fade_on_empty = false
|
||||
rounding = 3
|
||||
|
||||
font_family = $font
|
||||
placeholder_text = Password here:
|
||||
fail_text = $PAMFAIL
|
||||
|
||||
# uncomment to use a letter instead of a dot to indicate the typed password
|
||||
# dots_text_format = *
|
||||
# dots_size = 0.4
|
||||
dots_spacing = 0.3
|
||||
|
||||
# uncomment to use an input indicator that does not show the password length (similar to swaylock's input indicator)
|
||||
# hide_input = true
|
||||
|
||||
position = 0, -200
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
# TIME
|
||||
label {
|
||||
monitor =
|
||||
text = $TIME # ref. https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock/#variable-substitution
|
||||
font_size = 90
|
||||
font_family = $font
|
||||
|
||||
position = 0, -40
|
||||
halign = center
|
||||
valign = top
|
||||
}
|
||||
|
||||
# DATE
|
||||
label {
|
||||
monitor =
|
||||
text = cmd[update:60000] date +"%A, %d %B %Y" # update every 60 seconds
|
||||
font_size = 25
|
||||
font_family = $font
|
||||
|
||||
position = 0, -200
|
||||
halign = center
|
||||
valign = top
|
||||
}
|
||||
|
||||
label {
|
||||
monitor =
|
||||
text = $LAYOUT[en,ru]
|
||||
font_size = 24
|
||||
onclick = hyprctl switchxkblayout all next
|
||||
|
||||
position = 250, -200
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
37
config/hyprwave/config.conf
Normal file
37
config/hyprwave/config.conf
Normal 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
585
config/hyprwave/style.css
Normal 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;
|
||||
}
|
||||
50
config/kitty/current-theme.conf
Normal file
50
config/kitty/current-theme.conf
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
# vim:ft=kitty
|
||||
|
||||
## name: Tokyo Night
|
||||
## license: popachcka-rulet
|
||||
## author: an idiot
|
||||
## upstream: /////////gol
|
||||
|
||||
|
||||
background #07090B
|
||||
foreground #EEF7FD
|
||||
selection_background #C1D6D6
|
||||
selection_foreground #07090B
|
||||
url_color #73daca
|
||||
cursor #c0caf5
|
||||
cursor_text_color #1a1b26
|
||||
|
||||
# Tabs
|
||||
active_tab_background #C1D6D6
|
||||
active_tab_foreground #25C39F
|
||||
inactive_tab_background #5C6871
|
||||
inactive_tab_foreground #07090B
|
||||
#tab_bar_background #15161e
|
||||
|
||||
# Windows
|
||||
active_border_color #25C39F
|
||||
inactive_border_color #C0CAF5
|
||||
|
||||
# normal
|
||||
color0 #07090B
|
||||
color1 #FF0100
|
||||
color2 #25C39F
|
||||
color3 #FFDE00
|
||||
color4 #109FFF
|
||||
color5 #FE31FF
|
||||
color6 #00FED4
|
||||
color7 #EEF7FD
|
||||
|
||||
# bright
|
||||
color8 #5C6871
|
||||
color9 #E46468
|
||||
color10 #82D1B9
|
||||
color11 #F6DB8B
|
||||
color12 #8FD2F7
|
||||
color13 #F79DE7
|
||||
color14 #7EFEDE
|
||||
color15 #C1D6D6
|
||||
|
||||
# extended colors
|
||||
color16 #ff9e64
|
||||
color17 #db4b4b
|
||||
|
|
@ -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
|
||||
|
|
@ -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
75
config/mimeapps.list
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
[Added Associations]
|
||||
application/json=neovide.desktop;
|
||||
application/octet-stream=mpv.desktop;
|
||||
application/x-extension-htm=firefox.desktop;userapp-Zen-PIXJK3.desktop;zen.desktop;
|
||||
application/x-extension-html=firefox.desktop;userapp-Zen-PIXJK3.desktop;zen.desktop;
|
||||
application/x-extension-shtml=firefox.desktop;userapp-Zen-PIXJK3.desktop;zen.desktop;
|
||||
application/x-extension-xht=firefox.desktop;userapp-Zen-PIXJK3.desktop;zen.desktop;
|
||||
application/x-extension-xhtml=firefox.desktop;userapp-Zen-PIXJK3.desktop;zen.desktop;
|
||||
application/x-msdownload=ru.launcher.StartWine.desktop;
|
||||
application/x-php=mpv.desktop;
|
||||
application/xhtml+xml=firefox.desktop;userapp-Zen-PIXJK3.desktop;zen.desktop;
|
||||
application/zip=org.gnome.Nautilus.desktop;
|
||||
audio/flac=mpv.desktop;
|
||||
audio/mp4=mpv.desktop;
|
||||
audio/ogg=mpv.desktop;
|
||||
audio/vorbis=mpv.desktop;
|
||||
audio/x-oggflac=mpv.desktop;
|
||||
audio/x-vorbis=mpv.desktop;
|
||||
audio/x-vorbis+ogg=mpv.desktop;
|
||||
image/jpeg=gimp.desktop;org.gnome.gThumb.desktop;org.gnome.eog.desktop;
|
||||
image/png=gimp.desktop;org.gnome.eog.desktop;
|
||||
image/webp=org.gnome.eog.desktop;
|
||||
text/html=zen.desktop;userapp-Zen-PIXJK3.desktop;
|
||||
text/plain=neovide.desktop;
|
||||
video/mp4=mpv.desktop;
|
||||
video/webm=mpv.desktop;
|
||||
x-scheme-handler/chrome=zen.desktop;userapp-Zen-PIXJK3.desktop;firefox.desktop;
|
||||
x-scheme-handler/http=zen.desktop;userapp-Zen-PIXJK3.desktop;firefox.desktop;
|
||||
x-scheme-handler/https=zen.desktop;userapp-Zen-PIXJK3.desktop;firefox.desktop;
|
||||
x-scheme-handler/mailto=zen.desktop;
|
||||
x-scheme-handler/tg=org.telegram.desktop.desktop;userapp-AyuGram Desktop-YAGQF3.desktop;userapp-AyuGram Desktop-352WJ3.desktop;org.fagram.desktop;
|
||||
x-scheme-handler/tonsite=org.telegram.desktop.desktop;userapp-AyuGram Desktop-UNJQF3.desktop;userapp-AyuGram Desktop-31ZUJ3.desktop;org.fagram.desktop;
|
||||
|
||||
[Default Applications]
|
||||
application/fb2=org.pwmt.zathura.desktop
|
||||
application/json=neovide.desktop
|
||||
application/octet-stream=mpv.desktop
|
||||
application/pdf=org.pwmt.zathura.desktop
|
||||
application/x-extension-htm=zen.desktop
|
||||
application/x-extension-html=zen.desktop
|
||||
application/x-extension-shtml=zen.desktop
|
||||
application/x-extension-xht=zen.desktop
|
||||
application/x-extension-xhtml=zen.desktop
|
||||
application/x-ms-dos-executable;application/x-wine-extension-msp;application/x-msi;application/x-msdos-program;text/win-bat;=PortProton.desktop
|
||||
application/x-msdownload=ru.launcher.StartWine.desktop
|
||||
application/x-php=mpv.desktop
|
||||
application/x-zip-compressed-fb2=org.pwmt.zathura.desktop
|
||||
application/xhtml+xml=zen.desktop
|
||||
application/zip=org.gnome.Nautilus.desktop
|
||||
audio/flac=mpv.desktop
|
||||
audio/mp4=mpv.desktop
|
||||
audio/ogg=mpv.desktop;
|
||||
audio/vorbis=mpv.desktop;
|
||||
audio/x-oggflac=mpv.desktop;
|
||||
audio/x-vorbis=mpv.desktop;
|
||||
audio/x-vorbis+ogg=mpv.desktop;
|
||||
image/gif=imv.desktop
|
||||
image/jpeg=org.gnome.eog.desktop
|
||||
image/png=org.gnome.eog.desktop
|
||||
image/vnd.djvu=org.pwmt.zathura.desktop
|
||||
image/webp=org.gnome.eog.desktop
|
||||
text/fb2+xml=org.pwmt.zathura.desktop
|
||||
text/html=zen.desktop
|
||||
text/plain=neovide.desktop
|
||||
text/xml=com.github.johnfactotum.Foliate.desktop
|
||||
video/mp4=mpv.desktop
|
||||
video/webm=mpv.desktop
|
||||
x-scheme-handler/anytype=anytype.desktop
|
||||
x-scheme-handler/chrome=zen.desktop
|
||||
x-scheme-handler/discord=vesktop.desktop
|
||||
x-scheme-handler/http=zen.desktop
|
||||
x-scheme-handler/https=zen.desktop
|
||||
x-scheme-handler/mailto=zen.desktop;
|
||||
x-scheme-handler/tg=org.fagram.desktop
|
||||
x-scheme-handler/tonsite=org.fagram.desktop
|
||||
36
config/mpDris2/mpDris2.conf
Normal file
36
config/mpDris2/mpDris2.conf
Normal 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
403
config/mpd/mpd.conf
Normal 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"
|
||||
#
|
||||
###############################################################################
|
||||
|
|
@ -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
|
||||
41
config/nvim/lazy-lock.json
Normal file
41
config/nvim/lazy-lock.json
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
{
|
||||
"LazyVim": { "branch": "main", "commit": "28db03f958d58dfff3c647ce28fdc1cb88ac158d" },
|
||||
"LuaSnip": { "branch": "master", "commit": "5a1e39223db9a0498024a77b8441169d260c8c25" },
|
||||
"blink.cmp": { "branch": "main", "commit": "327fff91fe6af358e990be7be1ec8b78037d2138" },
|
||||
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
|
||||
"catppuccin": { "branch": "main", "commit": "234fc048de931a0e42ebcad675bf6559d75e23df" },
|
||||
"conform.nvim": { "branch": "master", "commit": "cde4da5c1083d3527776fee69536107d98dae6c9" },
|
||||
"flash.nvim": { "branch": "main", "commit": "fcea7ff883235d9024dc41e638f164a450c14ca2" },
|
||||
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
|
||||
"gitsigns.nvim": { "branch": "main", "commit": "20ad4419564d6e22b189f6738116b38871082332" },
|
||||
"grug-far.nvim": { "branch": "main", "commit": "3e72397465f774b01aa38e4fe8e6eecf23d766d9" },
|
||||
"lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" },
|
||||
"lazydev.nvim": { "branch": "main", "commit": "5231c62aa83c2f8dc8e7ba957aa77098cda1257d" },
|
||||
"lualine.nvim": { "branch": "master", "commit": "3946f0122255bc377d14a59b27b609fb3ab25768" },
|
||||
"markview.nvim": { "branch": "main", "commit": "d72e1bd8634f7abad68a77ad3c6f97342c09ae0a" },
|
||||
"marp-nvim": { "branch": "main", "commit": "4f38e6ffe2f5ea260f35f7ff3e4e424b9f8bea29" },
|
||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "d7b5feb6e769e995f7fcf44d92f49f811c51d10c" },
|
||||
"mason.nvim": { "branch": "main", "commit": "ad7146aa61dcaeb54fa900144d768f040090bff0" },
|
||||
"mini.ai": { "branch": "main", "commit": "0d3c9cf22e37b86b7a0dfbe7ef129ee7a5f4f93c" },
|
||||
"mini.icons": { "branch": "main", "commit": "ff2e4f1d29f659cc2bad0f9256f2f6195c6b2428" },
|
||||
"mini.nvim": { "branch": "main", "commit": "68d4478920c7afdfa21c13706464e275d9ce3255" },
|
||||
"mini.pairs": { "branch": "main", "commit": "b316e68f2d242d5bd010deaab645daa27ed86297" },
|
||||
"noice.nvim": { "branch": "main", "commit": "7bfd942445fb63089b59f97ca487d605e715f155" },
|
||||
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
|
||||
"nvim-lint": { "branch": "master", "commit": "8b349e822a36e9480aed96c6dd2f757f80524a35" },
|
||||
"nvim-lspconfig": { "branch": "master", "commit": "2010fc6ec03e2da552b4886fceb2f7bc0fc2e9c0" },
|
||||
"nvim-snippy": { "branch": "master", "commit": "504ab14eeb14301d9b2a858a2a6cf99ccc8d60d0" },
|
||||
"nvim-treesitter": { "branch": "main", "commit": "d97d226cfd4c00af000b3b8529261352677fc6a8" },
|
||||
"nvim-treesitter-textobjects": { "branch": "main", "commit": "7024f8687b060dd9a425bde1fa8621c896a38138" },
|
||||
"nvim-ts-autotag": { "branch": "main", "commit": "c4ca798ab95b316a768d51eaaaee48f64a4a46bc" },
|
||||
"persistence.nvim": { "branch": "main", "commit": "b20b2a7887bd39c1a356980b45e03250f3dce49c" },
|
||||
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
|
||||
"render-markdown.nvim": { "branch": "main", "commit": "060c911c62f995a9db4467dde6fafd699cf94d55" },
|
||||
"snacks.nvim": { "branch": "main", "commit": "eee204d690f8d8e755229ff20f63d23d48565d7c" },
|
||||
"todo-comments.nvim": { "branch": "main", "commit": "411503d3bedeff88484de572f2509c248e499b38" },
|
||||
"tokyonight.nvim": { "branch": "main", "commit": "5da1b76e64daf4c5d410f06bcb6b9cb640da7dfd" },
|
||||
"trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" },
|
||||
"ts-comments.nvim": { "branch": "main", "commit": "123a9fb12e7229342f807ec9e6de478b1102b041" },
|
||||
"which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" },
|
||||
"xkbswitch.nvim": { "branch": "master", "commit": "aae56d49db9baf0d9b9675a77da35173d8d87a30" }
|
||||
}
|
||||
7
config/nvim/lua/plugins/luasnip.lua
Normal file
7
config/nvim/lua/plugins/luasnip.lua
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
return {
|
||||
"L3MON4D3/LuaSnip",
|
||||
-- follow latest release.
|
||||
version = "v2.*", -- Replace <CurrentMajor> by the latest released major (first number of latest release)
|
||||
-- install jsregexp (optional!).
|
||||
build = "make install_jsregexp",
|
||||
}
|
||||
4
config/nvim/lua/plugins/markview.lua
Normal file
4
config/nvim/lua/plugins/markview.lua
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
return {
|
||||
"OXY2DEV/markview.nvim",
|
||||
lazy = false,
|
||||
}
|
||||
10
config/nvim/lua/plugins/marp-nvim.lua
Normal file
10
config/nvim/lua/plugins/marp-nvim.lua
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
return {
|
||||
"mpas/marp-nvim",
|
||||
config = function()
|
||||
require("marp").setup({
|
||||
port = 44666,
|
||||
wait_for_response_timeout = 30,
|
||||
wait_for_response_delay = 1,
|
||||
})
|
||||
end,
|
||||
}
|
||||
3
config/nvim/lua/plugins/nvim-snippy.lua
Normal file
3
config/nvim/lua/plugins/nvim-snippy.lua
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
return {
|
||||
"dcampos/nvim-snippy",
|
||||
}
|
||||
9
config/nvim/lua/plugins/render-markdown.lua
Normal file
9
config/nvim/lua/plugins/render-markdown.lua
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
return {
|
||||
"MeanderingProgrammer/render-markdown.nvim",
|
||||
dependencies = { "nvim-treesitter/nvim-treesitter", "nvim-mini/mini.nvim" }, -- if you use the mini.nvim suite
|
||||
-- dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-mini/mini.icons' }, -- if you use standalone mini plugins
|
||||
-- dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-tree/nvim-web-devicons' }, -- if you prefer nvim-web-devicons
|
||||
---@module 'render-markdown'
|
||||
---@type render.md.UserConfig
|
||||
opts = {},
|
||||
}
|
||||
281
config/rmpc/config.ron
Normal file
281
config/rmpc/config.ron
Normal 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
307
config/rmpc/themes/zzz.ron
Normal 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
99
config/swaync/config.json
Normal 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
569
config/swaync/style.css
Normal 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
51
config/swayosd/style.css
Normal 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
172
config/termusic/tui.toml
Normal file
|
|
@ -0,0 +1,172 @@
|
|||
version = "2"
|
||||
com = "same"
|
||||
|
||||
[behavior]
|
||||
quit_server_on_exit = false
|
||||
confirm_quit = false
|
||||
|
||||
[coverart]
|
||||
align = "bottom right"
|
||||
size_scale = 0
|
||||
hidden = false
|
||||
|
||||
[style.library]
|
||||
foreground_color = "Foreground"
|
||||
background_color = "Background"
|
||||
border_color = "Green"
|
||||
highlight_color = "LightWhite"
|
||||
highlight_symbol = ">"
|
||||
|
||||
[style.playlist]
|
||||
foreground_color = "Foreground"
|
||||
background_color = "Background"
|
||||
border_color = "Green"
|
||||
highlight_color = "LightWhite"
|
||||
highlight_symbol = "!"
|
||||
current_track_symbol = "!"
|
||||
use_loop_mode_symbol = true
|
||||
|
||||
[style.lyric]
|
||||
foreground_color = "Foreground"
|
||||
background_color = "Background"
|
||||
border_color = "Green"
|
||||
|
||||
[style.progress]
|
||||
foreground_color = "LightBlack"
|
||||
background_color = "Background"
|
||||
border_color = "Green"
|
||||
|
||||
[style.important_popup]
|
||||
foreground_color = "Yellow"
|
||||
background_color = "Reset"
|
||||
border_color = "Yellow"
|
||||
|
||||
[style.fallback]
|
||||
foreground_color = "Foreground"
|
||||
background_color = "Reset"
|
||||
border_color = "Blue"
|
||||
highlight_color = "LightYellow"
|
||||
|
||||
[theme]
|
||||
name = "Native"
|
||||
author = "Termusic Developers"
|
||||
|
||||
[theme.primary]
|
||||
background = "native"
|
||||
foreground = "native"
|
||||
|
||||
[theme.cursor]
|
||||
text = "native"
|
||||
cursor = "native"
|
||||
|
||||
[theme.normal]
|
||||
black = "native"
|
||||
red = "native"
|
||||
green = "native"
|
||||
yellow = "native"
|
||||
blue = "native"
|
||||
magenta = "native"
|
||||
cyan = "native"
|
||||
white = "native"
|
||||
|
||||
[theme.bright]
|
||||
black = "native"
|
||||
red = "native"
|
||||
green = "native"
|
||||
yellow = "native"
|
||||
blue = "native"
|
||||
magenta = "native"
|
||||
cyan = "native"
|
||||
white = "native"
|
||||
|
||||
[keys]
|
||||
escape = "escape"
|
||||
quit = "q"
|
||||
|
||||
[keys.view]
|
||||
view_library = "1"
|
||||
view_database = "2"
|
||||
view_podcasts = "3"
|
||||
open_config = "shift+C"
|
||||
open_help = "control+h"
|
||||
|
||||
[keys.navigation]
|
||||
up = "k"
|
||||
down = "j"
|
||||
left = "h"
|
||||
right = "l"
|
||||
goto_top = "g"
|
||||
goto_bottom = "shift+G"
|
||||
|
||||
[keys.global_player]
|
||||
toggle_pause = "space"
|
||||
next_track = "n"
|
||||
previous_track = "shift+N"
|
||||
volume_up = "+"
|
||||
volume_down = "-"
|
||||
seek_forward = "f"
|
||||
seek_backward = "b"
|
||||
speed_up = "control+f"
|
||||
speed_down = "control+b"
|
||||
toggle_prefetch = "control+g"
|
||||
save_playlist = "control+s"
|
||||
|
||||
[keys.global_lyric]
|
||||
adjust_offset_forwards = "shift+F"
|
||||
adjust_offset_backwards = "shift+B"
|
||||
cycle_frames = "shift+T"
|
||||
|
||||
[keys.library]
|
||||
load_track = "l"
|
||||
load_dir = "shift+L"
|
||||
delete = "d"
|
||||
yank = "y"
|
||||
paste = "p"
|
||||
cycle_root = "o"
|
||||
add_root = "a"
|
||||
remove_root = "shift+A"
|
||||
search = "/"
|
||||
youtube_search = "s"
|
||||
open_tag_editor = "t"
|
||||
|
||||
[keys.playlist]
|
||||
delete = "d"
|
||||
delete_all = "shift+D"
|
||||
shuffle = "r"
|
||||
cycle_loop_mode = "m"
|
||||
play_selected = "l"
|
||||
search = "/"
|
||||
swap_up = "shift+K"
|
||||
swap_down = "shift+J"
|
||||
add_random_songs = "s"
|
||||
add_random_album = "shift+S"
|
||||
|
||||
[keys.database]
|
||||
add_selected = "l"
|
||||
add_all = "shift+L"
|
||||
|
||||
[keys.podcast]
|
||||
search = "s"
|
||||
mark_played = "m"
|
||||
mark_all_played = "shift+M"
|
||||
refresh_feed = "r"
|
||||
refresh_all_feeds = "shift+R"
|
||||
download_episode = "d"
|
||||
delete_local_episode = "shift+D"
|
||||
delete_feed = "x"
|
||||
delete_all_feeds = "shift+X"
|
||||
|
||||
[keys.adjust_cover_art]
|
||||
move_left = "control+shift+arrowleft"
|
||||
move_right = "control+shift+arrowright"
|
||||
move_up = "control+shift+arrowup"
|
||||
move_down = "control+shift+arrowdown"
|
||||
increase_size = "control+shift+pageup"
|
||||
decrease_size = "control+shift+pagedown"
|
||||
toggle_hide = "control+shift+end"
|
||||
|
||||
[keys.config]
|
||||
save = "control+s"
|
||||
|
||||
[ytdlp]
|
||||
extra_args = ""
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue