feat(niri): noctalia shell :o

This commit is contained in:
Kat Inskip 2025-10-12 21:34:24 -07:00
parent 540ca5f762
commit adaf2b06e5
Signed by: kat
GPG key ID: 465E64DECEA8CF0F
20 changed files with 408 additions and 72 deletions

View file

@ -38,12 +38,12 @@ in {
packages' = [
"udiskie"
"easyeffects"
"pasystray"
#"pasystray"
];
packages = [
"pasystray"
"pavucontrol"
"networkmanagerapplet"
#"pasystray"
#"pavucontrol"
#"networkmanagerapplet"
];
packageCommands = let
packageCommands' = map packageCommand' packages';

View file

@ -22,6 +22,7 @@ in {
bindWorkspace "0" 10
)
];
noctalia = "${getExe parent.services.noctalia-shell.package} ipc call";
# See tip near https://github.com/sodiboo/niri-flake/blob/main/docs.md#user-content-programsnirisettingsbindsnameaction
sh = config.lib.niri.actions.spawn "sh" "-c";
# ▀▀█
@ -35,9 +36,13 @@ in {
personalBindings = {
"Mod+Return".action = sh ''${getExe config.programs.alacritty.package}'';
"Mod+T".action.toggle-window-floating = {};
"Mod+D".action = sh ''${getExe config.programs.fuzzel.package} -D no -T "${getExe config.programs.alacritty.package} --command"'';
"Mod+Escape".action = sh ''${getExe config.programs.wlogout.package} -p layer-shell'';
"Mod+Shift+Escape".action = sh ''${getExe config.programs.swaylock.package} -f'';
#"Mod+D".action = sh ''${getExe config.programs.fuzzel.package} -D no -T "${getExe config.programs.alacritty.package} --command"'';
"Mod+D".action = sh ''${noctalia} launcher toggle'';
"Mod+Shift+D".action = sh ''${noctalia} launcher clipboard'';
#"Mod+Escape".action = sh ''${getExe config.programs.wlogout.package} -p layer-shell'';
"Mod+Escape".action = sh ''${noctalia} sessionMenu toggle'';
#"Mod+Shift+Escape".action = sh ''${getExe config.programs.swaylock.package} -f'';
"Mod+Shift+Escape".action = sh ''${noctalia} lockScreen toggle'';
"Mod+Tab" = {
#repeat = false;
cooldown-ms = 150;
@ -221,7 +226,31 @@ in {
action = sh ''${swayosd-client} --output-volume mute-toggle'';
};
};
mediaBindingsAvizoless = mkIf (!(config.services.avizo.enable || config.services.swayosd.enable)) {
mediaBindingsNoctalia = let
vol = "${noctalia} volume";
bl = "${noctalia} brightness";
in
mkIf config.programs.noctalia-shell.enable {
"XF86MonBrightnessUp".action = sh ''${bl} increase'';
"XF86MonBrightnessDown".action = sh ''${bl} decrease'';
"XF86AudioRaiseVolume" = {
allow-when-locked = true;
action = sh ''${vol} increase'';
};
"XF86AudioLowerVolume" = {
allow-when-locked = true;
action = sh ''${vol} decrease'';
};
"XF86AudioMute" = {
allow-when-locked = true;
action = sh ''${vol} muteOutput'';
};
"Shift+XF86AudioMute" = {
allow-when-locked = true;
action = sh ''${vol} muteInput'';
};
};
mediaBindingsAvizoless = mkIf (!(config.services.avizo.enable || config.programs.noctalia-shell.enable || config.services.swayosd.enable)) {
"XF86MonBrightnessUp".action = sh ''${getExe pkgs.brightnessctl} -c backlight set 5%+'';
"XF86MonBrightnessDown".action = sh ''${getExe pkgs.brightnessctl} -c backlight set 5%-'';
"XF86AudioRaiseVolume".action = sh ''${parent.services.wireplumber.package}/bin/wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+'';
@ -235,6 +264,7 @@ in {
personalBindings
mediaBindingsCommon
mediaBindingsAvizo
mediaBindingsNoctalia
mediaBindingsSwayOSD
mediaBindingsAvizoless
]);

View file

@ -1,6 +1,6 @@
{config, ...}: {
stylix.targets.fuzzel.enable = config.programs.fuzzel.enable;
programs.fuzzel = {
enable = true;
enable = false;
};
}

View file

@ -0,0 +1,255 @@
{
config,
lib,
...
}: let
inherit (lib.meta) getExe;
in {
programs.noctalia-shell = {
enable = true;
settings = {
settingsVersion = 15;
bar = {
position = "top";
backgroundOpacity = 0.9;
monitors = [];
density = "comfortable";
showCapsule = true;
floating = true;
marginVertical = 0.25;
marginHorizontal = 0.25;
widgets = {
left = [
{
id = "Workspace";
labelMode = "name";
}
{
id = "ActiveWindow";
widgetWidth = 300;
}
];
center = [
{
id = "MediaMini";
showAlbumArt = true;
showVisualizer = true;
scrollingMode = "always";
# check if this works,
# if not, rewrite their system for it o.o
widgetWidth = 300;
}
{
id = "Clock";
formatHorizontal = "yyyy-MM-dd HH:mm t";
}
{
id = "NightLight";
}
{
id = "DarkMode";
}
{
id = "KeepAwake";
}
{
id = "ScreenRecorder";
}
];
right = [
{
id = "SystemMonitor";
}
{
id = "Tray";
}
{
id = "NotificationHistory";
}
{
id = "Battery";
}
{
id = "Volume";
}
{
id = "Brightness";
}
{
id = "ControlCenter";
}
];
};
};
general = {
avatarImage = ../../user/avatar.jpg;
dimDesktop = false;
showScreenCorners = false;
forceBlackScreenCorners = false;
radiusRatio = 1;
screenRadiusRatio = 1;
animationSpeed = 1;
animationDisabled = false;
};
location = {
name = "Vancouver";
useFahrenheit = false;
use12hourFormat = false;
showWeekNumberInCalendar = false;
};
screenRecorder = {
directory = "${config.home.homeDirectory}/Videos/";
frameRate = 60;
audioCodec = "opus";
videoCodec = "h264";
quality = "very_high";
colorRange = "limited";
showCursor = true;
audioSource = "default_output";
videoSource = "portal";
};
wallpaper = {
# konawall
enabled = false;
directory = "";
enableMultiMonitorDirectories = false;
setWallpaperOnAllMonitors = true;
defaultWallpaper = "";
fillMode = "crop";
fillColor = "#000000";
randomEnabled = false;
randomIntervalSec = 300;
transitionDuration = 1500;
transitionType = "random";
transitionEdgeSmoothness = 0.05;
monitors = [];
};
appLauncher = {
enableClipboardHistory = true;
position = "center";
backgroundOpacity = 1;
pinnedExecs = [];
useApp2Unit = false;
sortByMostUsed = true;
terminalCommand = "${getExe config.programs.alacritty.package}";
};
controlCenter = {
position = "close_to_bar_button";
quickSettingsStyle = "compact";
widgets = {
quickSettings = [
{
id = "WiFi";
}
{
id = "Bluetooth";
}
{
id = "Notifications";
}
{
id = "ScreenRecorder";
}
{
id = "PowerProfile";
}
{
id = "WallpaperSelector";
}
];
};
};
dock = {
displayMode = "auto_hide";
backgroundOpacity = 1;
floatingRatio = 1;
onlySameOutput = true;
monitors = [];
pinnedApps = [];
};
network = {
wifiEnabled = true;
};
notifications = {
doNotDisturb = false;
monitors = [];
location = "top_right";
alwaysOnTop = false;
lastSeenTs = 0;
respectExpireTimeout = false;
lowUrgencyDuration = 3;
normalUrgencyDuration = 8;
criticalUrgencyDuration = 15;
};
osd = {
enabled = true;
location = "top_right";
monitors = [];
autoHideMs = 2000;
};
audio = {
volumeStep = 5;
volumeOverdrive = false;
cavaFrameRate = 60;
visualizerType = "linear";
mprisBlacklist = [];
preferredPlayer = "";
};
ui = {
fontDefault = config.stylix.fonts.sansSerif;
fontFixed = config.stylix.fonts.monospace;
fontDefaultScale = 1;
fontFixedScale = 1;
monitorsScaling = [
{
name = "DP-2";
scale = 1.25;
}
];
idleInhibitorEnabled = false;
tooltipsEnabled = true;
};
brightness = {
brightnessStep = 5;
};
colorSchemes = {
useWallpaperColors = false;
predefinedScheme = "Dracula";
darkMode = true;
matugenSchemeType = "scheme-fruit-salad";
generateTemplatesForPredefined = true;
};
templates = {
gtk = false;
qt = false;
kitty = false;
ghostty = false;
foot = false;
fuzzel = false;
discord = false;
discord_vesktop = false;
discord_webcord = false;
discord_armcord = false;
discord_equibop = false;
discord_lightcord = false;
discord_dorion = false;
pywalfox = false;
enableUserTemplates = false;
};
nightLight = {
enabled = false;
forced = false;
autoSchedule = true;
nightTemp = "4000";
dayTemp = "6500";
manualSunrise = "06:30";
manualSunset = "18:30";
};
hooks = {
enabled = false;
wallpaperChange = "";
darkModeChange = "";
};
};
};
}

View file

@ -1,10 +1,18 @@
{config, ...}: {
{
config,
lib,
parent,
...
}: let
inherit (lib.meta) getExe;
noctalia = "${getExe parent.services.noctalia-shell.package} ipc call";
in {
services.swayidle = {
enable = true;
timeouts = [
{
timeout = 600;
command = "${config.programs.swaylock.package}/bin/swaylock* -f";
command = "${noctalia} lockScreen toggle";
}
{
timeout = 1200;
@ -14,7 +22,7 @@
events = [
{
event = "before-sleep";
command = "${config.programs.swaylock.package}/bin/swaylock* -f";
command = "${noctalia} lockScreen toggle";
}
];
};

View file

@ -1,6 +1,6 @@
{pkgs, ...}: {
programs.swaylock = {
enable = true;
enable = false;
package = pkgs.swaylock-effects;
settings = {
screenshots = true;

View file

@ -9,7 +9,7 @@ _: {
};
};
services.swaync = {
enable = true;
enable = false;
settings = {
positionX = "right";
positionY = "top";

View file

@ -49,7 +49,7 @@ _:
#in
{
services.swayosd = {
enable = true;
enable = false;
#stylePath = theme;
};
}

View file

@ -1,6 +1,6 @@
_: {
programs.waybar = {
enable = true;
#enable = true;
systemd.enable = true;
style = ''
* {

View file

@ -1,6 +1,6 @@
_: {
programs.wofi = {
enable = true;
enable = false;
settings = {
insensitive = true;
allow_images = true;

View file

@ -19,7 +19,7 @@
opacity = {
desktop = 1.0;
applications = 1.0;
terminal = 1.0;
terminal = 0.9;
popups = 0.8;
};
fonts = {
@ -38,6 +38,6 @@
};
autoEnable = true;
polarity = "light";
base16Scheme = "${pkgs.base16-schemes}/share/themes/monokai.yaml";
base16Scheme = "${pkgs.base16-schemes}/share/themes/dracula.yaml";
};
}

View file

@ -44,8 +44,6 @@ _: {
"display"
"terminal"
"break"
"chassis"
"board"
{
type = "cpu";
showPeCoreCount = true;
@ -65,35 +63,12 @@ _: {
"break"
"disk"
"zpool"
{
type = "physicaldisk";
temp = true;
}
"lm"
"wm"
"theme"
"wmtheme"
"icons"
"font"
"cursor"
"terminal"
"terminalfont"
"terminalsize"
"terminaltheme"
"break"
{
type = "weather";
timeout = 1000;
}
"dns"
"break"
"break"
"bluetooth"
"break"
"player"
"media"
"break"
"colors"
];
};
};

BIN
home/user/avatar.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB