restructure + add vr

This commit is contained in:
2026-08-12 21:29:15 +02:00
parent 9100fc93ef
commit 03ec04d6b3
17 changed files with 95 additions and 69 deletions
+54
View File
@@ -0,0 +1,54 @@
{
programs.beets.enable = true;
# programs.beets.package = pkgs.beets.override {
# pluginOverrides = {
# filetote = {
# enable = true;
# };
# };
# };
programs.beets.settings = {
directory = "/home/user/Music/Tracks";
plugins = [
"fetchart"
"badfiles"
"edit"
"fish"
"hook"
"info"
"missing"
];
import = {
copy = false;
move = false;
autotag = true;
write = false;
};
paths = {
default = "$albumartist/$album/$track. $artist - $title";
};
fetchart = {
auto = true;
sources = [ "filesystem" ];
};
badfiles = {
check_on_import = true;
};
hook = {
hooks = [
{
event = "item_imported";
command = "echo test";
}
];
};
};
}
+8
View File
@@ -0,0 +1,8 @@
{
imports = [
./general.nix
./rules.nix
./keybinds.nix
./execs.nix
];
}
+62
View File
@@ -0,0 +1,62 @@
{
wayland.windowManager.hyprland = {
extraConfig = ''
hl.env("HYPRCURSOR_THEME", "Adwaita")
hl.env("HYPRCURSOR_SIZE", "22")
hl.env("XCURSOR_SIZE", "22")
hl.env("GDK_SCALE", "1")
hl.env("GDK_BACKEND", "wayland,x11,*")
hl.env("XDG_CURRENT_DESKTOP", "Hyprland")
hl.env("XDG_SESSION_TYPE", "wayland")
hl.env("XDG_SESSION_DESKTOP", "Hyprland")
hl.env("QT_QPA_PLATFORM", "wayland")
-- hl.env("QT_QPA_PLATFORMTHEME", "kvantum")
-- hl.env("QT_QPA_PLATFORMTHEME", "hyprqt6engine")
hl.env("QT_QPA_PLATFORMTHEME", "qt6ct")
hl.env("ELECTRON_OZONE_PLATFORM_HINT", "wayland")
hl.env("DOTNET_CLI_TELEMETRY_OPTOUT", "1")
-- hl.env("QT_SCALE_FACTOR", "0.9")
hl.env("LIBVA_DRIVER_NAME", "radeonsi")
-- hl.env("__GLX_VENDOR_LIBRARY_NAME", "nvidia")
-- hl.env("NVD_BACKEND", "direct")
local TERM = "kitty"
-- local BAR = "~/.config/waybar/waybar.sh"
local BAR = "noctalia-shell"
local DMENU = "rofi -show drun"
local CLIPBOARD =
"cliphist list | rofi -dmenu -display-columns 2 -config ~/.config/rofi/clipboard.rasi | cliphist decode | wl-copy"
-- local POWER_MENU = "rofi -show powermenu -modi powermenu:~/.scripts/rofi-powermenu -config ~/.config/rofi/powermenu.rasi"
local WMENU = "rofi -show window"
local CALC = "rofi -show calc -modi calc -no-show-match -no-sort"
local FILE_MAN = "xdg-open ~" -- GUI File Manager
local RANDOM_WALL = "~/.scripts/random-wall" -- set a random wall
local AUTH_AGENT = "/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1"
hl.on("hyprland.start", function()
hl.exec_cmd("kdeconnectd")
hl.exec_cmd("equibop")
-- hl.exec_cmd("sleep 5; discord")
hl.exec_cmd("~/.scripts/walld") -- start wallpaper daemon
hl.exec_cmd(BAR) -- status bar
hl.exec_cmd("udiskie --appindicator &") -- udiskie for automount
hl.exec_cmd("hypridle &") -- start hypridle service
hl.exec_cmd(AUTH_AGENT) -- start authentication agent
hl.exec_cmd("jamesdsp --tray &")
-- hl.exec_cmd("dunst")
-- hl.exec_cmd("opendeck --hide")
hl.exec_cmd("goxlr-daemon")
hl.exec_cmd("qpwgraph -m")
-- hl.exec_cmd("mullvad-vpn --disable-gpu")
hl.exec_cmd("sleep 20; QT_STYLE_OVERRIDE=Fusion musicpresence")
hl.exec_cmd("gsr-ui")
-- Clipboard: history
hl.exec_cmd("wl-paste --type text --watch cliphist store")
hl.exec_cmd("wl-paste --type image --watch cliphist store")
hl.exec_cmd("dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP")
end)
'';
};
}
+165
View File
@@ -0,0 +1,165 @@
{ hyprsplit, ... }:
let
# wal = {
# color11 = "#...";
# color14 = "#...";
# };
in
{
wayland.windowManager.hyprland = {
enable = false;
xwayland.enable = true;
settings = {
device = [
{
name = "glorious-model-o-wireless";
sensitivity = -1.0;
}
{
name = "glorious-model-o";
sensitivity = -0.9;
}
];
config = {
input = {
kb_layout = "de";
follow_mouse = 1;
repeat_delay = 300;
repeat_rate = 35;
scroll_factor = 1.3;
sensitivity = -1.0;
};
general = {
gaps_in = 4;
gaps_out = 12;
border_size = 2;
# "col.active_border" = "rgb(${wal.color11}) rgb(${wal.color14}) 45deg";
# "col.active_border" = "rgba(80808077) rgba(80808077) 45deg";
# "col.inactive_border" = "rgba(80808077) rgba(80808077) 45deg";
resize_on_border = false;
allow_tearing = false;
layout = "dwindle";
};
decoration = {
rounding = 2;
active_opacity = 0.65;
inactive_opacity = 0.65;
shadow = {
enabled = true;
range = 50;
render_power = 4;
color = "0xaf1a1a1a";
};
blur = {
enabled = true;
size = 3;
passes = 4;
brightness = 0.473;
contrast = 1.0;
vibrancy = 0.1696;
vibrancy_darkness = 0.2;
ignore_opacity = true;
popups = true;
};
};
master = {
new_status = "master";
new_on_top = true;
mfact = 0.5;
orientation = "center";
};
misc = {
force_default_wallpaper = 0;
disable_hyprland_logo = true;
enable_anr_dialog = false;
};
xwayland = {
force_zero_scaling = true;
};
};
# animations = {
# enabled = false;
# };
# bezier = [
# "md3_standard,0.2,0,0,1"
# "md3_decel,0.05,0.7,0.1,1"
# "md3_accel,0.3,0,0.8,0.15"
# "overshot,0.05,0.9,0.1,1.02"
#
# # Hyprland supports spring curves as strings.
# "spring_snappy,1,80,16"
#
# "weighted_decel,0.05,0.9,0.1,1"
# "snap_curve,0.1,1,0,1"
# "winIn,0.1,1,0.1,1"
# "winOut,0.1,1,0.1,1"
# ];
#
# animation = [
# "windows,1,4,spring_snappy"
# "windowsIn,1,3,md3_decel,popin 70%"
# "windowsOut,1,4,md3_accel,popin 70%"
# "windowsMove,1,4,overshot"
#
# "fade,1,3,md3_decel"
#
# "layers,1,4.5,md3_standard,fade"
# "layersIn,1,4.5,winIn,slide"
# "layersOut,1,5,winOut,slide"
#
# "workspaces,1,5,md3_decel,slide"
# "workspacesIn,1,7,winIn,slide"
# "workspacesOut,1,7,winOut,slide"
#
# "specialWorkspace,1,4,winIn,slidevert"
# ];
};
extraLuaFiles = {
# create a symlink to `.config/hypr/hyprsplit/init.lua`.
"hyprsplit/init" = {
autoLoad = false;
content = builtins.readFile "${hyprsplit}/init.lua";
};
# Finally, use it directly in Lua.
"hyprload" = {
autoLoad = true;
content = ''
local hs = require("hyprsplit")
hs.config({ num_workspaces = 10 })
local mod = "SUPER"
for i = 1, 10 do
local key = (i == 10) and "0" or tostring(i)
hl.bind(mod .. " + " .. key, hs.dsp.focus({ workspace = i }))
hl.bind(mod .. " + " .. key, hs.dsp.window.move({ workspace = i }))
hl.bind("SUPER + " .. key, hs.dsp.focus({ workspace = i }))
hl.bind("SUPER + SHIFT + " .. key, hs.dsp.window.move({ workspace = i, follow = true }))
end
'';
};
};
extraConfig = ''
hl.monitor({ output = "DP-1", mode = "1920x1080@60", position = "3840x0", scale = "auto" })
hl.monitor({ output = "DP-2", mode = "1920x1080@144", position = "1920x0", scale = "auto", bitdepth = 10 })
hl.monitor({ output = "HDMI-A-1", mode = "1920x1080@60", position = "0x0", scale = "auto" })
'';
};
}
+177
View File
@@ -0,0 +1,177 @@
{
wayland.windowManager.hyprland = {
extraConfig = ''
-- ####################
-- ### KEYBINDINGS ###
-- ####################
local mod = "SUPER"
hl.bind(mod .. " + L", function() hl.dispatch(hl.dsp.exec_cmd(TERM)) end)
hl.bind(mod .. " + SPACE", function() hl.dispatch(hl.dsp.exec_cmd(DMENU)) end)
hl.bind(mod .. " + CTRL + B", function() hl.dispatch(hl.dsp.exec_cmd(RANDOM_WALL)) end)
hl.bind("CTRL + SHIFT + B", hl.dsp.exec_cmd("~/.config/rofi/wallpaper-picker.sh"))
-- hl.bind("CTRL + SHIFT + B", hl.dsp.exec_cmd("dms ipc dankdash wallpaper"))
hl.bind(mod .. " + V", function() hl.dispatch(hl.dsp.exec_cmd(CLIPBOARD)) end)
hl.bind(mod .. " + E", function() hl.dispatch(hl.dsp.exec_cmd(FILE_MAN)) end)
hl.bind(mod .. " + N", hl.dsp.exec_cmd("dunstctl history-pop"))
hl.bind(mod .. " + SHIFT + N", hl.dsp.exec_cmd("dunstctl close-all"))
hl.bind(mod .. " + Q", hl.dsp.window.close())
hl.bind(mod .. " + SHIFT + Q", hl.dsp.window.kill())
hl.bind(mod .. " + C", function() hl.dispatch(hl.dsp.exec_cmd(CALC)) end)
hl.bind(mod .. " + SHIFT + B", function() hl.dispatch(hl.dsp.exec_cmd(BAR)) end)
hl.bind(mod .. " + SHIFT + F", hl.dsp.window.float())
hl.bind(mod .. " + SHIFT + P", hl.dsp.exec_cmd("hyprpicker -a"))
hl.bind(mod .. " + SHIFT + W", function() hl.dispatch(hl.dsp.exec_cmd(WMENU)) end)
hl.bind(mod .. " + B", hl.dsp.exec_cmd("zen-beta"))
-- hl.bind(
-- mod .. " + SHIFT + E",
-- hl.dsp.exec_cmd(
-- "pkill -9 linux-wallpaper; awww img --transition-step 100 /home/user/Pictures/Wallpapers/syntaxerror_wallpaper.png"
-- )
-- )
hl.bind(
mod .. " + SHIFT + E",
hl.dsp.exec_cmd("noctalia-shell ipc call wallpaper set /home/user/Pictures/Wallpapers/syntaxerror_wallpaper.png")
)
hl.bind("ALT + Q", hl.dsp.exec_cmd("pkill -9 python; pkill -9 aria2c"))
hl.bind(mod .. " + P", hl.dsp.exec_cmd("prismlauncher"))
-- hl.bind(mod .. " + W", hl.dsp.exec_cmd("waypaper"))
-- ################
-- ## MEDIA KEYS ##
-- ################
hl.bind("XF86AudioMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"))
hl.bind("XF86AudioPlay", hl.dsp.exec_cmd("playerctl -p mpd play-pause"))
hl.bind("XF86AudioNext", hl.dsp.exec_cmd("playerctl -p mpd next"))
hl.bind("XF86AudioPrev", hl.dsp.exec_cmd("playerctl -p mpd previous"))
hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("pactl set-sink-volume @DEFAULT_SINK@ +5%"))
hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("pactl set-sink-volume @DEFAULT_SINK@ -5%"))
hl.bind(mod .. " + A", hl.dsp.exec_cmd("~/.scripts/play-previous"))
hl.bind(mod .. " + S", hl.dsp.exec_cmd("~/.scripts/play-next"))
hl.bind(mod .. " + D", hl.dsp.exec_cmd("~/.scripts/play-pause"))
hl.bind(mod .. " + SHIFT + D", hl.dsp.exec_cmd("playerctl play-pause"))
hl.bind(mod .. " + PLUS", hl.dsp.exec_cmd("~/.scripts/mpd-volume up"))
hl.bind(mod .. " + MINUS", hl.dsp.exec_cmd("~/.scripts/mpd-volume down"))
-- hl.bind(mod .. " + SHIFT + R", hl.dsp.exec_cmd("~/.scripts/skip30s"))
-- ################
-- ## FULLSCREEN ##
-- ################
hl.bind(mod .. " + F", hl.dsp.window.fullscreen())
-- ################
-- ## SCREENSHOT ##
-- ################
hl.bind(mod .. " + CTRL + S", hl.dsp.exec_cmd("grimblast --freeze --notify copysave active"))
hl.bind(mod .. " + SHIFT + S", hl.dsp.exec_cmd("grimblast --freeze --notify copysave area"))
hl.bind(mod .. " + ALT + S", hl.dsp.exec_cmd("wl-paste | satty -f -"))
-- ##########################
-- ## CENTER FLOAT WINDOW ##
-- ##########################
hl.bind(mod .. " + SHIFT + C", hl.dsp.window.center())
-- ##################
-- ## MOVE FOCUS ##
-- ##################
hl.bind(mod .. " + LEFT", hl.dsp.focus({ direction = "left" }))
hl.bind(mod .. " + RIGHT", hl.dsp.focus({ direction = "right" }))
hl.bind(mod .. " + UP", hl.dsp.focus({ direction = "up" }))
hl.bind(mod .. " + DOWN", hl.dsp.focus({ direction = "down" }))
-- #################
-- ## MOVE WINDOW ##
-- #################
hl.bind(mod .. " + SHIFT + LEFT", hl.dsp.window.move({ direction = "left" }))
hl.bind(mod .. " + SHIFT + RIGHT", hl.dsp.window.move({ direction = "right" }))
hl.bind(mod .. " + SHIFT + UP", hl.dsp.window.move({ direction = "up" }))
hl.bind(mod .. " + SHIFT + DOWN", hl.dsp.window.move({ direction = "down" }))
-- ###################
-- ## RESIZE WINDOW ##
-- ###################
-- hl.bind(mod .. " + CTRL + L", hl.dsp.window.resize(20, 0))
-- hl.bind(mod .. " + CTRL + H", hl.dsp.window.resize(-20, 0))
-- hl.bind(mod .. " + CTRL + K", hl.dsp.window.resize(0, -20))
-- hl.bind(mod .. " + CTRL + J", hl.dsp.window.resize(0, 20))
-- ################
-- ## WORKSPACES ##
-- ################
-- hl.bind(mod .. " + 1", hl.dsp.focus({ workspace = 1}))
-- hl.bind(mod .. " + 2", hl.dsp.focus({ workspace = 2}))
-- hl.bind(mod .. " + 3", hl.dsp.focus({ workspace = 3}))
-- hl.bind(mod .. " + 4", hl.dsp.focus({ workspace = 4}))
-- hl.bind(mod .. " + 5", hl.dsp.focus({ workspace = 5}))
-- hl.bind(mod .. " + 6", hl.dsp.focus({ workspace = 6}))
-- hl.bind(mod .. " + 7", hl.dsp.focus({ workspace = 7}))
-- hl.bind(mod .. " + 8", hl.dsp.focus({ workspace = 8}))
-- hl.bind(mod .. " + 9", hl.dsp.focus({ workspace = 9}))
-- hl.bind(mod .. " + 0", hl.dsp.focus({ workspace = 10}))
-- #################################
-- ## MOVE WINDOW TO WORKSPACES ##
-- #################################
-- hl.bind(mod .. " + SHIFT + 1", hl.dsp.window.move({ workspace = 1 }))
-- hl.bind(mod .. " + SHIFT + 2", hl.dsp.window.move({ workspace = 2 }))
-- hl.bind(mod .. " + SHIFT + 3", hl.dsp.window.move({ workspace = 3 }))
-- hl.bind(mod .. " + SHIFT + 4", hl.dsp.window.move({ workspace = 4 }))
-- hl.bind(mod .. " + SHIFT + 5", hl.dsp.window.move({ workspace = 5 }))
-- hl.bind(mod .. " + SHIFT + 6", hl.dsp.window.move({ workspace = 6 }))
-- hl.bind(mod .. " + SHIFT + 7", hl.dsp.window.move({ workspace = 7 }))
-- hl.bind(mod .. " + SHIFT + 8", hl.dsp.window.move({ workspace = 8 }))
-- hl.bind(mod .. " + SHIFT + 9", hl.dsp.window.move({ workspace = 9 }))
-- hl.bind(mod .. " + SHIFT + 0", hl.dsp.window.move({ workspace = 10 }))
-- ##################
-- ## SCRATCHPADS ##
-- ##################
hl.bind(mod .. " + SHIFT + G", hl.dsp.window.move({ workspace = "special:magic" }))
hl.bind(mod .. " + G", hl.dsp.workspace.toggle_special("magic"))
-- ##########################################
-- ## SCROLL THROUGH EXISTING WORKSPACES ##
-- ##########################################
-- hl.bind(mod .. " + MOUSEDOWN", hl.wm.workspace_relative(1))
-- hl.bind(mod .. " + MOUSEUP", hl.wm.workspace_relative(-1))
-- ###################
-- ## MOUSE ACTIONS ##
-- ###################
hl.bind(mod .. " + mouse:272", hl.dsp.window.drag(), { mouse = true })
hl.bind(mod .. " + mouse:273", hl.dsp.window.resize(), { mouse = true })
-- ###########
-- ## MISC ##
-- ###########
-- hl.bind(mod .. " + MOUSEDOWN", hl.wm.layout_msg("move +col"))
-- hl.bind(mod .. " + MOUSEUP", hl.wm.layout_msg("move -col"))
-- hl.bind(mod .. " + T", hl.wm.toggle_group())
-- hl.bind(mod .. " + SHIFT + X", hl.dsp.exec_cmd("$POWER_MENU"))
hl.bind("CTRL + ALT + F", hl.dsp.exec_cmd("kando -m kandomain"))
-- hl.bind(mod .. " + W", hl.dsp.exec_cmd("$WIFI_MENU"))
-- hl.bind(mod .. " + X", hl.dsp.exec_cmd("hyprlock"))
'';
};
}
+130
View File
@@ -0,0 +1,130 @@
{
wayland.windowManager.hyprland.settings = {
window_rule = [
# -----------------
# Workspace
# -----------------
"workspace 24,title:^(rmpc)$"
"workspace 10,class:^(equibop)$"
"monitor DP-1,title:^(rmpc)$"
"monitor DP-1,class:^(equibop)$"
# -----------------
# Windows
# -----------------
"opacity 1 0.999999,class:^(mpv)$"
"opacity 0.99 override 0.99 override,class:^(obsidian)$"
# -----------------
# Floating
# -----------------
"float,class:^(imv)$"
"float,class:^(nemo)$"
"float,class:.*,title:^(Open File.*)$"
"float,title:^(Picture-in-Picture)$"
"float,class:^(rofi)$"
"float,class:^(xdg-desktop-portal-gtk)$"
"float,title:^(Steam Settings)$"
"float,title:^(Friends List)$"
"float,title:^(nvim)$"
"float,class:^(org.gnome.FileRoller)$"
"float,class:^(org.gnome.Decibels)$"
"float,class:^(neovide)$"
"float,class:^(org.prismlauncher.PrismLauncher)$"
"float,class:^(feh)$"
"float,class:^(com.github.aliencoweatcake.imageviewer)$"
"float,class:^(waypaper)$"
# -----------------
# Scrolling
# -----------------
"scrollmouse 1.0,class:^(Minecraft.*)$"
"scrollmouse 1.0,class:^(Lunar.*)$"
"scrollmouse 1.0,class:^(LiquidBounce.*)$"
"scrollmouse 1.0,class:^(Nomifactory.*)$"
"scrollmouse 1.0,class:^(GT.*)$"
# -----------------
# Center
# -----------------
"center,class:^(imv)$"
"center,class:^(nemo)$"
"center,class:^(org.prismlauncher.PrismLauncher)$"
# -----------------
# Size
# -----------------
"size 1200 700,class:^(imv)$"
"size 1200 700,class:^(nemo)$"
"size 1200 700,title:^(nvim)$"
"size 1200 700,class:^(org.gnome.Decibels)$"
"size 1200 700,class:^(neovide)$"
"size 1200 700,class:^(org.prismlauncher.PrismLauncher)$"
"size 1200 700,class:^(waypaper)$"
"suppressevent maximize,class:.*"
# -----------------
# Opaque
# -----------------
"opaque,class:^(kitty)$"
"opaque,class:^(nemo)$"
"opaque,class:^(virt-manager)$"
"opaque,class:^(rofi)$"
"opaque,class:^(looking-glass-client)$"
"opaque,class:^(steam)$"
"opaque,class:^(equibop)$"
"opaque,initialtitle:^(Zen Browser)$"
"opaque,class:^(org.qutebrowser.qutebrowser)$"
"opaque,class:^(gimp)$"
"opaque,class:^(discord)$"
"opaque,class:^(librewolf)$"
"opaque,class:^(imv)$"
"opaque,class:^(org.gnome.Decibels)$"
"opaque,class:^(neovide)$"
"opaque,class:^(Tor Browser)$"
"opaque,class:^(com.ayugram.desktop)$"
"opaque,title:^(Software Manager)$"
"opaque,class:^(waypaper)$"
"opaque,class:^(mpv)$"
"opaque,class:^(helium)$"
"opaque,class:^(Spotify)$"
# -----------------
# Kando
# -----------------
"noblur,class:^(kando)$"
"opaque,class:^(kando)$"
"size 100% 100%,class:^(kando)$"
"bordersize 0,class:^(kando)$"
"noanim,class:^(kando)$"
"float,class:^(kando)$"
"pin,class:^(kando)$"
];
layer_rule = [
"blur,rofi"
"noanim,hyprpicker"
"noanim,selection"
"noscreenshare,notifications"
"blur,notifications"
"ignorealpha 1,notifications"
"blur,wofi"
"dimaround,rofi"
"noanim,^dms$"
"noscreenshare,dms:notification-popup"
"noanim,noctalia-background-.*$"
"ignorealpha 0.5,noctalia-background-.*$"
"blur,noctalia-background-.*$"
"blurpopups,noctalia-background-.*$"
"noscreenshare,noctalia-notifications-.*$"
];
};
}
+67
View File
@@ -0,0 +1,67 @@
{
programs.kitty = {
enable = true;
shellIntegration.enableFishIntegration = true;
shellIntegration.mode = "enabled";
settings = {
font_family = "CaskaydiaMono NF";
font_size = 11.5;
cursor = "#bbccdd";
scrollback_lines = 50000;
pixel_scroll = true;
cursor_trail = 20;
cursor_trail_start_threshold = 0;
cursor_trail_decay = "0.1 0.2";
mouse_hide_wait = 0.5;
enable_audio_bell = false;
disable_clipboard_control = false;
allow_remote_control = true;
listen_on = "unix:/tmp/kitty_pywal";
single_instance = true;
tab_bar_edge = "top";
tab_bar_margin_width = 0.0;
tab_bar_style = "powerline";
tab_powerline_style = "slanted";
tab_title_max_length = 12;
tab_title_template = ''" {index} {title} "'';
active_tab_font_style = "bold-italic";
inactive_tab_foreground = "#dedede";
inactive_tab_background = "#121212";
inactive_tab_font_style = "normal";
tab_bar_background = "#080808";
tab_bar_margin_color = "none";
foreground = "#dfdfdf";
background = "#000000";
background_opacity = 0;
selection_foreground = "#000000";
selection_background = "#aaeeff";
kitty_mod = "ctrl+shift";
};
keybindings = {
"ctrl+shift+enter" = "none";
"ctrl+shift+l" = "none";
"ctrl+shift+h" = "none";
"alt+1" = "goto_tab 1";
"alt+2" = "goto_tab 2";
"alt+3" = "goto_tab 3";
"alt+4" = "goto_tab 4";
"alt+5" = "goto_tab 5";
"alt+6" = "goto_tab 6";
"alt+7" = "goto_tab 7";
"alt+8" = "goto_tab 8";
"alt+9" = "goto_tab 9";
"alt+0" = "goto_tab 0";
};
};
}
+227
View File
@@ -0,0 +1,227 @@
{
services.mpd = {
enable = true;
musicDirectory = "/home/user/Music";
playlistDirectory = "/home/user/Music/Playlists";
dbFile = "/home/user/.config/mpd/database";
# log_file = "~/.config/mpd/log";
extraConfig = ''
save_absolute_paths_in_playlists "yes"
metadata_to_use "+comment"
audio_output {
type "pipewire"
name "Pipewire Sound Server"
}
audio_output {
type "fifo"
name "my_fifo"
path "/tmp/mpd.fifo"
format "44100:16:2"
}
auto_update "yes"
max_playlist_length "131072"
max_output_buffer_size "32768"
'';
network.listenAddress = "/home/user/.config/mpd/socket";
};
services.mpdscribble = {
enable = true;
endpoints = {
"last.fm" = {
passwordFile = "/home/user/lastfm_password";
username = "KeksNino";
};
};
};
programs.rmpc.enable = true;
programs.rmpc.config = ''
#![enable(implicit_some)]
#![enable(unwrap_newtypes)]
#![enable(unwrap_variant_newtypes)]
(
address: "/home/user/.config/mpd/socket",
password: None,
theme: Some("default"),
cache_dir: Some("/home/user/Music/rmpc"),
on_song_change: None,
volume_step: 5,
max_fps: 60,
scrolloff: 0,
wrap_navigation: false,
enable_mouse: true,
enable_config_hot_reload: true,
status_update_interval_ms: 1000,
rewind_to_start_sec: None,
reflect_changes_to_playlist: false,
select_current_song_on_change: false,
browser_song_sort: [Track, Disc, Artist, Title],
directories_sort: SortFormat(group_by_type: true, reverse: false),
album_art: (
method: Kitty,
max_size_px: (width: 1200, height: 1200),
disabled_protocols: ["http://", "https://"],
vertical_align: Center,
horizontal_align: Center,
),
keybinds: (
global: {
":": CommandMode,
",": VolumeDown,
"s": Stop,
".": VolumeUp,
"<Tab>": NextTab,
"<S-Tab>": PreviousTab,
"1": SwitchToTab("Queue"),
"2": SwitchToTab("Files"),
"3": SwitchToTab("Playlists"),
"4": SwitchToTab("Artists"),
"5": SwitchToTab("Albums"),
"6": SwitchToTab("Search"),
//"7": SwitchToTab("Album Artists"),
"q": Quit,
">": NextTrack,
"p": TogglePause,
"<": PreviousTrack,
"f": SeekForward,
"z": ToggleRepeat,
"x": ToggleRandom,
"c": ToggleConsume,
"v": ToggleSingle,
"b": SeekBack,
"~": ShowHelp,
"u": Update,
"U": Rescan,
"I": ShowCurrentSongInfo,
"O": ShowOutputs,
"P": ShowDecoders,
"R": AddRandom,
"<C-p>": ExternalCommand(command: ["/home/user/.scripts/check-playlist.sh"], description: "Check if selected song is already in a playlist"),
},
navigation: {
"k": Up,
"j": Down,
"h": Left,
"l": Right,
"<Up>": Up,
"<Down>": Down,
"<Left>": Left,
"<Right>": Right,
"<C-k>": PaneUp,
"<C-j>": PaneDown,
"<C-h>": PaneLeft,
"<C-l>": PaneRight,
"<C-u>": UpHalf,
"N": PreviousResult,
"a": Add,
"A": AddAll,
"r": Rename,
"n": NextResult,
"g": Top,
"<Space>": Select,
"<C-Space>": InvertSelection,
"G": Bottom,
"<CR>": Confirm,
"i": FocusInput,
"J": MoveDown,
"<C-d>": DownHalf,
"/": EnterSearch,
"<C-c>": Close,
"<Esc>": Close,
"K": MoveUp,
"D": Delete,
"B": ShowInfo,
},
queue: {
"D": DeleteAll,
"<CR>": Play,
"<C-s>": Save,
"a": AddToPlaylist,
"d": Delete,
"C": JumpToCurrent,
"X": Shuffle,
},
),
search: (
case_sensitive: 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,
),
cava: (
framerate: 60,
autosens: true,
sensitivity: 110, // default 100
lower_cutoff_freq: 50, // not passed to cava if not provided
higher_cutoff_freq: 10000, // not passed to cava if not provided
input: (
method: Fifo,
source: "/tmp/mpd.fifo",
sample_rate: 44100,
channels: 2,
sample_bits: 16,
),
smoothing: (
noise_reduction: 77,
monstercat: true,
waves: false,
),
eq: []
),
tabs: [
(
name: "Queue",
pane: Split(
direction: Horizontal,
panes: [
(size: "40%", pane: Pane(AlbumArt)),
(size: "60%", pane: Split(
direction: Vertical,
panes: [
(size: "95%", pane: Pane(Queue)),
(size: "30%", pane: Pane(Cava)),
],
)),
],
),
),
(
name: "Files",
pane: Pane(Directories),
),
(
name: "Playlists",
pane: Pane(Playlists),
),
(
name: "Artists",
pane: Pane(Artists),
),
(
name: "Albums",
pane: Pane(Albums),
),
(
name: "Search",
pane: Pane(Search),
),
//(
// name: "Album Artists",
// pane: Pane(AlbumArtists),
//),
],
)
'';
}