From d68d4fb0d042df6e18c3726571c56e4f1e23c3f4 Mon Sep 17 00:00:00 2001
From: Tim Schubert <dadada@dadada.li>
Date: Sat, 25 Jan 2025 14:38:52 +0100
Subject: [PATCH 1/2] fix(home): prefer adwaita light theme variant
---
home/dconf.nix | 1 +
1 file changed, 1 insertion(+)
diff --git a/home/dconf.nix b/home/dconf.nix
index 7fb2800..2e25aab 100644
--- a/home/dconf.nix
+++ b/home/dconf.nix
@@ -48,6 +48,7 @@ with lib.hm.gvariant;
gtk-enable-primary-paste = false;
gtk-key-theme = "Emacs";
gtk-theme = "Adwaita";
+ color-scheme = "prefer-light";
icon-theme = "Adwaita";
locate-pointer = false;
monospace-font-name = "JetBrains Mono 10";
From b954f7181940d2daa6f8d9e5c767e23d0bc5f897 Mon Sep 17 00:00:00 2001
From: Tim Schubert <dadada@dadada.li>
Date: Sat, 25 Jan 2025 17:43:38 +0100
Subject: [PATCH 2/2] feat(home): template sway config with colors
---
home/config | 231 -----------------------------------
home/default.nix | 311 +++++++++++++++++++++++++++++++++++++++++++----
2 files changed, 286 insertions(+), 256 deletions(-)
delete mode 100644 home/config
diff --git a/home/config b/home/config
deleted file mode 100644
index d2a4443..0000000
--- a/home/config
+++ /dev/null
@@ -1,231 +0,0 @@
-# Read `man 5 sway` for a complete reference.
-
-### Variables
-#
-# Logo key. Use Mod1 for Alt.
-set $mod Mod4
-# Home row direction keys, like vim
-set $left h
-set $down j
-set $up k
-set $right l
-# Your preferred terminal emulator
-set $term foot
-# Your preferred application launcher
-# Note: pass the final command to swaymsg so that the resulting window can be opened
-# on the original workspace that the command was run on.
-set $menu dmenu_path | wmenu | xargs swaymsg exec --
-
-### Output configuration
-#
-# Default wallpaper (more resolutions are available in /run/current-system/sw/share/backgrounds/sway/)
-output * bg ~/tmp/51761494940_7f9d6ab0e3_o.jpg fill
-
-### Idle configuration
-#
-# Example configuration:
-#
-exec swayidle -w \
- timeout 300 'swaylock -f -c 000000' \
- timeout 600 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' \
- before-sleep 'swaylock -f -c 000000'
-#
-# This will lock your screen after 300 seconds of inactivity, then turn off
-# your displays after another 300 seconds, and turn your screens back on when
-# resumed. It will also lock your screen before your computer goes to sleep.
-
-input * {
- xkb_layout eu
- xkb_model pc105+inet
- xkb_options caps:escape
- drag_lock enabled
- drag enabled
- dwt enabled
- tap enabled
- tap_button_map lrm
- natural_scroll enabled
-}
-
-### Key bindings
-#
-# Basics:
-#
-# Start a terminal
-bindsym $mod+Return exec $term
-
-# Kill focused window
-bindsym $mod+Shift+q kill
-
-# Start your launcher
-bindsym $mod+d exec $menu
-
-# Drag floating windows by holding down $mod and left mouse button.
-# Resize them with right mouse button + $mod.
-# Despite the name, also works for non-floating windows.
-# Change normal to inverse to use left mouse button for resizing and right
-# mouse button for dragging.
-floating_modifier $mod normal
-
-# Lock the screen
-bindsym XF86Sleep exec 'swaylock -f -c 000000'
-
-# Reload the configuration file
-bindsym $mod+Shift+c reload
-
-# Exit sway (logs you out of your Wayland session)
-bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit'
-
-# Brightness
-bindsym --locked XF86MonBrightnessDown exec light -U 10
-bindsym --locked XF86MonBrightnessUp exec light -A 10
-
-# Volume
-bindsym --locked XF86AudioRaiseVolume exec 'pactl set-sink-volume @DEFAULT_SINK@ +1%'
-bindsym --locked XF86AudioLowerVolume exec 'pactl set-sink-volume @DEFAULT_SINK@ -1%'
-bindsym --locked XF86AudioMute exec 'pactl set-sink-mute @DEFAULT_SINK@ toggle'
-
-#
-# Moving around:
-#
-# Move your focus around
-bindsym $mod+$left focus left
-bindsym $mod+$down focus down
-bindsym $mod+$up focus up
-bindsym $mod+$right focus right
-# Or use $mod+[up|down|left|right]
-bindsym $mod+Left focus left
-bindsym $mod+Down focus down
-bindsym $mod+Up focus up
-bindsym $mod+Right focus right
-
-# Move the focused window with the same, but add Shift
-bindsym $mod+Shift+$left move left
-bindsym $mod+Shift+$down move down
-bindsym $mod+Shift+$up move up
-bindsym $mod+Shift+$right move right
-# Ditto, with arrow keys
-bindsym $mod+Shift+Left move left
-bindsym $mod+Shift+Down move down
-bindsym $mod+Shift+Up move up
-bindsym $mod+Shift+Right move right
-
-#
-# Workspaces:
-#
-# Switch to workspace
-bindsym $mod+1 workspace number 1
-bindsym $mod+2 workspace number 2
-bindsym $mod+3 workspace number 3
-bindsym $mod+4 workspace number 4
-bindsym $mod+5 workspace number 5
-bindsym $mod+6 workspace number 6
-bindsym $mod+7 workspace number 7
-bindsym $mod+8 workspace number 8
-bindsym $mod+9 workspace number 9
-bindsym $mod+0 workspace number 10
-# Move focused container to workspace
-bindsym $mod+Shift+1 move container to workspace number 1
-bindsym $mod+Shift+2 move container to workspace number 2
-bindsym $mod+Shift+3 move container to workspace number 3
-bindsym $mod+Shift+4 move container to workspace number 4
-bindsym $mod+Shift+5 move container to workspace number 5
-bindsym $mod+Shift+6 move container to workspace number 6
-bindsym $mod+Shift+7 move container to workspace number 7
-bindsym $mod+Shift+8 move container to workspace number 8
-bindsym $mod+Shift+9 move container to workspace number 9
-bindsym $mod+Shift+0 move container to workspace number 10
-# Note: workspaces can have any name you want, not just numbers.
-# We just use 1-10 as the default.
-
-#
-# Layout stuff:
-#
-# You can "split" the current object of your focus with
-# $mod+b or $mod+v, for horizontal and vertical splits
-# respectively.
-bindsym $mod+b splith
-bindsym $mod+v splitv
-
-# Switch the current container between different layout styles
-bindsym $mod+s layout stacking
-bindsym $mod+w layout tabbed
-bindsym $mod+e layout toggle split
-
-# Make the current focus fullscreen
-bindsym $mod+f fullscreen
-
-# Toggle the current focus between tiling and floating mode
-bindsym $mod+Shift+space floating toggle
-
-# Swap focus between the tiling area and the floating area
-bindsym $mod+space focus mode_toggle
-
-# Move focus to the parent container
-bindsym $mod+a focus parent
-
-#
-# Font
-#
-font "pango:Jetbrains Mono 8"
-
-#
-# Scratchpad:
-#
-# Sway has a "scratchpad", which is a bag of holding for windows.
-# You can send windows there and get them back later.
-
-# Move the currently focused window to the scratchpad
-bindsym $mod+Shift+minus move scratchpad
-
-# Show the next scratchpad window or hide the focused scratchpad window.
-# If there are multiple scratchpad windows, this command cycles through them.
-bindsym $mod+minus scratchpad show
-
-#
-# Resizing containers:
-#
-mode "resize" {
- # left will shrink the containers width
- # right will grow the containers width
- # up will shrink the containers height
- # down will grow the containers height
- bindsym $left resize shrink width 10px
- bindsym $down resize grow height 10px
- bindsym $up resize shrink height 10px
- bindsym $right resize grow width 10px
-
- # Ditto, with arrow keys
- bindsym Left resize shrink width 10px
- bindsym Down resize grow height 10px
- bindsym Up resize shrink height 10px
- bindsym Right resize grow width 10px
-
- # Return to default mode
- bindsym Return mode "default"
- bindsym Escape mode "default"
-}
-bindsym $mod+r mode "resize"
-
-#
-# Status Bar:
-#
-# Read `man 5 sway-bar` for more information about this section.
-bar {
- position top
-
- # When the status_command prints a new line to stdout, swaybar updates.
- # The default just shows the current date and time.
- status_command ~/.config/sway/status
-
- colors {
- statusline #ffffff
- background #323232
- inactive_workspace #32323200 #32323200 #5c5c5c
- }
-}
-
-bindsym $mod+grave exec busctl --user call org.keepassxc.KeePassXC.MainWindow /keepassxc org.keepassxc.KeePassXC.MainWindow lockAllDatabases && swaylock -c 000000
-
-include /etc/sway/config.d/*
-
-exec sleep 5; systemctl --user start kanshi.service
diff --git a/home/default.nix b/home/default.nix
index 15514f9..457d7ad 100644
--- a/home/default.nix
+++ b/home/default.nix
@@ -1,6 +1,7 @@
-{ pkgs
-, lib
-, ...
+{
+ pkgs,
+ lib,
+ ...
}:
let
useFeatures = [
@@ -17,6 +18,26 @@ let
"zsh"
"helix"
];
+ colors = {
+ background = "fdf6e3";
+ foreground = "657b83";
+ regular0 = "eee8d5"; # background darker
+ regular1 = "dc322f"; # red
+ regular2 = "859900"; # green
+ regular3 = "b58900"; # dark orange
+ regular4 = "268bd2"; # azure blue
+ regular5 = "d33682"; # hot pink
+ regular6 = "2aa198"; # petrol
+ regular7 = "073642"; # navy
+ bright0 = "cb4b16"; # orange
+ bright1 = "fdf6e3"; # foreground
+ bright2 = "93a1a1"; # grey
+ bright3 = "839496"; # slightly darker grey
+ bright4 = "657b83"; # even slightly darker grey
+ bright5 = "6c71c4"; # purple
+ bright6 = "586e75"; # pretty dark grey
+ bright7 = "002b36"; # dark navy blue
+ };
in
{
imports = [
@@ -28,7 +49,9 @@ in
programs.gpg.settings.default-key = "99658A3EB5CD7C13";
dadada.home =
- lib.attrsets.genAttrs useFeatures (useFeatures: { enable = true; })
+ lib.attrsets.genAttrs useFeatures (useFeatures: {
+ enable = true;
+ })
// {
session = {
enable = true;
@@ -56,7 +79,9 @@ in
Restart = "always";
};
- Install = { WantedBy = [ "graphical-session.target" ]; };
+ Install = {
+ WantedBy = [ "graphical-session.target" ];
+ };
};
programs.offlineimap.enable = false;
@@ -131,6 +156,7 @@ in
enable = true;
server.enable = false;
settings = {
+ inherit colors;
main = {
shell = "tmux";
font = "Jetbrains Mono:size=8";
@@ -139,31 +165,266 @@ in
mouse.hide-when-typing = true;
csd.preferred = "none";
cursor.color = "fdf6e3 586e75";
- colors = {
- background = "fdf6e3";
- foreground = "657b83";
- regular0 = "eee8d5";
- regular1 = "dc322f";
- regular2 = "859900";
- regular3 = "b58900";
- regular4 = "268bd2";
- regular5 = "d33682";
- regular6 = "2aa198";
- regular7 = "073642";
- bright0 = "cb4b16";
- bright1 = "fdf6e3";
- bright2 = "93a1a1";
- bright3 = "839496";
- bright4 = "657b83";
- bright5 = "6c71c4";
- bright6 = "586e75";
- bright7 = "002b36";
+ bell = {
+ urgent = true;
+ visual = false;
};
};
};
- home.file.".config/sway/config".source = ./config;
+ home.file.".config/sway/config".text = with colors; ''
+ # Read `man 5 sway` for a complete reference.
+
+ ### Variables
+ #
+ # Logo key. Use Mod1 for Alt.
+ set $mod Mod4
+ # Home row direction keys, like vim
+ set $left h
+ set $down j
+ set $up k
+ set $right l
+ # Your preferred terminal emulator
+ set $term foot
+ # Your preferred application launcher
+ # Note: pass the final command to swaymsg so that the resulting window can be opened
+ # on the original workspace that the command was run on.
+ set $menu dmenu_path | wmenu | xargs swaymsg exec --
+
+ ### Idle configuration
+ #
+ # Example configuration:
+ #
+ exec swayidle -w \
+ timeout 300 'swaylock -f -c ${background}' \
+ timeout 600 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' \
+ before-sleep 'swaylock -f -c ${background}'
+ #
+ # This will lock your screen after 300 seconds of inactivity, then turn off
+ # your displays after another 300 seconds, and turn your screens back on when
+ # resumed. It will also lock your screen before your computer goes to sleep.
+
+ input * {
+ xkb_layout eu
+ xkb_model pc105+inet
+ xkb_options caps:escape
+ drag_lock enabled
+ drag enabled
+ dwt enabled
+ tap enabled
+ tap_button_map lrm
+ natural_scroll enabled
+ }
+
+ ### Key bindings
+ #
+ # Basics:
+ #
+ # Start a terminal
+ bindsym $mod+Return exec $term
+
+ # Kill focused window
+ bindsym $mod+Shift+q kill
+
+ # Start your launcher
+ bindsym $mod+d exec $menu
+
+ # Drag floating windows by holding down $mod and left mouse button.
+ # Resize them with right mouse button + $mod.
+ # Despite the name, also works for non-floating windows.
+ # Change normal to inverse to use left mouse button for resizing and right
+ # mouse button for dragging.
+ floating_modifier $mod normal
+
+ # Lock the screen
+ bindsym XF86Sleep exec 'swaylock -f -c ${background}'
+
+ # Reload the configuration file
+ bindsym $mod+Shift+c reload
+
+ # Exit sway (logs you out of your Wayland session)
+ bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit'
+
+ # Brightness
+ bindsym --locked XF86MonBrightnessDown exec light -U 10
+ bindsym --locked XF86MonBrightnessUp exec light -A 10
+
+ # Volume
+ bindsym --locked XF86AudioRaiseVolume exec 'pactl set-sink-volume @DEFAULT_SINK@ +1%'
+ bindsym --locked XF86AudioLowerVolume exec 'pactl set-sink-volume @DEFAULT_SINK@ -1%'
+ bindsym --locked XF86AudioMute exec 'pactl set-sink-mute @DEFAULT_SINK@ toggle'
+
+ #
+ # Moving around:
+ #
+ # Move your focus around
+ bindsym $mod+$left focus left
+ bindsym $mod+$down focus down
+ bindsym $mod+$up focus up
+ bindsym $mod+$right focus right
+ # Or use $mod+[up|down|left|right]
+ bindsym $mod+Left focus left
+ bindsym $mod+Down focus down
+ bindsym $mod+Up focus up
+ bindsym $mod+Right focus right
+
+ # Move the focused window with the same, but add Shift
+ bindsym $mod+Shift+$left move left
+ bindsym $mod+Shift+$down move down
+ bindsym $mod+Shift+$up move up
+ bindsym $mod+Shift+$right move right
+ # Ditto, with arrow keys
+ bindsym $mod+Shift+Left move left
+ bindsym $mod+Shift+Down move down
+ bindsym $mod+Shift+Up move up
+ bindsym $mod+Shift+Right move right
+
+ #
+ # Workspaces:
+ #
+ # Switch to workspace
+ bindsym $mod+1 workspace number 1
+ bindsym $mod+2 workspace number 2
+ bindsym $mod+3 workspace number 3
+ bindsym $mod+4 workspace number 4
+ bindsym $mod+5 workspace number 5
+ bindsym $mod+6 workspace number 6
+ bindsym $mod+7 workspace number 7
+ bindsym $mod+8 workspace number 8
+ bindsym $mod+9 workspace number 9
+ bindsym $mod+0 workspace number 10
+ # Move focused container to workspace
+ bindsym $mod+Shift+1 move container to workspace number 1
+ bindsym $mod+Shift+2 move container to workspace number 2
+ bindsym $mod+Shift+3 move container to workspace number 3
+ bindsym $mod+Shift+4 move container to workspace number 4
+ bindsym $mod+Shift+5 move container to workspace number 5
+ bindsym $mod+Shift+6 move container to workspace number 6
+ bindsym $mod+Shift+7 move container to workspace number 7
+ bindsym $mod+Shift+8 move container to workspace number 8
+ bindsym $mod+Shift+9 move container to workspace number 9
+ bindsym $mod+Shift+0 move container to workspace number 10
+ # Note: workspaces can have any name you want, not just numbers.
+ # We just use 1-10 as the default.
+
+ #
+ # Layout stuff:
+ #
+ # You can "split" the current object of your focus with
+ # $mod+b or $mod+v, for horizontal and vertical splits
+ # respectively.
+ bindsym $mod+b splith
+ bindsym $mod+v splitv
+
+ # Switch the current container between different layout styles
+ bindsym $mod+s layout stacking
+ bindsym $mod+w layout tabbed
+ bindsym $mod+e layout toggle split
+
+ # Make the current focus fullscreen
+ bindsym $mod+f fullscreen
+
+ # Toggle the current focus between tiling and floating mode
+ bindsym $mod+Shift+space floating toggle
+
+ # Swap focus between the tiling area and the floating area
+ bindsym $mod+space focus mode_toggle
+
+ # Move focus to the parent container
+ bindsym $mod+a focus parent
+
+ #
+ # Font
+ #
+ font "pango:Jetbrains Mono 8"
+
+ #
+ # Scratchpad:
+ #
+ # Sway has a "scratchpad", which is a bag of holding for windows.
+ # You can send windows there and get them back later.
+
+ # Move the currently focused window to the scratchpad
+ bindsym $mod+Shift+minus move scratchpad
+
+ # Show the next scratchpad window or hide the focused scratchpad window.
+ # If there are multiple scratchpad windows, this command cycles through them.
+ bindsym $mod+minus scratchpad show
+
+ #
+ # Resizing containers:
+ #
+ mode "resize" {
+ # left will shrink the containers width
+ # right will grow the containers width
+ # up will shrink the containers height
+ # down will grow the containers height
+ bindsym $left resize shrink width 10px
+ bindsym $down resize grow height 10px
+ bindsym $up resize shrink height 10px
+ bindsym $right resize grow width 10px
+
+ # Ditto, with arrow keys
+ bindsym Left resize shrink width 10px
+ bindsym Down resize grow height 10px
+ bindsym Up resize shrink height 10px
+ bindsym Right resize grow width 10px
+
+ # Return to default mode
+ bindsym Return mode "default"
+ bindsym Escape mode "default"
+ }
+ bindsym $mod+r mode "resize"
+
+ #
+ # Status Bar:
+ #
+ # Read `man 5 sway-bar` for more information about this section.
+ bar {
+ position top
+
+ # When the status_command prints a new line to stdout, swaybar updates.
+ # The default just shows the current date and time.
+ status_command ~/.config/sway/status
+
+ colors {
+ statusline ${foreground}
+ background ${background}
+ inactive_workspace ${background}ee ${background}ee ${foreground}ee
+ }
+ }
+
+ bindsym $mod+grave exec busctl --user call org.keepassxc.KeePassXC.MainWindow /keepassxc org.keepassxc.KeePassXC.MainWindow lockAllDatabases && swaylock -c #fdf6e3
+
+ # class border backgr. text indicator child_border
+ client.focused #${bright6} #${foreground} #${background} #${bright5} #${regular4}
+ client.focused_inactive #${regular0} #${regular0} #${foreground} #${bright5} #${regular0}
+ client.unfocused #${regular0} #${background} #${bright2} #${bright5} #${regular0}
+ client.urgent #${bright1} #${bright0} #${regular4} #${background} #${bright0}
+ client.placeholder #${background} #${bright2} #${foreground} #${background} #${bright2}
+
+ client.background #${foreground}
+
+ include /etc/sway/config.d/*
+
+ exec sleep 5; systemctl --user restart kanshi.service
+ exec sleep 5; output * bg ~/tmp/51761494940_7f9d6ab0e3_o.jpg fill
+ '';
home.file.".config/sway/status".source = ./status;
+ home.file.".config/kanshi/config".text = ''
+ profile Laptop {
+ output eDP-1 enable
+ }
+
+ profile Docked {
+ output eDP-1 disable
+ output "LG Electronics LG HDR 4K 0x000354D1" {
+ enable
+ scale 1.2
+ position 0,0
+ }
+ }
+ '';
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;