Dankify linux

This commit is contained in:
TheWanderingCrow 2025-12-30 23:01:25 -05:00
parent f3cb7d5611
commit d3622881ea
10 changed files with 189 additions and 386 deletions

67
flake.lock generated
View file

@ -37,6 +37,27 @@
"type": "github" "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": { "disko": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -57,6 +78,29 @@
"type": "github" "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-compat": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -501,11 +545,34 @@
"type": "github" "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": { "root": {
"inputs": { "inputs": {
"actualbudget-report": "actualbudget-report", "actualbudget-report": "actualbudget-report",
"deferred-apps": "deferred-apps", "deferred-apps": "deferred-apps",
"disko": "disko", "disko": "disko",
"dms": "dms",
"hardware": "hardware", "hardware": "hardware",
"home-manager": "home-manager", "home-manager": "home-manager",
"iamb-flake": "iamb-flake", "iamb-flake": "iamb-flake",

View file

@ -3,7 +3,7 @@
imports = [ imports = [
common/core common/core
common/optional/desktops/sway common/optional/desktops/sway
common/optional/browsers/firefox.nix common/optional/browsers
common/optional/comms common/optional/comms
common/optional/media common/optional/media
common/optional/gaming common/optional/gaming

View file

@ -3,7 +3,7 @@
imports = [ imports = [
common/core common/core
common/optional/desktops/sway common/optional/desktops/sway
common/optional/browsers/firefox.nix common/optional/browsers
common/optional/comms common/optional/comms
common/optional/media common/optional/media
common/optional/gaming common/optional/gaming

View file

@ -23,6 +23,7 @@ in
./git.nix ./git.nix
./nushell.nix ./nushell.nix
./starship.nix ./starship.nix
./terminal.nix
]; ];
programs.deferredApps = { programs.deferredApps = {

View file

@ -0,0 +1,10 @@
{
programs.foot = {
enable = true;
settings = {
main = {
include = "/home/crow/.config/foot/dank-colors.ini";
};
};
};
}

View file

@ -1,6 +0,0 @@
{pkgs, ...}: {
programs.chromium = {
enable = true;
package = pkgs.ungoogled-chromium;
};
}

View file

@ -22,6 +22,7 @@
}; };
OfferToSaveLogins = false; OfferToSaveLogins = false;
PasswordManagerEnabled = 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 = { ExtensionSettings = {
# Bitwarden # Bitwarden
"{446900e4-71c2-419f-a6a7-df9c091e268b}" = { "{446900e4-71c2-419f-a6a7-df9c091e268b}" = {
@ -51,9 +52,9 @@
install_url = "https://addons.mozilla.org/firefox/downloads/latest/sponsorBlocker@ajay.app/latest.xpl"; install_url = "https://addons.mozilla.org/firefox/downloads/latest/sponsorBlocker@ajay.app/latest.xpl";
default_area = "menupanel"; default_area = "menupanel";
}; };
"extension@tabliss.io" = { "pywalfox@frewacom.org" = {
installation_mode = "force_installed"; 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"; default_area = "menupanel";
}; };
}; };
@ -62,14 +63,21 @@
home.packages = builtins.attrValues { home.packages = builtins.attrValues {
inherit (pkgs) 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; enable = true;
text = '' packages = builtins.attrValues {
{"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} inherit (pkgs)
''; mullvad-browser
ungoogled-chromium
;
};
}; };
} }

View file

@ -1,4 +1,5 @@
{ {
inputs,
lib, lib,
config, config,
pkgs, pkgs,
@ -11,7 +12,7 @@ let
if m.enabled then if m.enabled then
lib.strings.concatStringsSep "\n" [ 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}" "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 else
"output ${m.name} disable" "output ${m.name} disable"
@ -19,31 +20,19 @@ let
config.monitors; config.monitors;
in in
{ {
imports = [ imports = [
./waybar.nix ../dank
../swww
]; ];
home.packages = with pkgs; [ home.packages = with pkgs; [
foot foot
wofi
swaynotificationcenter
polkit_gnome polkit_gnome
swayidle swayidle
sway-audio-idle-inhibit sway-audio-idle-inhibit
swaylock-effects swaylock-effects
sway-contrib.grimshot
waybar
wl-clipboard
hyprlock hyprlock
grim
slurp
swappy
wljoywake wljoywake
pulseaudio
playerctl
brightnessctl
pavucontrol
]; ];
wayland.windowManager.sway = { wayland.windowManager.sway = {

View file

@ -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 1 output HDMI-A-1 # Firefox
workspace 2 output HDMI-A-1 # Comms workspace 2 output HDMI-A-1 # Comms
workspace 3 output DP-1 # Terminal workspace 3 output DP-1 # Terminal
workspace 5 output DP-1 # Mudlet 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+1 workspace number 1
bindsym $mod+2 workspace number 2 bindsym $mod+2 workspace number 2
bindsym $mod+3 workspace number 3 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+8 move container to workspace number 8
bindsym $mod+Shift+9 move container to workspace number 9 bindsym $mod+Shift+9 move container to workspace number 9
bindsym $mod+Shift+0 move container to workspace number 10 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 # Assign wacom tablet to primary monitor
bindsym $mod+s layout stacking input type:tablet_tool map_to_output DP-1
bindsym $mod+w layout tabbed input type:tablet_tool map_to_output eDP-1
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 # Systemd Integration #
#######################
# Swap focus between the tiling area and the floating area exec systemctl --user import-environment XDG_SESSION_TYPE XDG_CURRENT_DESKTOP WAYLAND_DISPLAY
bindsym $mod+space focus mode_toggle 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" { mode "resize" {
bindsym Left resize shrink width 10px bindsym Left resize shrink width 10px
bindsym Down resize grow height 10px bindsym Down resize grow height 10px
@ -158,14 +120,16 @@ mode "resize" {
} }
bindsym $mod+r mode "resize" bindsym $mod+r mode "resize"
# Media controls: ##################
bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5% # Media controls #
bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5% ##################
bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle bindsym XF86AudioRaiseVolume exec dms ipc call audio increment 5
bindsym XF86AudioMicMute exec pulseaudio-ctl mute-input bindsym XF86AudioLowerVolume exec dms ipc call audio decrement 5
bindsym XF86AudioPlay exec playerctl play-pause bindsym XF86AudioMute exec dms ipc call audio mute
bindsym XF86AudioNext exec playerctl next bindsym XF86AudioMicMute exec dms ipc call audio micmute
bindsym XF86AudioPrev exec playerctl previous bindsym XF86AudioPlay exec dms ipc call mpris playPause
bindsym XF86MonBrightnessUp exec brightnessctl s +5% bindsym XF86AudioNext exec dms ipc call mpris next
bindsym XF86MonBrightnessDown exec brightnessctl s 5%- bindsym XF86AudioPrev exec dms ipc call mpris previous
bindsym Print exec grim -g "$(slurp)" - | swappy -f - bindsym XF86MonBrightnessUp exec dms ipc call brightness increment 5 ""
bindsym XF86MonBrightnessDown exec dms ipc call brightness decrement 5 ""
bindsym Print exec dms screenshot

View file

@ -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 = "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>";
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;
};
}