diff --git a/flake.lock b/flake.lock
index 193ed7e..75d9a57 100644
--- a/flake.lock
+++ b/flake.lock
@@ -37,6 +37,27 @@
"type": "github"
}
},
+ "dgop": {
+ "inputs": {
+ "nixpkgs": [
+ "dms",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1762835999,
+ "narHash": "sha256-UykYGrGFOFTmDpKTLNxj1wvd1gbDG4TkqLNSbV0TYwk=",
+ "owner": "AvengeMedia",
+ "repo": "dgop",
+ "rev": "799301991cd5dcea9b64245f9d500dcc76615653",
+ "type": "github"
+ },
+ "original": {
+ "owner": "AvengeMedia",
+ "repo": "dgop",
+ "type": "github"
+ }
+ },
"disko": {
"inputs": {
"nixpkgs": [
@@ -57,6 +78,29 @@
"type": "github"
}
},
+ "dms": {
+ "inputs": {
+ "dgop": "dgop",
+ "nixpkgs": [
+ "nixpkgs"
+ ],
+ "quickshell": "quickshell"
+ },
+ "locked": {
+ "lastModified": 1765552734,
+ "narHash": "sha256-rWjWYu5rs3ZOJ4YJpvIscBZSYu74thJHc0VYyYKJTUc=",
+ "owner": "AvengeMedia",
+ "repo": "DankMaterialShell",
+ "rev": "7fb358bada0d3a229ec5ee6aaad0f9b64f367331",
+ "type": "github"
+ },
+ "original": {
+ "owner": "AvengeMedia",
+ "ref": "stable",
+ "repo": "DankMaterialShell",
+ "type": "github"
+ }
+ },
"flake-compat": {
"flake": false,
"locked": {
@@ -501,11 +545,34 @@
"type": "github"
}
},
+ "quickshell": {
+ "inputs": {
+ "nixpkgs": [
+ "dms",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1764663772,
+ "narHash": "sha256-sHqLmm0wAt3PC4vczJeBozI1/f4rv9yp3IjkClHDXDs=",
+ "ref": "refs/heads/master",
+ "rev": "26531fc46ef17e9365b03770edd3fb9206fcb460",
+ "revCount": 713,
+ "type": "git",
+ "url": "https://git.outfoxxed.me/quickshell/quickshell"
+ },
+ "original": {
+ "rev": "26531fc46ef17e9365b03770edd3fb9206fcb460",
+ "type": "git",
+ "url": "https://git.outfoxxed.me/quickshell/quickshell"
+ }
+ },
"root": {
"inputs": {
"actualbudget-report": "actualbudget-report",
"deferred-apps": "deferred-apps",
"disko": "disko",
+ "dms": "dms",
"hardware": "hardware",
"home-manager": "home-manager",
"iamb-flake": "iamb-flake",
diff --git a/home/crow/Incarceron.nix b/home/crow/Incarceron.nix
index 8918096..07a7300 100644
--- a/home/crow/Incarceron.nix
+++ b/home/crow/Incarceron.nix
@@ -3,7 +3,7 @@
imports = [
common/core
common/optional/desktops/sway
- common/optional/browsers/firefox.nix
+ common/optional/browsers
common/optional/comms
common/optional/media
common/optional/gaming
diff --git a/home/crow/Parzival.nix b/home/crow/Parzival.nix
index 47e2ffc..83887a1 100644
--- a/home/crow/Parzival.nix
+++ b/home/crow/Parzival.nix
@@ -3,7 +3,7 @@
imports = [
common/core
common/optional/desktops/sway
- common/optional/browsers/firefox.nix
+ common/optional/browsers
common/optional/comms
common/optional/media
common/optional/gaming
diff --git a/home/crow/common/core/default.nix b/home/crow/common/core/default.nix
index 78e9b83..76a5c27 100644
--- a/home/crow/common/core/default.nix
+++ b/home/crow/common/core/default.nix
@@ -23,6 +23,7 @@ in
./git.nix
./nushell.nix
./starship.nix
+ ./terminal.nix
];
programs.deferredApps = {
diff --git a/home/crow/common/core/terminal.nix b/home/crow/common/core/terminal.nix
new file mode 100644
index 0000000..d81bea5
--- /dev/null
+++ b/home/crow/common/core/terminal.nix
@@ -0,0 +1,10 @@
+{
+ programs.foot = {
+ enable = true;
+ settings = {
+ main = {
+ include = "/home/crow/.config/foot/dank-colors.ini";
+ };
+ };
+ };
+}
diff --git a/home/crow/common/optional/browsers/chrome.nix b/home/crow/common/optional/browsers/chrome.nix
deleted file mode 100644
index c36e889..0000000
--- a/home/crow/common/optional/browsers/chrome.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-{pkgs, ...}: {
- programs.chromium = {
- enable = true;
- package = pkgs.ungoogled-chromium;
- };
-}
diff --git a/home/crow/common/optional/browsers/firefox.nix b/home/crow/common/optional/browsers/default.nix
similarity index 67%
rename from home/crow/common/optional/browsers/firefox.nix
rename to home/crow/common/optional/browsers/default.nix
index 069578f..661ecfc 100644
--- a/home/crow/common/optional/browsers/firefox.nix
+++ b/home/crow/common/optional/browsers/default.nix
@@ -22,6 +22,7 @@
};
OfferToSaveLogins = false;
PasswordManagerEnabled = false;
+ # You can find extension settings by installing the extension in firefox and then going to about:debugging#/runtime/this-firefox to get the extension ID
ExtensionSettings = {
# Bitwarden
"{446900e4-71c2-419f-a6a7-df9c091e268b}" = {
@@ -51,9 +52,9 @@
install_url = "https://addons.mozilla.org/firefox/downloads/latest/sponsorBlocker@ajay.app/latest.xpl";
default_area = "menupanel";
};
- "extension@tabliss.io" = {
+ "pywalfox@frewacom.org" = {
installation_mode = "force_installed";
- install_url = "https://addons.mozilla.org/firefox/downloads/latest/extension@tabliss.io/latest.xpl";
+ install_url = "https://addons.mozilla.org/firefox/downloads/latest/ pywalfox@frewacom.org/latest.xpl";
default_area = "menupanel";
};
};
@@ -62,14 +63,21 @@
home.packages = builtins.attrValues {
inherit (pkgs)
- mullvad-browser
+ pywalfox-native
;
};
- home.file.".librewolf/custom/tabliss.json" = {
+ systemd.user.tmpfiles.rules = [
+ "L+ /home/crow/.cache/wal/dank-pywalfox.json - - - - /home/crow/.cache/wal/colors.json"
+ ];
+
+ programs.deferredApps = {
enable = true;
- text = ''
- {"data/default-unsplash":{"by":"official","collections":"","featured":false,"paused":false,"search":"tech","topics":"qPYsDzvJOYc","timeout":900},"widget/default-greeting":null,"data/default-time":{"mode":"digital","hour12":false,"showDate":true,"showMinutes":true,"showSeconds":true,"showDayPeriod":true,"timeZone":null},"data/74u_bPXyI_VQ":{"category":"developerexcuses"},"widget/V0OGit2zzORD":null,"widget/default-time":{"id":"default-time","key":"widget/time","order":0,"display":{"position":"middleCentre"}},"widget/74u_bPXyI_VQ":{"id":"74u_bPXyI_VQ","key":"widget/quote","order":2,"display":{"position":"middleCentre"}},"focus":false,"widget/h51N3y5Q5Y5e":{"id":"h51N3y5Q5Y5e","key":"widget/workHours","order":3,"display":{"position":"middleCentre"}},"widget/05GPTS-DklPw":null,"background":{"id":"default-unsplash","key":"background/unsplash","display":{"luminosity":-0.2,"blur":0}},"locale":"en","timeZone":null,"version":3}
- '';
+ packages = builtins.attrValues {
+ inherit (pkgs)
+ mullvad-browser
+ ungoogled-chromium
+ ;
+ };
};
}
diff --git a/home/crow/common/optional/desktops/sway/default.nix b/home/crow/common/optional/desktops/sway/default.nix
index 6cf8291..ea145bd 100644
--- a/home/crow/common/optional/desktops/sway/default.nix
+++ b/home/crow/common/optional/desktops/sway/default.nix
@@ -1,4 +1,5 @@
{
+ inputs,
lib,
config,
pkgs,
@@ -11,7 +12,7 @@ let
if m.enabled then
lib.strings.concatStringsSep "\n" [
"output ${m.name} mode ${toString m.width}x${toString m.height}@${toString m.refreshRate}Hz pos ${toString m.x} ${toString m.y} transform ${toString m.transform}"
- "exec swww img -o ${m.name} ${m.background}"
+ "exec dms ipc call wallpaper setFor ${m.name} ${m.background}"
]
else
"output ${m.name} disable"
@@ -19,31 +20,19 @@ let
config.monitors;
in
{
+
imports = [
- ./waybar.nix
- ../swww
+ ../dank
];
home.packages = with pkgs; [
foot
- wofi
- swaynotificationcenter
polkit_gnome
swayidle
sway-audio-idle-inhibit
swaylock-effects
- sway-contrib.grimshot
- waybar
- wl-clipboard
hyprlock
- grim
- slurp
- swappy
wljoywake
- pulseaudio
- playerctl
- brightnessctl
- pavucontrol
];
wayland.windowManager.sway = {
diff --git a/home/crow/common/optional/desktops/sway/sway.conf b/home/crow/common/optional/desktops/sway/sway.conf
index 20091fa..e5a7835 100644
--- a/home/crow/common/optional/desktops/sway/sway.conf
+++ b/home/crow/common/optional/desktops/sway/sway.conf
@@ -1,90 +1,27 @@
-# Assign specific workspaces to specific outputs
+###########
+# General #
+###########
+
+set $mod Mod4
+set $term foot
+
+exec /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 # FIXME: Look at dank polkit
+
+#######
+# DMS #
+#######
+
+exec dms run
+exec wl-paste --watch cliphist store
+
+##############
+# Workspaces #
+##############
workspace 1 output HDMI-A-1 # Firefox
workspace 2 output HDMI-A-1 # Comms
workspace 3 output DP-1 # Terminal
workspace 5 output DP-1 # Mudlet
-# Assign wacom tablet to primary monitor
-input type:tablet_tool map_to_output DP-1
-input type:tablet_tool map_to_output eDP-1
-
-set $mod Mod4
-###########################
-### Systemd Integration ###
-###########################
-
-exec systemctl --user import-environment XDG_SESSION_TYPE XDG_CURRENT_DESKTOP WAYLAND_DISPLAY
-exec dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway
-
-
-###################
-### MY PROGRAMS ###
-###################
-
-set $term foot
-set $menu wofi --show run | xargs swaymsg exec --
-
-exec waybar
-exec swaync
-exec udiskie
-exec /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
-
-###################
-### IDLE CONFIG ###
-###################
-
-exec swayidle -w timeout 300 'hyprlock'
-exec wljoywake # prevent screen sleep on joystick input
-
-set $lock 'hyprlock'
-bindswitch --reload --locked lid:on exec $lock
-for_window [app_id="firefox"] inhibit_idle fullscreen
-bindsym $mod+Shift+z exec $lock
-
-### Input configuration
-#
-# Example configuration:
-#
-# input "2:14:SynPS/2_Synaptics_TouchPad" {
-# dwt enabled
-# tap enabled
-# natural_scroll enabled
-# middle_emulation enabled
-# }
-#
-# You can get the names of your inputs by running: swaymsg -t get_inputs
-# Read `man 5 sway-input` for more information about this section.
-
-###################
-### KEYBINDINGS ###
-###################
-
-bindsym $mod+Return exec $term
-bindsym $mod+Shift+q kill
-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'
-bindsym $mod+Shift+n exec networkmanager_dmenu
-bindsym $mod+n exec swaync-client -t -sw
-bindsym $mod+d exec $menu
-bindsym $mod+Shift+d exec UDISKIE_DMENU_LAUNCHER="wofi" udiskie-dmenu -matching regex -dmenu -i -no-custom -multi-select
-# Reload the configuration file
-bindsym $mod+Shift+c reload
-
-floating_modifier $mod normal
-
-bindsym $mod+Left focus left
-bindsym $mod+Down focus down
-bindsym $mod+Up focus up
-bindsym $mod+Right focus right
-
-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 ###
-##################
-
bindsym $mod+1 workspace number 1
bindsym $mod+2 workspace number 2
bindsym $mod+3 workspace number 3
@@ -106,46 +43,71 @@ 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
-#
-# 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
+# Assign wacom tablet to primary monitor
+input type:tablet_tool map_to_output DP-1
+input type:tablet_tool map_to_output eDP-1
- # Make the current focus fullscreen
- bindsym $mod+f fullscreen
- # Toggle the current focus between tiling and floating mode
- bindsym $mod+Shift+space floating toggle
+#######################
+# Systemd Integration #
+#######################
- # Swap focus between the tiling area and the floating area
- bindsym $mod+space focus mode_toggle
+exec systemctl --user import-environment XDG_SESSION_TYPE XDG_CURRENT_DESKTOP WAYLAND_DISPLAY
+exec dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway
- # Move focus to the parent container
- bindsym $mod+a focus parent
-#
-# 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
+###############
+# IDLE CONFIG # # FIXME: Switch to DankGreeter
+###############
+
+exec swayidle -w timeout 300 'hyprlock'
+exec wljoywake # prevent screen sleep on joystick input
+
+set $lock 'hyprlock'
+bindswitch --reload --locked lid:on exec $lock
+for_window [app_id="firefox"] inhibit_idle fullscreen
+bindsym $mod+Shift+z exec $lock
+
+###############
+# KEYBINDINGS #
+###############
+
+bindsym $mod+Return exec $term
+bindsym $mod+Shift+q kill
+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'
+bindsym $mod+Shift+n exec networkmanager_dmenu
+bindsym $mod+d exec dms ipc call spotlight toggle
+bindsym $mod+Shift+c reload # Reload config
+
+floating_modifier $mod normal
+
+bindsym $mod+Left focus left
+bindsym $mod+Down focus down
+bindsym $mod+Up focus up
+bindsym $mod+Right focus right
+
+bindsym $mod+Shift+Left move left
+bindsym $mod+Shift+Down move down
+bindsym $mod+Shift+Up move up
+bindsym $mod+Shift+Right move right
+
+##########
+# Layout #
+##########
+
+bindsym $mod+b splith
+bindsym $mod+v splitv
+bindsym $mod+s layout stacking
+bindsym $mod+w layout tabbed
+bindsym $mod+e layout toggle split
+bindsym $mod+f fullscreen
+bindsym $mod+Shift+space floating toggle
+bindsym $mod+space focus mode_toggle
+bindsym $mod+a focus parent
+bindsym $mod+Shift+minus move scratchpad
+bindsym $mod+minus scratchpad show
- # 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" {
bindsym Left resize shrink width 10px
bindsym Down resize grow height 10px
@@ -158,14 +120,16 @@ mode "resize" {
}
bindsym $mod+r mode "resize"
-# Media controls:
-bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5%
-bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5%
-bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle
-bindsym XF86AudioMicMute exec pulseaudio-ctl mute-input
-bindsym XF86AudioPlay exec playerctl play-pause
-bindsym XF86AudioNext exec playerctl next
-bindsym XF86AudioPrev exec playerctl previous
-bindsym XF86MonBrightnessUp exec brightnessctl s +5%
-bindsym XF86MonBrightnessDown exec brightnessctl s 5%-
-bindsym Print exec grim -g "$(slurp)" - | swappy -f -
+##################
+# Media controls #
+##################
+bindsym XF86AudioRaiseVolume exec dms ipc call audio increment 5
+bindsym XF86AudioLowerVolume exec dms ipc call audio decrement 5
+bindsym XF86AudioMute exec dms ipc call audio mute
+bindsym XF86AudioMicMute exec dms ipc call audio micmute
+bindsym XF86AudioPlay exec dms ipc call mpris playPause
+bindsym XF86AudioNext exec dms ipc call mpris next
+bindsym XF86AudioPrev exec dms ipc call mpris previous
+bindsym XF86MonBrightnessUp exec dms ipc call brightness increment 5 ""
+bindsym XF86MonBrightnessDown exec dms ipc call brightness decrement 5 ""
+bindsym Print exec dms screenshot
diff --git a/home/crow/common/optional/desktops/sway/waybar.nix b/home/crow/common/optional/desktops/sway/waybar.nix
deleted file mode 100644
index 8025fea..0000000
--- a/home/crow/common/optional/desktops/sway/waybar.nix
+++ /dev/null
@@ -1,230 +0,0 @@
-{osConfig, ...}: let
- # screenshots/og_waybar.jpg
- og_waybar = {
- jsonc = {
- mainBar = {
- layer = "top";
- position = "top";
- height = 30;
- spacing = 4;
- mode = "dock";
- margin = "10";
- modules-left = ["sway/workspaces"];
- modules-center = ["clock"];
- modules-right = ["network" "battery" "backlight" "pulseaudio" "tray"];
- tray = {
- spacing = 10;
- };
- "sway/workspaces" = {
- format = "{icon}";
- format-icons = {
- "1" = "";
- "2" = "";
- "3" = "";
- "4" = "";
- "5" = "";
- "urgent" = "";
- "active" = "";
- "default" = "";
- };
- sort-by-number = true;
- persistent-workspaces = {
- "1" = ["HDMI-A-1"];
- "2" = ["HDMI-A-1"];
- "3" = ["DP-1"];
- "4" = ["HDMI-A-1"];
- };
- };
- clock = {
- tooltip-format = "{:%Y %B}\n{calendar}";
- format-alt = "{:%m-%d-%Y}";
- };
- network = {
- format-wifi = "{essid} ({signalStrength}%) ";
- format-ethernet = "{ipaddr}/{cidr} ";
- tooltip-format = "{ifname} via {gwaddr} ";
- format-linked = "{ifname} (No IP) ";
- format-disconnected = "Disconnected ⚠";
- format-alt = "{ifname}: {ipaddr}/{cidr}";
- };
- battery = {
- states = {
- warning = 30;
- critical = 15;
- };
- format = "{capacity}% {icon}";
- format-full = "{capacity}% {icon}";
- format-charging = "{capacity}% ";
- format-plugged = "{capacity}% ";
- format-alt = "{time} {icon}";
- format-icons = ["" "" "" "" ""];
- interval = 30;
- };
- backlight = {
- format = "{percent}% {icon}";
- format-icons = ["" "" ""];
- };
- pulseaudio = {
- format = "{volume}% {icon} {format_source}";
- format-bluetooth = "{volume}% {icon} {format_source}";
- format-bluetooth-muted = " {icon} {format_source}";
- format-muted = " {format_source}";
- format-source = "{volume}% ";
- format-source-muted = "";
- format-icons = {
- headphone = "";
- hands-free = "";
- headset = "";
- phone = "";
- portable = "";
- car = "";
- default = ["" "" ""];
- };
- on-click = "pavucontrol";
- };
- };
- };
- style = ''
- @define-color fg #AAB775;
- @define-color bg #060617;
- @define-color disabled #a5a5a5;
- @define-color alert #f53c3c;
- @define-color activegreen #8fb666;
-
- * {
- min-height: 0;
- font-family: "JetBrainsMono Nerd Font", "Hack Nerd Font", "Font Awesome 6 Free Regular", "Font Awesome 6 Free Solid", "Font Awesome 6 Brands";
- font-size: 14px;
- }
-
- window#waybar {
- color: @fg;
- background: @bg;
- transition-property: background-color;
- border-radius: 25px;
- transition-duration: 0.5s;
-
- }
-
- window#waybar.empty {
- opacity: 0.3;
- }
-
- button {
- /* Use box-shadow instead of border so the text isn't offset */
- box-shadow: inset 0 -3px transparent;
- /* Avoid rounded borders under each button name */
- border: none;
- border-radius: 0;
- }
-
- /* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
- button:hover {
- background: inherit;
- box-shadow: inset 0 -3px transparent;
- }
-
- #workspaces button {
- color: @fg;
- /* padding : 0px 5px; */
- }
-
- #workspaces button.urgent {
- color: @alert;
- }
- #workspaces button.empty {
- color: @disabled;
- }
-
- #workspaces button.active {
- border-bottom: 2px solid #DCAA9B;
- border-radius: 0;
- margin-top: 2px;
- color: #DCAA9B;
- transition: none;
- }
-
- /* If workspaces is the leftmost module, omit left margin */
- .modules-left > widget:first-child > #workspaces {
- margin-left: 0;
- }
-
- /* If workspaces is the rightmost module, omit right margin */
- .modules-right > widget:last-child > #workspaces {
- margin-right: 0;
- }
-
- #clock,
- #battery,
- #cpu,
- #memory,
- #disk,
- #temperature,
- #language,
- #backlight,
- #backlight-slider,
- #network,
- #pulseaudio,
- #wireplumber,
- #custom-media,
- #taskbar,
- #tray,
- #tray menu,
- #tray > .needs-attention,
- #tray > .passive,
- #tray > .active,
- #mode,
- #idle_inhibitor,
- #scratchpad,
- #custom-power,
- #window,
- #mpd {
- padding: 0px 5px;
- padding-right: 10px;
- margin: 3px 3px;
- color: @fg;
- }
-
- #custom-power {
- color: @fg;
- padding-left: 10px;
- }
-
- #custom-separator {
- color: @disabled;
- }
-
- #network.disconnected,
- #pulseaudio.muted,
- #wireplumber.muted {
- color: @alert;
- }
-
- #battery.charging,
- #battery.plugged {
- color: #26a65b;
- }
-
- label:focus {
- background-color: #333333;
- }
-
- #battery.critical:not(.charging) {
- background-color: @alert;
- color: @fg;
- animation-name: blink;
- animation-duration: 0.5s;
- animation-timing-function: linear;
- animation-iteration-count: infinite;
- animation-direction: alternate;
- }
-
- '';
- };
-in {
- programs.waybar = {
- enable = true;
- settings = og_waybar.jsonc;
- style = og_waybar.style;
- };
-}