This is a read-only snapshot of the ComputerCraft forums, taken in April 2020.
Piorjade's profile picture

buildOS - Easy to use GUI for CraftOS

Started by Piorjade, 26 April 2017 - 03:46 PM
Piorjade #1
Posted 26 April 2017 - 05:46 PM
I won't even make a fancy topic so I'll come directly to the "important" things:

Current features:
Spoiler
  • "Desktop" currently checks for applications in /buildOS/apps/ and displays them with their icons (located in /buildOS/apps/{app}/icon)
  • If no icon is found, it displays a dummyicon (shown in screenshots)
  • It uses coroutines so there is pseudo-multitasking (well every multitasking OS here isn't REALLY multitasking anyway)
  • No (movable) windows, as it basically makes no sense cuz of the low resolution (it only counts for GUI stuff in my opinion, as multiple shells are quite useful I guess)
  • Implemented 'require' and 'unload' (to unload APIs)
    • This is similar to the OC require, so it checks whether the given API is loaded and if yes, it returns to you the API or if not, it loads it up and then returns it to you (should save "memory" and time, although I don't know if there is actual memory in CC)
    • 'require' ONLY searches in /buildOS/lib, so be aware of that
    • os.loadAPI should still work if you want that instead
  • You have the ability to add modules (as root or by adding them outside of CC) [NOTE: switching, adding and logging into users is not yet implemented, but the system is already completely there]
    • Modules are basically just programs that get ran before the actual OS starts, that's why you need to have admin access to modify this folder. (as fs.list sorts the table alphabetically, it is useful to put numbers in front of the name, e.g. 00_package.lua, 02_filesystem.lua, etc etc)
    • Forgot to mention that you can indeed log into the root account, by entering a LUA shell (for example via the provided shell program) and executing the command:
    • perm.user.switch()
    • This currently just saves your old account and switches to root. When you execute the command again you get back to your old account
  • Every program has its icon (if not, it takes the dummyicon as stated above)
  • Every program has its info (if not, the "programs" app will just display "NO info"
  • One (and a half) prepackaged and removable programs:
    • "programs": Manages your installed programs and will be able to install packages in the future.
      • Can:
        • Remove programs
        • Show the info of a program (author, description)
      • Will be able to:
        • Install programs via Pastebin or package
    • [The half one] "Shell": Opens up a CraftOS Shell. (no, you can't destroy the system with that, as my modules are responsible for the permission system)
  • Permission System (no way to log in without an external program or shell YET):
    • The permission system locks you out from harming the system in any way (currently you can't modify the system and modules folder if you are NOT root (I explained how to log into the root account above))
    • There is a user system, which hashes the passwords too, but you have to use an external program or shell to register and log into them
    • The permission system also doesn't allow you to modify home folders of other users (/home/[NOTYOURNAME]/), but they currently don't get created upon register and as I already wrote, there is currently no built-in way to log in anyway
  • Modified Filesystem API:
    • Well….. basically uses the permission module to check if you are allowed to modify something and what not
  • Basic logging:
    • Opens up a file in /buildOS/log/ with the ingame the computer was booted and logs in this file until it shuts down
    • 'log' function in _G (simple, pass a string)
    • Doesn't log that much currently (as far as I remember it logs that something is trying to start up a program and it should log errors if a program crashes or if it simply finishes)

(Probably) Upcoming features:
Spoiler
  • Built-in login with your own home directory
  • Wallpaper customization for every user individually
  • Installing programs via my provided programs app
  • Settings menu
  • (File browser?)
  • Improving the UI to your suggestions
  • Prettier task manager, I think of making something like a taskbar from the Ubuntu Unity DE? Done

Screenies:

Taskmanager (inspired by the Ubuntu Unity DE):
Spoiler
It is scrollable and the > and X buttons are for resuming and terminating.

Main Desktop:
Spoiler
Installed programs are shown on the desktop and when you have more programs than it can display, you can use the arrow buttons at the bottom to switch between pages.

Drop-down menu (only the Programs button is currently working):
Spoiler

Screenshot of the shell program opened:
Spoiler
This "Hi" and "table[…]"-thingy is removed.

Screenshot of the program manager application:
Spoiler
The 'Install'-button is currently not working but you can already right-click on programs and view their info or delete them.

Download:

Here's the source code.
pastebin run qv7gFtxY

Basic explanation of the built-in functions / APIs:
Check the source code.

INFO:
I honestly don't recommend it to anyone except to people who don't know anything about programming and just want to test CC out for fun, because I think there isn't really anybody who uses CC for things like having some documents in there (basically roleplaying or something)
But maybe it will be a neat GUI for you guys to test out if I rewrite the task manager and the button alignment.

Anyway, suggestions are very appreciated and have a nice day!
:)/>
Edited on 29 April 2017 - 03:03 PM
Piorjade #2
Posted 29 April 2017 - 04:15 PM
UPDATE:
  • Added the new taskmanager, it kinda looks like the taskbar of stock Ubuntu Unity :)/>
  • OLD:
    Spoiler
    NEW:
    Spoiler
If anyone is even interested in this GUI (I don't call it OS on purpose) I'd appreciate feedback on the changed taskmanager :)/>