Skip to content
Open
Show file tree
Hide file tree
Changes from 7 commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
adc1630
feat: migrate desktop shell to noctalia
RAPSNX Aug 21, 2026
462d63c
feat(noctalia): update config, PAM service, and documentation
RAPSNX Aug 28, 2026
9834874
fix steam / gaming
RAPSNX Aug 29, 2026
cdaa784
docs: add plan for noctalia mode, satty screenshot tool, and keybinds
RAPSNX Aug 29, 2026
5e2054b
feat(hyprland): migrate configuration to lua
RAPSNX Aug 28, 2026
d7b82a9
feat(hyprland): add noctalia mode submap, satty screenshot tool, and …
RAPSNX Aug 31, 2026
29e02ed
Remove PAM shit
RAPSNX Aug 31, 2026
b727ead
Font and minors
RAPSNX Sep 1, 2026
e84ad2f
Add ginkgo
RAPSNX Sep 1, 2026
f1a1ac6
Noctalia submap plugin
RAPSNX Sep 1, 2026
9b5045e
use difftastic
RAPSNX Sep 1, 2026
90bfc2b
Update LazyGit difftastic renderer
RAPSNX Sep 1, 2026
7c119cd
Make Noctalia external locker configurable
RAPSNX Sep 1, 2026
59721b6
shutdown
RAPSNX Sep 1, 2026
423a01a
Fix logout / login zion and reduce changes
RAPSNX Sep 2, 2026
3b6ef78
Cleanup and module extraction
RAPSNX Sep 2, 2026
68c5af6
Split noctalia setup, reduce and simplyfi
RAPSNX Sep 2, 2026
bcf8332
neonix update
RAPSNX Sep 2, 2026
206791e
Add meet room
RAPSNX Sep 3, 2026
39cb19d
llel
RAPSNX Sep 3, 2026
c032e90
Update mapping
RAPSNX Sep 3, 2026
a65a5ad
Update
RAPSNX Sep 3, 2026
f519529
remvoe
RAPSNX Sep 3, 2026
1d2fb53
address review feedback
RAPSNX Sep 3, 2026
964f0a9
Add keyboard layout
RAPSNX Sep 4, 2026
9932a44
Noctalia updates
RAPSNX Sep 7, 2026
5889400
Move to all hyprland
RAPSNX Sep 7, 2026
ef2b0eb
task start
RAPSNX Sep 7, 2026
d33f362
Add snippi and additional
RAPSNX Sep 10, 2026
5fb01c0
Fix Hyprland login PATH ordering
RAPSNX Sep 10, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 75 additions & 0 deletions NOCTALIA_MODE_PLAN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
# Implementation Plan: Noctalia Mode (Submap), Screenshot Annotations & German Layout Fix

## Background & Objective
Using `MOD5` (`AltGr`) and `Alt` bindings for Noctalia shortcuts directly conflicted with the German keyboard layout (e.g. `EurKEY` / `de`), blocking characters like **`ß`** (`AltGr + S`), **`ä`**, **`ö`**, and **`ü`**.

This plan outlines:
1. Creating a dedicated **Noctalia Mode (submap)** in Hyprland triggered by `Super + N`.
2. Freeing `AltGr` / `MOD5` completely for keyboard typing.
3. Adding screenshot annotation capabilities using `satty`, `grim`, and `slurp`.
4. Providing on-screen mode feedback when entering submaps.

---

## Key Files & Scope
- **`modules/home/desktops/hyprland/keybinds.nix`**: Define the `noctalia` submap and mode notifications in Hyprland.
- **`modules/home/programs/default.nix`**: Add `satty`, `grim`, and `slurp` packages.
- **`docs/reference/hyprland.md`**: Update Hyprland reference documentation with the new submap and keybinds.
- **`docs/reference/noctalia.md`**: Update Noctalia reference documentation.

---

## Detailed Implementation

### 1. Dedicated Noctalia Mode Submap (`Super + N`)
Pressing **`Super + N`** enters the `noctalia` submap with the following single-key actions (each executing its action and resetting the submap):

| Key | Action | Command |
| :--- | :--- | :--- |
| **`n`** | Notifications / Control Center | `noctalia msg panel-toggle control-center notifications` |
| **`m`** | System Monitor | `noctalia msg panel-toggle control-center monitor` |
| **`c`** | Calendar | `noctalia msg panel-toggle control-center calendar` |
| **`s`** | Region Screenshot | `noctalia msg screenshot-region` |
| **`S`** (*Shift+S*) | Fullscreen Screenshot | `noctalia msg screenshot-fullscreen` |
| **`a`** | Annotated Screenshot | `grim -g "$(slurp)" - \| satty --filename -` |
| **`Esc`** / **`Enter`** | Exit Mode | `submap, reset` |

### 2. Retained Global Shortcuts (Direct Access)
- **`Super + E`**: Application launcher (`noctalia msg panel-toggle launcher`)
- **`Super + P`**: Session / Power menu (`noctalia msg panel-toggle session`)
- **`Super + .`**: Emoji picker (`noctalia msg panel-toggle launcher "/emo "`)

### 3. Cleanup & Fix German Layout (`AltGr` / `MOD5`)
- Remove conflicting shortcuts:
- `MOD5 + C` (was calendar)
- `MOD5 + S` (was system monitor)
- `MOD5 + V` and `Alt + V` (was clipboard)
- Restores full native support for German characters (`ä`, `ö`, `ü`, `ß`).

### 4. Mode Feedback & Which-Key Indications
Display transient on-screen banners when entering submaps:
- **`Super + R` (Resize Mode)**:
- Banner: `MODE: RESIZE — [H/J/K/L] Resize [Shift+H/J/K/L] Fine [Esc/Enter] Exit`
- **`Super + G` (Window Mode)**:
- Banner: `MODE: WINDOWS — [Q/W/E/R] Move to WS [B] Toggle Firefox [Esc/Enter] Exit`
- **`Super + N` (Noctalia Mode)**:
- Banner: `MODE: NOCTALIA — [n] Notifications [m] Monitor [c] Calendar [s] Region [S] Full [a] Annotate`

### 5. Packages to Add
Add the following utilities to `modules/home/programs/default.nix`:
- `satty` (interactive screenshot annotation with arrows, text, boxes, blur, crop)
- `grim` (Wayland screen grabber)
- `slurp` (Wayland region selector)

---

## Verification & Testing
1. **Flake Evaluation**:
- `nix eval .#homeConfigurations."rap@zion".activationPackage.drvPath`
- `nix eval .#homeConfigurations."nix@firefly".activationPackage.drvPath`
2. **Lint & Quality**:
- `statix check . && deadnix . && nix fmt`
3. **Behavioral Test**:
- Press `Super + N` → verify mode banner displays.
- Press `n`, `m`, `c`, `s`, `S`, or `a` → verify corresponding action triggers and submap resets.
- Type `AltGr + S` → verify `ß` is typed without triggering any Hyprland shortcuts.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ sudo nixos-install --flake .#zion

- [Gaming and Battle.net](./docs/guides/gaming.md)
- [Hyprland - Keymap](./docs/reference/hyprland.md#keymap)
- [Noctalia shell](./docs/reference/noctalia.md)
- [NVIM - Keymap](https://github.com/RAPSNX/neonix/tree/main/docs/keymap.md)

## Licenses
Expand Down
1 change: 0 additions & 1 deletion docs/hosts/firefly.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,6 @@ Comma-separated list of URLs:
*://*.google.com/*, *://chat.ske.eu01.stackit.cloud/*
```


### GTK Theme

`nwg-look` is used to configure theme in multiple locations.
Expand Down
26 changes: 21 additions & 5 deletions docs/reference/hyprland.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,12 @@ General docs for hyprland.
|---|---|
| `Super+Enter` | Terminal |
| `Super+E` | Launcher |
| `Super+P` | Wlogout |
| `Super+P` | Noctalia session panel |
| `Super+Q` | Kill active |
| `Super+N` | Notification Center |
| `Super+.` | Emoji picker |
| `Alt+Shift` | Switch keyboard layout |
| `Alt+Tab` | Window switcher |
| `Super+N` | Enter Noctalia mode |
| `Super+.` | Noctalia emoji search |

## Window

Expand Down Expand Up @@ -61,7 +63,21 @@ General docs for hyprland.
|---|---|
| `Super+Z` | Mumble mute |
| `Super+Shift+Z` | Mumble deaf |
| `Super+.` | Emoji picker |
| `Super+.` | Noctalia emoji search |

## Noctalia Mode

Enter: `Super+N`

| Key | Action |
|---|---|
| `N` | Notifications / Control Center |
| `M` | System monitor |
| `C` | Calendar |
| `S` | Screenshot region (Noctalia) |
| `Shift+S` | Screenshot fullscreen (Noctalia) |
| `A` | Annotated screenshot (Satty) |
| `Enter` / `Esc` | Exit |

## Resize Mode

Expand All @@ -75,7 +91,7 @@ Enter: `Super+R`

## Window Mode

Enter: `Super+W`
Enter: `Super+G`

| Key | Action |
|---|---|
Expand Down
51 changes: 51 additions & 0 deletions docs/reference/noctalia.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Noctalia
Comment thread
RAPSNX marked this conversation as resolved.

Noctalia is the desktop shell for the Hyprland profiles. Hyprland remains the compositor and window-management layer; Noctalia provides the panel, application and emoji launcher, notifications, session actions, wallpapers, clipboard history, tray, OSD, and control centre. Screen locking is handled externally via `swaylock`.

The dock is deliberately disabled.

## Configuration model

`modules/home/desktops/noctalia/default.nix` is the declarative baseline. Noctalia's Settings UI may store user-level overrides in its state directory; these survive rebuilds. The shipped baseline is reapplied only when the Home Manager configuration changes.

Zion also enables Noctalia Greeter through Greetd. Firefly uses the shell role only because it is configured as a Home Manager-only profile.

## Migrated components

| Previous component | Noctalia replacement |
|---|---|
| Waybar | Top bar: launcher, workspaces, clock, tray, system monitors and quick controls |
| Fuzzel and Rofi Emoji | Launcher with application, calculator, emoji, wallpaper and window providers |
| SwayNC | Notification daemon and notification history |
| Wlogout | Session panel with lock (delegated to `swaylock`), hibernate, logout, suspend, shutdown and reboot actions |
| Hyprpaper | Native wallpaper service |
| Hyprlock | Screen locking via out-of-nix `swaylock` |
| NetworkManager and Blueman tray applets | Noctalia control-centre widgets and tray |
| Pavucontrol | Noctalia audio controls |
| Grimblast package | Noctalia screenshot service |

Noctalia additionally enables clipboard history, screen time, per-output wallpapers, a system monitor, calendar, scheduled night light, brightness OSD, and a Windows-reboot session action on Zion.

## Wallpaper migration

A one-time user service transfers the legacy Hyprpaper assignments after Noctalia starts. It records completion in `$XDG_STATE_HOME/noctalia/.wallpapers-migrated-v1`, so subsequent rebuilds preserve changes made through Noctalia.

| Previous output selector | Wallpaper |
|---|---|
| `eDP-1` | `anime-city.jpg` |
| `DP-1` | `gohan-supersaiyan.png` |
| Dell `AW2725Q G2QC174` | `luffy-gear-5.jpg` |
| Samsung `LC27G7xT H4ZNC00167` | `one-piece-logo.jpg` |
| fallback | `minimal-space.jpg` |

Remove that marker only when the declarative migration should be run again.

## Shell shortcuts

| Key | Action |
|---|---|
| `Super+E` | Toggle launcher |
| `Super+P` | Toggle session panel |
| `Super+N` | Enter Noctalia mode (`n` notifications, `m` monitor, `c` calendar, `s` region capture, `S` full capture, `a` annotate with satty) |
| `Super+.` | Open emoji search |
| `Alt+Tab` | Open window switcher |
102 changes: 78 additions & 24 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading