GO HERE FOR UP TO DATE VERSION
Original scripts and basic implementation by tsoding, modified and expanded by myself.
ThemeManager.HC
script created and submitted by Boketto.
All themes are approximations of their namesakes and are not 1:1 implementations. All documents and files contained in this repository are for educational purposes only. Theme contributions and alternative Windows-specific script contributions are welcomed.
rosé pine theme shown; Screenfetch app must be installed separately (see Additional Software).
This repository aims to assist with setting up a complete TempleOS environment via QEMU, including all files from Terry's supplemental .ISO.C
files on templeos.org.
These scripts are intended for use on Linux machines; Windows users will need to use a tool like ImDisk Toolkit to mount the virtual TempleOS drive and copy files to/from the VM.
A few notes:
-
C:
and::
can be used interchangeably in TempleOS to refer to the root of theC:
drive (with::
referring to the root of the currently mounted disk) -
HomeSys.HC
was uncompressed from theHomeSys.HC.Z
located inC:
by using theTOSZ
tool to allow for easy external editing -
These scripts only affect the
C:
drive of a TempleOS installation; theD:
drive (and any additional drives created when installing theTinkerOS.ISO
) are kept clean unless manually mounted and edited
The install.sh
, mount.sh
, run.sh
, and sync.sh
scripts use settings from base.conf
; customize it to your liking. For example, you may want to add the following flag to enable sound: -audiodev alsa,id=snd0 -machine pcspk-audiodev=snd0
. Replace alsa
with pa
for PulseAudio.
The net-run.sh
and text-run.sh
scripts use settings from net.conf
and text.conf
, respectively.
Clone this repository with the following command:
$ git clone https://github.com/bubstance/templeos
$ ./install.sh <name>.img
Follow the installer's instructions, then close the VM.
$ ./sync.sh temple <name>.img
Syncs the contents of the included Home directory into the TempleOS image.
This will create a raw 512MiB (~537MB) virtual disk image, which is a safe minimum and should be more than enough for most use cases. You can adjust the size by editing the value of QEMU_IMG_SIZE
in base.conf
. No suffix indicates kibibytes, M
is for mebibytes, G
is for gibibytes.
The supplied base configuration runs TempleOS with 2GiB of RAM and as many CPU cores as your system has available. You can change this by editing the value of the -m
flag in base.conf
; the value is in MiB by default. 512MiB is the absolute minimum amount of RAM required for TempleOS to boot.
$ ./run.sh <name>.img
Boots the installed image.
$ ./mount.sh <name>.img
$ cd ./mnt/
This will mount the entirety of the TempleOS filesystem to a mnt
directory created in the primary templeos
directory. This can be useful for browsing through and editing files that are not contained in Home
.
You can run the mount.sh
script multiple times; it unmounts the image before trying to mount it again. The run.sh
script also unmounts the image before running the VM. You usually don't have to unmount it manually, but if you need to you can always do umount ./mnt/
.
Sources net.conf
and runs Shrine with networking enabled.
Requires installing TinkerOS
and setting the graphical display mode to 15
during installation.
Sources text.conf
and runs TinkerOS in the text-only 15th mode.
- NOTE: the
sync.sh
script does not currently work with TinkerOS or ShrineOS; you need to usemount.sh
to interact with their filesystems
The subcommand (temple
or host
) denotes the target of the sync operation.
$ ./sync.sh temple <name>.img
$ ./sync.sh host <name>.img
Themes are stored in the Themes
folder in the Home
directory. Edit SetTheme();
in HomeSys.HC
file to source the theme of your choice on each boot. The default selection is gruvbox-light
.
To change theme instantly, use ThemeManager.HC
's SetTheme();
command (both created by Boketto).
#include "~/Themes/ThemeManager.HC";
SetTheme(); // no arguments to list all available themes
SetTheme("nord"); // name an available theme to set it
SetTheme("all"); // "all" cycles through all themes
Current theme choices are:
-
dark
andlight
-
base
,moon
, anddawn
-
dark
andlight
Change the TEMPLEOS_ISO
variable in base.conf
to either TinkerOS.ISO
or Shrine.ISO
, then use the install
and run
scripts as described above.
-
Try out some TempleOS forks! There's
TinkerOS
from tinkeros/TinkerOS,Shrine
from minexew/Shrine, andZealOS
from Zeal-Operating-System/ZealOS. -
Check out Jeff Irwin's temple-viewer STL viewing application! It's really neat.
-
You can install the
Screenfetch
application by doing the following:-
Download
Screenfetch.ISO.C
from the cia-foundation -
Remove the
.C
extension and run QEMU with the-cdrom
flag and the location of the.ISO
. If you move theScreenfetch.ISO
into thetempleos
directory, the full command would be something like:
qemu-system-x86_64 -display gtk,zoom-to-fit=on -rtc base=localtime -cdrom Screenfetch.ISO -enable-kvm -m 2048 -smp $(nproc) -hda custom.img
This will start TempleOS (or a fork that you installed) with the
Screenfetch.ISO
mounted to theT:
drive-
Copy the contents of the auto-mounted
.ISO
in TempleOS by performing the following command:CopyTree("T:", "::/Apps/Screenfetch");
This will automatically create the folder
C:/Apps/Screenfetch
and populate in with the contents of the.ISO
-
Add another
#include
to yourHomeSys.HC
that sources"::/Apps/Screenfetch/Screenfetch.HC.Z"
-
You will now have access to the
Screenfetch;
command on every subsequent boot -
**NOTE** For ShrineOS running with networking, all you need to do is
pkg-install screenfetch
and then source in yourHomeSys.HC
as above
-
-
To force TempleOS (and ShrineOS) to run at 60FPS, edit the values of
WINMGR_FPS
andWINMGR_PERIOD
inC:/Kernel/KernelA.HH.Z
at lines1478
and1479
to60000.0/1001
and1001/60000.0
, respectively (this is just changing the3
to a6
). Jumping to a line can be done quickly by using the keyboard shortcut<Ctrl+g>
, entering the desired line number, then pressing<Esc>
- **NOTE** Changing the framerate does not seem to work in TinkerOS
-
If you install
TinkerOS.ISO
and set at least one of your drives' graphics mode to15
during installation, you can then change the-display gtk
setting inbase.conf
to-display curses
and get a nice text-only version that works inside of a terminal or TTY -
You can use the
TOSZ
application made by Terry to uncompressHC.Z
files (Linux only)-
chmod +x make_tosz
, then run it in the same directory asTOSZ.CPP
to make theTOSZ
executable -
Run
TOSZ
on the file you wish to uncompress (for example:./TOSZ -ascii MakeHome.HC.Z
)
-
-
Here's handy tip from Jeff Irwin on changing the default keyboard layout to Dvorak (via Reddit):
Open up
C:/Kernel/SerialDev/Keyboard.HC.Z
with the editorEd
. The first several lines are like this:asm { NORMAL_KEY_SCAN_DECODE_TABLE:: DU8 0,CH_ESC,"1234567890-=",CH_BACKSPACE,'\t'; DU8 "qwertyuiop[]",'\n',0,"as"; DU8 "dfghjkl;'\`",0,"\\zxcv"; DU8 "bnm,./",0,'*',0,CH_SPACE,0,0,0,0,0,0; DU8 0,0,0,0,0,0,0,0,0,0,'-',0,0,0,'+',0; SHIFT_KEY_SCAN_DECODE_TABLE:: DU8 0,CH_SHIFT_ESC,"!@#$$%^&*()_+",CH_BACKSPACE,'\t'; DU8 "QWERTYUIOP{}",'\n',0,"AS"; DU8 "DFGHJKL:\"~",0,"|ZXCV"; DU8 "BNM<>?",0,'*',0,CH_SHIFT_SPACE,0,0,0,0,0,0; DU8 0,0,0,0,0,0,0,0,0,0,'-',0,0,0,'+',0;
Keep the
asm {
part, but replace the QWERTY tables with this:NORMAL_KEY_SCAN_DECODE_TABLE:: DU8 0,CH_ESC,"1234567890[]",CH_BACKSPACE,'\t'; DU8 "',.pyfgcrl/=",'\n',0,"ao"; DU8 "euidhtns-\`",0,"\\;qjk"; DU8 "xbmwvz",0,'*',0,CH_SPACE,0,0,0,0,0,0; DU8 0,0,0,0,0,0,0,0,0,0,'-',0,0,0,'+',0; SHIFT_KEY_SCAN_DECODE_TABLE:: DU8 0,CH_SHIFT_ESC,"!@#$$%^&*(){}",CH_BACKSPACE,'\t'; DU8 "\"<>PYFGCRL?+",'\n',0,"AO"; DU8 "EUIDHTNS_~",0,"|:QJK"; DU8 "XBMWVZ",0,'*',0,CH_SHIFT_SPACE,0,0,0,0,0,0; DU8 0,0,0,0,0,0,0,0,0,0,'-',0,0,0,'+',0;
If you're copy/pasting, great! If you're typing it manually, be careful to escape the double quote in the shift table like
\"
. There's a Ctrl key table too which I haven't bothered editing yet.Finally, recompile with
BootHDIns;
andReboot;
This would, of course, also apply to any other keyboard layout you wish to map (AZERTY, QWERTZ, etc.)