~nektro/magnolia-desktop

A new desktop environment / UI toolkit for desktop Linux
deps: add .zig-cache to .gitignore
upgrade to Zig 0.13
upgrade to Zig 0.12.0

clone

read-only
https://git.sr.ht/~nektro/magnolia-desktop
read/write
git@git.sr.ht:~nektro/magnolia-desktop

You can also use your local clone with git send-email.

#Magnolia

loc justforfunnoreally.dev badge nektro @ github sponsors

Magnolia is a new UI toolkit written entirely from scratch in Zig for Linux desktops. It has a focus on ease-of-use, performance, and supporting older devices.

The only runtime system dependencies are X11 and OpenGL 3.0 ES.

The only additional build dependencies are Git, Zig, Zigmod.

Note: this project is a WIP and still in a very experimental state. Stay tuned for more updates.

As far as problem space you can consider this project as an alternative to a mix of GTK/KDE/QT and GNOME/Plasma depending on which part of the code you're using.

#License

Source-Available, All rights reserved. (c) 2023 Meghan Denny

Will likely be MPL-2.0 in the future.

#Credits

#Building

Magnolia is built using the Zig build system. To see all available build options run zig build --help.

If building on NixOS, there is a shell.nix which will enable all the system dependencies needed.

Pull in the Zig dependencies by running zigmod ci.

#Options

  • -Dtarget=[string] The CPU architecture, OS, and ABI to build for
  • -Dcpu=[string] Target CPU features to add or subtract
  • -Drelease-safe=[bool] Optimizations on and safety on
  • -Drelease-fast=[bool] Optimizations on and safety off
  • -Drelease-small=[bool] Size optimizations on and safety off
  • -Dall=[bool] Build all apps, default only selected steps
  • -Drun=[bool] Run the app too
  • -Dstrip=[bool] Strip debug symbols
  • -Dtest=[bool] Run for a single frame and compare output against known good result
  • -Dno_demos=[bool] Do not build the demo programs.

#Available Steps

  • demo-empty
  • demo-part6
  • demo-panelhoriz
  • demo-panelvert
  • demo-panelhoriz-gap
  • demo-panelvert-gap
  • demo-panelhoriz-fillh
  • demo-panelvert-fillw
  • demo-panelhoriz-fillw
  • demo-panelvert-fillh
  • demo-ttf-proggy
  • demo-bdf-cozette
  • demo-focusblur
  • demo-mouse
  • demo-7guis-counter
  • demo-border
  • demo-menubar

Terminal Applications

  • fc-conflist
  • fc-list

Full Applications

  • Calculator
  • ImageViewer

Full Application Roadmap

(in a rough order of importance) (non-exhaustive)

  • TextViewer
  • ManPages
  • AudioViewer
  • Files
  • Music
  • KernelLogs
  • "system utilities" (see category in notes/potential apps.txt)
  • UnicodeExplorer
  • UnicodeInspector
  • FontExplorer
  • VideoViewer
  • Calendar
  • Dconf
  • Weather
  • Stocks
  • Wiki
  • RSS
  • Email

#Inspiration / Resources

#Monorepo

If your Git client is v2.26 or greater and you'd only like to build a selection of apps, you can take advantage of a sparse checkout to save on network and disk usage. For example:

git clone --no-checkout https://git.sr.ht/~nektro/magnolia-desktop
cd magnolia-desktop
git sparse-checkout init --cone
git checkout master
git sparse-checkout add src/
git sparse-checkout add apps/Calculator/
zig build Calculator