noctalia with fingerprint lock screen
This commit is contained in:
@@ -9,9 +9,9 @@ in
|
||||
|
||||
home.sessionVariables = {
|
||||
HYPRCURSOR_THEME = "Nordzy-cursors"; # Dark variant (default)
|
||||
HYPRCURSOR_SIZE = 32;
|
||||
HYPRCURSOR_SIZE = 24;
|
||||
XCURSOR_THEME = "Nordzy-cursors";
|
||||
XCURSOR_SIZE = 32;
|
||||
XCURSOR_SIZE = 24;
|
||||
};
|
||||
|
||||
dconf = {
|
||||
|
||||
@@ -10,10 +10,9 @@ in
|
||||
{
|
||||
imports = [
|
||||
./rofi.nix
|
||||
./walker.nix
|
||||
./cursor.nix
|
||||
./waybar.nix
|
||||
./quickshell.nix
|
||||
./noctalia
|
||||
./wallpapers.nix
|
||||
];
|
||||
|
||||
@@ -23,8 +22,8 @@ in
|
||||
hyprshot
|
||||
playerctl
|
||||
hyprsunset
|
||||
hyprlock
|
||||
xdg-desktop-portal-termfilechooser
|
||||
libnotify
|
||||
];
|
||||
|
||||
home.sessionVariables = {
|
||||
@@ -123,7 +122,7 @@ in
|
||||
|
||||
env = [
|
||||
"GDK_SCALE, 2.0"
|
||||
"XCURSOR_SIZE, 32"
|
||||
"XCURSOR_SIZE, 24"
|
||||
"HYPRCURSOR_THEME, rose-pine-hyprcursor"
|
||||
"HYPRCURSOR_SIZE, 24"
|
||||
];
|
||||
@@ -131,9 +130,14 @@ in
|
||||
"exec-once" = [
|
||||
"dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
|
||||
"nm-applet"
|
||||
"hyprpaper"
|
||||
"hyprsunset"
|
||||
"nerd-dictation begin --simulate-input-tool WTYPE --suspend-on-start && touch ~/.cache/nerd-dictation-suspended"
|
||||
"noctalia-shell"
|
||||
];
|
||||
|
||||
layerrule = [
|
||||
"blur 1, match:namespace noctalia-background-.*"
|
||||
"ignore_alpha 0.5, match:namespace noctalia-background-.*"
|
||||
];
|
||||
workspace = [
|
||||
# no gaps when only window
|
||||
@@ -184,6 +188,7 @@ in
|
||||
"$mod" = "SUPER";
|
||||
|
||||
bind = [
|
||||
"$mod, n, exec, noctalia-shell ipc call controlCenter toggle"
|
||||
"$mod, g, hyprexpo:expo, toggle"
|
||||
# "$mod, tab, overview:toggle,"
|
||||
"$mod, b, exec, pkill waybar || waybar"
|
||||
@@ -193,8 +198,8 @@ in
|
||||
"$mod, f, fullscreen, 0"
|
||||
"$mod SHIFT, f, fullscreen, 1"
|
||||
|
||||
# walker app launcher
|
||||
"$mod, space, exec, walker"
|
||||
# app launcher
|
||||
"$mod, space, exec, noctalia-shell ipc call launcher toggle"
|
||||
# rofi (old)
|
||||
# "$mod, space, exec, launcher_t2"
|
||||
|
||||
@@ -267,13 +272,7 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
services.hyprpaper = {
|
||||
enable = true;
|
||||
settings = {
|
||||
ipc = "on";
|
||||
splash = false;
|
||||
};
|
||||
};
|
||||
services.hyprpaper.enable = false;
|
||||
|
||||
services.hypridle = {
|
||||
enable = true;
|
||||
@@ -281,12 +280,12 @@ in
|
||||
general = {
|
||||
after_sleep_cmd = "hyprctl dispatch dpms on";
|
||||
ignore_dbus_inhibit = false;
|
||||
lock_cmd = "hyprlock";
|
||||
lock_cmd = "noctalia-shell ipc call lockScreen lock";
|
||||
};
|
||||
listener = [
|
||||
{
|
||||
timeout = 900;
|
||||
on-timeout = "hyprlock";
|
||||
on-timeout = "noctalia-shell ipc call lockScreen lock";
|
||||
}
|
||||
{
|
||||
timeout = 1200;
|
||||
@@ -294,7 +293,6 @@ in
|
||||
on-resume = "hyprctl dispatch dpms on";
|
||||
}
|
||||
];
|
||||
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
avatar = pkgs.fetchurl {
|
||||
url = "https://github.com/naps62.png";
|
||||
sha256 = "1ck11xg4rwcvn8dcc06ax7i9yfzy21v1n6h5mcjrkrici5sznlsv";
|
||||
};
|
||||
in
|
||||
{
|
||||
imports = [ inputs.noctalia.homeModules.default ];
|
||||
|
||||
programs.noctalia-shell = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
home.file.".face".source = avatar;
|
||||
|
||||
# symlink directly to the repo file so we can edit it through the GUI
|
||||
xdg.configFile."noctalia/settings.json".source =
|
||||
config.lib.file.mkOutOfStoreSymlink "/home/naps62/projects/nixos-config/home/common/programs/hyprland/noctalia/settings.json";
|
||||
|
||||
# force overwrite files that noctalia may have turned into regular files
|
||||
xdg.configFile."hypr/hyprland.conf".force = true;
|
||||
xdg.configFile."gtk-3.0/gtk.css".force = true;
|
||||
|
||||
# source noctalia-generated color theme in hyprland
|
||||
wayland.windowManager.hyprland.settings.source = [
|
||||
"~/.config/hypr/noctalia/noctalia-colors.conf"
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,631 @@
|
||||
{
|
||||
"appLauncher": {
|
||||
"autoPasteClipboard": false,
|
||||
"clipboardWatchImageCommand": "wl-paste --type image --watch cliphist store",
|
||||
"clipboardWatchTextCommand": "wl-paste --type text --watch cliphist store",
|
||||
"clipboardWrapText": true,
|
||||
"customLaunchPrefix": "",
|
||||
"customLaunchPrefixEnabled": false,
|
||||
"density": "default",
|
||||
"enableClipPreview": true,
|
||||
"enableClipboardHistory": true,
|
||||
"enableSessionSearch": true,
|
||||
"enableSettingsSearch": true,
|
||||
"enableWindowsSearch": true,
|
||||
"iconMode": "tabler",
|
||||
"ignoreMouseInput": false,
|
||||
"overviewLayer": true,
|
||||
"pinnedApps": [
|
||||
],
|
||||
"position": "center",
|
||||
"screenshotAnnotationTool": "",
|
||||
"showCategories": true,
|
||||
"showIconBackground": false,
|
||||
"sortByMostUsed": true,
|
||||
"terminalCommand": "kitty -e",
|
||||
"useApp2Unit": false,
|
||||
"viewMode": "list"
|
||||
},
|
||||
"audio": {
|
||||
"cavaFrameRate": 30,
|
||||
"mprisBlacklist": [
|
||||
],
|
||||
"preferredPlayer": "spotify",
|
||||
"visualizerType": "linear",
|
||||
"volumeFeedback": false,
|
||||
"volumeOverdrive": false,
|
||||
"volumeStep": 5
|
||||
},
|
||||
"bar": {
|
||||
"autoHideDelay": 500,
|
||||
"autoShowDelay": 150,
|
||||
"backgroundOpacity": 0.93,
|
||||
"barType": "simple",
|
||||
"capsuleColorKey": "none",
|
||||
"capsuleOpacity": 1,
|
||||
"density": "comfortable",
|
||||
"displayMode": "auto_hide",
|
||||
"floating": false,
|
||||
"frameRadius": 12,
|
||||
"frameThickness": 8,
|
||||
"hideOnOverview": false,
|
||||
"marginHorizontal": 4,
|
||||
"marginVertical": 4,
|
||||
"monitors": [
|
||||
],
|
||||
"outerCorners": true,
|
||||
"position": "top",
|
||||
"screenOverrides": [
|
||||
],
|
||||
"showCapsule": true,
|
||||
"showOutline": false,
|
||||
"useSeparateOpacity": false,
|
||||
"widgets": {
|
||||
"center": [
|
||||
{
|
||||
"colorizeIcons": false,
|
||||
"hideMode": "hidden",
|
||||
"id": "ActiveWindow",
|
||||
"maxWidth": 145,
|
||||
"scrollingMode": "hover",
|
||||
"showIcon": true,
|
||||
"textColor": "none",
|
||||
"useFixedWidth": false
|
||||
},
|
||||
{
|
||||
"colorName": "primary",
|
||||
"hideWhenIdle": true,
|
||||
"id": "AudioVisualizer",
|
||||
"width": 200
|
||||
}
|
||||
],
|
||||
"left": [
|
||||
{
|
||||
"characterCount": 2,
|
||||
"colorizeIcons": false,
|
||||
"emptyColor": "secondary",
|
||||
"enableScrollWheel": true,
|
||||
"focusedColor": "primary",
|
||||
"followFocusedScreen": false,
|
||||
"groupedBorderOpacity": 1,
|
||||
"hideUnoccupied": true,
|
||||
"iconScale": 0.8,
|
||||
"id": "Workspace",
|
||||
"labelMode": "name",
|
||||
"occupiedColor": "secondary",
|
||||
"pillSize": 0.75,
|
||||
"showApplications": false,
|
||||
"showBadge": true,
|
||||
"showLabelsOnlyWhenOccupied": true,
|
||||
"unfocusedIconsOpacity": 1
|
||||
}
|
||||
],
|
||||
"right": [
|
||||
{
|
||||
"blacklist": [
|
||||
],
|
||||
"chevronColor": "none",
|
||||
"colorizeIcons": true,
|
||||
"drawerEnabled": false,
|
||||
"hidePassive": true,
|
||||
"id": "Tray",
|
||||
"pinned": [
|
||||
]
|
||||
},
|
||||
{
|
||||
"displayMode": "alwaysShow",
|
||||
"iconColor": "none",
|
||||
"id": "Network",
|
||||
"textColor": "none"
|
||||
},
|
||||
{
|
||||
"displayMode": "alwaysShow",
|
||||
"iconColor": "none",
|
||||
"id": "Bluetooth",
|
||||
"textColor": "none"
|
||||
},
|
||||
{
|
||||
"deviceNativePath": "__default__",
|
||||
"displayMode": "graphic-clean",
|
||||
"hideIfIdle": false,
|
||||
"hideIfNotDetected": true,
|
||||
"id": "Battery",
|
||||
"showNoctaliaPerformance": false,
|
||||
"showPowerProfiles": false
|
||||
},
|
||||
{
|
||||
"displayMode": "onhover",
|
||||
"iconColor": "none",
|
||||
"id": "Volume",
|
||||
"middleClickCommand": "pwvucontrol || pavucontrol",
|
||||
"textColor": "none"
|
||||
},
|
||||
{
|
||||
"displayMode": "onhover",
|
||||
"iconColor": "none",
|
||||
"id": "Brightness",
|
||||
"textColor": "none"
|
||||
},
|
||||
{
|
||||
"deviceNativePath": "__default__",
|
||||
"displayMode": "graphic-clean",
|
||||
"hideIfIdle": false,
|
||||
"hideIfNotDetected": true,
|
||||
"id": "Battery",
|
||||
"showNoctaliaPerformance": false,
|
||||
"showPowerProfiles": false
|
||||
},
|
||||
{
|
||||
"clockColor": "none",
|
||||
"customFont": "",
|
||||
"formatHorizontal": "HH:mm ddd, MMM dd",
|
||||
"formatVertical": "HH mm - dd MM",
|
||||
"id": "Clock",
|
||||
"tooltipFormat": "HH:mm ddd, MMM dd",
|
||||
"useCustomFont": false
|
||||
},
|
||||
{
|
||||
"colorizeDistroLogo": false,
|
||||
"colorizeSystemIcon": "none",
|
||||
"customIconPath": "",
|
||||
"enableColorization": true,
|
||||
"icon": "noctalia",
|
||||
"id": "ControlCenter",
|
||||
"useDistroLogo": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"brightness": {
|
||||
"brightnessStep": 5,
|
||||
"enableDdcSupport": false,
|
||||
"enforceMinimum": true
|
||||
},
|
||||
"calendar": {
|
||||
"cards": [
|
||||
{
|
||||
"enabled": true,
|
||||
"id": "calendar-header-card"
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"id": "calendar-month-card"
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"id": "weather-card"
|
||||
}
|
||||
]
|
||||
},
|
||||
"colorSchemes": {
|
||||
"darkMode": false,
|
||||
"generationMethod": "tonal-spot",
|
||||
"manualSunrise": "06:30",
|
||||
"manualSunset": "18:30",
|
||||
"monitorForColors": "",
|
||||
"predefinedScheme": "Nord",
|
||||
"schedulingMode": "off",
|
||||
"useWallpaperColors": false
|
||||
},
|
||||
"controlCenter": {
|
||||
"cards": [
|
||||
{
|
||||
"enabled": true,
|
||||
"id": "profile-card"
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"id": "shortcuts-card"
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"id": "audio-card"
|
||||
},
|
||||
{
|
||||
"enabled": false,
|
||||
"id": "brightness-card"
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"id": "weather-card"
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"id": "media-sysmon-card"
|
||||
}
|
||||
],
|
||||
"diskPath": "/",
|
||||
"position": "close_to_bar_button",
|
||||
"shortcuts": {
|
||||
"left": [
|
||||
{
|
||||
"id": "Network"
|
||||
},
|
||||
{
|
||||
"id": "Bluetooth"
|
||||
},
|
||||
{
|
||||
"id": "WallpaperSelector"
|
||||
},
|
||||
{
|
||||
"id": "NoctaliaPerformance"
|
||||
}
|
||||
],
|
||||
"right": [
|
||||
{
|
||||
"id": "Notifications"
|
||||
},
|
||||
{
|
||||
"id": "PowerProfile"
|
||||
},
|
||||
{
|
||||
"id": "KeepAwake"
|
||||
},
|
||||
{
|
||||
"id": "NightLight"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"desktopWidgets": {
|
||||
"enabled": false,
|
||||
"gridSnap": false,
|
||||
"monitorWidgets": [
|
||||
]
|
||||
},
|
||||
"dock": {
|
||||
"animationSpeed": 1,
|
||||
"backgroundOpacity": 1,
|
||||
"colorizeIcons": false,
|
||||
"deadOpacity": 0.6,
|
||||
"displayMode": "auto_hide",
|
||||
"dockType": "floating",
|
||||
"enabled": false,
|
||||
"floatingRatio": 0,
|
||||
"inactiveIndicators": true,
|
||||
"monitors": [
|
||||
],
|
||||
"onlySameOutput": true,
|
||||
"pinnedApps": [
|
||||
],
|
||||
"pinnedStatic": false,
|
||||
"position": "bottom",
|
||||
"showFrameIndicator": true,
|
||||
"sitOnFrame": false,
|
||||
"size": 1.5
|
||||
},
|
||||
"general": {
|
||||
"allowPanelsOnScreenWithoutBar": true,
|
||||
"allowPasswordWithFprintd": true,
|
||||
"animationDisabled": false,
|
||||
"animationSpeed": 1,
|
||||
"autoStartAuth": true,
|
||||
"avatarImage": "/home/naps62/.face",
|
||||
"boxRadiusRatio": 1,
|
||||
"clockFormat": "hh\\nmm",
|
||||
"clockStyle": "custom",
|
||||
"compactLockScreen": false,
|
||||
"dimmerOpacity": 0.4,
|
||||
"enableLockScreenCountdown": true,
|
||||
"enableShadows": true,
|
||||
"forceBlackScreenCorners": false,
|
||||
"iRadiusRatio": 1,
|
||||
"keybinds": {
|
||||
"keyDown": [
|
||||
"Down"
|
||||
],
|
||||
"keyEnter": [
|
||||
"Return"
|
||||
],
|
||||
"keyEscape": [
|
||||
"Esc"
|
||||
],
|
||||
"keyLeft": [
|
||||
"Left"
|
||||
],
|
||||
"keyRemove": [
|
||||
"Del"
|
||||
],
|
||||
"keyRight": [
|
||||
"Right"
|
||||
],
|
||||
"keyUp": [
|
||||
"Up"
|
||||
]
|
||||
},
|
||||
"language": "",
|
||||
"lockOnSuspend": true,
|
||||
"lockScreenAnimations": true,
|
||||
"lockScreenBlur": 0,
|
||||
"lockScreenCountdownDuration": 10000,
|
||||
"lockScreenMonitors": [
|
||||
],
|
||||
"lockScreenTint": 0,
|
||||
"radiusRatio": 1,
|
||||
"reverseScroll": false,
|
||||
"scaleRatio": 1,
|
||||
"screenRadiusRatio": 1,
|
||||
"shadowDirection": "bottom_right",
|
||||
"shadowOffsetX": 2,
|
||||
"shadowOffsetY": 3,
|
||||
"showChangelogOnStartup": false,
|
||||
"showHibernateOnLockScreen": true,
|
||||
"showScreenCorners": false,
|
||||
"showSessionButtonsOnLockScreen": true,
|
||||
"telemetryEnabled": false
|
||||
},
|
||||
"hooks": {
|
||||
"darkModeChange": "",
|
||||
"enabled": false,
|
||||
"performanceModeDisabled": "",
|
||||
"performanceModeEnabled": "",
|
||||
"screenLock": "",
|
||||
"screenUnlock": "",
|
||||
"session": "",
|
||||
"startup": "",
|
||||
"wallpaperChange": ""
|
||||
},
|
||||
"location": {
|
||||
"analogClockInCalendar": true,
|
||||
"firstDayOfWeek": -1,
|
||||
"hideWeatherCityName": false,
|
||||
"hideWeatherTimezone": false,
|
||||
"name": "Braga, Portugal",
|
||||
"showCalendarEvents": true,
|
||||
"showCalendarWeather": true,
|
||||
"showWeekNumberInCalendar": false,
|
||||
"use12hourFormat": false,
|
||||
"useFahrenheit": false,
|
||||
"weatherEnabled": true,
|
||||
"weatherShowEffects": true
|
||||
},
|
||||
"network": {
|
||||
"airplaneModeEnabled": false,
|
||||
"bluetoothDetailsViewMode": "grid",
|
||||
"bluetoothHideUnnamedDevices": false,
|
||||
"bluetoothRssiPollIntervalMs": 60000,
|
||||
"bluetoothRssiPollingEnabled": false,
|
||||
"disableDiscoverability": false,
|
||||
"wifiDetailsViewMode": "grid",
|
||||
"wifiEnabled": true
|
||||
},
|
||||
"nightLight": {
|
||||
"autoSchedule": true,
|
||||
"dayTemp": "6500",
|
||||
"enabled": true,
|
||||
"forced": false,
|
||||
"manualSunrise": "06:30",
|
||||
"manualSunset": "18:30",
|
||||
"nightTemp": "4000"
|
||||
},
|
||||
"notifications": {
|
||||
"backgroundOpacity": 1,
|
||||
"clearDismissed": true,
|
||||
"criticalUrgencyDuration": 15,
|
||||
"density": "compact",
|
||||
"enableBatteryToast": true,
|
||||
"enableKeyboardLayoutToast": true,
|
||||
"enableMarkdown": true,
|
||||
"enableMediaToast": true,
|
||||
"enabled": true,
|
||||
"location": "top_right",
|
||||
"lowUrgencyDuration": 3,
|
||||
"monitors": [
|
||||
],
|
||||
"normalUrgencyDuration": 8,
|
||||
"overlayLayer": true,
|
||||
"respectExpireTimeout": false,
|
||||
"saveToHistory": {
|
||||
"critical": true,
|
||||
"low": true,
|
||||
"normal": true
|
||||
},
|
||||
"sounds": {
|
||||
"criticalSoundFile": "",
|
||||
"enabled": false,
|
||||
"excludedApps": "discord,firefox,chrome,chromium,edge",
|
||||
"lowSoundFile": "",
|
||||
"normalSoundFile": "",
|
||||
"separateSounds": false,
|
||||
"volume": 0.5
|
||||
}
|
||||
},
|
||||
"osd": {
|
||||
"autoHideMs": 2000,
|
||||
"backgroundOpacity": 1,
|
||||
"enabled": true,
|
||||
"enabledTypes": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3
|
||||
],
|
||||
"location": "top",
|
||||
"monitors": [
|
||||
],
|
||||
"overlayLayer": true
|
||||
},
|
||||
"plugins": {
|
||||
"autoUpdate": false
|
||||
},
|
||||
"sessionMenu": {
|
||||
"countdownDuration": 10000,
|
||||
"enableCountdown": true,
|
||||
"largeButtonsLayout": "single-row",
|
||||
"largeButtonsStyle": true,
|
||||
"position": "center",
|
||||
"powerOptions": [
|
||||
{
|
||||
"action": "lock",
|
||||
"command": "",
|
||||
"countdownEnabled": true,
|
||||
"enabled": true,
|
||||
"keybind": "1"
|
||||
},
|
||||
{
|
||||
"action": "suspend",
|
||||
"command": "",
|
||||
"countdownEnabled": true,
|
||||
"enabled": true,
|
||||
"keybind": "2"
|
||||
},
|
||||
{
|
||||
"action": "hibernate",
|
||||
"command": "",
|
||||
"countdownEnabled": true,
|
||||
"enabled": true,
|
||||
"keybind": "3"
|
||||
},
|
||||
{
|
||||
"action": "reboot",
|
||||
"command": "",
|
||||
"countdownEnabled": true,
|
||||
"enabled": true,
|
||||
"keybind": "4"
|
||||
},
|
||||
{
|
||||
"action": "logout",
|
||||
"command": "",
|
||||
"countdownEnabled": true,
|
||||
"enabled": true,
|
||||
"keybind": "5"
|
||||
},
|
||||
{
|
||||
"action": "shutdown",
|
||||
"command": "",
|
||||
"countdownEnabled": true,
|
||||
"enabled": true,
|
||||
"keybind": "6"
|
||||
},
|
||||
{
|
||||
"action": "rebootToUefi",
|
||||
"command": "",
|
||||
"countdownEnabled": true,
|
||||
"enabled": true,
|
||||
"keybind": ""
|
||||
}
|
||||
],
|
||||
"showHeader": true,
|
||||
"showKeybinds": true
|
||||
},
|
||||
"settingsVersion": 53,
|
||||
"systemMonitor": {
|
||||
"batteryCriticalThreshold": 5,
|
||||
"batteryWarningThreshold": 20,
|
||||
"cpuCriticalThreshold": 90,
|
||||
"cpuWarningThreshold": 80,
|
||||
"criticalColor": "",
|
||||
"diskAvailCriticalThreshold": 10,
|
||||
"diskAvailWarningThreshold": 20,
|
||||
"diskCriticalThreshold": 90,
|
||||
"diskWarningThreshold": 80,
|
||||
"enableDgpuMonitoring": false,
|
||||
"externalMonitor": "resources || missioncenter || jdsystemmonitor || corestats || system-monitoring-center || gnome-system-monitor || plasma-systemmonitor || mate-system-monitor || ukui-system-monitor || deepin-system-monitor || pantheon-system-monitor",
|
||||
"gpuCriticalThreshold": 90,
|
||||
"gpuWarningThreshold": 80,
|
||||
"memCriticalThreshold": 90,
|
||||
"memWarningThreshold": 80,
|
||||
"swapCriticalThreshold": 90,
|
||||
"swapWarningThreshold": 80,
|
||||
"tempCriticalThreshold": 90,
|
||||
"tempWarningThreshold": 80,
|
||||
"useCustomColors": false,
|
||||
"warningColor": ""
|
||||
},
|
||||
"templates": {
|
||||
"activeTemplates": [
|
||||
{
|
||||
"enabled": true,
|
||||
"id": "zenBrowser"
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"id": "hyprland"
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"id": "kitty"
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"id": "yazi"
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"id": "zathura"
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"id": "gtk"
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"id": "qt"
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"id": "btop"
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"id": "spicetify"
|
||||
}
|
||||
],
|
||||
"enableUserTheming": false
|
||||
},
|
||||
"ui": {
|
||||
"bluetoothDetailsViewMode": "grid",
|
||||
"bluetoothHideUnnamedDevices": false,
|
||||
"boxBorderEnabled": false,
|
||||
"fontDefault": "Sans Serif",
|
||||
"fontDefaultScale": 1,
|
||||
"fontFixed": "monospace",
|
||||
"fontFixedScale": 1,
|
||||
"networkPanelView": "wifi",
|
||||
"panelBackgroundOpacity": 0.93,
|
||||
"panelsAttachedToBar": true,
|
||||
"settingsPanelMode": "attached",
|
||||
"tooltipsEnabled": true,
|
||||
"wifiDetailsViewMode": "grid"
|
||||
},
|
||||
"wallpaper": {
|
||||
"automationEnabled": true,
|
||||
"directory": "/home/naps62/.cache/wallpapers/3840x2160",
|
||||
"enableMultiMonitorDirectories": false,
|
||||
"enabled": true,
|
||||
"favorites": [
|
||||
],
|
||||
"fillColor": "#5e81ac",
|
||||
"fillMode": "crop",
|
||||
"hideWallpaperFilenames": false,
|
||||
"monitorDirectories": [
|
||||
],
|
||||
"overviewBlur": 0.4,
|
||||
"overviewEnabled": false,
|
||||
"overviewTint": 0.6,
|
||||
"panelPosition": "follow_bar",
|
||||
"randomIntervalSec": 21600,
|
||||
"setWallpaperOnAllMonitors": true,
|
||||
"showHiddenFiles": false,
|
||||
"skipStartupTransition": false,
|
||||
"solidColor": "#1a1a2e",
|
||||
"sortOrder": "name",
|
||||
"transitionDuration": 1500,
|
||||
"transitionEdgeSmoothness": 0.05,
|
||||
"transitionType": "fade",
|
||||
"useSolidColor": false,
|
||||
"useWallhaven": false,
|
||||
"viewMode": "browse",
|
||||
"wallhavenApiKey": "",
|
||||
"wallhavenCategories": "111",
|
||||
"wallhavenOrder": "desc",
|
||||
"wallhavenPurity": "100",
|
||||
"wallhavenQuery": "",
|
||||
"wallhavenRatios": "",
|
||||
"wallhavenResolutionHeight": "",
|
||||
"wallhavenResolutionMode": "atleast",
|
||||
"wallhavenResolutionWidth": "",
|
||||
"wallhavenSorting": "relevance",
|
||||
"wallpaperChangeMode": "random"
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
{ inputs, pkgs, ... }:
|
||||
{
|
||||
home.packages = [
|
||||
inputs.quickshell.packages.${pkgs.stdenv.hostPlatform.system}.default
|
||||
];
|
||||
|
||||
xdg.configFile."quickshell" = {
|
||||
source = ./quickshell;
|
||||
recursive = true;
|
||||
};
|
||||
}
|
||||
@@ -1,94 +0,0 @@
|
||||
import Quickshell
|
||||
import Quickshell.Hyprland
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
|
||||
Scope {
|
||||
id: root
|
||||
property bool barVisible: false
|
||||
|
||||
Variants {
|
||||
model: Quickshell.screens
|
||||
|
||||
Scope {
|
||||
id: perScreen
|
||||
required property var modelData
|
||||
|
||||
// invisible trigger zone at the top edge
|
||||
PanelWindow {
|
||||
id: trigger
|
||||
screen: perScreen.modelData
|
||||
visible: !root.barVisible
|
||||
|
||||
anchors {
|
||||
top: true
|
||||
left: true
|
||||
right: true
|
||||
}
|
||||
|
||||
exclusionMode: ExclusionMode.Ignore
|
||||
implicitHeight: 4
|
||||
color: "transparent"
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
hoverEnabled: true
|
||||
onEntered: root.barVisible = true
|
||||
}
|
||||
}
|
||||
|
||||
// the actual bar
|
||||
PanelWindow {
|
||||
id: bar
|
||||
screen: perScreen.modelData
|
||||
visible: root.barVisible
|
||||
|
||||
anchors {
|
||||
top: true
|
||||
left: true
|
||||
right: true
|
||||
}
|
||||
|
||||
exclusionMode: ExclusionMode.Ignore
|
||||
implicitHeight: 32
|
||||
color: "#e611111b"
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
hoverEnabled: true
|
||||
propagateComposedEvents: true
|
||||
// keep bar visible while mouse is on it
|
||||
onExited: hideTimer.restart()
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
anchors.fill: parent
|
||||
anchors.leftMargin: 12
|
||||
anchors.rightMargin: 12
|
||||
spacing: 0
|
||||
|
||||
Workspaces {
|
||||
Layout.alignment: Qt.AlignLeft
|
||||
}
|
||||
|
||||
Item { Layout.fillWidth: true }
|
||||
|
||||
SysTray {
|
||||
Layout.alignment: Qt.AlignRight
|
||||
Layout.rightMargin: 16
|
||||
}
|
||||
|
||||
ClockWidget {
|
||||
Layout.alignment: Qt.AlignRight
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Timer {
|
||||
id: hideTimer
|
||||
interval: 500
|
||||
onTriggered: root.barVisible = false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
|
||||
RowLayout {
|
||||
spacing: 12
|
||||
|
||||
Text {
|
||||
text: Time.date
|
||||
font.family: "FiraCode Nerd Font"
|
||||
font.pixelSize: 13
|
||||
color: "#6c7086"
|
||||
}
|
||||
|
||||
Text {
|
||||
text: Time.clock
|
||||
font.family: "FiraCode Nerd Font"
|
||||
font.pixelSize: 14
|
||||
color: "#bac2de"
|
||||
}
|
||||
}
|
||||
@@ -1,47 +0,0 @@
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import QtQuick.Controls
|
||||
import Quickshell
|
||||
import Quickshell.Services.SystemTray
|
||||
|
||||
RowLayout {
|
||||
spacing: 6
|
||||
|
||||
Repeater {
|
||||
model: SystemTray.items
|
||||
|
||||
Image {
|
||||
required property SystemTrayItem modelData
|
||||
|
||||
Layout.preferredWidth: 18
|
||||
Layout.preferredHeight: 18
|
||||
source: modelData.icon
|
||||
fillMode: Image.PreserveAspectFit
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
acceptedButtons: Qt.LeftButton | Qt.RightButton
|
||||
onClicked: (mouse) => {
|
||||
if (mouse.button === Qt.RightButton || modelData.onlyMenu) {
|
||||
modelData.display(bar, parent.x, bar.height)
|
||||
} else {
|
||||
modelData.activate()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ToolTip {
|
||||
id: tooltip
|
||||
visible: hoverArea.containsMouse
|
||||
text: modelData.tooltipTitle || modelData.title || ""
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
id: hoverArea
|
||||
anchors.fill: parent
|
||||
hoverEnabled: true
|
||||
acceptedButtons: Qt.NoButton
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
pragma Singleton
|
||||
|
||||
import Quickshell
|
||||
import QtQuick
|
||||
|
||||
Singleton {
|
||||
id: root
|
||||
readonly property string clock: Qt.formatDateTime(sysClock.date, "hh:mm")
|
||||
readonly property string date: Qt.formatDateTime(sysClock.date, "ddd MMM d")
|
||||
|
||||
SystemClock {
|
||||
id: sysClock
|
||||
precision: SystemClock.Minutes
|
||||
}
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import Quickshell.Hyprland
|
||||
|
||||
RowLayout {
|
||||
spacing: 4
|
||||
|
||||
Repeater {
|
||||
model: [1, 2, 3, 4, 5, 6]
|
||||
|
||||
Rectangle {
|
||||
required property int modelData
|
||||
property bool active: Hyprland.focusedMonitor?.activeWorkspace?.id === modelData
|
||||
property bool occupied: {
|
||||
for (let i = 0; i < Hyprland.workspaces.values.length; i++) {
|
||||
let ws = Hyprland.workspaces.values[i];
|
||||
if (ws.id === modelData && ws.windows > 0) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
Layout.preferredWidth: 24
|
||||
Layout.preferredHeight: 24
|
||||
radius: 4
|
||||
color: active ? "#b4befe" : "transparent"
|
||||
|
||||
Text {
|
||||
anchors.centerIn: parent
|
||||
text: modelData
|
||||
font.family: "FiraCode Nerd Font"
|
||||
font.pixelSize: 13
|
||||
color: active ? "#11111b" : occupied ? "#bac2de" : "#6c7086"
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
onClicked: Hyprland.dispatch("workspace " + modelData)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
import Quickshell
|
||||
|
||||
Scope {
|
||||
Bar {}
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
{ inputs, pkgs, ... }:
|
||||
{
|
||||
imports = [ inputs.walker.homeManagerModules.default ];
|
||||
|
||||
programs.walker = {
|
||||
enable = true;
|
||||
runAsService = true;
|
||||
|
||||
# Using default theme - clean dark theme with good defaults
|
||||
# You can customize later by copying from:
|
||||
# https://github.com/abenz1267/walker/tree/master/resources/themes/default
|
||||
};
|
||||
}
|
||||
@@ -64,29 +64,22 @@ let
|
||||
"https://images.hdqwalls.com/download/starfield-i-mac-ie-2160x3840.jpg"
|
||||
];
|
||||
|
||||
# Create wallpaper rotation script
|
||||
rotateScript = pkgs.writeShellScript "hyprpaper-rotate" ''
|
||||
# Wallpaper fetch script - downloads wallpapers to cache
|
||||
fetchScript = pkgs.writeShellScript "wallpaper-fetch" ''
|
||||
set -euo pipefail
|
||||
|
||||
# Check if hyprpaper is running
|
||||
if ! pgrep -x hyprpaper > /dev/null; then
|
||||
echo "Error: hyprpaper is not running"
|
||||
echo "Start it with: hyprpaper &"
|
||||
exit 1
|
||||
fi
|
||||
HORIZONTAL_DIR="$HOME/.cache/wallpapers/3840x2160"
|
||||
VERTICAL_DIR="$HOME/.cache/wallpapers/2160x3840"
|
||||
mkdir -p "$HORIZONTAL_DIR" "$VERTICAL_DIR"
|
||||
|
||||
CACHE_DIR="$HOME/.cache/wallpapers"
|
||||
mkdir -p "$CACHE_DIR"
|
||||
|
||||
# Arrays of wallpaper URLs
|
||||
HORIZONTAL=(${builtins.concatStringsSep " " (map (url: ''"${url}"'') horizontal)})
|
||||
VERTICAL=(${builtins.concatStringsSep " " (map (url: ''"${url}"'') vertical)})
|
||||
|
||||
# Function to download wallpaper if not cached
|
||||
get_wallpaper() {
|
||||
download() {
|
||||
local url="$1"
|
||||
local dir="$2"
|
||||
local filename=$(basename "$url")
|
||||
local filepath="$CACHE_DIR/$filename"
|
||||
local filepath="$dir/$filename"
|
||||
|
||||
if [ ! -f "$filepath" ]; then
|
||||
echo "Downloading $filename..." >&2
|
||||
@@ -95,81 +88,23 @@ let
|
||||
return 1
|
||||
}
|
||||
fi
|
||||
|
||||
echo "$filepath"
|
||||
}
|
||||
|
||||
# Function to get random element from array
|
||||
random_choice() {
|
||||
local arr=("$@")
|
||||
local size=''${#arr[@]}
|
||||
local idx=$((RANDOM % size))
|
||||
echo "''${arr[$idx]}"
|
||||
}
|
||||
|
||||
# Get list of connected monitors and their orientations
|
||||
readarray -t MONITORS < <(${pkgs.hyprland}/bin/hyprctl monitors -j | \
|
||||
${pkgs.jq}/bin/jq -r '.[] | "\(.name)|\(.width)|\(.height)|\(.transform)"')
|
||||
|
||||
# Apply wallpapers to each monitor
|
||||
for monitor_info in "''${MONITORS[@]}"; do
|
||||
IFS='|' read -r name width height transform <<< "$monitor_info"
|
||||
|
||||
# Determine if monitor is vertical (considering transform)
|
||||
# transform 1 or 3 means 90/270 degree rotation
|
||||
if [[ "$transform" == "1" || "$transform" == "3" ]]; then
|
||||
# Transform swaps width/height, so check original dimensions
|
||||
if [ "$width" -lt "$height" ]; then
|
||||
# After transform, it's horizontal
|
||||
wallpaper_url=$(random_choice "''${HORIZONTAL[@]}")
|
||||
else
|
||||
# After transform, it's vertical
|
||||
wallpaper_url=$(random_choice "''${VERTICAL[@]}")
|
||||
fi
|
||||
else
|
||||
# No rotation or 180 degree rotation
|
||||
if [ "$width" -lt "$height" ]; then
|
||||
wallpaper_url=$(random_choice "''${VERTICAL[@]}")
|
||||
else
|
||||
wallpaper_url=$(random_choice "''${HORIZONTAL[@]}")
|
||||
fi
|
||||
fi
|
||||
|
||||
# Download and apply wallpaper
|
||||
wallpaper_path=$(get_wallpaper "$wallpaper_url")
|
||||
if [ -n "$wallpaper_path" ]; then
|
||||
echo "Setting $name to $wallpaper_path" >&2
|
||||
${pkgs.hyprland}/bin/hyprctl hyprpaper wallpaper "$name,$wallpaper_path,cover"
|
||||
fi
|
||||
echo "Fetching horizontal wallpapers..."
|
||||
for url in "''${HORIZONTAL[@]}"; do
|
||||
download "$url" "$HORIZONTAL_DIR"
|
||||
done
|
||||
|
||||
echo "Fetching vertical wallpapers..."
|
||||
for url in "''${VERTICAL[@]}"; do
|
||||
download "$url" "$VERTICAL_DIR"
|
||||
done
|
||||
|
||||
echo "Done. Wallpapers cached in:"
|
||||
echo " Horizontal: $HORIZONTAL_DIR"
|
||||
echo " Vertical: $VERTICAL_DIR"
|
||||
'';
|
||||
in
|
||||
{
|
||||
# Export for use in monitors.nix
|
||||
home.file.".local/bin/hyprpaper-rotate".source = rotateScript;
|
||||
|
||||
# Systemd service and timer for rotation
|
||||
systemd.user.services.hyprpaper-rotate = {
|
||||
Unit = {
|
||||
Description = "Rotate Hyprland wallpapers";
|
||||
After = [ "graphical-session.target" ];
|
||||
};
|
||||
Service = {
|
||||
Type = "oneshot";
|
||||
ExecStart = "${rotateScript}";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.user.timers.hyprpaper-rotate = {
|
||||
Unit = {
|
||||
Description = "Rotate Hyprland wallpapers every 12 hours";
|
||||
};
|
||||
Timer = {
|
||||
OnUnitActiveSec = "12h";
|
||||
Persistent = true;
|
||||
};
|
||||
Install = {
|
||||
WantedBy = [ "timers.target" ];
|
||||
};
|
||||
};
|
||||
home.file.".local/bin/wallpaper-fetch".source = fetchScript;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user