Want to contribute? Fork me on Codeberg.org!
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

151 lines
4.8 KiB

{ pkgs, lib, ... }:
let
theme = import ../theme;
mod = "Mod4";
in with theme.colors; {
# Dependencies
home.packages = with pkgs; [
playerctl # pactl comes with PulseAudio
wmctrl # For rofi power menu
xborders # Active window borders
maim xdotool unclutter # Active window screenshots
xbindkeys xsel xdotool # Disable middle mouse paste
];
home.file = {
# Disable middle mouse paste
# May require running xbindkeys -p first time after rebuild
# https://unix.stackexchange.com/a/277488
".xbindkeysrc".text = ''
"echo -n | xsel -n -i; pkill xbindkeys; xdotool click 2; xbindkeys"
b:2 + Release
'';
};
# Screenshots
services.flameshot = {
enable = true;
settings = {
General = {
disabledTrayIcon = true;
showStartupLaunchMessage = false;
showHelp = false;
showSidePanelButton = false;
uiColor = "${bg1}";
contrastUiColor = "${bg0}";
drawColor = "#ffffff";
};
};
};
xsession.windowManager.i3 = {
enable = true;
config = {
defaultWorkspace = "workspace number 1"; # defaults to 10 for some reason
modifier = mod;
floating.modifier = "Mod1";
gaps = {
inner = 12;
smartGaps = true;
};
colors = {
focused = {
border = "${bg1}";
background = "${bg1}";
text = "${fg0}";
indicator = "${undefined}";
childBorder = "${undefined}";
};
focusedInactive = {
border = "${bg1}";
background = "${bg1}";
text = "${fg0}";
indicator = "${undefined}";
childBorder = "${undefined}";
};
unfocused = {
border = "${bg0}";
background = "${bg0}";
text = "${fg0}";
indicator = "${undefined}";
childBorder = "${undefined}";
};
};
startup = [
{
command = "(systemctl --user restart polybar &) && (nm-applet &) && (nextcloud &) && (xborders --border-rgb ${builtins.substring 1 6 primary}ff --border-radius 12 --border-width 2 --smart-hide-border --disable-version-warning)";
always = true;
notification = false;
}
];
keybindings = lib.mkOptionDefault {
"${mod}+Return" = "exec kitty";
"${mod}+Shift+e" = "exec i3-msg exit"; # bypass default session exit confirmation menu
"${mod}+space" = "exec i3-msg open"; # Open blank space
"Mod1+Q" = let rofi-power = pkgs.substituteAll {
src = ./power.sh;
isExecutable = true;
}; in "exec ${rofi-power}";
"${mod}+a" = "exec com.github.alainm23.task-planner.quick-add";
# Audio controls
"XF86AudioRaiseVolume" = "exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10%";
"XF86AudioLowerVolume" = "exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10%";
"XF86AudioMute" = "exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle";
"XF86AudioMicMute" = "exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle";
# Media player controls
"XF86AudioPlay" = "exec playerctl play-pause";
"XF86AudioNext" = "exec playerctl next";
"XF86AudioPrev" = "exec playerctl previous";
# Window resizing
"${mod}+Ctrl+Left" = "resize shrink width 16px or 1ppt";
"${mod}+Ctrl+Right" = "resize grow width 16px or 1ppt";
"${mod}+Ctrl+Up" = "resize grow height 16px or 1ppt";
"${mod}+Ctrl+Down" = "resize shrink height 16px or 1ppt";
# Screenshots
"Print" = "exec flameshot gui";
# For some reason -u/--hidecursor tag makes image blank
# So, we hide then unhide the cursor
"${mod}+Print" = "exec (unclutter -idle 0 &) && maim -i \"$(xdotool getactivewindow)\" | xclip -selection clipboard -t image/png && killall unclutter";
# Remove dmenu
"${mod}+d" = null;
};
keycodebindings = {
"133" = "--release exec rofi -show drun -theme";
};
window.commands = [
{
command = "border pixel 0";
criteria = { class = "^.*"; };
}
{
command = "floating enable";
criteria = { class = "Nextcloud"; };
}
{
command = "floating enable";
criteria = { class = "PureRef"; };
}
{
command = "floating enable";
criteria = { title = "Drawing Panel"; };
}
{
command = "floating enable";
criteria = { title = "Task Planner - Quick Add"; };
}
{
command = "floating enable";
criteria = { instance = "Godot_Engine"; title="*(DEBUG)"; };
}
];
bars = [];
};
};
}