-
Notifications
You must be signed in to change notification settings - Fork 57
Components
probonopd edited this page Nov 30, 2021
·
31 revisions
This is a work-in progress description of which components could be used to put together helloSystem.
Note: This page reflects brainstorming of potential components for helloSystem. The components that have been decided on are marked with ➡️.
- FreeBSD - Liberal license, great ZFS experience, slowly-changing, complete operating system system, no different competing distributions. Big advantage: There is one way how things are done (e.g., set the keyboard language), one location in which files are. Not different ones like with different Linux distributions. This makes the job of writing that sits on top much easier. Possible alternatives: NetBSD? (Runs on more hardware types). ➡️ FreeBSD was chosen
- https://github.com/furybsd/furybsd-livecd - Builds Live ISOs for FreeBSD, is customizable. Live system can be booted from ISO file using https://www.ventoy.net/ which allows one to have multiple Live ISOs in parallel. Live system optionally can be installed to disk. Current issues: Without Ventoy, copies the whole ISO to RAM before booting. Possible alternatives: NomadBSD, GhostBSD? ➡️ The helloSystem Live ISO build system is based on FuryBSD, and helloSystem is using some code (initgfx) from NomadBSD. GhostBSD is not interested in becoming a generic Live ISO build system
- Qt 5 - Most cross-platform applications are written in it. Unlike Gtk, it is also not tied to many of the unwelcome technologies.
- QtPlugin - A custom Qt plugin that makes the global menu work and allows us to set our own theme, which largely just applies a user-editable QSS style sheet
- A custom shell script that launches a few services and that keeps running as long as the desktop session is running. Advantage: Very lightweight, easy to understand what is going on. Possible alternatives: LxQt or Lumina (Lightweight and based on Qt 5), Xfce (Gtk would bring in Gnome-related dependencies), KDE (would violate the "software minimalism" principle) ➡️
start-hello
launches a custom session for helloSystem using various hand-picked and partly custom-made components
- sddm - Qt based. ➡️ slim was chosen for helloSystem because it is lightweight.
- To be defined - No pure Qt solution known so far. Lumina uses fluxbox (window decorations don't look native and there is no window snap), NomadBSD uses openbox (window decorations don't look native and there is no window snap). kwin_x11 draws in many Kf5 dependencies but can do animations, window snap, Exposé, and has compositing features built in. ➡️ KWin.app (with manually downstripped dependencies) is being used now.
- compton - Drop shadows. Possible alternatives: kwin_x11, Compiz ➡️ picom is being used for now.
- https://github.com/probonopd/filer/ - Very lightweight. Opinionated fork of PCManFM supporting AppDir. Can render the desktop, too. Current issues: Dependency on glib through libfm, limited Drag and Drop so far. Possible alternatives: lumina-fm (minimal, no glib dependency), https://github.com/probonopd/dfilemanager (more powerful, but does not build on FreeBSD yet) ➡️ Filer in helloSystem was forked from PCManFM
-
https://github.com/probonopd/panda-statusbar - Almost pure Qt solution similar to the KDE appmenu Plasmoid but as a standalone application. Needs https://github.com/probonopd/panda-qt5-plugin or another Qt plugin that supports
_KDE_NET_WM_APPMENU_SERVICE_NAME
and_KDE_NET_WM_APPMENU_OBJECT_PATH
. Additionally needs https://github.com/probonopd/dde-globalmenu-service/tree/fix-xcb for Gtk applications. Background information: https://blog.broulik.de/2016/10/global-menus-returning/. Possible alternatives: https://github.com/SeptemberHX/dde-top-panel (possibly DDE dependencies?), https://github.com/rilian-la-te/vala-panel-appmenu (Gtk, so not really wanted). ➡️ Menu in helloSystem was forked from panda-statusbar - Search in menus - This needs to be invokable from the command line, effectively allowing for a very efficient operation of application menus through the keyboard ("HUD"). UX should be discoverable (visible search box). ➡️ Action Search is implemented in Menu and can be accessed through the keyboard now
- https://github.com/probonopd/cyber-dock - Almost pure Qt/Qml solution. Latte Dock performance not good in FreeBSD. Deepin's dock (probably depends on dde dependencies)? ➡️ Dock was forked from cyber-dock
- Qt version of Drill to be written? - Possible alternatives: Drill (would look non-native since not written in Qt) ➡️ The search box in Menu now also acts as an application launcher, and applications are in the System menu
- Chromium or Falkon ➡️ Falkon is being used for now because it is written in Qt and integrates into Menu nicely.
- qterminal ➡️ qterminal is the default terminal
- lumina-archiver
- lumina-calculator
- lumina-config
- lumina-fileinfo
- lumina-info
- lumina-mediaplayer
- lumina-open
- lumina-pdf
- lumina-photo
- lumina-screenshot
- lumina-search
- lumina-textedit
- lumina-xconfig
Also check the Deepin tools. They depend on dde, however.
- UI font to be decided. Candidates: URW Nimbus Sans (not L) from e.g., https://github.com/ArtifexSoftware/urw-base35-fonts/ (similar to Helvetica) ➡️ URW Nimus Sans is the UI font in helloSystem
pkg install google-fonts
- Think about merging the best aspects of AppDir, AppImage, ZFS deduplication, and PBI https://2011.eurobsdcon.org/papers/moore/eurobsdcon2011-pbi9-kpm.pdf but keep in mind https://unix.stackexchange.com/questions/244039/pc-bsd-pbi-what-reasons-made-it-to-be-scrapped. Something along the lines of: A filesystem image of a major version of FreeBSD gets union-mounted with the contents of an AppDir/AppImage, and can be its only allowed dependency. Then the whole thing gets executed as a jail. We want to achieve a) one app = one file/folder, b) multiple app versions in parallel, c) embrace much as possible the existing pkg infrastructure by building only a light layer around it for "app compartmentailzation" ➡️ Simplified
.app
bundles are used in helloSystem - port install - it's FreeBSD after all.
- Linux AppImages - May be useful for applications that have not been ported to FreeBSD yet.
➡️ These are "light-installed" which means that they appear in the Menu and have icons but need to be downloaded upon first use.
Complete application suites (additional ISO)
https://github.com/AppImage/AppImageKit/wiki/Libre-Graphics-Suite
- Scribus
- Inkscape (despite Gtk)
- Krita
- Possibly Gimp (despite Gtk; has overlap with Krita, do we still need it?)
- OBS
- Kdenlive
- LibreOffice
- FreeCAD
- Cura
- Possibly PrusaSlicer
- Qt Creator
- Arduino IDE
- Golang
- LiteIDE
https://www.deepin.org/en/developer-community/architectural-design/