Compare commits
No commits in common. "53d88e123bb5f6e9552022518fc67bc57a3af72f" and "28656f137da6f102749b39b4bcb03c04c7107d2d" have entirely different histories.
53d88e123b
...
28656f137d
10 changed files with 354 additions and 76 deletions
|
|
@ -12,8 +12,8 @@
|
||||||
# TODO make configurable
|
# TODO make configurable
|
||||||
settings = {
|
settings = {
|
||||||
user = {
|
user = {
|
||||||
email = "abc@joshuabell.xyz";
|
email = "ringofstorms@gmail.com";
|
||||||
name = "Joshua Bell";
|
name = "RingOfStorms (Joshua Bell)";
|
||||||
};
|
};
|
||||||
core.pager = "bat";
|
core.pager = "bat";
|
||||||
core.editor = "vi";
|
core.editor = "vi";
|
||||||
|
|
|
||||||
|
|
@ -150,7 +150,7 @@ in
|
||||||
# kdePackages.plasma-workspace-wallpapers
|
# kdePackages.plasma-workspace-wallpapers
|
||||||
|
|
||||||
# On-screen keyboard (Plasma Wayland)
|
# On-screen keyboard (Plasma Wayland)
|
||||||
# kdePackages.plasma-keyboard
|
kdePackages.plasma-keyboard
|
||||||
|
|
||||||
# Panel applets required for widgets
|
# Panel applets required for widgets
|
||||||
kdePackages.plasma-nm # org.kde.plasma.networkmanagement
|
kdePackages.plasma-nm # org.kde.plasma.networkmanagement
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,8 @@
|
||||||
let
|
let
|
||||||
cfg = osConfig.ringofstorms.dePlasma;
|
cfg = osConfig.ringofstorms.dePlasma;
|
||||||
inherit (lib) mkIf optionalAttrs;
|
inherit (lib) mkIf optionalAttrs;
|
||||||
|
# Get the first wallpaper from the list if available
|
||||||
|
wallpaper = if (builtins.length cfg.wallpapers) > 0 then builtins.head cfg.wallpapers else null;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
|
@ -294,8 +296,8 @@ in
|
||||||
lookAndFeel = "org.kde.breezedark.desktop";
|
lookAndFeel = "org.kde.breezedark.desktop";
|
||||||
theme = "breeze-dark";
|
theme = "breeze-dark";
|
||||||
cursor.theme = "breeze_cursors";
|
cursor.theme = "breeze_cursors";
|
||||||
} // optionalAttrs ((builtins.length cfg.wallpapers) > 0) {
|
} // optionalAttrs (wallpaper != null) {
|
||||||
wallpaper = cfg.wallpapers;
|
wallpaper = wallpaper;
|
||||||
};
|
};
|
||||||
|
|
||||||
configFile = {
|
configFile = {
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,9 @@ let
|
||||||
workspaceLetters = [
|
workspaceLetters = [
|
||||||
"n"
|
"n"
|
||||||
"m"
|
"m"
|
||||||
","
|
"Comma"
|
||||||
"."
|
"Period"
|
||||||
"/"
|
"Slash"
|
||||||
];
|
];
|
||||||
kwinWorkspace = builtins.listToAttrs (
|
kwinWorkspace = builtins.listToAttrs (
|
||||||
map (i: {
|
map (i: {
|
||||||
|
|
@ -85,12 +85,6 @@ in
|
||||||
"Lock Session" = "none";
|
"Lock Session" = "none";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Disable Plasma emojier shortcuts which conflict with workspace switching
|
|
||||||
# (Meta+. is bound by default in org.kde.plasma.emojier.desktop)
|
|
||||||
"org.kde.plasma.emojier.desktop" = {
|
|
||||||
"_launch" = [ ];
|
|
||||||
};
|
|
||||||
|
|
||||||
# "KDE Keyboard Layout Switcher"."Switch to Next Keyboard Layout" = "Meta+K";
|
# "KDE Keyboard Layout Switcher"."Switch to Next Keyboard Layout" = "Meta+K";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
84
hosts/lio/flake.lock
generated
84
hosts/lio/flake.lock
generated
|
|
@ -63,20 +63,14 @@
|
||||||
},
|
},
|
||||||
"common": {
|
"common": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"dir": "flakes/common",
|
"path": "../../flakes/common",
|
||||||
"lastModified": 1768586643,
|
"type": "path"
|
||||||
"narHash": "sha256-FPRn8Ea7h+209KQvdy2FCAaMK7iMbxHvIEb/1Flt9wc=",
|
|
||||||
"ref": "refs/heads/master",
|
|
||||||
"rev": "28656f137da6f102749b39b4bcb03c04c7107d2d",
|
|
||||||
"revCount": 1145,
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://git.joshuabell.xyz/ringofstorms/dotfiles"
|
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"dir": "flakes/common",
|
"path": "../../flakes/common",
|
||||||
"type": "git",
|
"type": "path"
|
||||||
"url": "https://git.joshuabell.xyz/ringofstorms/dotfiles"
|
},
|
||||||
}
|
"parent": []
|
||||||
},
|
},
|
||||||
"crane": {
|
"crane": {
|
||||||
"locked": {
|
"locked": {
|
||||||
|
|
@ -137,20 +131,14 @@
|
||||||
"plasma-manager": "plasma-manager"
|
"plasma-manager": "plasma-manager"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"dir": "flakes/de_plasma",
|
"path": "../../flakes/de_plasma",
|
||||||
"lastModified": 1768586643,
|
"type": "path"
|
||||||
"narHash": "sha256-FPRn8Ea7h+209KQvdy2FCAaMK7iMbxHvIEb/1Flt9wc=",
|
|
||||||
"ref": "refs/heads/master",
|
|
||||||
"rev": "28656f137da6f102749b39b4bcb03c04c7107d2d",
|
|
||||||
"revCount": 1145,
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://git.joshuabell.xyz/ringofstorms/dotfiles"
|
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"dir": "flakes/de_plasma",
|
"path": "../../flakes/de_plasma",
|
||||||
"type": "git",
|
"type": "path"
|
||||||
"url": "https://git.joshuabell.xyz/ringofstorms/dotfiles"
|
},
|
||||||
}
|
"parent": []
|
||||||
},
|
},
|
||||||
"flake-utils": {
|
"flake-utils": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
|
|
@ -354,11 +342,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs_4": {
|
"nixpkgs_4": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1768456270,
|
"lastModified": 1768302833,
|
||||||
"narHash": "sha256-NgaL2CCiUR6nsqUIY4yxkzz07iQUlUCany44CFv+OxY=",
|
"narHash": "sha256-h5bRFy9bco+8QcK7rGoOiqMxMbmn21moTACofNLRMP4=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "f4606b01b39e09065df37905a2133905246db9ed",
|
"rev": "61db79b0c6b838d9894923920b612048e1201926",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -1285,11 +1273,11 @@
|
||||||
"nixpkgs": "nixpkgs_4"
|
"nixpkgs": "nixpkgs_4"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1768623515,
|
"lastModified": 1768396176,
|
||||||
"narHash": "sha256-7rfFPs9rBXpNmnK77Lc8PBbdTQt6ITotwbJkL85qLIA=",
|
"narHash": "sha256-JqLZY6/s3O5IVNjZs4vi4BGQhA730aLLMA7DgENCTTU=",
|
||||||
"owner": "anomalyco",
|
"owner": "anomalyco",
|
||||||
"repo": "opencode",
|
"repo": "opencode",
|
||||||
"rev": "85ab9798c65dfb36b0f47de3b1fd786e7751f761",
|
"rev": "ee6ca104e5eb1693b63901128ea315754f88f595",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -1493,20 +1481,14 @@
|
||||||
},
|
},
|
||||||
"secrets-bao": {
|
"secrets-bao": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"dir": "flakes/secrets-bao",
|
"path": "../../flakes/secrets-bao",
|
||||||
"lastModified": 1768586643,
|
"type": "path"
|
||||||
"narHash": "sha256-FPRn8Ea7h+209KQvdy2FCAaMK7iMbxHvIEb/1Flt9wc=",
|
|
||||||
"ref": "refs/heads/master",
|
|
||||||
"rev": "28656f137da6f102749b39b4bcb03c04c7107d2d",
|
|
||||||
"revCount": 1145,
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://git.joshuabell.xyz/ringofstorms/dotfiles"
|
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"dir": "flakes/secrets-bao",
|
"path": "../../flakes/secrets-bao",
|
||||||
"type": "git",
|
"type": "path"
|
||||||
"url": "https://git.joshuabell.xyz/ringofstorms/dotfiles"
|
},
|
||||||
}
|
"parent": []
|
||||||
},
|
},
|
||||||
"stt_ime": {
|
"stt_ime": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
|
|
@ -1515,20 +1497,14 @@
|
||||||
"nixpkgs": "nixpkgs_7"
|
"nixpkgs": "nixpkgs_7"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"dir": "flakes/stt_ime",
|
"path": "../../flakes/stt_ime",
|
||||||
"lastModified": 1768586643,
|
"type": "path"
|
||||||
"narHash": "sha256-FPRn8Ea7h+209KQvdy2FCAaMK7iMbxHvIEb/1Flt9wc=",
|
|
||||||
"ref": "refs/heads/master",
|
|
||||||
"rev": "28656f137da6f102749b39b4bcb03c04c7107d2d",
|
|
||||||
"revCount": 1145,
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://git.joshuabell.xyz/ringofstorms/dotfiles"
|
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"dir": "flakes/stt_ime",
|
"path": "../../flakes/stt_ime",
|
||||||
"type": "git",
|
"type": "path"
|
||||||
"url": "https://git.joshuabell.xyz/ringofstorms/dotfiles"
|
},
|
||||||
}
|
"parent": []
|
||||||
},
|
},
|
||||||
"systems": {
|
"systems": {
|
||||||
"locked": {
|
"locked": {
|
||||||
|
|
|
||||||
|
|
@ -6,20 +6,20 @@
|
||||||
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
|
|
||||||
# Use relative to get current version for testing
|
# Use relative to get current version for testing
|
||||||
# common.url = "path:../../flakes/common";
|
common.url = "path:../../flakes/common";
|
||||||
common.url = "git+https://git.joshuabell.xyz/ringofstorms/dotfiles?dir=flakes/common";
|
# common.url = "git+https://git.joshuabell.xyz/ringofstorms/dotfiles?dir=flakes/common";
|
||||||
# secrets.url = "path:../../flakes/secrets";
|
# secrets.url = "path:../../flakes/secrets";
|
||||||
secrets.url = "git+https://git.joshuabell.xyz/ringofstorms/dotfiles?dir=flakes/secrets";
|
secrets.url = "git+https://git.joshuabell.xyz/ringofstorms/dotfiles?dir=flakes/secrets";
|
||||||
# secrets-bao.url = "path:../../flakes/secrets-bao";
|
secrets-bao.url = "path:../../flakes/secrets-bao";
|
||||||
secrets-bao.url = "git+https://git.joshuabell.xyz/ringofstorms/dotfiles?dir=flakes/secrets-bao";
|
# secrets-bao.url = "git+https://git.joshuabell.xyz/ringofstorms/dotfiles?dir=flakes/secrets-bao";
|
||||||
# flatpaks.url = "path:../../flakes/flatpaks";
|
# flatpaks.url = "path:../../flakes/flatpaks";
|
||||||
flatpaks.url = "git+https://git.joshuabell.xyz/ringofstorms/dotfiles?dir=flakes/flatpaks";
|
flatpaks.url = "git+https://git.joshuabell.xyz/ringofstorms/dotfiles?dir=flakes/flatpaks";
|
||||||
# beszel.url = "path:../../flakes/beszel";
|
# beszel.url = "path:../../flakes/beszel";
|
||||||
beszel.url = "git+https://git.joshuabell.xyz/ringofstorms/dotfiles?dir=flakes/beszel";
|
beszel.url = "git+https://git.joshuabell.xyz/ringofstorms/dotfiles?dir=flakes/beszel";
|
||||||
# de_plasma.url = "path:../../flakes/de_plasma";
|
de_plasma.url = "path:../../flakes/de_plasma";
|
||||||
de_plasma.url = "git+https://git.joshuabell.xyz/ringofstorms/dotfiles?dir=flakes/de_plasma";
|
# de_plasma.url = "git+https://git.joshuabell.xyz/ringofstorms/dotfiles?dir=flakes/de_plasma";
|
||||||
# stt_ime.url = "path:../../flakes/stt_ime";
|
stt_ime.url = "path:../../flakes/stt_ime";
|
||||||
stt_ime.url = "git+https://git.joshuabell.xyz/ringofstorms/dotfiles?dir=flakes/stt_ime";
|
# stt_ime.url = "git+https://git.joshuabell.xyz/ringofstorms/dotfiles?dir=flakes/stt_ime";
|
||||||
|
|
||||||
opencode.url = "github:anomalyco/opencode";
|
opencode.url = "github:anomalyco/opencode";
|
||||||
ros_neovim.url = "git+https://git.joshuabell.xyz/ringofstorms/nvim";
|
ros_neovim.url = "git+https://git.joshuabell.xyz/ringofstorms/nvim";
|
||||||
|
|
|
||||||
10
hosts/lio/home_manager.nix
Normal file
10
hosts/lio/home_manager.nix
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
modulesPath,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
157
hosts/lio/hyprland_customizations.nix
Normal file
157
hosts/lio/hyprland_customizations.nix
Normal file
|
|
@ -0,0 +1,157 @@
|
||||||
|
{ lib, pkgs, ... }:
|
||||||
|
let
|
||||||
|
# Exact descriptions as reported by: hyprctl -j monitors | jq '.[].description'
|
||||||
|
mainDesc = "ASUSTek COMPUTER INC ASUS PG43U 0x01010101";
|
||||||
|
secondaryDesc = "Samsung Electric Company C34J79x HTRM900776";
|
||||||
|
|
||||||
|
mainMonitor = "desc:${mainDesc}";
|
||||||
|
secondaryMonitor = "desc:${secondaryDesc}";
|
||||||
|
|
||||||
|
hyprlandExtraOptions = {
|
||||||
|
exec-once = [
|
||||||
|
# Wait a moment for monitors/workspaces to settle, then "prime" 6 and return to 1
|
||||||
|
"sh -lc 'sleep 0.2; hyprctl dispatch workspace 7; sleep 0.02; hyprctl dispatch workspace 1'"
|
||||||
|
|
||||||
|
];
|
||||||
|
monitor = [
|
||||||
|
"${mainMonitor},3840x2160@97.98,0x0,1,transform,0"
|
||||||
|
"${secondaryMonitor},3440x1440@99.98,-1440x-640,1,transform,1"
|
||||||
|
];
|
||||||
|
workspace =
|
||||||
|
let
|
||||||
|
inherit (builtins) map toString;
|
||||||
|
inherit (lib) range;
|
||||||
|
mkWs = monitor: i: "${toString i},monitor:${monitor},persistent:true";
|
||||||
|
in
|
||||||
|
(map (mkWs mainMonitor) (range 1 6)) ++ (map (mkWs secondaryMonitor) (range 7 10));
|
||||||
|
};
|
||||||
|
|
||||||
|
moveScript = pkgs.writeShellScriptBin "hyprland-move-workspaces" ''
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
HYPRCTL='${pkgs.hyprland}/bin/hyprctl'
|
||||||
|
JQ='${pkgs.jq}/bin/jq'
|
||||||
|
SOCAT='${pkgs.socat}/bin/socat'
|
||||||
|
|
||||||
|
MAIN_DESC='${mainDesc}'
|
||||||
|
SEC_DESC='${secondaryDesc}'
|
||||||
|
|
||||||
|
get_socket() {
|
||||||
|
# socket2 carries the event stream
|
||||||
|
echo "${"$"}{XDG_RUNTIME_DIR}/hypr/${"$"}{HYPRLAND_INSTANCE_SIGNATURE}/.socket2.sock"
|
||||||
|
}
|
||||||
|
|
||||||
|
wait_for_hypr() {
|
||||||
|
# Wait until hyprctl works (Hyprland is up)
|
||||||
|
until ''${HYPRCTL} -j monitors >/dev/null 2>&1; do
|
||||||
|
sleep 0.5
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
mon_name_by_desc() {
|
||||||
|
# Resolve Hyprland "name" (e.g., DP-2) from human-friendly description
|
||||||
|
local desc="${"$"}1"
|
||||||
|
''${HYPRCTL} -j monitors \
|
||||||
|
| ''${JQ} -r --arg d "${"$"}desc" '.[] | select(.description == $d) | .name' \
|
||||||
|
| head -n1
|
||||||
|
}
|
||||||
|
|
||||||
|
place_workspaces() {
|
||||||
|
local mainName secName
|
||||||
|
mainName="$(mon_name_by_desc "${"$"}MAIN_DESC")"
|
||||||
|
secName="$(mon_name_by_desc "${"$"}SEC_DESC" || true)"
|
||||||
|
|
||||||
|
# Always keep 1–6 on the main monitor
|
||||||
|
for ws in 1 2 3 4 5 6; do
|
||||||
|
''${HYPRCTL} dispatch moveworkspacetomonitor "${"$"}ws" "${"$"}mainName" || true
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -n "${"$"}{secName:-}" ]; then
|
||||||
|
# Secondary is present ➜ put 7–10 on secondary
|
||||||
|
for ws in 7 8 9 10; do
|
||||||
|
''${HYPRCTL} dispatch moveworkspacetomonitor "${"$"}ws" "${"$"}secName" || true
|
||||||
|
done
|
||||||
|
else
|
||||||
|
# No secondary ➜ keep 7–10 on main
|
||||||
|
for ws in 7 8 9 10; do
|
||||||
|
''${HYPRCTL} dispatch moveworkspacetomonitor "${"$"}ws" "${"$"}mainName" || true
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
watch_events() {
|
||||||
|
local sock
|
||||||
|
sock="$(get_socket)"
|
||||||
|
|
||||||
|
# If socket2 is missing for some reason, fall back to polling
|
||||||
|
if [ ! -S "${"$"}sock" ]; then
|
||||||
|
while :; do
|
||||||
|
place_workspaces
|
||||||
|
sleep 5
|
||||||
|
done
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Subscribe to Hyprland events and react to monitor changes
|
||||||
|
''${SOCAT} - "UNIX-CONNECT:${"$"}sock" | while IFS= read -r line; do
|
||||||
|
case "${"$"}line" in
|
||||||
|
monitoradded*|monitorremoved*|activemonitor*|layoutchange*|createworkspace*)
|
||||||
|
place_workspaces
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ "${"$"}{1:-}" = "--oneshot" ]; then
|
||||||
|
wait_for_hypr
|
||||||
|
place_workspaces
|
||||||
|
else
|
||||||
|
wait_for_hypr
|
||||||
|
place_workspaces
|
||||||
|
watch_events
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options = { };
|
||||||
|
|
||||||
|
config = {
|
||||||
|
environment.systemPackages = [ moveScript ];
|
||||||
|
|
||||||
|
ringofstorms_common.desktopEnvironment.hyprland.extraOptions = hyprlandExtraOptions;
|
||||||
|
|
||||||
|
ringofstorms_common.desktopEnvironment.hyprland.hyprpaperSettings = {
|
||||||
|
mode = "fill"; # Wallpaper display mode: fill, fit, stretch, center, tile
|
||||||
|
|
||||||
|
preload = [
|
||||||
|
"${../_shared_assets/wallpapers/pixel_neon.png}"
|
||||||
|
];
|
||||||
|
|
||||||
|
wallpaper = [
|
||||||
|
"${mainMonitor},${../_shared_assets/wallpapers/pixel_neon.png}"
|
||||||
|
"${secondaryMonitor},${../_shared_assets/wallpapers/pixel_neon_v.png}"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# User-level systemd service that follows your Hyprland session and watches for monitor changes
|
||||||
|
# systemd.user.services.hyprland-move-workspaces = {
|
||||||
|
# description = "Keep workspaces 1–6 on main and 7–10 on secondary; react to monitor changes";
|
||||||
|
#
|
||||||
|
# # Start/stop with Hyprland specifically
|
||||||
|
# wantedBy = [ "hyprland-session.target" ];
|
||||||
|
# after = [ "hyprland-session.target" ];
|
||||||
|
# partOf = [ "hyprland-session.target" ];
|
||||||
|
# bindsTo = [ "hyprland-session.target" ];
|
||||||
|
# # Only start once Hyprland's event socket exists
|
||||||
|
# unitConfig.ConditionPathExistsGlob = "%t/hypr/*/.socket2.sock";
|
||||||
|
#
|
||||||
|
# serviceConfig = {
|
||||||
|
# Type = "simple";
|
||||||
|
# ExecStart = "${moveScript}/bin/hyprland-move-workspaces";
|
||||||
|
# Restart = "always";
|
||||||
|
# RestartSec = "2s";
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
};
|
||||||
|
}
|
||||||
51
hosts/lio/i3_customizations.nix
Normal file
51
hosts/lio/i3_customizations.nix
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
let
|
||||||
|
assignLines = ''
|
||||||
|
workspace 1 output DP-1
|
||||||
|
workspace 2 output DP-1
|
||||||
|
workspace 3 output DP-1
|
||||||
|
workspace 4 output DP-1
|
||||||
|
workspace 5 output DP-1
|
||||||
|
workspace 6 output DP-1
|
||||||
|
workspace 7 output DP-2
|
||||||
|
workspace 8 output DP-2
|
||||||
|
workspace 9 output DP-2
|
||||||
|
workspace 10 output DP-2
|
||||||
|
'';
|
||||||
|
bg1 = ../_shared_assets/wallpapers/pixel_neon.png;
|
||||||
|
bg2 = ../_shared_assets/wallpapers/pixel_neon_v.png;
|
||||||
|
# xrSetup = "xrandr --output DP-1 --mode 3840x2160 --rate 119.88 --pos 0x0 --primary; sleep 0.2; xrandr --output DP-2 --mode 3440x1440 --rate 99.98 --rotate left --left-of DP-1";
|
||||||
|
xrSetup = "xrandr --output DP-1 --mode 3840x2160 --rate 60 --pos 0x0 --primary; sleep 0.2; xrandr --output DP-2 --mode 3440x1440 --rate 99.98 --rotate left --left-of DP-1";
|
||||||
|
xwallpaperCmd = "xwallpaper --output DP-1 --zoom ${bg1} --output DP-2 --zoom ${bg2}";
|
||||||
|
startupCmd = "sh -c 'sleep 0.2; i3-msg workspace number 7; sleep 0.2; i3-msg workspace number 1'";
|
||||||
|
i3ExtraOptions = {
|
||||||
|
startup = [
|
||||||
|
{ command = "${xrSetup}"; }
|
||||||
|
{ command = "sh -c 'sleep 1; ${xwallpaperCmd}'"; }
|
||||||
|
{ command = "${startupCmd}"; }
|
||||||
|
];
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options = { };
|
||||||
|
config = {
|
||||||
|
home-manager.sharedModules = [
|
||||||
|
(
|
||||||
|
{ lib, pkgs, ... }:
|
||||||
|
let
|
||||||
|
inherit (lib) mkAfter;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
xsession.windowManager.i3.config.startup = mkAfter (i3ExtraOptions.startup ++ [
|
||||||
|
{ command = "nm-applet"; }
|
||||||
|
{ command = "blueman-applet"; }
|
||||||
|
{ command = "xfce4-power-manager"; }
|
||||||
|
{ command = "sh -c 'xset s off -dpms; xset s noblank'"; }
|
||||||
|
]);
|
||||||
|
xsession.windowManager.i3.extraConfig = mkAfter assignLines;
|
||||||
|
home.packages = [ pkgs.xwallpaper pkgs.xorg.xrandr pkgs.xorg.xset ];
|
||||||
|
}
|
||||||
|
)
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
88
hosts/lio/sway_customizations.nix
Normal file
88
hosts/lio/sway_customizations.nix
Normal file
|
|
@ -0,0 +1,88 @@
|
||||||
|
{ ... }:
|
||||||
|
let
|
||||||
|
swayExtraOptions = {
|
||||||
|
startup = [
|
||||||
|
{
|
||||||
|
command = "exec sh -c 'sleep 0.01; swaymsg workspace number 7; sleep 0.02; swaymsg workspace number 1'";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
# Example: map workspaces 1–6 to DP-1 and 7–10 to HDMI-A-1
|
||||||
|
workspaceOutputAssign = [
|
||||||
|
{
|
||||||
|
workspace = "1";
|
||||||
|
output = "DP-1";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
workspace = "2";
|
||||||
|
output = "DP-1";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
workspace = "3";
|
||||||
|
output = "DP-1";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
workspace = "4";
|
||||||
|
output = "DP-1";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
workspace = "5";
|
||||||
|
output = "DP-1";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
workspace = "6";
|
||||||
|
output = "DP-1";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
workspace = "7";
|
||||||
|
output = "DP-2";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
workspace = "8";
|
||||||
|
output = "DP-2";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
workspace = "9";
|
||||||
|
output = "DP-2";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
workspace = "10";
|
||||||
|
output = "DP-2";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
# Optional output settings
|
||||||
|
output = {
|
||||||
|
"DP-1" = {
|
||||||
|
scale = "1";
|
||||||
|
pos = "0 0";
|
||||||
|
mode = "3840x2160@97.983Hz";
|
||||||
|
bg = "${../_shared_assets/wallpapers/pixel_neon.png} fill";
|
||||||
|
};
|
||||||
|
"DP-2" = {
|
||||||
|
scale = "1";
|
||||||
|
transform = "270";
|
||||||
|
pos = "-1440 -640";
|
||||||
|
mode = "3440x1440@99.982Hz";
|
||||||
|
bg = "${../_shared_assets/wallpapers/pixel_neon_v.png} fill";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options = { };
|
||||||
|
|
||||||
|
config = {
|
||||||
|
# ringofstorms_common.desktopEnvironment.sway.extraOptions = swayExtraOptions;
|
||||||
|
|
||||||
|
home-manager.sharedModules = [
|
||||||
|
(
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
wayland.windowManager.sway.config = swayExtraOptions;
|
||||||
|
}
|
||||||
|
)
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue