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

[os] [kinda stable?] Multitasked, easy-to-use GUI OS - Update 0.6 (File browser)

Started by Geforce Fan, 10 May 2015 - 04:19 AM
Geforce Fan #1
Posted 10 May 2015 - 06:19 AM

[os] some sort of stage of alpha/beta I don't even know anymore

because we all love glitchy beta OSes

[os] is an OS I've been working on off and on for a while. Originally, it was called Newshell, and was designed to be a ~200 line shell with a few bonus features. I ended up abandoning it.
Fast forward ~6 months later, and I decided I wanted to make an OS. I recalled I'd started a little project, and decided to use it as a sort of template…
…and now it's a 2,500+ line OS that has metadata, a file permissions system, a multitasking, tabbed( soon: -and-windows simultaneously) GUI oriented system with the simple command startx.
Features
  • Multitasked GUI environment
  • Terminal emulation inside the GUI
  • File explorer
  • Desktop
  • Real-world time
  • File metadata( See when files where created, modified, and accessed)
  • Permission system - Prevent untrusted apps from messing with important files!
  • Daemons - Run processes in the background with ease
  • Login system - Has admin, and guest accounts
  • Copy & paste system that doesn't overwrite the default system - Use alt V to paste!

Install


Github
To install:
pastebin run 6JU1nY50 5 update







Pictures



File browser:

Terminal emulation:







Commands


These are commands you can type into the terminal.

startx - Start the GUI

Time
Update

The following commands can be called without arguements to get information on input, output, and what they do:
Sudo
Medit
Stat
Df

The following programs are mostly for fun:
Pi
Wipe









License




The full license is here and is the place to refer to for actual information on licensing; but generally, you are allowed to modify & redistribute, however, you must use the same license for the code.




Contributing



If you wish to contribute to [os] then, fork the project on github and then submit a Pull Request and I will decide weather to include your code or not.
Or, if you like, you can start your own OS based off of [os]. You must use the same license if you wish to do so.



Have fun losing all your stuff to a hacker beta testing!
Edited on 30 August 2015 - 01:40 AM
Creator #2
Posted 10 May 2015 - 02:23 PM
So proffesional, really. If I boot from a disk and prevent your os from starting, will I be able to see the metadata in the files?
LDDestroier #3
Posted 10 May 2015 - 02:42 PM
I did ';hello world' and it crashed. Please fix, this looks nice! Also, the gui isn't starting with startx.
biggest yikes #4
Posted 10 May 2015 - 02:44 PM
The boot jokes are probably the best part of the OS.
"If there are motherboards, are there fatherboards too?"
Geforce Fan #5
Posted 10 May 2015 - 06:38 PM
I was hoping nobody would discover using ;s. They've been a neglected feature, mostly because of how much a mess osStuff.doMain() is. I'm afraid it'll be like jenga: I'll take one block out and the tower will fall.

'startx' doesn't do anything because the GUI hasn't been implemented yet.

So proffesional, really. If I boot from a disk and prevent your os from starting, will I be able to see the metadata in the files?
If you prevent the OS from starting, no. The 'stat' program needs the osStuff API to function.
You will, however, be able to see them in the .meta folder. When the OS is loaded, .metadata is read-only, and can only be modified through OS functions.
This is based off of lyqyd's standard, with my modifications.

I forgot to update the dir program. If you update(run 'sudo update'), you'll be able to do 'dir -all' to see hidden files, aswell as 'dir directory' to see files in a directory. You can even do 'dir -all directory'.

I havn't been able to get the ascii pointer you see in the screenshots able to be downloaded through HTTP. I've seen someone else do it, although I'm not sure how. If you enable the ascii pointers, there's a very, very odd bug that happens:

edit: I just realized that you can edit things like math.min. Programs are not ran in a separate environment, so you could overwrite, for say, math.min and have it always return a certain value, which could evade the protection system entirely.



So don't trust the protection system, as I stated several times in the OP. I really should have just ran them in separate environments in the first place, it would have made my life a whole lot simpler.
Edited on 10 May 2015 - 06:19 PM
Geforce Fan #6
Posted 11 May 2015 - 12:44 AM
I've released an update. Run 'sudo update' to get it.
This patches a previous security flaw that could allow you to evade the permission system. Programs are now in a separate, sandboxed environment from the OS. This does NOT mean the permission system is safe yet.
Along with this is an improvement to the language system–all default programs now use it. You can copy the 'library/lang/en_us' file and translate it to have the OS in a different language. Then, use 'osStuff.switchLangauge"whatYouCalledIt".
Extensive testing has not been done to make sure everything looks correct. If something likes among the lines of "usrNoExist" or "noHavePerms" than tell me.
Edited on 10 May 2015 - 10:45 PM
biggest yikes #7
Posted 11 May 2015 - 01:01 AM
So about these "ascii pointers", is there a way to turn them off?
EDIT: nevermind figured it out
EDIT 2: another question, what's the purpose of the console without game.toggleConsolePrint()?
Edited on 10 May 2015 - 11:09 PM
Geforce Fan #8
Posted 11 May 2015 - 01:09 AM
T_T sorry forgot to change them to off when I pasted executable in. Fixing.
edit: fixed.
EDIT 2: another question, what's the purpose of the console without game.toggleConsolePrint()?
Well, normally it's on by default, but because "devmode" is enabled in Game-Engine, it's off–since usually when I'm working on it, I'll have the console.log open in Sublime Text. You can input commands into the console by typing them, but due to a bug, you can't see them until you press enter and run them.
Edited on 10 May 2015 - 11:13 PM
biggest yikes #9
Posted 11 May 2015 - 01:17 AM
T_T sorry forgot to change them to off when I pasted executable in. Fixing.
edit: fixed.
EDIT 2: another question, what's the purpose of the console without game.toggleConsolePrint()?
Well, normally it's on by default, but because "devmode" is enabled in Game-Engine, it's off–since usually when I'm working on it, I'll have the console.log open in Sublime Text. You can input commands into the console by typing them, but due to a bug, you can't see them until you press enter and run them.
Oh, okay :P/>
EDIT: Btw, a bug: If you don't put anything in the shell when you press enter it crashes
Edited on 10 May 2015 - 11:25 PM
cyanisaac #10
Posted 11 May 2015 - 10:21 PM
This looks like a very cool system. And it also seems like it has the ability to lock stuffs so my friend will like this a lot.

I look forward to getting home today and trying this out :D/>/>.

EDIT: OH MY F******* GOD YOU MADE ME LAUGH IN THE MIDDLE OF COMPUTER CLASS WHEN "IF POE WERE A TECHIE" CAME ON THE SCREEN. EVERYONE WAS LOOKING AT ME. WHYYYYY :P/>.
Edited on 11 May 2015 - 08:27 PM
Geforce Fan #11
Posted 11 May 2015 - 11:20 PM
EDIT: OH MY F******* GOD YOU MADE ME LAUGH IN THE MIDDLE OF COMPUTER CLASS WHEN "IF POE WERE A TECHIE" CAME ON THE SCREEN. EVERYONE WAS LOOKING AT ME. WHYYYYY :P/>.
What have I done?!?!
but hey, you where the one to fool around during school, not me.
Geforce Fan #12
Posted 14 May 2015 - 12:35 AM
jaredallard #13
Posted 18 May 2015 - 05:45 PM
I feel like I'm looking at a DOS clone, that will then morph into (shockingly) Windows.

Whens Visual BASIC coming, ay?
Geforce Fan #14
Posted 18 May 2015 - 11:40 PM
Actually, I was planning on turning this into ME. The user is an idiot, and there's no way they could learn to do anything more advanced than click a mouse! All the system files will be locked down, and the user will not be able to run anything with admistrative permissions. Furthermore, the government and hackers alike will be allowed to do anything they want to your computer </s>

The OS will likely always boot to the command prompt by default, and the command prompt will not be phased out. I'll leave an option in to 'startx' by default, however. Maybe even a GUI login screen, we'll see.

Edit: sorry for no updates, GTA V has been hogging up my free time. It's really quite beautiful on PC, at 1080p 60fps.

————

When I add a new feature to something I've made:

BEFORE:

AFTER:

do u liek mah ms paint skilz?
Edited on 21 May 2015 - 04:13 AM
biggest yikes #15
Posted 04 June 2015 - 01:00 AM
An OS amazingly built with an engine meant for games, and still no osStuff.version!?
Geforce Fan #16
Posted 05 June 2015 - 07:44 PM
Haha I should probably implement that.
I gotta be honest, Space Engineers has been eating up all my time. I haven't worked on this in a while.
biggest yikes #17
Posted 05 June 2015 - 07:52 PM
Haha I should probably implement that.
I gotta be honest, Space Engineers has been eating up all my time. I haven't worked on this in a while.
I figured I'd save it from dying
Geforce Fan #18
Posted 06 June 2015 - 02:54 AM
Haha, you where successful, my OS is in the back of my mind now. I think I'll pick it back up. It's sorta been the bottleneck of all of my stuff: Game-engine can't be finished until Gamedev(essentially level editor and working environment for Game-Engine) is done, which can't be finished until [os]'s GUI is done. I need OS's GUI to be done so I can use the task/menu bar on Gamedev. I'll definitely have a backwards compatability layer if you don't want to use it with [os], but I need to know what [os]'s GUI will look like in the end–I haven't experimented yet. I'm going for a Windows task bar merged with an Ubuntu-style menu at the top; so it would have a start menu and tabs, but also drop downs like "file" and "edit", all customizable by the focused app. I'll definitely be using windows 8-style smaller boxes for apps(my favorite windows 8 change, there aren't many good 8 changes), although the start menu will definitely be 7-style
—-
Version 0.4 has been rolled out. Here's the release update changes c&amp;p'd from Github:
-System now has a "time" routine that constantly runs. Fetches the time from http://chronic.herokuapp.com/, then uses string manipulation to extract the year, the day, the month, and the clock time, all separately. The system will add a second to this every second until it reaches :59 and is adding a second, which it then asks the server for the time again.
-Multitasking. Well, in the form of services. And you can't have user services. Essentially, you can do calculations in the background, but cannot write anything to the screen with them.
-Fixed the bug where you couldn't terminate… actually, it was not fixed, but rather, a broken system was scrapped and with it this bug went.
–Rather than using osStuff.g (ex. "osStuff.g"noExist") you can now use lan.(ex. "lan.noExist"). If what you're referring to doesn't exist, it'll come out as "lan.whatYouPutAfterTheDot".
-Probably lots of other stuff I don't remember
-THERE ARE STILL SEVERAL LOOPHOLES IN THE PROTECTION SYSTEM
There's also a new program called 'time'. It's 5 lines or so, and it just prints out the real world time.
Right now this is set to -6, which is my time zone. You can change it in code if you like, it's quite easy. It's toward the end of executable, about line 1000.
Huge shoutout to http://chronic.herokuapp.com/, it made my life a LOT easier. In fact, do do timezones, all I do is put "6+hours+ago" after the "utc/" and it works quite well.
In the future, I will definitely have settings for this, aswell as a daylight savings mode. These will need to be done manually, as I am not going to figure it out based on your region.
In fact, after I do that, I'll be done with time. I really don't want to get any more into it

I've been planning on renaming this OS. [os] was a placeholder name until I thought of something decent. Any suggestions?
How about "Doors"…
instead of windows? :P/>
Here's what I'm actually considering:
  • FireflyOS - Because it has bugs! :P/>
  • Something "open"(Open Doors? xD)
  • FeaturedOS
  • F - I'd make the title just "F" and nothing else. Might make people curious so they'd click on it, might not.
  • FeOS - With a permission system made of iron!




I don't want to bump this, but development on the GUI is going great. I'm getting that point where the version on github and my development version are vastly different again, but that really just means I've made a lot of progress.
Edited on 28 June 2015 - 07:03 AM
DannySMc #19
Posted 09 June 2015 - 09:14 PM
Haha I should probably implement that.
I gotta be honest, Space Engineers has been eating up all my time. I haven't worked on this in a while.

Such a good game!!:D/>
Geforce Fan #20
Posted 17 July 2015 - 11:37 PM
I've released an update.

Change notes:
+Startx command
+Fix for sudo
+Update command fixes. This is a little bugged. You'll need to launch it with sudo, and visually it totally glitches out
+Metadata now uses real-world time(or was this in the last update? idk I don't keep track lol)
Known bugs:
+You can't terminate. AGAIN.

Edit: I've added "osStuff" in the help. This goes over almost every single function in the osStuff API. It's probably pretty hard to read in the help viewer, but be glad I wrote it. It took quite a while.
Edited on 17 July 2015 - 10:56 PM
FUNCTION MAN! #21
Posted 18 July 2015 - 01:24 AM
I've released an update.

Change notes:
+Startx command
+Fix for sudo
+Update command fixes. This is a little bugged. You'll need to launch it with sudo, and visually it totally glitches out
+Metadata now uses real-world time(or was this in the last update? idk I don't keep track lol)
Known bugs:
+You can't terminate. AGAIN.

Edit: I've added "osStuff" in the help. This goes over almost every single function in the osStuff API. It's probably pretty hard to read in the help viewer, but be glad I wrote it. It took quite a while.

startx? That would mean you have a windowing system with plugins and changeable window managers…
Do you?
Geforce Fan #22
Posted 18 July 2015 - 01:44 AM
startx? That would mean you have a windowing system with plugins and changeable window managers…
Do you?
No. It will probably have plugins but not changeable window managers, unless you replace the startx program (library/programs/startx)
Honestly, the system is loosely inspired by unix commands(startx, df, sudo), but probably won't function similar to unix. I really haven't used unix that much, only on my RPi server.

Speaking of my RPi server, it's been slow lately and so has my internet. /images/ is now forbidden, expect to see the images I've posted disappear.. eventually. I think the forums chache them, it might take a while.
Edited on 20 July 2015 - 11:39 AM
cyanisaac #23
Posted 26 July 2015 - 10:33 PM
This is looking super cool, I really like it.
Geforce Fan #24
Posted 05 August 2015 - 11:23 PM
My new development environment!


I'm dualbooting Linux Mint 17.2 along with Windows 8(which I will never upgrade to windows 10 due to the many, many privacy concerns about the OS). I've symlinked the sessions folder of ccemuredux to the one on my Windows partition, so I can develop on Windows or Linux at any time without any hastle. That is, if windows acctually shuts down, because I've recently learned the shutdown from the taskbar(or start whatever thing for those without Classicshell) doesn't do a full shutdown, meaning mounting the filesystem in Linux would be unsafe.
Edited on 05 August 2015 - 09:25 PM
Geforce Fan #25
Posted 10 August 2015 - 04:41 AM
I was having some issues, but I've gotten git to work. I no longer have to painstakenly copy &amp; paste things from a text editor to github. Version 0.6 includes:
-Files:
Dual file explorer
Also manages the desktop now
Click and hold to drag files
Right click on nothing to make a new file/folder
Right click on a file to bring up a menu for actions to do on that file
Can drag a file from side to another to move it to there
Icons are now 4x3 rather than 4x4
Here's a picture:

-Various bug fixes
-Buffer API fixes(as usual)
-Arguments can now be passed to coroutines on creation
-Terminate now only goes to focused functions
-Desktop

Is now ran through files
Pretty much identical to files but without the interface and no scrolling

-New rendering method: Apps can now choose when they want to be rendered to the screen. This means they won't be active, but bufferblited when they choose to be. This is great for apps that can be blinky, such as Files.
There is a bug where files won't launch with this render method by default. On the desktop, right click, and create a new file. Now, open it, and it will open a files with this render method.
-Paste daemon. You can copy things to the clipboard with osStuff.copyToClipbaord("text"), and paste it with ALT + V. This does NOT override the default pasting
-Can now have popup windows. You can't drag or move then, can be seen on several right click options in files
-Fixed a bug where the kernel couldn't write to the game-engine console
-Only loads game-engine once now
-library/startup . Placing files here will make them run immediatly after the user logs on
-library/api . Placing files here will run right before the OS prints "[os] Version 0.6" to the screen
-Sudo can now be given command "su" to switch your user to guest/admin(depending on the account you are on). Type sudo unsu to undo this. Beware this does this for the entire computer, not just a terminal session or command. APIs loading with sudo su will still have admin/guest privileges. Be careful.
-ls/list/dir -all arguement changed to -a in order to be more unix-like. For those of you who don't know what this does, ls -a lists hidden files.
-Can now have custom file type icons. I'm pretty sure file types didn't even have icons before.


-Some changes that havn't been properly doccumented. It's been a while since the last release.

Edit: Very small change, I've added "shell.run'startx'" to the startup file. This means the GUI starts automatically. I've been getting the feeling most people havn't figured out that startx starts the GUI, and honestly it's not very clear, I don't blame them.
Edited on 11 August 2015 - 10:52 PM
DubbelSoftware #26
Posted 20 March 2017 - 07:46 PM
Its a amazing Operating System!!! It can do allot of stuff. I wil use it in my Liton Bootloader, that i am developing. Very cool!

-DubbelSoftware