Setup layman

This commit is contained in:
Nathan McCarty 2023-04-20 02:20:23 -04:00
parent 324f519623
commit c3fd93a814
Signed by: thatonelutenist
GPG Key ID: D70DA3DD4D1E9F96
1 changed files with 66 additions and 10 deletions

View File

@ -4,6 +4,7 @@ in with lib; {
config = mkIf nathan.programs.swaywm.enable (let
swaylock-command = ''
${pkgs.swaylock-effects}/bin/swaylock --screenshots --grace 30 --indicator --clock --timestr "%-I:%M:%S %p" --datestr "%A %Y-%M-%d" --effect-blur 20x3'';
layman-package = inputs.self.packages.${pkgs.system}.layman;
in {
home.packages = with pkgs; [
# Locking and display management
@ -45,11 +46,13 @@ in with lib; {
# sworkstyle - Automatic workspace renaming
swayest-workstyle
font-awesome
layman-package
];
#########################
## Sway
#########################
wayland.windowManager.sway = {
wayland.windowManager.sway = let modifier = "Mod4";
in {
enable = true;
systemdIntegration = true;
wrapperFeatures = {
@ -145,19 +148,18 @@ in with lib; {
};
};
# Setup keybindings
keybindings = let modifer = "Mod4";
in lib.mkOptionDefault {
"${modifer}+q" = "kill";
"${modifer}+z" = "exec ${swaylock-command}";
keybindings = lib.mkOptionDefault {
"${modifier}+q" = "kill";
"${modifier}+z" = "exec ${swaylock-command}";
## Sreenshot keybinds
# Copy area to clipboard
"${modifer}+x" =
"${modifier}+x" =
"exec ${pkgs.sway-contrib.grimshot}/bin/grimshot copy area";
# Copy window to clipboard
"${modifer}+Ctrl+x" =
"${modifier}+Ctrl+x" =
"exec ${pkgs.sway-contrib.grimshot}/bin/grimshot copy window";
# Clpy entire output to clipboard
"${modifer}+Alt+x" =
"${modifier}+Alt+x" =
"exec ${pkgs.sway-contrib.grimshot}/bin/grimshot copy output";
# Make the mute key work
"XF86AudioMute" = "exec pactl set-sink-mute @DEFAULT_SINK@ toggle";
@ -170,11 +172,29 @@ in with lib; {
"XF86AudioPlay" = "exec mpc toggle";
"XF86AudioNext" = "exec mpc next";
# Setup scratchpads
"${modifer}+n" =
"${modifier}+n" =
"exec sh -c 'swaymsg [app_id=\"emacs\"] scratchpad show'";
"${modifer}+m" =
"${modifier}+m" =
"exec sh -c 'swaymsg [app_id=\"Alacritty\"] scratchpad show'";
# Rebind movement keys to use layman
"${modifier}+Shift+h" = "nop layman move left";
"${modifier}+Shift+j" = "nop layman move down";
"${modifier}+Shift+k" = "nop layman move up";
"${modifier}+Shift+l" = "nop layman move right";
# Switch to layman mode
"${modifier}+g" = "mode layout";
};
modes = lib.mkOptionDefault {
layout = {
h = "nop layman layout none";
j = "nop layman layout Autotiling";
k = "nop layman layout Grid";
l = "nop layman layout MasterStack";
Escape = "mode default";
Return = "mode default";
};
};
# Setup a custom mode for layman operations
# Turn on numlock by default
input = {
"*" = { xkb_numlock = "enable"; };
@ -216,6 +236,42 @@ in with lib; {
'org.jellyfin.' = ''
'';
};
## layman
# First setup the service
systemd.user.services.layman = {
Unit = {
Description = "layman - sway layout manager";
After = [ "graphical-session.target" ];
};
Service = {
Type = "simple";
ExecStart = ''
${layman-package}/bin/layman
'';
Restart = "always";
};
Install = { WantedBy = [ "graphical-session.target" ]; };
};
# then setup the configuration
xdg.configFile."layman" = {
target = "layman/config.toml";
text = ''
# The `layman` section configures options that apply to the layman daemon, and any fallback
# values for options not set in a [workspace] or [output] section.
[layman]
defaultLayout = "none" # The default WLM to assign to a workspace
excludedWorkspaces = [] # Numbers of workspaces to be excuded
excludedOutputs = [] # Names of outputs to be excuded
debug = true # Enable logging debug messages globaly
depthLimit = 0 # Autotiling: Default depth limit (disabled) for all workspaces
stackLayout = "splitv" # MasterStack: Default stack layout for all workspaces
stackSidet = "left" # MasterStack: Default stack position for all workspaces
masterWidth = 65 # MasterStack: Default master width for all workspaces
'';
onChange = ''
${layman-package}/bin/layman || true
'';
};
#########################
## Mako (notifications)
#########################