for a long time I have been somewhat inactive on the forums. But there is a reason behind this: I can finally proudly present OmniOS.
The last 5 months, OmniOS has been my top priority in terms of coding.This is because the OSes on these forums too have little functionality. Of course some of them have a great GUI and are very easy to work with, but that is not the main purpose of an OS. It's main purpose, speaking in terms of ComputerCraft, is to add functionality on top of CraftOS. This is why I built OmniOS. An almost full list of it's features:
FS
Symlinks
Custom Filesystems
DevFS: for peripherals
TmpFS: ram storing only
CCFS: standard FS
Kernel
Multitasking (of course)
Interprocess messaging
Interact: a GUI api built specially for the needs of OmniOS
Utils: An api offering a bunch of options as logging and table copying
Sandboxing for a restricted FS and _G access
Debug app that allows you to use OmniOS to it’s full extent
A nice settings app that allows you to control almost nothing
App permissions
An OmniOS API
A relax function: The release of OmniOS finally allows to me to chill around!
Now I get to explain the different functions, how they work, and why you should bother dedicating some moments of your short life to OmniOS.
FS
- fs.link(destination,source)
This function allows you to see the contents of the source directory at the destination directory.
- fs.setFS(path,filesystem)
Sets the filesystem of the path to the one that is indicated. The different filesystems can be found under OmniOS/Drivers/FS
- fs.mount(destination,source,filesystem)
It is a combination between both previous functions.
- fs.getFS(path)
You know what it does!
Kernel
- Kernel.newProcess(func,parent,permission,name,...)
Starts a new process in the multitasking manager.
@parent refers to the terminal to be used. "term" will redirect to the default terminal.
- Kernel.list()
This function returns a list of processes as well as their names and coroutine statusses.
- Kernel.switch(newTaskID)
Switches to the given process. IDs are numbers! They start at 1 and can be viewed if you type "list" or "ls" in Debug.
- Kernel.bindEvent(event,func)
When the event is detected in the event queue, the function is exceuted. A thread can also be given as an argument.
- Kernel.kill(id)
Kills the process. So sad.
- Kernel.getRunning()
Return the id of the process running at the moment.
- Kernel.addMessage(destination,sender,message)
And finally interprocess messaging. I'll let you figure out how it works. Remember, ids are numbers!
- Kernel.setSidebarColor(id,color)
Sets the sidebar color of the ID to the given color
- Kernel.setSidebarTextColor(id,color)
Sets the color of the "<" in the sidebar to the given color for the given process!
- Kernel.getName(id)
Returns the name of the process.
- Kernel.broadcast(sender,message)
Sends a message to all processes!
- Kernel.getMessages(id)
Gets all the messages in the form of a table, I guess! Anothe method is to do this: coroutine.yield("kernel_messages")
- A last one: Press the "alt" key at the same time as the number of a process and see what happens!
Debug
Here is a list of the things that should happen when you type certain things into Debug:
"cmds": a full list of all the commands. Use it to explore the rest!
Logs
Logs are an essential part of OmniOS. Mainly because it allows me to discover what screw it up this time! However, logs can be a burden to some, so there is an option to turn them off. Go to OmniOS/API/Utils.lua and set the variables doLogs or something of the likes to false. Tadaaaa.
Screenie time!
BIOS:
Booting:
Multitasking:
Desktop:
Versions
Here you can see what changed over the different years versions. 15w33a:
OmniOS automaticall jumps to app when it is launched!
Fixed the crashing of the Lua program!
15w43a:
Fixed error system, it is now displayed directly on screen. This allows you to bypass the difficult process of going to the log folder ans checking it manually. it's something!
FS sandbox is also working correctly
15w45a:
Added the option to add more OSes in the BIOS.
Some other small improvements.
1.1.0 or 16w40a
Hey guys,
after some heavy debugging during the last week I am rolling out a new minor version. "Why minor?" you ask. Well, this version does not add a ton of new features. It rather improves on the existing ones, and mainly fixes bugs and other annoying issues.
1.1.0 Update (Codename 16w40a)
New features:
Shell piping works somewhat decently
It boots (It doesn't always.)
Event redirection (One process passes all the events it receive to a child process. A child process is any process that was created by a given process and of which it has the handle.)
reduced it's size drastically by removing useless crap from it. It now has the glorious size of 483KB. I could shrink it if I wanted.
It logs stuff so that you can debug. Mainly for myself.
All those linux bins in /bin. Some of the work.
Planned features in future versions:
I really want to improve the installer
Inter-process-communication
Devices, like random or tty (Can someone explain what tty is exactly and how it works?)
Separates windows from processes, which makes visible output redirection easier.
Download:
pastebin run 2DMDuHci
Then type:
OmniOS/BIOS.lua
Note: It is possible to download previos versions of OmniOS typing:
Okeh, so my first impressions. Excuse my nonstandard numerical formatting because I am using Chrome and the forums do not like Chrome
1) I really don't like how applications open in the background, it's possibly a dealbreaker for me using the OS, I want to jump into the app. Plus a flicker on the screen is NOT enough visual feedback to know that the app has opened.
2) also the close tab button doesn't work unless you're in that tab... eurgh.
3) I like the BIOS! I wish it ran at startup though
4) Overall looks good, I need to look at it more when im not tired, but looks cool
Ok I like it but please fix the bugs. Its unstable and crashes everytime almost. Error message is blank and the "Blue screen of death!" terminates itself. Multitasking is cool but make so that we can close every app that is in there and that sidebar doesnt close itself after termination of an app. Settings button doesnt work.
Could each and everyone of you who is having issues, explain the steps they took to have them. Moreover, the errors can be found in the log folder under Error.log. If you don't find them there, they are in Filter.log or PrintIO.log.
My error accurs when i have opened more then two same apps and terminating them when im in desktop and presing "x" rapidly on the other processes. And one with edit program.
LocationMissouri, United States, America, Earth, Solar System, Milky Way, Universe 42B, Life Street, Multiverse, 4th Dimension
Posted 11 August 2015 - 07:51 AM
First impressions are that the OS is very buggy and unstable. "lua" crashes on the first keystroke saying "bios:247: attempt to call nil".
The omnios/debug's "cmds" command lists the commands list, which is too big to fit on the screen, therefore you can't see all of them. Or, that's what it looks like.
"npain" crahes(I think this was sopposed to say "npaintpro", but there's no ".." so idk).
It looks like it has a lot of potential if you iron out the bugs.
nPain doesn't crash, but the program ends since no path is provided and thus it can't open a file. Lua crashes, but I fixed that. Actually it does not crash because of OmniOS but because of the version change from 1.7 to 1.7.4. And if I added .. I would only be able to write npa.., which I decided is worse.
I have fixed some of the issues you were kind enough to mention!
15w33a:
- OmniOS automaticall jumps to app when it is launched!
- Fixed the crashing of the Lua program!
- Added a script that is launched when OmniOS is installed!
- Added an option whether to run on startup or not!
Lua prompt crashes with "bios:247: attempt to call nil" as soon as you press a key.
Fake loading screen - I haven't checked your code, but APIs take no more than a few milliseconds to load.
The sidebar closes when you kill a process. Not really a problem but it's quite annoying when you want to end multiple programs.
Edit can't be started because you need to specify program arguments.
All in all, it's.. okay. I can tell you've put effort into it. It's better than most, definitely. But it does lack a lot in functionality. There's a file browser, a text editor and a paint program but for anything other than that I need to resort to the shell. The ability to add your own programs to the desktop would be quite a big improvement to that.
- I saw the aliases thing and I have yet to figure out, why this happens.
- The lua issue was fixed in the last update
- No fake loading! That'd be annoying!
- Someone previously complained it didn't close when you killed a process, so I changed it.
- That is a problem with the edit program. You can still open it using FileX.
Thanks for the tips!
PS: have you tried fs.link ? That is one big thing I am proud of!
PS: have you tried fs.link ? That is one big thing I am proud of!
I'll be honest, the virtual file system (fs.link/fs.mount, etc...) does seem pretty useful - especially if there was some sort of remote rednet file system (or even something like my dropbox VFS). Just the idea of mounting a remote turtle to edit files gets me excited .