- 640x490 window, larger cards (132x106), 4 columns
- Full-width search bar in header with active-state indicator
- Category filters as pill chips with gaps
- Cards show surface bg + accent top bar on hover
- Footer bar with app count and keyboard hints
- Fix menu: pavucontrol -> alsamixer in xterm
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Menu and launcher fallback pointed to alacritty/firefox/rigel/quill
which are not in the live ISO. Switch to xterm (already installed),
pcmanfm and mousepad (now added to packages). Also add arandr for
display settings.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Fix#7: Add "Other" catch-all category to the launcher. map_category() now
returns "Other" instead of "" for unrecognized .desktop Categories, and an
"Other" tab is added to the CATS list so those apps are discoverable instead
of silently hidden.
Fix#8: Respect ICCCM WM_NORMAL_HINTS. client_add() reads PMinSize,
PResizeInc, and PBaseSize from the window's size hints. The resize drag
handler in events.c clamps to min_w/min_h and snaps to the
width_inc/height_inc grid, fixing jank in character-cell terminal emulators
(xterm, Alacritty).
Fix#10: Optional freedesktop icon loading via imlib2. The launcher now
parses the Icon= field from .desktop files and attempts to render a PNG icon
from Papirus-Dark (or hicolor fallback). When imlib2 is not present the
existing letter-square is shown unchanged. launcher/Makefile auto-detects
imlib2 via pkg-config and sets -DHAVE_IMLIB2.
Fix#11: True 4-desktop support in the WM. Each Client carries a desktop
field (assigned at map time from wm->cur_desktop). Clicking a workspace
button in the deskbar sends _NET_CURRENT_DESKTOP; the WM now handles it via
wm_switch_desktop() which unmaps frames on the leaving desktop, maps frames
on the arriving desktop, and re-focuses. _NET_WM_DESKTOP is set per window
so the deskbar can filter db_update_apps() to show only current-desktop
windows (sticky windows with desktop 0xFFFFFFFF are always shown).
Fix#1: Replace hardcoded 185px deskbar-offset in client.c and events.c with
DESKBAR_W constant (200) to eliminate the 15px gap between the WM frame and
deskbar edge.
Fix#2: Add Shift+Alt+Tab reverse-direction support — grab Mod1+Shift+XK_Tab
in wm.c, detect ShiftMask in events.c, and implement switcher_prev() in
switcher.c.
Fix#3: Include minimized windows in the Alt+Tab switcher. swl_populate() no
longer skips minimized clients; swl_mini[] tracks state so switcher_draw()
can dim them with bracketed titles and darker card backgrounds.
Fix#4: Rewrite themes/picom.conf with macOS-inspired settings — 10px corner
radius on normal windows, 8px on menus, soft downward shadow (radius 18,
offset-y 8, opacity 0.35), smooth fading (step 0.08), no dock/tray rounding.
Fix#5: Add per-app right-click context menu to the deskbar. Right-clicking
an app row opens a popup with Raise / Minimize / Close actions (Close shown
in red). Actions are sent as EWMH client messages (_NET_ACTIVE_WINDOW,
WM_CHANGE_STATE+IconicState, _NET_CLOSE_WINDOW) with matching handlers added
to the WM's on_client_message. Pointer grab closes the menu on any outside
click.
- Move traffic-light buttons to the LEFT side of titlebars (close/minimize/maximize)
in macOS order, using fixed left-pad positions instead of right-edge offsets
- Adopt macOS dark-mode color palette: #3C3C3C active titlebar, #2C2C2C inactive,
traffic-light colors #FF5F57/#FEBC2E/#28C840, near-black #1C1C1C desktop
- Center window title text in the titlebar (macOS style), clamped to avoid
overlapping the left button cluster
- Thin 1px window borders replacing the original 3px beveled border
- macOS blue (#4A90D9) selection highlight in the context menu
- Neutral dark context menu (#2C2C2C) with subtle separators and text indent
- Update README to document the ElemetryOS macOS fork identity and design changes
Phase 4 — native apps:
- quill/: text editor (monospace, double-buffered, find bar, undo, open/save)
- lens/: image viewer using imlib2 (zoom, pan, rotate, directory nav)
- wm/src/menu.c: launch quill instead of mousepad
- iso/docker/entrypoint.sh: add imlib2 package; install quill + lens binaries
- skykit/template/: developer app template demonstrating the SkyKit API
Phase 5 — file system and search:
- rigel/rigel.c: right-click context menu (open, open in quill, copy path,
rename, trash, properties); Ctrl+F search/filter bar with name highlighting;
F2 rename-in-place overlay; Delete key moves to trash
Phase 6 — distribution:
- .github/workflows/build-iso.yml: GitHub Actions CI that compiles all
components and builds a bootable ISO on every tag push; creates a GitHub
release with sha256 checksums
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Installer copy (installer/orioninstall):
- Root cause: rsync -ax / /mnt/ copies the overlayfs live root, which
is slow, unpredictable, and hangs in VMs with overlapping filesystems
- Fix: copy from /run/archiso/airootfs instead (the squashfs is already
mounted there on every archiso live boot). This is the clean base system,
avoids the cow layer entirely, and is significantly faster.
- Added -H -A -X -S flags for proper hard-link, ACL, xattr, sparse-file handling
- Fallback to live-root rsync if the squashfs mount isn't present
- Also renamed EFI partition label SKYEFI → ORIONEFI
Discoverability (deskbar + wm):
- deskbar "Install OrionOS" was calling 'sudo skyinstall' (old name) — fixed
to 'sudo orioninstall-gui || sudo orioninstall' with GUI-first fallback
- Right-click desktop menu now also has "Install OrionOS" entry
(was only in the deskbar hamburger menu before)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
SkyKit (skykit/):
- Shared palette constants, font setup, and Xlib/Xft drawing utilities
- sk_fill, sk_rect, sk_line, sk_text, sk_text_clip, sk_textw, sk_baseline
- Builds as libskykit.a, consumed by Rigel and future shell components
Rigel (rigel/):
- Native C/Xlib file manager with SkyKit
- Sidebar with 8 bookmarks (Home, Desktop, Documents, Downloads, etc.)
- Editable path bar (Ctrl+L or '/' to activate, Enter to navigate)
- Sortable columns: Name / Size / Modified (click header to sort/reverse)
- Colored type badges: DIR, IMG, SND, VID, ZIP, SRC, PDF, TXT, EXE
- Double-click to open dirs or files (xdg-open)
- Keyboard: ↑↓ select, Enter open, Backspace back, Ctrl+H toggle hidden
- Right-click menu updated: "File Manager" now launches rigel
Text centering fix (deskbar + wm):
- Root cause: draw_str added glyph-specific ext.height/ext.y offset, and
all callers used hardcoded (H-10)/2 magic numbers instead of font metrics
- Fix: draw_str now takes y as a direct baseline; str_baseline() computes
(strip_y + strip_h + ascent - descent) / 2 for consistent centering
- WM titlebar: same fix using font_title->ascent/descent
- Affects: "Orion ▾" button, clock, date, app list, flyout menu items,
letter icons, and all window titlebars
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Screenshots (PrintScreen / Shift+PrintScreen):
- PrintScreen → full screenshot saved to ~/Pictures via scrot
- Shift+PrintScreen → interactive region select via scrot -s
- Both send a dunst notification on save
- scrot added to packages
Clipboard manager:
- Replace janky PRIMARY/CLIPBOARD sync loop with parcellite
- parcellite provides clipboard history, survives app close,
shows a tray icon for browsing past entries
- parcellite added to packages
Icon theme:
- Switch from Adwaita to Papirus-Dark across GTK2, GTK3 settings,
and theme index.theme
- papirus-icon-theme added to packages
Also fix remaining stale sky* references in menu.c (skywallpaper,
pkill skywm) and events.c (skylauncher).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Alt+Tab now shows a centered visual switcher overlay with window cards;
cycling with Tab, committing on Alt release, cancelling with Escape
- GTK3 and GTK2 themes rewritten in dark navy palette matching skywm/
skydeskbar color constants (was an off-brand tan/BeOS palette)
- Add alacritty to ISO packages with pre-configured dark color scheme;
update all menu Terminal entries to launch alacritty instead of xterm
- Add KeyReleaseMask to WM root event selection to detect Alt release
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>