UPM
1, UPM
UPM uses a simple method to unify software building and package management
UPM can be used as a software builder and package manager, on any Posix system
you just need to have either "curl" or "wget" on your system
if "bubblewrap" is available, UPM will use it to sandbox packages
to bootstrap from source, these extra programs are required too:
clang git ssh-keygen
now just run this command:
; sh upm/install.sh
UPM can also be used to build and maintain a Linux based operating system,
with a user interface based on UShell and Uni
first we must create a bootable installer on a removable storage device
to do that, we must be in a Linux system with these programs installed:
curl (or wget) mkfs.vfat (dosfstools)
to bootstrap from source, these extra programs are required too:
clang git ssh-keygen
then we must create a UEFI FAT32 partition on a removable storage device (eg /dev/sdX):
; printf "g\nn\n1\n\n\nt\nuefi\nw\nq\n" | sudo fdisk -w always /dev/sdX
; sudo mkfs.vfat -F 32 "/dev/sdX1"
mount the partition:
; export target=/run/user/$(id -u)/mounts/sdX1
; mkdir -p $target
; sudo mount -o uid=$(id -u),gid=$(id -g) /dev/sdX1 $target
then create the bootable installer:
; sh upm-linux/mkinst.sh $target
; sudo umount $target
now boot into the installation media, and follow the instructions
packages in the installed system will be updated automatically
this is safe, since the process of updating packages is atomic
2, Ushell
there is an application launcher which can be toggled by pressing "super" (mod+mod) or "alt+tab"
applications will be opened in their own workspace, that will also contain any extra windows opened by that application
to close the focused window, press "super+backspace" or "alt+escape"
entering "space" as the first character in application launcher, opens terminal emulator
the entered command will be run in a new terminal view, inside a list at the right column
when terminal view finishes its job, if there is any output, it'll be transfered to the history list under the prompt
to navigate between terminal views, use "ctrl+pageup" and "ctrl+pagedown" keys
to go back to the prompt, press "ctrl+tab"
to navigate in history list, use "up" and "down" arrow keys
you can press enter on an entry to rerun the command, or press space to first edit it
to close a terminal view (that will also kill any running process) press "super+backspace" or "alt+escape"
the first item in the application launcher is "system", which opens the system menu:
, session (lock, suspend, exit, reboot, poweroff)
, connections
, timezone
, passwords
, packages (install, remove, update, make installation media)
, backup (create, restore)
packages in the installed system will be updated automatically
this is safe, since the process of updating packages is atomic
to have a really fail'safe system, redundant units are necessary
you can create a backup on a removable storage device
backups will be done using "BTRFS send", so they will be incremental and fast
the backup device is encrypted, and contains a backup of your home directory
dencryption can be done using a password, as well as a key stored on the computer
each time the device is connected, the backup procedure will be run automatically
even in case of bit rot for data in home directory, this procedure repairs it automatically
this backup can be easily restored on a new system
these systems will then form an F2F network using GNUnet, through which they will be synced to each other