Skip to content

Project "XDG ng"

probonopd edited this page Nov 3, 2022 · 25 revisions

Purpose of project "XDG-ng"

  • Improve the usability of desktop environments for end users
  • Allow for features previously lacking in desktop environments
  • Remove layers of legacy crust
  • Remove reliance on GLib
  • Make debugging and development faster, simpler, and more fun

Potentially of interest to

  • Haiku
  • SerenityOS
  • Fyne
  • Draco Desktop Environment (@rodlie)
  • GNUstep
  • ravynOS

Basically all desktop environments that are not firmly rooted in XDG land.

  • Likely not interested: Red Hat, Fedora, GNOME, Gtk, Flatpak, Wayland (firmly in XDG land)
  • Possibly not interested: KDE? (currently in XDG land)

Prior Art

XDG

freedesktop.org (formerly known as X Desktop Group, hence XDG) specifications

  • Define how most desktop environments currently work under the hood
  • Address most areas needed to put together desktop environments
  • Are decades old and do not make best use of contemporary technology, e.g., extended attributes
  • Lack concepts integral to the desktop user experience, e.g., application bundles and global menus
  • Make things that should be simple complicated or impossible
  • Seem to be retrofitted to explain how Glib works, are not designed in the Unix philosophy

Haiku (inspired by BeOS)

To be written; see https://medium.com/@probonopd/my-sixth-day-with-haiku-under-the-hood-of-resources-icons-and-packages-abec8d0e4ec6

GNUstep (inspired by NeXTSTEP, OPENSETP, and Mac OS X)

To be written; see https://medium.com/@probonopd/my-sixth-day-with-haiku-under-the-hood-of-resources-icons-and-packages-abec8d0e4ec6

Approach

  • Start from first principles - the objects that the desktop user experience consists of
  • Think entirely independently of any particular existing desktop environment
  • Propose simpler, more robust, more contemporary solutions for each of the XDG specifications, ideally in less than 10% of the length and complexity of the corresponding XDG specification
  • Propose solutions for areas the XDG specifications fail to address

First Principles

Objects

User sees

  • Applications
  • Documents
  • Folders
  • Windows
  • Icons

The system (also) sees

  • Processes
  • Files
  • Directories

Verbs

  • Launch an application
  • Open a document (with an application)

Properties

  • Each application has a version
  • Different versions of the same application can coexist on the system
  • Each document has a certain format (the MIME Type which describes the format of the content)
  • Each document has been created by a particular application (the Creator)
  • Applications have icons; different versions of the same application can have different icons
  • Documents have icons; these describe the Creator and/or the format (a "GIMP PNG" may have a different icon than a "Krita PNG"
  • Applications and Documents can be freely moved around in the file system using the file manager; they cannot be assumed to be at fixed locations in the filesystem

Associations

  • By default, documents should be opened with the Creator
  • Individual documents (not all document that happen to be in the same format) may need to be associated to different applications (or even application versions)
Clone this wiki locally