mpd 1
This commit is contained in:
parent
35ae10e760
commit
2def094022
6 changed files with 90 additions and 23 deletions
|
@ -52,6 +52,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
home-manager.enable = true;
|
home-manager.enable = true;
|
||||||
|
xdg.enable = true;
|
||||||
|
|
||||||
stuff = {
|
stuff = {
|
||||||
xserver.enable = true;
|
xserver.enable = true;
|
||||||
|
@ -67,6 +68,7 @@
|
||||||
documentation.enable = true;
|
documentation.enable = true;
|
||||||
theme.enable = true;
|
theme.enable = true;
|
||||||
printing.enable = true;
|
printing.enable = true;
|
||||||
|
mpd.enable = true;
|
||||||
|
|
||||||
autorandr = {
|
autorandr = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
@ -51,6 +51,7 @@
|
||||||
documentation.enable = true;
|
documentation.enable = true;
|
||||||
theme.enable = true;
|
theme.enable = true;
|
||||||
printing.enable = true;
|
printing.enable = true;
|
||||||
|
xdg.enable = true;
|
||||||
|
|
||||||
xserver = {
|
xserver = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
@ -22,5 +22,7 @@
|
||||||
./stuff/gaming.nix
|
./stuff/gaming.nix
|
||||||
./stuff/other-desktop-programs.nix
|
./stuff/other-desktop-programs.nix
|
||||||
./stuff/other-dev-programs.nix
|
./stuff/other-dev-programs.nix
|
||||||
|
./stuff/mpd.nix
|
||||||
|
./stuff/xdg.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
|
@ -68,14 +68,6 @@ in {
|
||||||
size = 10.0;
|
size = 10.0;
|
||||||
};
|
};
|
||||||
|
|
||||||
bars = [
|
|
||||||
{
|
|
||||||
inherit fonts;
|
|
||||||
trayOutput = "primary";
|
|
||||||
statusCommand = "${pkgs.i3status}/bin/i3status";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
defaultWorkspace = "workspace number 1";
|
defaultWorkspace = "workspace number 1";
|
||||||
|
|
||||||
workspaceOutputAssign = lib.mapAttrsToList
|
workspaceOutputAssign = lib.mapAttrsToList
|
||||||
|
@ -90,7 +82,6 @@ in {
|
||||||
|
|
||||||
startup = [
|
startup = [
|
||||||
{ command = "autotiling &"; notification = false; }
|
{ command = "autotiling &"; notification = false; }
|
||||||
# { command = "mpd &"; notification = false; }
|
|
||||||
]
|
]
|
||||||
++ optionals config.chuj.stuff.dunst.enable [{ command = "dunst &"; notification = false; }]
|
++ optionals config.chuj.stuff.dunst.enable [{ command = "dunst &"; notification = false; }]
|
||||||
++ optionals config.chuj.stuff.flameshot.enable [{ command = "flameshot &"; notification = false; }]
|
++ optionals config.chuj.stuff.flameshot.enable [{ command = "flameshot &"; notification = false; }]
|
||||||
|
@ -98,6 +89,16 @@ in {
|
||||||
{ command = "i3-msg \"workspace ${cfg.communicators.workspace}; append_layout ${../../files/i3_communicators_layout.json}\""; notification = false; }
|
{ command = "i3-msg \"workspace ${cfg.communicators.workspace}; append_layout ${../../files/i3_communicators_layout.json}\""; notification = false; }
|
||||||
{ command = "discord &"; notification = false; }
|
{ command = "discord &"; notification = false; }
|
||||||
{ command = "element-desktop &"; notification = false; }
|
{ command = "element-desktop &"; notification = false; }
|
||||||
|
]
|
||||||
|
++ optionals config.chuj.stuff.mpd.enable [
|
||||||
|
{ command = "${pkgs.writeShellScriptBin "mpdstatus" ''
|
||||||
|
while true; do
|
||||||
|
status=$(mpc status | sed -n 2p | cut -d' ' -f1)
|
||||||
|
title=$(basename "$(mpc current -f '%file%')" .mp3)
|
||||||
|
echo "$status $title" > /tmp/i3-mpd-status-stuff
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
''}/bin/mpdstatus &"; notification = false; }
|
||||||
];
|
];
|
||||||
|
|
||||||
modes = let
|
modes = let
|
||||||
|
@ -119,7 +120,7 @@ in {
|
||||||
mod = modifier;
|
mod = modifier;
|
||||||
execns = "exec --no-startup-id";
|
execns = "exec --no-startup-id";
|
||||||
cmd_and_center = cmd: "${execns} i3-msg '${cmd}' && i3custom-center-mouse-on-focus";
|
cmd_and_center = cmd: "${execns} i3-msg '${cmd}' && i3custom-center-mouse-on-focus";
|
||||||
in {
|
in mergeAttrs {
|
||||||
# Program keybinds
|
# Program keybinds
|
||||||
"${mod}+Return" = ''${execns} ${if config.chuj.stuff.alacritty.enable then "alacritty" else "i3-sensible-terminal"}'';
|
"${mod}+Return" = ''${execns} ${if config.chuj.stuff.alacritty.enable then "alacritty" else "i3-sensible-terminal"}'';
|
||||||
"${mod}+Shift+s" = mkIf config.chuj.stuff.flameshot.enable "${execns} flameshot gui";
|
"${mod}+Shift+s" = mkIf config.chuj.stuff.flameshot.enable "${execns} flameshot gui";
|
||||||
|
@ -132,17 +133,6 @@ in {
|
||||||
"Ctrl+F10" = "${execns} pamixer --decrease 5";
|
"Ctrl+F10" = "${execns} pamixer --decrease 5";
|
||||||
"Ctrl+F11" = "${execns} pamixer --increase 5";
|
"Ctrl+F11" = "${execns} pamixer --increase 5";
|
||||||
|
|
||||||
# MPD controls
|
|
||||||
# "Ctrl+F5" = "exec ~/music/select_music.sh";
|
|
||||||
# "Ctrl+F6" = "exec mpc prev";
|
|
||||||
# "Ctrl+F7" = "exec mpc toggle";
|
|
||||||
# "Ctrl+F8" = "exec mpc next";
|
|
||||||
# "Ctrl+Shift+F6" = "exec mpc seek -3";
|
|
||||||
# "Ctrl+Shift+F7" = "exec mpc clear";
|
|
||||||
# "Ctrl+Shift+F8" = "exec mpc seek +3";
|
|
||||||
# "Ctrl+Shift+F10" = ''exec mpc volume -5 && dunstify "mpc $(mpc volume)" -r 420'';
|
|
||||||
# "Ctrl+Shift+F11" = ''exec mpc volume +5 && dunstify "mpc $(mpc volume)" -r 420'';
|
|
||||||
|
|
||||||
# General i3 keybindings
|
# General i3 keybindings
|
||||||
"${mod}+f" = cmd_and_center "fullscreen toggle";
|
"${mod}+f" = cmd_and_center "fullscreen toggle";
|
||||||
"${mod}+r" = "mode resize";
|
"${mod}+r" = "mode resize";
|
||||||
|
@ -189,7 +179,26 @@ in {
|
||||||
"${mod}+Shift+8" = cmd_and_center "move container to workspace number 8";
|
"${mod}+Shift+8" = cmd_and_center "move container to workspace number 8";
|
||||||
"${mod}+Shift+9" = cmd_and_center "move container to workspace number 9";
|
"${mod}+Shift+9" = cmd_and_center "move container to workspace number 9";
|
||||||
"${mod}+Shift+0" = cmd_and_center "move container to workspace number 10";
|
"${mod}+Shift+0" = cmd_and_center "move container to workspace number 10";
|
||||||
};
|
} (optionalAttrs config.chuj.stuff.mpd.enable {
|
||||||
|
# MPD controls
|
||||||
|
"Ctrl+F5" = "exec mpdfdial.sh";
|
||||||
|
"Ctrl+F6" = "exec mpc prev";
|
||||||
|
"Ctrl+F7" = "exec mpc toggle";
|
||||||
|
"Ctrl+F8" = "exec mpc next";
|
||||||
|
"Ctrl+Shift+F6" = "exec mpc seek -3";
|
||||||
|
"Ctrl+Shift+F7" = "exec mpc clear";
|
||||||
|
"Ctrl+Shift+F8" = "exec mpc seek +3";
|
||||||
|
"Ctrl+Shift+F10" = ''exec mpc volume -5 && dunstify "mpc $(mpc volume)" -r 420'';
|
||||||
|
"Ctrl+Shift+F11" = ''exec mpc volume +5 && dunstify "mpc $(mpc volume)" -r 420'';
|
||||||
|
});
|
||||||
|
|
||||||
|
bars = [
|
||||||
|
{
|
||||||
|
inherit fonts;
|
||||||
|
trayOutput = "primary";
|
||||||
|
statusCommand = "${pkgs.i3status}/bin/i3status";
|
||||||
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -209,6 +218,15 @@ in {
|
||||||
modules = mergeAttrs {
|
modules = mergeAttrs {
|
||||||
# todo MPD module (using read_file most likely, or switch to i3blocks)
|
# todo MPD module (using read_file most likely, or switch to i3blocks)
|
||||||
|
|
||||||
|
"read_file mpd" = {
|
||||||
|
position = -1;
|
||||||
|
settings = {
|
||||||
|
format = "%content";
|
||||||
|
path = "/tmp/i3-mpd-status-stuff";
|
||||||
|
color_good = "#ffffff";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
"cpu_usage" = {
|
"cpu_usage" = {
|
||||||
position = 0;
|
position = 0;
|
||||||
settings = {
|
settings = {
|
||||||
|
|
42
modules/stuff/mpd.nix
Normal file
42
modules/stuff/mpd.nix
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
{ lib, pkgs, config, ...}: let
|
||||||
|
inherit (lib) mkIf mkEnableOption mkOption;
|
||||||
|
cfg = config.chuj.stuff.mpd;
|
||||||
|
user = config.chuj.system.user;
|
||||||
|
in {
|
||||||
|
options.chuj.stuff.mpd = {
|
||||||
|
enable = mkEnableOption "mpd";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
home-manager.users.${user} = {
|
||||||
|
services.mpd = {
|
||||||
|
enable = true;
|
||||||
|
extraConfig = ''
|
||||||
|
audio_output {
|
||||||
|
type "pulse"
|
||||||
|
name "PulseAudio Output"
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
home.packages = let
|
||||||
|
yad = "${pkgs.yad}/bin/yad";
|
||||||
|
dunstify = "${pkgs.dunst}/bin/dunstify";
|
||||||
|
mpc = "${pkgs.mpc-cli}/bin/mpc";
|
||||||
|
cut = "${pkgs.coreutils}/bin/cut";
|
||||||
|
in [
|
||||||
|
pkgs.mpc-cli
|
||||||
|
(pkgs.writeShellScriptBin "mpdfdial.sh" ''
|
||||||
|
path=$(${yad} --file --directory | ${cut} -d "/" -f5-)
|
||||||
|
|
||||||
|
${dunstify} "playing from \"$path\""
|
||||||
|
${mpc} update
|
||||||
|
${mpc} rescan
|
||||||
|
${mpc} add "$path"
|
||||||
|
${mpc} random on
|
||||||
|
${mpc} repeat on
|
||||||
|
${mpc} play
|
||||||
|
'')
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,6 +1,7 @@
|
||||||
{ lib, pkgs, config, ...}: let
|
{ lib, pkgs, config, ...}: let
|
||||||
inherit (lib) mkIf mkEnableOption mkOption;
|
inherit (lib) mkIf mkEnableOption mkOption;
|
||||||
cfg = config.chuj.xdg;
|
cfg = config.chuj.xdg;
|
||||||
|
user = config.chuj.system.user;
|
||||||
in {
|
in {
|
||||||
options.chuj.xdg = {
|
options.chuj.xdg = {
|
||||||
enable = mkEnableOption "xdg";
|
enable = mkEnableOption "xdg";
|
||||||
|
@ -37,11 +38,12 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
home.sessionVariables = {
|
home.sessionVariables = let
|
||||||
XDG_DATA_HOME = hmCfg.xdg.dataHome;
|
XDG_DATA_HOME = hmCfg.xdg.dataHome;
|
||||||
XDG_CONFIG_HOME = hmCfg.xdg.configHome;
|
XDG_CONFIG_HOME = hmCfg.xdg.configHome;
|
||||||
XDG_STATE_HOME = hmCfg.xdg.stateHome;
|
XDG_STATE_HOME = hmCfg.xdg.stateHome;
|
||||||
XDG_CACHE_HOME = hmCfg.xdg.cacheHome;
|
XDG_CACHE_HOME = hmCfg.xdg.cacheHome;
|
||||||
|
in {
|
||||||
ANDROID_USER_HOME = "${XDG_DATA_HOME}/android";
|
ANDROID_USER_HOME = "${XDG_DATA_HOME}/android";
|
||||||
ANDROID_HOME = "${XDG_DATA_HOME}/android/sdk";
|
ANDROID_HOME = "${XDG_DATA_HOME}/android/sdk";
|
||||||
GRADLE_USER_HOME = "${XDG_DATA_HOME}/gradle";
|
GRADLE_USER_HOME = "${XDG_DATA_HOME}/gradle";
|
||||||
|
|
Loading…
Reference in a new issue