8543 posts
Posted 23 October 2012 - 03:16 AM
LyqydOS is a windowing operating system for ComputerCraft. You can move, resize, minimize and maximize your windows! LyqydOS will remember the size you changed a window to, so when you start up that program again, the window will be exactly where it was when you closed it. With mouse and color support as well, LyqydOS is one of the most feature-rich systems on the forums. Here are a couple of screenshots:
Spoiler
LyqydOS is meant to be used primarily with the new advanced computers, but is compatible with the non-advanced computers as well. Most of the window controls are very intuitive, so click around a little.
To start a new program, right-click on LyqydOS up on the titlebar, or hit F1. To switch windows, you can click on the window you want to switch to, you can click on the window's name on the taskbar, or you can hit F3 to get a list of all current windows. Right-click on a window's titlebar or hit F4 to get a window options menu to move, resize, minimize, maximize, etc.
To install LyqydOS, simply run the
installer (pastebin ID: WmFHmuZq). The installer will automatically fetch the latest version of the files from the
github repository. Manual setup instructions can be found in the README on github. LyqydOS is only for ComputerCraft 1.45 or newer.
Please be sure to let me know of any bugs you find! Bear in mind that this is still in active development.
2217 posts
Location
3232235883
Posted 23 October 2012 - 03:18 AM
:3 gona try it, i saw you on le IRC
EDIT:
AWESOME!!!!
although it needs an installer :3
23 posts
Location
Equestria, TX
Posted 23 October 2012 - 03:21 AM
Massively hawt.
8543 posts
Posted 28 October 2012 - 10:18 PM
Added automatic installer program, fetchable from github. See first post for details.
62 posts
Posted 29 October 2012 - 01:20 AM
Excellent OS! I did notice that the mouse_scroll event x and y values are not adjusted like they are with mouse_click when I was messing around with events.
103 posts
Posted 29 October 2012 - 01:30 AM
Woah… This is just epic! Great job Lyqyd!
249 posts
Location
In the universe
Posted 29 October 2012 - 02:06 AM
Summarizing this in a few words: Epic job!
992 posts
Posted 29 October 2012 - 02:23 AM
This is very well done. I have found one bug.
upon attempting to resize the Run Program box
procman:217: attempt to index ? (a boolean value)
Also can I have permission to start new windows and processes from
[Advanced Computer] Mouse File BrowserAnd one idea maybe unbordered window.
Spoiler
My program currently is not expecting the value from term.getSize to change so doesn't resize very well maximize then restart it fixes this until I fix that.
[Edit]
found another bug the paint program crashes I think it is because of a too long without yield caused by the extra time in changing values in a table as compared to just directly printing to screen.
[/Edit]
8543 posts
Posted 29 October 2012 - 02:36 AM
Excellent OS! I did notice that the mouse_scroll event x and y values are not adjusted like they are with mouse_click when I was messing around with events.
Thanks! You are correct; mouse_scroll and mouse_drag have yet to be accounted for. This is at the top of my to-do list at this point.
This is very well done. I have found one bug.
upon attempting to resize the Run Program box
procman:217: attempt to index ? (a boolean value)
Also can I have permission to start new windows and processes from
[Advanced Computer] Mouse File BrowserAnd one idea maybe unbordered window.
Spoiler
My program currently is not expecting the value from term.getSize to change so doesn't resize very well maximize then restart it fixes this until I fix that.
Ah, I need to disable that menu from popping up under certain conditions. Windows like the run program box are closed automatically if they lose focus, which is what happens when you attempt to resize it. So, when you select the resize (or any other option), that window has already been closed, so it cannot do anything to it.
I have an API planned for allowing programs to access their containing window's properties, so you would be able to code in a special case for when running in a window, allowing you to set a custom window title, etc. I hope to have this out soon, as it will make compatibility much better. Borderless windows are not currently planned (for a consistent user interface/user experience); this API should make that mostly unnecessary.
The resizing issues you were having could be dealt with (as long as your program can draw to an arbitrarily-sized window without too much issue) by handling the window_resize event. When your program receives that event, simply get the new size from term.getSize() and redraw the program interface. For example, the default edit program can be made compatible by adding this code to the appropriate place in its event handling loop:
elseif sEvent == "window_resize" then
w, h = term.getSize()
redrawText()
redrawMenu()
992 posts
Posted 29 October 2012 - 07:56 AM
I have modified Mouse File Browser to be compatible with LyqydOS so no more flickering wildly and resize no longer crashes lol.
This can run stand alone or from LyqydOS still as well.
[Advanced Computer] Mouse File Browser@Lyqyd
have you found a way to make paint run without cashing ?
also will the API have access to a function for creating a new process and window if so can I integrate it into Mouse file browser ?
797 posts
Posted 29 October 2012 - 09:59 AM
wow this looks really good, i'm jealous :P/>/>. does it support multi-tasking and a suggestion: instead of using ascii characters to border the windows, have the window a certain background colour so it doesnt need a border at all
8543 posts
Posted 29 October 2012 - 04:50 PM
I have modified Mouse File Browser to be compatible with LyqydOS so no more flickering wildly and resize no longer crashes lol.
This can run stand alone or from LyqydOS still as well.
[Advanced Computer] Mouse File Browser@Lyqyd
have you found a way to make paint run without cashing ?
also will the API have access to a function for creating a new process and window if so can I integrate it into Mouse file browser ?
Nice! It's cool to see stuff being worked on specifically for LyqydOS. I haven't tried the paint program yet, but I'll take a look at it and see what the issue might be.
As for starting new windows, check out the 'start' program that comes with LyqydOS. The installer automatically puts this in the root folder of the computer. If you're just looking to run other programs in their own window, try using it:
shell.run("start", "programName", "arguments", "if", "any")
wow this looks really good, i'm jealous :P/>/>. does it support multi-tasking and a suggestion: instead of using ascii characters to border the windows, have the window a certain background colour so it doesnt need a border at all
It does support multitasking, though not perfectly yet. The borders are the way they are to prevent ambiguities in window borders. There are some cases where it might be difficult to tell where one window begins and another ends without them.
808 posts
Posted 29 October 2012 - 09:52 PM
Very cool OS. You might consider making use of the mouse_drag even to allow people to drag windows to move them or drag their corners to resize. Also it'd be nice if windows stayed open until you closed them even if the process finished. That way if i, for example, misstype a pastebin command i can still see the errors.
8543 posts
Posted 30 October 2012 - 12:24 AM
Very cool OS. You might consider making use of the mouse_drag even to allow people to drag windows to move them or drag their corners to resize. Also it'd be nice if windows stayed open until you closed them even if the process finished. That way if i, for example, misstype a pastebin command i can still see the errors.
Mouse drag for window movement and resizing is planned.
I don't think leaving windows of dead processes open would be a good thing overall. There are certain cases (like your example) where it would be nice to see the output after the program ends, but I think that the annoyance of other programs not closing when they should outweighs it. For instance, it would be very annoying to exit the edit program using its internal menu and then also have to close the window manually. It would also be a departure from the way most window managers work, in my experience.
Edit: I know it is a bit more typing, but I think it would make sense to run that command in a shell window rather than directly. I know I usually do something else with the file after I've fetched something from pastebin, so having the shell already open would be more convenient in that case.
Second edit:
I did notice that the mouse_scroll event x and y values are not adjusted like they are with mouse_click when I was messing around with events.
This should be fixed. Re-run the installer and you should receive the update. Let me know if it gives you any trouble.
You might consider making use of the mouse_drag even to allow people to drag windows to move them or drag their corners to resize.
Implemented. Drag the title bar of a window (except the _MX controls) to move it, drag the lower-right corner to resize. Re-run the installer to receive the updated version with these changes.
8543 posts
Posted 30 October 2012 - 04:00 AM
Apologies for the double-post. The installer has been updated (still at the same pastebin location) to include a preset for the paint program's window. The interface for the paint program requires a certain amount of space or it will crash, causing it to not work in LyqydOS. It now functions, but the color palette (showing currently chosen colors) is cut off, unfortunately. I believe all colors are still visible for choosing, however.
After updating to the new installer, if you do not wish to keep your other window settings, simply run this command
outside of LyqydOS before running the installer:
rm .lyqwin
If you do wish to keep your window settings, you will need to edit the .lyqwin file
outside of LyqydOS and add the following line:
1,1,19,9,true,rom/programs/color/paint
When using the paint program, do not un-maximize it, as it may crash if you do so.
992 posts
Posted 30 October 2012 - 09:33 AM
Found another bug
sending a number with decimal to a term.setCursorPos() causes program and window to crash took me ages to find this little bug.
example on normal computer
term.setCursorPos(1.1,1.1) will work fine
do the same in your OS and it crashes
I have added math.ceil() to My program as a work around for this It is probably better programing anyway to round it.
was a real pain in the *** as it ran fine on my computer then crashes in the OS then ran fine after i resizes and after placing 20 ish prints I tracked it down to a term.setCurosrPos() is a draw function.
[EDIT] another bug
scrolling causes crash when no windows are open
Started with a clean install and it gives error
procman:541: attempt to index ? (a nil value)
relevant section of code
540 elseif event[1] == "mouse_scroll" then
541 event[3] = event[3] - processTable[process.focusWindow].window.x
542 event[4] = event[4] - processTable[process.focusWindow].window.y
543 if event[3] > 0 and event[3] < processTable[process.focusWindow].window.w - 1 and event[4] > 0 and event[4] < processTable[process.focusWindow].window.h - 1 then
544 resumeProcess(process.focusWindow, event)
545 end
546 else
I think it is because there is no focused window at the time causing the request from processTable[] to fail
8543 posts
Posted 30 October 2012 - 02:52 PM
Thanks for the reports! I'll make sure to match the actual behavior for setCursorPos when I fix that one to prevent surprising cursor placements. The scrolling bug is why I shouldn't implement new features late in the evening! I'll roll out a quick fix for that tonight. Thanks again!
8543 posts
Posted 31 October 2012 - 05:04 AM
Turns out, the actual setCursorPos function floors it (rather than cieling-ing it), so the windowing stuff has been updated to reflect that, as well as to not allow cursor position changes to non-number values. I also added a couple of checks to fix the scrolling (and probably dragging was also affected, fixed it as well if it was) bug when no windows were open. Update from the installer to receive these bug fixes. Thanks again for the bug reports!
122 posts
Posted 16 November 2012 - 02:58 AM
nice work, dude, really!
even if its more a window anager than an OS :P/>/> still nice
8543 posts
Posted 16 November 2012 - 04:59 AM
True, at this stage, it is more of a window manager than anything else. The set of planned features (including better event filtering) will push it further into the realm of a full-fledged operating system.
116 posts
Posted 16 November 2012 - 02:54 PM
Some ideas:
-Partitioning BIOS or Startup script.
-Disk-boot other operating systems.
-All color with little to no need for terminals (graphical file browser)
8543 posts
Posted 16 November 2012 - 04:03 PM
- Not entirely sure what you mean by this, or how it would be a useful thing.
- Not entirely sure what you mean by this.
- Apps designed for LyqydOS are in the pipeline, but all portions of it are planned to have backwards compatibility with non-advanced computers.
15 posts
Posted 08 December 2012 - 10:47 AM
This looks amazing.
I was trying to do the same thing but with colored windows etc.
I'm going to try to add that to tlyqydos.
10/10 would download again
30 posts
Location
Brazil
Posted 10 December 2012 - 03:29 PM
Absolutely amazing!
We don't need useless door programs! We need things like LyqydOS!
730 posts
Location
London, UK
Posted 10 December 2012 - 09:08 PM
Hadn't seen this - awesome work.
30 posts
Location
Brazil
Posted 11 December 2012 - 08:47 AM
I think I found some glitches.
1. Resizing windows is difficult.
2. It crashes if you open the startup/start program.
3. If stops behaving properly when you type "cd (something)" in the Run Program box.
I also think that you should add a fullscreen mode.
Excellent program btw :)/>
1243 posts
Location
Indiana, United States
Posted 11 December 2012 - 09:50 AM
Difficulty is a bug? More like a flaw in design, no?
8543 posts
Posted 11 December 2012 - 11:38 AM
I think I found some glitches.
1. Resizing windows is difficult.
2. It crashes if you open the startup/start program.
3. If stops behaving properly when you type "cd (something)" in the Run Program box.
I'm not really sure what you mean by difficult. It's a little quirky right now as far as the window border is concerned, but it's pretty easy for me. Can you provide more details? :-)
Hmm. Are you trying to run the start program from the run program box? If not, I'm not sure what you meant. The start program isn't meant to be used that way, but I'll take a look at making it not break things at least.
What does it do when you run cd from the run program box? I'm guessing it has then changed directory (as would be expected), but "behaving properly" could go either way at that point. Does it do something besides just act like it's set to whatever directory you cd'd to?
30 posts
Location
Brazil
Posted 11 December 2012 - 01:54 PM
I think I found some glitches.
1. Resizing windows is difficult.
2. It crashes if you open the startup/start program.
3. If stops behaving properly when you type "cd (something)" in the Run Program box.
I'm not really sure what you mean by difficult. It's a little quirky right now as far as the window border is concerned, but it's pretty easy for me. Can you provide more details? :-)
Hmm. Are you trying to run the start program from the run program box? If not, I'm not sure what you meant. The start program isn't meant to be used that way, but I'll take a look at making it not break things at least.
What does it do when you run cd from the run program box? I'm guessing it has then changed directory (as would be expected), but "behaving properly" could go either way at that point. Does it do something besides just act like it's set to whatever directory you cd'd to?
Resizing isn't difficult, but the window borders get stuck in some lines when I try to resize vertically.
When I type cd in the Run Program box, it just stops working. I can type into the Run Program box, but it won't do anything when I press enter. (It probably can't find the programs)
I know these aren't relevant issues, but fixing them would make your OS more stable.
8543 posts
Posted 29 December 2012 - 09:47 PM
Okay, I've fixed the bugs Leonardoas pointed out; the resizing glitch is gone, the cd-command glitch is gone, and I can't get the start program to crash anything. I also fixed a drawing bug that affected edit and any other programs that use cursor X positions <1. The updated version is available through the installer (via the pastebin link in the first post), or directly from my github, as usual.
235 posts
Location
/dev/earth1aus5
Posted 16 January 2013 - 01:24 PM
I just looked at the source code… I think I'm gonna have a lie down now……….
8543 posts
Posted 17 January 2013 - 07:55 AM
I just looked at the source code… I think I'm gonna have a lie down now……….
Heh. It takes a fair bit of code to get proper windowing behavior put together!
Side note: I think I figured out what was meant with the "startup/start program" crashing things, so I'll see if that is the problem and fix it if I am correct about what it was.
451 posts
Location
The left part of this post
Posted 17 January 2013 - 09:28 AM
use pixels instead of text is more intuitive
2217 posts
Location
3232235883
Posted 17 January 2013 - 09:55 AM
use pixels instead of text is more intuitive
uhh, what?
235 posts
Location
/dev/earth1aus5
Posted 17 January 2013 - 01:25 PM
Heh. It takes a fair bit of code to get proper windowing behavior put together!
What's with all that crazy "create a new windowcompositor and then rawset some of its variables to ones I've defined" stuff?
My PoC windowing "OS" (see sig) does that with a fair bit less complexity. I think. Maybe.
8543 posts
Posted 17 January 2013 - 02:46 PM
use pixels instead of text is more intuitive
I find the interface to be relatively intuitive as it is. I don't really want to add a whole bunch of code that makes this only usable on advanced computers, so I think I'll stick with the text-based window borders and such for now.
Heh. It takes a fair bit of code to get proper windowing behavior put together!
What's with all that crazy "create a new windowcompositor and then rawset some of its variables to ones I've defined" stuff?
My PoC windowing "OS" (see sig) does that with a fair bit less complexity. I think. Maybe.
Well, I could probably set those values directly rather than using rawset (I'm used to using rawset from a few versions ago), but those couple of lines there get some of the values into the process API's scope rather than restricting them to procman's scope, so that the window manager/OS/whatnot can be interacted with by other programs–this is what the included "start" program uses to create new windows.
8543 posts
Posted 21 January 2013 - 04:44 PM
LyqydOS has been updated with some slightly better multi-tasking (fixes a couple minor issues), and an optimization in the compositing system that should significantly reduce flicker in games. There are further updates I am working on that finally add a window manipulation API so that programs can set their own window caption, size, position, minimum and maximum size, and a few other things. A feature that's a bit further out is a "fullscreen" mode that games written with LyqydOS support will be able to take advantage of, that sacrifices certain windowing features to gain faster screen manipulation.
992 posts
Posted 21 January 2013 - 09:04 PM
LyqydOS has been updated with some slightly better multi-tasking (fixes a couple minor issues), and an optimization in the compositing system that should significantly reduce flicker in games. There are further updates I am working on that finally add a window manipulation API so that programs can set their own window caption, size, position, minimum and maximum size, and a few other things. A feature that's a bit further out is a "fullscreen" mode that games written with LyqydOS support will be able to take advantage of, that sacrifices certain windowing features to gain faster screen manipulation.
Great job on the optimization it is running much quicker than before very impressive. A windows api will be great as well and will be installed into mouseFB when available.
799 posts
Location
Land of Meh
Posted 22 January 2013 - 05:22 AM
This is really cool. Love it! :D/>
It did crash on me though :(/> I opened a shell window, resized the window then tried to download a file off Pastebin. I got the error procman: 399: attempt to index ? (a boolean value).
EDIT: woot this is my 200th post! Coder now :D/>
8543 posts
Posted 22 January 2013 - 06:36 AM
Okay, I think I know what caused that error and will fix it tonight, as soon as I get home. Not sure how it snuck in there!
235 posts
Location
/dev/earth1aus5
Posted 22 January 2013 - 12:16 PM
Hmm… I started an instance of "shell", resized it, maximized it, windowed it, and then tried to click the "_" button. That made it crash…
8543 posts
Posted 22 January 2013 - 04:25 PM
Okay, the bugs reported by GravityScore and RunasSudo should now both be fixed. Run the installer program again to grab the latest version. Thanks for the reports!
5 posts
Posted 27 January 2013 - 04:32 PM
I seem to be having troubles running a personal item-sorting-and-counting program under LyqydOS. It utilizes Redpower (item transport), Factorization (barrels, item storage) and Misc Peripherals (CC item detection).
The odd thing is, it runs in the shell without a problem. The issue arises when I'm trying to run it in a window of its own.
sorting.lua:
Spoiler
function sort()
print("Starting to sort!")
sorter = peripheral.wrap("bottom") -- Interactive Sorter
fs.makeDir("items") -- Computer-global data store
while(true) do
event, ccid, qty = os.pullEventRaw() -- Waits for item to enter sorter
if(event == "isort_item") then -- The actual event name for when an item enters sorter
print("Recieved "..ccid..": "..qty.." item(s)") -- Debug
sorter.sort(2) -- Sends off the recieved item
sav = false
stoID = 0
while(not sav) do -- While the info on the received item hasn't been saved
stoID = stoID + 1
if(not fs.exists("items/i"..stoID)) then
print("Storage ID "..stoID.." is empty.") -- This spot isn't containing anything.
getLock("items/i"..stoID)
file = fs.open("items/i"..stoID,"w")
file.writeLine(ccid)
file.writeLine("Unlabeled item")
file.writeLine(qty)
file.close()
releaseLock("items/i"..stoID)
print("CCID "..ccid.." saved.")
sav = true
else
getLock("items/i"..stoID)
file = fs.open("items/i"..stoID,"r")
if(ccid == tonumber(file.readLine())) then
print("CCID "..ccid.." found in Storage ID "..stoID..".") -- This spot is containing the same type of item.
iName = file.readLine()
iQty = tonumber(file.readLine()) + qty
file.close()
file = fs.open("items/i"..stoID,"w")
file.writeLine(ccid)
file.writeLine(iName)
file.writeLine(iQty)
sav = true
print("CCID "..ccid.." updated.")
end
file.close()
releaseLock("items/i"..stoID)
end
end
print("Saved in i"..stoID)
end
end
end
function getLock(file) -- Make sure that no other program is editing this while we're trying to work on it
while(fs.exists(file..".lck")) do
sleep(1)
end
lck = fs.open(file..".lck","w")
lck.writeLine("Lock")
lck.close()
end
function releaseLock(file) -- We're done with the file, let another program have it
if(fs.exists(file..".lck")) then
fs.delete(file..".lck")
end
end
sort() -- Kick it off
However, when I launch
> sorting.lua in the LyqydOS Menu, it'll take one item stack, save it, and freeze the entire computer. It also freezes as soon as I try to resize the window.
I just don't know what's going on…
EDIT: Nevermind - seems I'm not allowed to be using os.pullEventRaw, am I? I switched to os.pullEvent("isort_item") and it's working just fine now…
8543 posts
Posted 27 January 2013 - 04:46 PM
I will try to set up a test setup to check this out tomorrow. I'm not sure offhand what would be causing it. Definitely intriguing that it would be exhibiting such behavior, though.
8543 posts
Posted 30 January 2013 - 04:53 AM
Replying to your edit (which I just saw), pullEvent vs. pullEventRaw should make no difference, and in my testing, it didn't, if I recall correctly. I have the nagging feeling that there is an underlying problem that needs to be taken care of, I'm just not entirely certain what it is. I've got a few ideas to try, though. I'll let you know if I find anything interesting.
249 posts
Location
In the universe
Posted 30 January 2013 - 12:49 PM
Bug: When you minimize a window, if the cursor was blinking it will still blink after minimizing
When you resize the run box, it will read until its default limit, not to its resized version
8543 posts
Posted 30 January 2013 - 02:31 PM
The first is an interesting one. I'll see what I can do about that tonight. Should have a fix up for you in a couple hours.
The second one is likely to be fixed by disabling resizing the run box and other menu-type windows, whenever I get around to it. ;)/>
8543 posts
Posted 30 January 2013 - 07:28 PM
Bug: When you minimize a window, if the cursor was blinking it will still blink after minimizing
When you resize the run box, it will read until its default limit, not to its resized version
These are both fixed. Re-run the installer or manually re-download to receive the latest version. :)/>
139 posts
Location
Vilnius,Lithuania
Posted 09 February 2013 - 03:06 AM
Holy [Crap].
[This is a family-friendly forum. Let's keep the obscenities to a minimum. -L]
Edited on 09 February 2013 - 10:04 AM
8543 posts
Posted 11 March 2013 - 11:57 AM
I expanded the window decoration functionality today to include text color and background color, so this sort of thing is possible now:
Spoiler
This change isn't ready for release, but I hope to push it out soon. :)/>
28 posts
Posted 11 March 2013 - 12:04 PM
Looks awesome, mate.
92 posts
Posted 14 March 2013 - 04:34 PM
Wow, I really like this, very well built…
Quick feature request. Could you make it so that left clicking on the "Lyqyd Menu" lists "commonly used" programs stored in..
I dunno, /LyqydOS/common-programs? And having right click do the current "run program" behavior? That would have me sold for sure.
And a question : Interface API? I'd love to write programs for LyqydOS.
Anyways, I like it, and I'll be sure to install it on my Adv. Terms. :)/>
~Sora
2151 posts
Location
Auckland, New Zealand
Posted 14 March 2013 - 07:06 PM
I expanded the window decoration functionality today to include text color and background color, so this sort of thing is possible now:
Spoiler
This change isn't ready for release, but I hope to push it out soon. :)/>
Hmmmm :P/>
8543 posts
Posted 15 March 2013 - 03:44 AM
Wow, I really like this, very well built…
Quick feature request. Could you make it so that left clicking on the "Lyqyd Menu" lists "commonly used" programs stored in..
I dunno, /LyqydOS/common-programs? And having right click do the current "run program" behavior? That would have me sold for sure.
And a question : Interface API? I'd love to write programs for LyqydOS.
Anyways, I like it, and I'll be sure to install it on my Adv. Terms. :)/>
~Sora
Wow, thanks for the support! That's definitely an interesting feature request. I'm thinking it would be a menu that was automatically generated. It would start out with the shell and the Lua prompt, I think. And I think I'd have the bottom entry in the list open the run program dialog directly (so no need to cancel the menu and right-click if what you want isn't there). This is a definite possibility.
I expanded the window decoration functionality today to include text color and background color, so this sort of thing is possible now:
Spoiler
This change isn't ready for release, but I hope to push it out soon. :)/>
Hmmmm :P/>
Heh. This has been in the works for a while, though admittedly it was pushed up the priority list due to the relative success of more "graphical" OSs such as NDFJay's and kornichen's (and more recently, yours, I suppose). It seems prettiness is just as important among a bunch of coders as it is amongst the general public! ;)/>
871 posts
Posted 15 March 2013 - 05:36 AM
worth noting that what's being added is color support, rather than a dependency on advanced computers. In survival mode, this is a notable benefit.
8543 posts
Posted 15 March 2013 - 05:39 AM
Gopher is correct. The additional functionality is adding customizable text and background colors to the window decorations. Window contents already fully support color. Backwards compatibility for use with non-advanced computers is a priority, so all features of this OS are designed to degrade as gracefully as possible.
139 posts
Location
Vilnius,Lithuania
Posted 15 March 2013 - 08:22 AM
This OS + Nice Desktop = Windows XP
Else
This OS + [Nothing] = Linux
Else
This OS + (Nice Desktop + Boot Logo + Colors + Apple) = Mac OS X
I'm a Mathematics Genius :P/>
645 posts
Location
'Merica
Posted 15 March 2013 - 04:48 PM
Lol, nice OS, but how the hell do you have almost 300 fps!!! Dude do you got like 32 gbs of RAM?
8543 posts
Posted 15 March 2013 - 05:59 PM
Lol, nice OS, but how the hell do you have almost 300 fps!!! Dude do you got like 32 gbs of RAM?
No, only 16GB… for now. I have a couple of 9600GT cards in SLi, which helps, though they are starting to show their age.
92 posts
Posted 04 April 2013 - 09:47 AM
Another question, since I think this is an interesting subject.
Does your scheduler support giving the processes a nice value?
I bet that would be a nice thing to have within the scheduler.
(For those who do not know what a nice value is, it is basically a representation of the willingness of the process to give up CPU time to other processes.)
8543 posts
Posted 04 April 2013 - 02:54 PM
Nope, it doesn't support priorities or "nice values" or whatnot. It might be a cool feature to have, but I can't see it being really worth it, given that this is an event-driven system. Instead of processor time slots being a precious resource, coroutines spend most of their time idle anyhow. I had thought about tracking the amount of time coroutines had run for, but they run and yield again before any of the time sources we have access to have changed value.
40 posts
Posted 08 April 2013 - 11:29 AM
I Like How It's Like Windows Just A Back And White Display
1029 posts
Location
Missouri, United States, America, Earth, Solar System, Milky Way, Universe 42B, Life Street, Multiverse, 4th Dimension
Posted 18 May 2013 - 06:34 PM
I found some bugs.
1. If you say no to run the os on startup, the start won't work.
2. If you try to run startup it freezes. (lol, I was trying to run lyquidOS within lyquidOS :3
8543 posts
Posted 21 May 2013 - 03:21 PM
I'll check those two out soon, thanks.
620 posts
Location
Holland
Posted 25 May 2013 - 02:12 AM
I don't think leaving windows of dead processes open would be a good thing overall. There are certain cases (like your example) where it would be nice to see the output after the program ends, but I think that the annoyance of other programs not closing when they should outweighs it. For instance, it would be very annoying to exit the edit program using its internal menu and then also have to close the window manually. It would also be a departure from the way most window managers work, in my experience.
Maybe let people put & or another symbol after the program name and arguments to keep it open. Or maybe a checkbox?
8543 posts
Posted 25 May 2013 - 03:38 AM
Could use a quick utility to accomplish it, of course:
pcall(shell.run, table.concat({...}, " "))
os.pullEvent("key")
You'd use that from the run prompt and pass the command you actually wanted to run as arguments. It should run the program you pass it, safely ride out any crashes or errors, then wait for a key press before ending (and therefore closing the window). I can build this in as a program in future versions.
620 posts
Location
Holland
Posted 25 May 2013 - 07:19 AM
Yeh that's a bit what I was thinking too
82 posts
Posted 25 May 2013 - 07:57 AM
Also lyqyd i had a idea maybe if you have a color specific code for advanced computers and non advanced computers:
if not term.isColor() then
nonColorMode
else
colorMode()
end
Thats just what i had in mind
8543 posts
Posted 25 May 2013 - 03:34 PM
Also lyqyd i had a idea maybe if you have a color specific code for advanced computers and non advanced computers:
if not term.isColor() then
nonColorMode
else
colorMode()
end
Thats just what i had in mind
There are only two places in LyqydOS that make isColor() checks. Both of them do exactly the same thing:
if process.windowCompositor.target.isColor() then
pTable.window:setType("standard")
pTable.window:setDecorations("pretty")
end
:)/>
8543 posts
Posted 22 June 2013 - 03:18 AM
"Pretty" mode is officially rolled out! On advanced computers, LyqydOS will look a bit like the below image. On normal computers, it will continue to use the same text-based window decorations. I'm thinking about adding an option to use the text-based window decorations on the advanced computers as well, for those users who like the simple white-on-black appearance, but want the snazzy mouse-based features.
Spoiler
467 posts
Location
Van Diemen's Land
Posted 22 June 2013 - 03:42 AM
Neat. I like it. :)/>
8543 posts
Posted 30 June 2013 - 02:06 AM
I just pushed out an update that refactors a number of things in the code to make it easier to add interesting features down the road. All of the window interactions involving temporary windows (such as the action menu for a window, or the run program dialog box) are now done with a single service that's started when the process manager starts. This means that the system won't eat an extra process ID for every process the user starts.
Also new in this release is the debug utility that superaxander suggested. The usage is simply to prepend "debug " to the command/program you want to try to run. This will hold open the window it runs in until after a key is pressed once the program has stopped running. That allows a developer to view error messages their program throws under LyqydOS.
I've updated the other two screenshots in the original post to reflect the new appearance and features, including a shot of the "ps" program in action. You can see the process ID and the program's path for each running process. Note that not every process has a window (lws, for example) and that the lua window in that shot is minimized.
Most users who have the installer file still should be able to update simply by re-running it, as it will fetch a new copy of the installer before attempting to install.
620 posts
Location
Holland
Posted 30 June 2013 - 05:57 AM
I just pushed out an update that refactors a number of things in the code to make it easier to add interesting features down the road. All of the window interactions involving temporary windows (such as the action menu for a window, or the run program dialog box) are now done with a single service that's started when the process manager starts. This means that the system won't eat an extra process ID for every process the user starts.
Also new in this release is the debug utility that superaxander suggested. The usage is simply to prepend "debug " to the command/program you want to try to run. This will hold open the window it runs in until after a key is pressed once the program has stopped running. That allows a developer to view error messages their program throws under LyqydOS.
I've updated the other two screenshots in the original post to reflect the new appearance and features, including a shot of the "ps" program in action. You can see the process ID and the program's path for each running process. Note that not every process has a window (lws, for example) and that the lua window in that shot is minimized.
Most users who have the installer file still should be able to update simply by re-running it, as it will fetch a new copy of the installer before attempting to install.
Nice! Maybe it'll become even better now!
8543 posts
Posted 20 July 2013 - 03:28 AM
I've updated with a minor change behind the scenes. The desktop layer now is its own process, which is automatically started by the process manager. This will allow for more interesting functionality in the future, and will make possibilities such as customizable desktops (perhaps with icons) much easier to implement as a desktop replacement. I don't think I'll be adding that sort of thing to the main download of LyqydOS, but I may look into creating a downloadable alternative that adds those sorts of features, as they do seem to be desired somewhat.
467 posts
Location
Van Diemen's Land
Posted 21 July 2013 - 12:41 AM
Neat. I like it :D/>
Like how you can have multiple windows and how you can resize, minimize and all that. Nice job.
P.S. Don't worry, I won't steal your ideas or work. Have fun and happy coding.
32 posts
Posted 27 July 2013 - 06:11 PM
Can I just ask what is LyqydOS exactly because it just looks like the original CraftOS she'll with a new gui
8543 posts
Posted 28 July 2013 - 12:34 AM
Download it and try it out! It adds a full windowed, multitasking environment. If you use it on an advanced machine, you can drag windows to move or resize them, as well as minimize, maximize and close them. All of the usual programs work in LyqydOS through a little bit of magic, so any programs you've written are compatible. It's also usable on normal machines, and the key commands are listed in the first post.
92 posts
Posted 24 August 2013 - 02:06 PM
Thanks Lyqyd! But there is 1 problem: Say I open GravityScores Lua IDE, having never opened it before. This happens, and it is to do with default window size:
http://prntscr.com/1n5x4q
8543 posts
Posted 24 August 2013 - 02:19 PM
Hmm, that is unfortunate. Perhaps a maximized start utility would be useful. In that specific case, you are able to resize the window, so if you resize/maximize it, then close the window, the next time it starts, it will use the new position and will draw correctly. I'll look at what the actual error means and see if there's something I need to fix on my end. Thanks!
Edit: Turns out I had incorrectly placed some Y-bounding checks! I fixed that and now luaide seems to start up fine on any resolution. Obviously, since it doesn't handle window_resize events, it doesn't redraw immediately, so it's probably best to relaunch it after the initial resize.
107 posts
Posted 08 September 2013 - 05:36 PM
First of all, this is a really neat piece of work! I played around a bit with the event handling, and I like how the individual windows all get all the events whether they are active or not, but the mouse events only go to the window they were clicked in, translated to their location. Very nicely put together, sir.
Couple of things…
1. The "-" button seems to be the default "Crash the OS" button.
2. When you press Enter with nothing typed in the Run Program window, the window goes away but won't come back again.
3. Monitor_touch events still get sent to all open windows. Probably won't be an issue until you support multiple monitors… When might that be?
Again, really nice piece of work here, Lyqyd. I'm duly impressed.
8543 posts
Posted 08 September 2013 - 06:28 PM
Thanks! I'm glad you like it!
I've fixed the minimzation bug as well as the empty Run Program window bug. If you downloaded via the installer, running the installer again should fetch the new versions of the files.
I'm not really sure when I'll put together better monitor support. Ideally, I'd like to be able to transport windows to other monitors and have them be clickable on them. Some sort of on-screen keyboard may be possible, I suppose. This feature is a long way off at this point. I'm not even sure what a better way of filtering monitor_touch events would be. Obviously, if they occur on a window placed on the monitor, they'd be sent only to that window's process. If they occurred on other areas of the screen, there'd be no good easy way to figure out which process should receive them, so every process gets them.
Thanks for the interest!
44 posts
Location
Belarus
Posted 12 September 2013 - 05:51 AM
The great idea and interesting realization! The only bad thing is that you use functional code style. Why not to use OOP? I've broken my brain while trying to understand your code.
8543 posts
Posted 12 September 2013 - 11:00 AM
If anything, it's written imperatively, not functionally. "Functional" programming has a specific definition that doesn't simply mean, "uses functions". OOP styling isn't always the right tool. I try to use the correct tool for the job wherever possible. A couple of my APIs could be somewhat described as "OOP", at least as much as Lua can be OOP. I am not someone who tries to use tools where they don't make sense simply because they're "cooler".
I'm curious as to where improvements could be made by changing the way the code is written. Also, if you have any questions about the code, I'd be glad to answer them.
44 posts
Location
Belarus
Posted 12 September 2013 - 12:10 PM
If anything, it's written imperatively, not functionally. "Functional" programming has a specific definition that doesn't simply mean, "uses functions". OOP styling isn't always the right tool. I try to use the correct tool for the job wherever possible. A couple of my APIs could be somewhat described as "OOP", at least as much as Lua can be OOP. I am not someone who tries to use tools where they don't make sense simply because they're "cooler". I'm curious as to where improvements could be made by changing the way the code is written. Also, if you have any questions about the code, I'd be glad to answer them.
Maybe you are right. It's was just my opinion. I think that "OOP-style" allows you to order you code by its function in more pretty way than the APIs. And such code would be easier to read of course. But program is not a book, it is for working not reading! And your OS works just great! To be honest you code gave me a lot of ideas about terminal emulator realization in my OS. But I still have some questions about it's interraction with monitors. If I will be able to formulate some question I will write you.
44 posts
Location
Belarus
Posted 17 September 2013 - 05:49 AM
I think that the greatest achievement of this OS is that it can be used with standard computers! There is not many OSes here that support such feature. I like this feature very much!
128 posts
Location
South Africa
Posted 24 September 2013 - 12:37 PM
I can't use the installer for some reason….
startup:49: attemp to index ? (a nil value)
Have I done something wrong or?
8543 posts
Posted 24 September 2013 - 01:59 PM
You'll have to have the http API enabled in order to use the installer. You can change the setting in your configuration file. If you're playing on a server, you'll have to ask the admin to enable it. Otherwise, you can download and install the relevant files directly from the github repository.
162 posts
Posted 17 November 2013 - 08:32 AM
I would love to be there a big advanced monitor version
2 posts
Posted 18 November 2013 - 03:57 PM
I guess this is the best programming going, but mostly like the NDF-Jays but now its finished but you can add abit of your own programs in this just for tips. I'm sorry if my Engish is bad.
26 posts
Location
Nether
Posted 01 December 2013 - 06:05 PM
Any plans for multi-user/login support. Integration with LyqydNet?
How about something like this. You have a login server, which acts like a domain controller of sorts. You can login to LyqydOS with a network un/pw. Then add in a file server, email client, and such.
8543 posts
Posted 01 December 2013 - 06:23 PM
I would love to be there a big advanced monitor version
I do plan to eventually have better support for attached peripherals, including monitors. This is pretty far off at this point, though.
I guess this is the best programming going, but mostly like the NDF-Jays but now its finished but you can add abit of your own programs in this just for tips. I'm sorry if my Engish is bad.
Thanks! I think.
Any plans for multi-user/login support. Integration with LyqydNet?
How about something like this. You have a login server, which acts like a domain controller of sorts. You can login to LyqydOS with a network un/pw. Then add in a file server, email client, and such.
LyqydNet integration is planned, following a vast overhaul of the LyqydNet system that I'm working on right now. User accounts are somewhat unlikely to happen. There isn't really a satisfactory way to achieve filesystem permissions, so I'm unwilling to try to go too far down that road.
26 posts
Location
Nether
Posted 01 December 2013 - 06:29 PM
Lack of file permissions are a limitation, but it would be nice to be able to set up integrated email and profile info based on who logged into the server. I'm not thinking mega security here, more a profiling system.
Think integrated email, chat, home drive stored on a fileserver capability.
8543 posts
Posted 01 December 2013 - 06:42 PM
That's not a bad idea, though I'm not sure it would need to be built in to LyqydOS. A few clever programs could set something like that up, and best of all, it would be able to be OS-independent. If it used rednet calls, LyqydNet (if present) would be able to transport the network communications seamlessly. I might poke at an idea of that sort at some point, but between my current projects, I've got more than enough to keep me occupied, so no promises!
162 posts
Posted 12 December 2013 - 04:26 PM
Also, if you wanna do hardcore stuff(not saying other stuff isn't) do a virtual harddrive(just a light one) with integration with your OS to make diff things, like as I posted before for a ZIP archiver, this is the same but mountable, the other just extractable. Instead of having 1000 disks, you have 1 with 100 disk drives. At this point, it won't be easy at all.
1. Your GUI is not that good in terms of folder and file explorer. A little change to the GUI and it would get done
2. You would need time to search and think about this
Now it's in your hands to think if this is good enough to make and will make you have a better OS. Have a good time!
2151 posts
Location
Auckland, New Zealand
Posted 13 December 2013 - 04:05 AM
1. Your GUI is not that good in terms of folder and file explorer. A little change to the GUI and it would get done 2. You would need time to search and think about this Now it's in your hands to think if this is good enough to make and will make you have a better OS. Have a good time!
Lyqyd's OS isn't really meant to be a fully featured system, it's simply a way of having multiple programs open at once. You could download specific programs to do that.
One of the thing's I'm trying to do with my latest (not yet released) OS, OneOS, is do exactly what you've said. Packing in tons of useful programs, such as a file manager while being able to support multiple programs. Here's a quick screenshot.
8543 posts
Posted 13 December 2013 - 10:52 AM
LyqydOS is just starting to come into its own with some recently introduced changes that haven't been pushed to the main release yet (such as integrated modem management and better event hooking for services). Features such as an included alternate shell, a file browser, and quite a few other features are planned for eventual inclusion, either by default or easily added on in the installation process or via an included package manager. You can see the current state of the code on the develop branch on my github. The package manager is in a repository called CC-packman if I recall correctly.
It is meant to be a fully featured system, I am simply taking my time to make a good foundation to base it on before I try to go for all the shiny stuff.
162 posts
Posted 14 December 2013 - 10:46 AM
LyqydOS is just starting to come into its own with some recently introduced changes that haven't been pushed to the main release yet (such as integrated modem management and better event hooking for services). Features such as an included alternate shell, a file browser, and quite a few other features are planned for eventual inclusion, either by default or easily added on in the installation process or via an included package manager. You can see the current state of the code on the develop branch on my github. The package manager is in a repository called CC-packman if I recall correctly.
It is meant to be a fully featured system, I am simply taking my time to make a good foundation to base it on before I try to go for all the shiny stuff.
True. Good job. Also, try get CC-Forums admins to help u in it. Again, awesome job!
1140 posts
Location
Kaunas, Lithuania
Posted 14 December 2013 - 11:27 AM
Also, try get CC-Forums admins to help u in it. Again, awesome job!
Lol :D/>, he is a CC-Forums Admin
313 posts
Location
3 Dimensions -> Void -> Universe -> Milky Way -> Cygnus Arm -> Sol -> Earth -> Nevada -> Area 51
Posted 14 December 2013 - 01:51 PM
Cool :D/>
500 posts
Posted 15 December 2013 - 11:14 AM
Is there any particular reason you chose to use strings of characters that represent colors rather than tables of the colors themselves?
8543 posts
Posted 15 December 2013 - 02:47 PM
Yep! That allows me to optimize screen writes by finding the largest contiguously colored chunk of the current line and write it all at once. Between that and not redrawing unchanged portions of the screen, the upshot is that there are usually very few writes that need to be made on each yield, which saves bandwidth and helps to reduce flicker and slowness.
500 posts
Posted 15 December 2013 - 02:57 PM
Yep! That allows me to optimize screen writes by finding the largest contiguously colored chunk of the current line and write it all at once. Between that and not redrawing unchanged portions of the screen, the upshot is that there are usually very few writes that need to be made on each yield, which saves bandwidth and helps to reduce flicker and slowness.
I see what benefits it has, but couldn't the same benefits be exercised if you simply stored the color as a string of the number rather than a hex code? Ex: tostring(colors.black). That way you wouldn't lose efficiency when you have to convert the hex code into decimal and then raise 2 to the power of it (which, correct me if I'm wrong, takes a good bit of processing power, especially if 2 is being raised to 10, 11, 12, etc.) because you could just use tonumber(color).
Edit: So like you would have "512 512 512 8 1 " rather than "fffab23"
Edited on 15 December 2013 - 02:42 PM
8543 posts
Posted 15 December 2013 - 03:43 PM
That would either require a change to tables of tables of characters (as opposed to the current table of lines), or it would require a lot more work on the parts of the code that put the tables together, since I couldn't then overwrite the strings on a character-by-character replacement basis, I'd have to parse out where each color identifier was and handle it separately. Exponentiation doesn't seem to me to be terribly slow, so doing two of those operations per write isn't too hard on things. I think it would be slower to try to walk the table to find the length of the largest contiguous chunk, and I think it would be slower to have to parse out a string of numbers to try to find where to overwrite it. If I were simply overwriting the entire screen on every yield, it might be easier to use a table of tables of characters/numbers, of course.
500 posts
Posted 15 December 2013 - 04:51 PM
That would either require a change to tables of tables of characters (as opposed to the current table of lines), or it would require a lot more work on the parts of the code that put the tables together, since I couldn't then overwrite the strings on a character-by-character replacement basis, I'd have to parse out where each color identifier was and handle it separately. Exponentiation doesn't seem to me to be terribly slow, so doing two of those operations per write isn't too hard on things. I think it would be slower to try to walk the table to find the length of the largest contiguous chunk, and I think it would be slower to have to parse out a string of numbers to try to find where to overwrite it. If I were simply overwriting the entire screen on every yield, it might be easier to use a table of tables of characters/numbers, of course.
Ah, I see. Thanks for clearing that bit up for me :)/>.
799 posts
Location
Land of Meh
Posted 23 December 2013 - 04:33 AM
That way you wouldn't lose efficiency when you have to convert the hex code into decimal and then raise 2 to the power of it (which, correct me if I'm wrong, takes a good bit of processing power, especially if 2 is being raised to 10, 11, 12, etc.) because you could just use tonumber(color).
Edit: So like you would have "512 512 512 8 1 " rather than "fffab23"
Raising something to a power is easy for a computer. It's just a simple bit shift, which is probably one of the quickest function a computer could perform. You do need a basic understanding of binary to get this though. Tonnes of stuff on the web for that.
Say you want to raise 2 to the power of 8:
2 in binary is 0010. When you perform a bit shift, all you're doing is moving all the 1s in the binary number to the left a certain number of places. So if we do a bit shift of 1 on the number 2, we get 0100 (see how the 1 moved 1 place to the left?), which in decimal happens to be 4. A bit shift of 2 results in 1000, which happens to be 8. Bit shift of 3 is 0001 0000, which is 16, 0010 0000 is 64, 0100 0000 is 128. See the pattern? So to raise 2 to the power of 8, we just perform a bit shift of 7, giving us 0001 0000 0000, or 256. You can use a bit shift in CC Lua using the bit API. Just bit.blshift(2, 7) (which gives 256) or bit.brshift(256, 7) (which gives 2) for left and right shifts respectively.
Edited on 23 December 2013 - 12:04 PM
500 posts
Posted 23 December 2013 - 09:53 AM
That way you wouldn't lose efficiency when you have to convert the hex code into decimal and then raise 2 to the power of it (which, correct me if I'm wrong, takes a good bit of processing power, especially if 2 is being raised to 10, 11, 12, etc.) because you could just use tonumber(color).
Edit: So like you would have "512 512 512 8 1 " rather than "fffab23"
Raising something to a power is easy for a computer. It's just a simple bit shift, which is probably one of the quickest function a computer could perform. You do need a basic understanding of binary to get this though. Tonnes of stuff on the web for that.
Say you want to raise 2 to the power of 8:
2 in binary is 0010. When you perform a bit shift, all you're doing is moving all the 1s in the binary number to the left a certain number of places. So if we do a bit shift of 1 on the number 2, we get 0100 (see how the 1 moved 1 place to the left?), which in decimal happens to be 4. A bit shift of 2 results in 1000, which happens to be 8. Bit shift of 3 is 0001 0000, which is 16, 0010 0000 is 64, 0100 0000 is 128. See the pattern? So to raise 2 to the power of 8, we just perform a bit shift of 7, giving us 0001 0000 0000, or 256. You can perform a bit shift in lua using the operator << for a left bit shift (moving the 1s to the left), and >> for a right bit shift (moving the 1s to the right). You can use a bit shift in CC Lua using the bit API. Just bit.blshift(2, 7) (which gives 256) or bit.brshift(256, 7) (which gives 2) for left and right shifts respectively.
Haha, yeah I'm rather familiar with binary logic, but to raise something other than 2 to a number is more complicated, so I completely disregarded the fact that the base was 2 in this situation :P/>, thanks for the heads up :)/>.
892 posts
Location
Where you'd least expect it.
Posted 23 December 2013 - 12:59 PM
That way you wouldn't lose efficiency when you have to convert the hex code into decimal and then raise 2 to the power of it (which, correct me if I'm wrong, takes a good bit of processing power, especially if 2 is being raised to 10, 11, 12, etc.) because you could just use tonumber(color).
Edit: So like you would have "512 512 512 8 1 " rather than "fffab23"
Raising something to a power is easy for a computer. It's just a simple bit shift, which is probably one of the quickest function a computer could perform. You do need a basic understanding of binary to get this though. Tonnes of stuff on the web for that.
Say you want to raise 2 to the power of 8:
2 in binary is 0010. When you perform a bit shift, all you're doing is moving all the 1s in the binary number to the left a certain number of places. So if we do a bit shift of 1 on the number 2, we get 0100 (see how the 1 moved 1 place to the left?), which in decimal happens to be 4. A bit shift of 2 results in 1000, which happens to be 8. Bit shift of 3 is 0001 0000, which is 16, 0010 0000 is 64, 0100 0000 is 128. See the pattern? So to raise 2 to the power of 8, we just perform a bit shift of 7, giving us 0001 0000 0000, or 256. You can perform a bit shift in
lua using the operator << for a left bit shift (moving the 1s to the left), and >> for a right bit shift (moving the 1s to the right). You can use a bit shift in CC Lua using the bit API. Just bit.blshift(2, 7) (which gives 256) or bit.brshift(256, 7) (which gives 2) for left and right shifts respectively.
Don't you mean Java?
799 posts
Location
Land of Meh
Posted 23 December 2013 - 01:04 PM
Don't you mean Java?
Whoops :P/> I wrote that sentence then double checked, and found I had to use the bit API instead of those operators. Forgot to remove the original sentence. Yeah, most languages support the >> and << operator, including Java, C, and C++.
Edited on 23 December 2013 - 12:04 PM
28 posts
Posted 28 December 2013 - 11:30 AM
This is awesome !
Kinda hard to see how much code it takes to make that runnin while it looks so simple using it … :wacko:/>
I suggest you might add another menu point in the rightclick menu to add sort of start menu
or an icon on the desk like
————-
| Progname |
————-
or with different bg color,
-would be nice if it would safe the open program list like … hard to explain … lets say the firefox tabs are saved for next launch maybe …
Im really noobish with coding, especially lua but as far as i can see, it might be possible to add some lines to procman and adding some sort of .ini file that open processes are saved in
while lws needs to clear the tabs then when closed maybe
I think this would be a step to an actual OS, like you stated its more like a window manager so far
and its pretty much using shell all the time with the chance to switch the window and run more tasks at once ..
ps: sorry for my bad english, i hope you get the meaning :P/>
Edited on 28 December 2013 - 10:39 AM
162 posts
Posted 05 April 2014 - 06:06 PM
I have a suggestion:
How about a startup file that starts the programs inside your OS?
PS: I know computercraft 1.6 does that, but versions below don't. And 1.6 is not windowed
386 posts
Location
France
Posted 18 April 2014 - 07:53 AM
Hello ! I've got a question for you, lyqyd : I want to study how you did all the multitasks things bit i'm a bit lost on the github ^^. Do you mind to guide me ? :)/>
1610 posts
Posted 18 April 2014 - 12:57 PM
Hello ! I've got a question for you, lyqyd : I want to study how you did all the multitasks things bit i'm a bit lost on the github ^^. Do you mind to guide me ? :)/>/>
He used the coroutine API to let two different threads run in parallel.
500 posts
Posted 18 April 2014 - 03:54 PM
Hello ! I've got a question for you, lyqyd : I want to study how you did all the multitasks things bit i'm a bit lost on the github ^^. Do you mind to guide me ? :)/>/>
He used the coroutine API to let two different threads run in parallel.
Except for the fact that they don't actually run in parallel.
1610 posts
Posted 18 April 2014 - 04:16 PM
Hello ! I've got a question for you, lyqyd : I want to study how you did all the multitasks things bit i'm a bit lost on the github ^^. Do you mind to guide me ? :)/>/>/>
He used the coroutine API to let two different threads run in parallel.
Except for the fact that they don't actually run in parallel.
Eh, it's simpler than saying that they rely on collaborative control-switching to simulate multi-threading :P/>
8543 posts
Posted 18 April 2014 - 05:43 PM
Hello ! I've got a question for you, lyqyd : I want to study how you did all the multitasks things bit i'm a bit lost on the github ^^. Do you mind to guide me ? :)/>
So, procman is the process manager. It contains the coroutine manager, which receives events from the system and distributes them among the processes running in LyqydOS. When a program is started, either in the desktop program via the Run Program dialog, or via the start program, a coroutine is created and added to the process list. Some events are hooked by system processes (for instance, lws hooks all three mouse events), so the actual event distribution logic for those events is within those programs. Currently, the three programs with event hooks are lws, desktop, and lrnd.
That should get you started on your explorations.
541 posts
Location
Melbourne, Australia
Posted 02 May 2014 - 03:16 PM
hey Lyqyd, looks like a great os with some awesome features. However when I try to install I come across the following: [img]/Users/redacted/Desktop/Screen Shot 2014-05-03 at 12.14.16 am.png[/img]
8543 posts
Posted 02 May 2014 - 03:59 PM
You'll have to actually upload the screenshot somewhere, I can't see it from your computer.
541 posts
Location
Melbourne, Australia
Posted 03 May 2014 - 06:50 AM
Oops sorry, thought I could just link it. here you go:
http://imgur.com/8dm9IN5
8543 posts
Posted 03 May 2014 - 07:54 AM
Looks like the emulator you're using doesn't like downloading things from github, either because it's too new and github isn't whitelisted, or because it's too old and can't handle https. You might try it in-game, ideally using one of the more recent versions of ComputerCraft.
541 posts
Location
Melbourne, Australia
Posted 03 May 2014 - 10:42 AM
Tried installing on a computer (minecraft 1.6.4, ComputerCraft 1.63) Worked fine, just had to tweak the http whitelisting! :D/>
223 posts
Location
Minecraft in Minecraft in Minecraft in ComputerCraft... in Minecraft
Posted 17 May 2014 - 02:53 PM
Very Nice! I tested it on an advanced computer and it was amazing!
779 posts
Location
Kerbin
Posted 21 May 2014 - 01:08 PM
I found a bug:
1.run a program (for ex. Adventure)
2.resize it to very small
3.then try to resize it to bigger
4.you have CraftOS shell&no lyqydOS
57 posts
Location
Germany
Posted 08 June 2014 - 11:51 AM
Nice OS, Really nice :D/>
8543 posts
Posted 28 June 2014 - 03:22 AM
I've pushed a small update to the github repository. There's a new desktop alternative called "flattop", which you can use to get a CraftBang-like feel. Use F1 to start a new terminal session, F3 to switch to the previous session, and F4 to switch to the next session. I have plans to expand the functionality of this desktop system, but it is not complete yet. To use this desktop instead, edit your .init file (/LyqydOS/.init) to remove the lws and desktop lines, and replace them with flattop.
Screenshots
This update also adds a new feature; the ability to skin the title bar and window decorations. By default, LyqydOS does not install with extra themes yet, but a future installer update will add them as well. For now, if you wish to play around with the feature, simply download the themes folder from the github repo and place it in the LyqydOS folder on your computer. You can then use the settings program to change your theme.
Screenshots
You can also use the settings program to change the background color, or (untested feature) set a background image, from a file name.
620 posts
Location
Holland
Posted 29 June 2014 - 05:59 AM
Nice looks very pretty :D/>
1 posts
Posted 30 July 2014 - 08:52 PM
Hello Lyqyd,
I seem to have discovered a bug. Sometimes when you resize shell
to be smaller [from the corner button] and it is in the top left corner of the screen, it causes this error:
window:199: vm error: java.lang.NegativeArraySizeException
Press any key to continue
Begin Edit 1
Also, do you have any plans to create an API for LyqydOS program/application development? Example:
--Sample Program
thewindow = lyqydOS.createWindow()
thewindow.setTitle("Test Program")
thewindow.setSize(5 ,5)
thewindow.setPos(3, 3)
thewindow.setResizable(false)
thewindow.setTextColor(colors.green)
thewindow.setBackgroudColor(colors.white)
thewindow.write("Hello!")
sleep(3)
thewindow.close()
-- The code can continue, but the window will close.
Etc..
Or if there is such an API, can someone tell me where to find it? I want said API because I believe this OS has potential and I want to use it as the OS for all the workstations in my CC office building, but I would need to make custom programs to do so as the office building has existing CC infrastructure; for example, print servers, backup severs, a file server, and a router controlling all the sub-domains in the wired network.
End Edit 1
Begin Edit 2
When and if you do press a key, the computer shuts down.
End Edit 2
Begin Edit 3
And if you are not going to do the API any time soon, would it be OK with you if I made a derivative of LyqydOS for networks that had said API and post it in a separate topic and say it's a derivative of LyqydOS/give you credit for the base?
End Edit 3
Edited on 30 July 2014 - 09:46 PM
8543 posts
Posted 30 July 2014 - 09:11 PM
Given where the error is, I'd expect it to happen with any window in any position on the screen, when sized small enough horizontally. I'll see about fixing this soon.
276 posts
Location
Fairbanks, Alaska
Posted 31 August 2014 - 04:01 AM
hmm… Hmmm. HMMMMMMMM!!!! lel anyways im making an OS too, and theres a downloads function where if you want an add-on, or a different OS instead of AppleOS, you can download it and I guess ill add your OS too ;)/>
8543 posts
Posted 27 September 2014 - 10:13 AM
I've added a new feature tonight! The settings program now has an interactive mode, accessed by running it without any parameters on an advanced computer. This allows you to change the themes and background color for your current session. I have not yet implemented saving those preferences across sessions, though that won't be terribly difficult to do. In the spoiler below are a couple screenshots of the settings program in action. As you can see, the settings program shows a live preview of the desktop as it will look with the settings applied.
Spoiler
Hello Lyqyd,
I seem to have discovered a bug. Sometimes when you resize shell
to be smaller [from the corner button] and it is in the top left corner of the screen, it causes this error:
window:199: vm error: java.lang.NegativeArraySizeException
Press any key to continue
Begin Edit 1
Also, do you have any plans to create an API for LyqydOS program/application development? Example:
--Sample Program
thewindow = lyqydOS.createWindow()
thewindow.setTitle("Test Program")
thewindow.setSize(5 ,5)
thewindow.setPos(3, 3)
thewindow.setResizable(false)
thewindow.setTextColor(colors.green)
thewindow.setBackgroudColor(colors.white)
thewindow.write("Hello!")
sleep(3)
thewindow.close()
-- The code can continue, but the window will close.
Etc..
Or if there is such an API, can someone tell me where to find it? I want said API because I believe this OS has potential and I want to use it as the OS for all the workstations in my CC office building, but I would need to make custom programs to do so as the office building has existing CC infrastructure; for example, print servers, backup severs, a file server, and a router controlling all the sub-domains in the wired network.
End Edit 1
Begin Edit 2
When and if you do press a key, the computer shuts down.
End Edit 2
Begin Edit 3
And if you are not going to do the API any time soon, would it be OK with you if I made a derivative of LyqydOS for networks that had said API and post it in a separate topic and say it's a derivative of LyqydOS/give you credit for the base?
End Edit 3
Well, there isn't exactly an API like that, though programs written to take advantage of the APIs that LyqydOS does provide so far (process, window, compositor, etc.) can do quite a few things, including creating/modifying/destroying their own windows. LyqydOS is open source under the MIT license, so you can do anything you like with it within the terms of the license, which is included with the code when it is downloaded via the installer.
Edit: A minor update; I've fixed a couple of bugs in LyqydOS's rednet stack, so programs using rednet should work again. I'm not sure how long that's been broken, but it should be fixed now!
1715 posts
Location
ACDC Town
Posted 10 October 2014 - 06:10 PM
This is the ultimate operating system for people who want a badass multitasking OS that looks sweet.
8543 posts
Posted 22 November 2014 - 03:32 AM
I've recently pushed a couple of new features, including a RAID volume creation utility and a RAID mount utility. The RAID arrays use the disk drive peripherals, and create a RAID5 volume across the disks. You can mount it into an empty folder with the raidmount command, and any given computer can have multiple RAID arrays mounted. However, each RAID array can only be mounted by one computer at a time, as the files are all cached and the disks are not watched for updates written by other computers.
I've also included a rednet file server daemon (requires LyqydNet) that can be configured to share one or more folders via LyqydNet. Along those lines, I've included a rednet share mounting tool (similar to the RAID mounting tool) to mount shared folders into local empty folders. These mounts work fairly seamlessly, with a few minor issues (such as fs.find not being able to search them fully if the path doesn't start inside the mount) I am working on resolving still. The grand majority of the functionality is there, though. I've had RAID volumes mounted up on a file server sharing them via LyqydNet and have mounted the shared folder on another computer and used the RAID array remotely with ease.
Another recent change is slightly more technical. I had a bunch of hardcoded /LyqydOS/ paths in various places. I think I've eliminated them all now. The new system I'm using discovers the path that the procman file is running from (the file you run to launch the OS) and uses its folder as the starting point for a bunch of other stuff. You shouldn't end up with files misplaced on your computer's drive if you're running LyqydOS from a disk now.
No screenshots this time around, not much to show off visually!
38 posts
Location
Planet Ark Factory
Posted 24 November 2014 - 02:53 AM
When running the installer I get a "Could not find metadata API" error after telling it to load on startup and rebooting. Tried in both Yogcast Complete (Computercraft 1.63 with internet whitelisted) and on CCEmuRedux. What else do I need to do in order to use this?
8543 posts
Posted 24 November 2014 - 04:55 AM
Whoops, the installer on pastebin was outdated. Running the installer you already downloaded again should update to the latest version of the installer and then download the missing files. Sorry about that!
38 posts
Location
Planet Ark Factory
Posted 24 November 2014 - 02:22 PM
Looks like programs aren't sandboxed yet. A program I wrote that calls os.shutdown() made lyqydOS turn off.
8543 posts
Posted 24 November 2014 - 04:27 PM
Huh? That would be working as intended. Running the "reboot" or "shutdown" programs should work as the user expects them to, and they just call the appropriate os API functions. Why would I want to prevent other programs from doing the same? LyqydOS allows the user to do whatever they like with their computer. That's not a form of "sandboxing" that LyqydOS is ever likely to implement.
38 posts
Location
Planet Ark Factory
Posted 24 November 2014 - 04:39 PM
Then I'm forced to ask what the point of multitasking programs is if one program can cause everything else I'm working on to be lost.
8543 posts
Posted 24 November 2014 - 05:35 PM
What's the point of any real operating system, then? This is the way things actually work. If some program initiates a shutdown or reboot, the system goes down. There's no way to differentiate between a desired shutdown and an undesired shutdown.
I fully believe in the Linux-esque philosophy of allowing the user to figuratively shoot themselves in the foot if they so desire.
How would one even go about preventing programs from shutting down the computer? I can't think of a single way to disable it that still allows the user to shut down/reboot without using the Ctrl-S or Ctrl-R hot keys. Sure, you could disable the OS functions by overriding them, but programs could queue events to mimic the user input, or find some way to trigger a busy spin someplace. There's no great way to do this that doesn't end up being a major pain with very, very little benefit. Just be careful what you run. :)/>
38 posts
Location
Planet Ark Factory
Posted 26 November 2014 - 03:08 PM
That's pretty funny because OneOS handles this beautifully and pretty much the way I expect. I'm not talking about malicious programs, by the way, I'm talking about programs that have no knowledge they're being run on an OS that previously assumed they are the only thing running on the computer. If a program has knowledge of an OS, then SURE, it could get around redirection of os.shutdown() just fine. I don't care about such programs because they were either made to be malicious or intend to tell the OS that it needs the entire computer to reboot and the OS can handle the closing of all other programs first. My point is that the OS should always have more control over shutdown and restart than the programs running on it do. If that's too much work for you, or for whatever reason doesn't fit your philosophy, though, well, I can just keep using OneOS.
598 posts
Location
The United States
Posted 26 November 2014 - 03:27 PM
That's pretty funny because OneOS handles this beautifully and pretty much the way I expect. I'm not talking about malicious programs, by the way, I'm talking about programs that have no knowledge they're being run on an OS that previously assumed they are the only thing running on the computer. If a program has knowledge of an OS, then SURE, it could get around redirection of os.shutdown() just fine. I don't care about such programs because they were either made to be malicious or intend to tell the OS that it needs the entire computer to reboot and the OS can handle the closing of all other programs first. My point is that the OS should always have more control over shutdown and restart than the programs running on it do. If that's too much work for you, or for whatever reason doesn't fit your philosophy, though, well, I can just keep using OneOS.
I've seen soooooo many install programs on this forum, that if it finds something unexpected (Like the computer isn't advanced), nope, no error() for it, it just shuts off the computer. So I agree with you on the fact that the Operating System (regardless which one) needs to at least help prevent against those kinds of things. Maybe just having a dialog box saying:
This program wants to use os.shutdown() . Allow it?Yes : No
8543 posts
Posted 26 November 2014 - 04:41 PM
That's pretty funny because OneOS handles this beautifully and pretty much the way I expect. I'm not talking about malicious programs, by the way, I'm talking about programs that have no knowledge they're being run on an OS that previously assumed they are the only thing running on the computer. If a program has knowledge of an OS, then SURE, it could get around redirection of os.shutdown() just fine. I don't care about such programs because they were either made to be malicious or intend to tell the OS that it needs the entire computer to reboot and the OS can handle the closing of all other programs first. My point is that the OS should always have more control over shutdown and restart than the programs running on it do. If that's too much work for you, or for whatever reason doesn't fit your philosophy, though, well, I can just keep using OneOS.
It isn't too much work. Implementing such a feature would actually be fairly simple. Even easier would be to fix whatever poorly written program is calling those functions when you don't want it to. :P/>
I'll think about it. I certainly won't be implementing anything that could be considered full-on "sandboxing", but there may be some merit to this. The tricky thing will be implementing such a change in a way that actually makes sense. Disabling the commands entirely doesn't make sense, but shutting down or rebooting right away could, perhaps, be inconvenient to the user, if they aren't paying any attention to what they're running. If I were to implement such a feature, I'd probably just send a terminate event (or similar) to all running processes and wait for them to stop. That would give editor programs and such the opportunity to ask for the user to save their open files, if they implement such a feature. I'd have to think about it, but it doesn't seem like something I'd be wanting to implement.
However, LyqydOS is released under MIT, so you are, of course, welcome to fork and modify it. The simplest version of the change only requires a quick edit in the env program to add replacement shutdown/reboot functions, move the real ones over to the LyqydOS global table, and two replacement shutdown/reboot programs (place in LyqydOS folder) to call the new functions instead of the old ones.
I've seen soooooo many install programs on this forum, that if it finds something unexpected (Like the computer isn't advanced), nope, no error() for it, it just shuts off the computer. So I agree with you on the fact that the Operating System (regardless which one) needs to at least help prevent against those kinds of things. Maybe just having a dialog box saying:
This program wants to use os.shutdown() . Allow it?
Yes : No
That sounds like incredibly poor design, which should probably be corrected on their end. :P/>
598 posts
Location
The United States
Posted 26 November 2014 - 04:46 PM
I've seen soooooo many install programs on this forum, that if it finds something unexpected (Like the computer isn't advanced), nope, no error() for it, it just shuts off the computer. So I agree with you on the fact that the Operating System (regardless which one) needs to at least help prevent against those kinds of things. Maybe just having a dialog box saying:
This program wants to use os.shutdown() . Allow it?
Yes : No
That sounds like incredibly poor design, which should probably be corrected on their end. :P/>
Sad thing is, I've seen about 5 of them that are like that. Maybe more. Fixing it on 1 end, is much easier than fixing it on 5 ends.
871 posts
Posted 22 February 2015 - 09:33 PM
Last night I decided LyqydOS is a bit starved for native apps, so I whipped up a couple of the basics any decent windowed OS needs: Minesweeper and Calc.
Source links:
MinesweeperCalcBoth should be pretty self-explanatory in usage. If you want to download manually, make sure to put them in the path somewhere - /usr/bin is recommended.
These are also available through packman, just run "packman install calc" or "packman install minesweeper" on your computer running LyqydOS.
You may have to do a "packman fetch" first to update your package index, I'm not sure when/if it updates the index automatically.
screenshots:
Minesweeper requires an advanced computer by design, because playing minesweeper without a mouse would just not be fun.
Calc requires an advanced computer because … well, I forgot to support basics fully. I'll work on an updated version with proper support for basic computers later, though I may end up just disabling the advanced (Expanded) mode on basic computers since input will, again, be slightly annoying, while the basic 4-function mode all corresponds well enough to basic key input (you can press 's' for ms, 'r' for mr, 'a' for m+, and '_' for +/-, and the rest should be obvious)
Edited on 22 February 2015 - 08:40 PM
69 posts
Posted 24 February 2015 - 04:38 AM
–snip–
I can't tell whether or not this counts as necroing…
871 posts
Posted 24 February 2015 - 12:44 PM
–snip–
I can't tell whether or not this counts as necroing…
Why would it count as necroing? LyqydOS, unlike it's thread, remains active, as you can see from a look at the github repo, and my post, unlike yours, made a substantive contribution to the thread.
Edited on 24 February 2015 - 11:45 AM
8543 posts
Posted 24 February 2015 - 06:07 PM
–snip–
I can't tell whether or not this counts as necroing…
Then report it, don't reply to it. You too, Gopher. :P/>
Anyway, the calc and minesweeper programs look great! Thanks for the contributions. I think I'll add Calc to the main LyqydOS repository soon, and I'm looking forward to your other project being ready for prime time! :)/>
871 posts
Posted 24 February 2015 - 06:45 PM
Anyway, the calc and minesweeper programs look great! Thanks for the contributions. I think I'll add Calc to the main LyqydOS repository soon, and I'm looking forward to your other project being ready for prime time! :)/>
I need to fix b&w, and possibly tablet, support on calc before it goes in the main distro, I think.
In other news, you've got a PR waiting for you on github, I ran into an issue with my "other project" where in certain cases process-specific events weren't being handled promptly, found the cause and applied a fix. The "other project" is coming along nicely, though, and may be ready for an initial release tonight.
66 posts
Posted 27 February 2015 - 06:11 PM
I like the OS! How could I adapt packman (or you could suggest another package manager) to work without LyqydOS
8543 posts
Posted 27 February 2015 - 07:46 PM
Packman works fine without LyqydOS installed, to the best of my knowledge. It want to be installed at /usr/bin/packman, so you'd either want to start it with the whole path each time or add the /usr/bin path to your shell; this should do it, if I recall correctly:
shell.setPath(shell.path()..":/usr/bin")
If you can't get it to work, let me know. The best way to report issues with packman is on its github repo (lyqyd/cc-packman, will link later).
66 posts
Posted 27 February 2015 - 08:08 PM
Packman works fine without LyqydOS installed, to the best of my knowledge. It want to be installed at /usr/bin/packman, so you'd either want to start it with the whole path each time or add the /usr/bin path to your shell; this should do it, if I recall correctly:
shell.setPath(shell.path()..":/usr/bin")
If you can't get it to work, let me know. The best way to report issues with packman is on its github repo (lyqyd/cc-packman, will link later).
Good! Packman seemed to work in CCEmuRedux. I really like the system you have with package lists etc. Dependency management is what I need for any package manager. I would use grin-get or similar, but
dependency management :D/> … and I can't be bothered to do any .zip.base64 stuff.
Expect to see some interesting repos/packages coming up soon! I'm probably going to make a small 'layer' OS that just sets up packman and paths.
[offtopic]Also, I like your linux directory standards… a whole lot better than windows! I've spent way too long sometimes trying to get windows paths sorted out, because sometimes they are overridden by some pesky installers/updaters. [/offtopic]
Edit: One other question: How would I add my own repos to the system. Yes I could edit packlist, but that gets overwritten by fetch. I could host my own packlist and change the URL in packman but it would be interesting to add some sort of ppa system, like apt-get uses.
Edited on 27 February 2015 - 07:38 PM
871 posts
Posted 27 February 2015 - 09:29 PM
quickest and easiest way is to go to the
packman github repo, make a github account if you don't already have one, and then use the edit button on the repolist file to add your own repo, like I did. The edit will become a pull request, which Lyqyd will accept and merge at some point. It should point to your own packlist file, either on github or pastebin or anywhere else you can get a raw file from a constant url that you can still edit (you'll need a pastebin account, if you don't have one already, to be able to edit a file without changing the url). By using your own repo, you won't have to wait for lyqyd to pull changes to your own packlist before they'll show up.
66 posts
Posted 27 February 2015 - 09:58 PM
quickest and easiest way is to go to the
packman github repo, make a github account if you don't already have one, and then use the edit button on the repolist file to add your own repo, like I did. The edit will become a pull request, which Lyqyd will accept and merge at some point. It should point to your own packlist file, either on github or pastebin or anywhere else you can get a raw file from a constant url that you can still edit (you'll need a pastebin account, if you don't have one already, to be able to edit a file without changing the url). By using your own repo, you won't have to wait for lyqyd to pull changes to your own packlist before they'll show up.
ok, so just submit a pull request with my own repo? awesome!
I know how to use Github/Bitbucket :)/>
Edited on 27 February 2015 - 08:59 PM
66 posts
Posted 28 February 2015 - 07:24 AM
Yes, I know this is clogging up the LyqydOS forum topic. I could use GH issues but I think this is probably the best place to talk about it!I had a
brainstorm…
Namespaces[indent=1]There are many apis and OSes on CC that have similar names, so it may be beneficial to add namespaces. Namespaces are 'areas' designated for one user or group, such as Lyqyd, comp500 or Gravlann. They are optional, but can be specified before a package name to prevent conflicts.[/indent]
[indent=1]One example is:[/indent]
> packman install compositor
PackMan
Multiple packages have been found:
Lyqyd:compositor
Bedrock:compositor
Please specify which package you would like to install.
> packman install Lyqyd:compositor
PackMan
...
WePackageItForYou (better name pending)
[indent=1]There are lots of great package managers in CC. The problem is that there are either not enough packages for that package manager, or normal people don't know how to use it.[/indent]
[indent=1]This idea is here to solve the 'not enough packages' problem for packman.[/indent]
[indent=1]All you have to do, as a script developer, is ask us to add your program/api/script/thing. We'll do all the rest.[/indent]
Would these ideas be useful and should I start working on them (WPIFY at least, namespaces seems quite complicated).
also, another idea:
type = none
would be useful for OSes or easy install scripts with dependencies
it's used in apt somewhere - I've forgotten what it's called
Edited on 28 February 2015 - 06:41 AM
8543 posts
Posted 01 March 2015 - 12:21 AM
Namespaces
Yeah, this is something I've been meaning to do since I changed to have multiple repositories possible. I finally got around to actually doing so today. The change breaks any existing installations' installed program databases, but should be a one-time problem. You can still use the short name of packages, and they'll be automatically resolved where possible. So `packman install lyqydos` automatically tries to install main/lyqydos, main/framebuffer and main/configuration. Please note that dependency strings will need to be updated in all packlists because of this, for any that aren't simply "none".
WePackageItForYou (better name pending)
There are lots of great package managers in CC. The problem is that there are either not enough packages for that package manager, or normal people don't know how to use it.
This idea is here to solve the 'not enough packages' problem for packman.
All you have to do, as a script developer, is ask us to add your program/api/script/thing. We'll do all the rest.
Would these ideas be useful and should I start working on them (WPIFY at least, namespaces seems quite complicated).
I'm not personally interested in packaging other people's stuff for them, though I'm always happy to help someone learn how to get their stuff set up with packman. I find that simply doing it for them means they won't have the knowledge necessary to keep up on it, which just makes more work on my end! I'm not sure if there are any parts of the package creation process that would benefit from having automation tools, but there may be.
also, another idea:
type = none
would be useful for OSes or easy install scripts with dependencies
it's used in apt somewhere - I've forgotten what it's called
This, I'm not sure about. Metapackages could be useful, I suppose. I'll have to think about this one some more.
66 posts
Posted 01 March 2015 - 07:26 AM
So the new namespaces are based on which repo it is in? OK, good.
I could do some documentation for packman.
Ah yes, metapackages. I guess it isn't really needed, as OSes would usually have a couple config programs anyway. It's low priority anyway.
66 posts
Posted 07 March 2015 - 07:41 AM
By the way, the LOS installer could now be a little simpler, as packman now downloads package when running fetch.
8543 posts
Posted 07 March 2015 - 08:27 AM
Thanks for the reminder! I had made that change locally, but hadn't pushed it to the github repo or updated the pastebin.
8543 posts
Posted 14 March 2015 - 05:08 AM
I finally got around to making the settings program actually save the changes someplace so they can be preserved across reboots. The settings are stored in the .config file wherever LyqydOS is installed (/LyqydOS/.config by default). The .config file is also a great place to put any other customizations one might want, as it is simply dofile'd as part of the initialization process. Bearing in mind, of course, that programs that should be started at startup should be placed in the .init file (/LyqydOS/.init by default), in which every line is shell.run, which happens after the .config is executed.
You can add new theme files to /LyqydOS/themes/window or /LyqydOS/themes/desktop, depending on which variety of theme you intend to add. The existing examples should be relatively clear, but for the sake of full documentation, the entries that are a triplet of strings are a character, text color, and background color to draw a decoration with, and the numeric values (such as minPos or maxPos in the window theme tables) are placement instructions.
Please also note that the rnfsd, rnmount, mkvolume and raidmount files have been moved out of the main LyqydOS download and into separate packages which can be fetched via packman. Simply do a packman fetch install <package>, where <package> is lnfs-daemon, lnfs-client or raidtools to install them (after the first one, a simple packman install <package> will suffice). Bear in mind that the lnfs programs do require LyqydNet installed, so you'll need to add lyqydnet to a new line in your /LyqydOS/.init file if you wish to use them.
Other recent changes include some graphical things, such as borderless windows drawing correctly, an update color scheme for the menu API, deferred drawing in windows (a performance booster as well!), and a fix for the mouse_scroll event. I've started work on proper modal window support, but it is not complete yet. The rednet daemon, lrnd, received some updates as well, including better support for some of the more modern rednet features. It should now respond to dns requests correctly. There were also a wide variety of non-obvious fixes and improvements (my favorite kind!), so LyqydOS should be running better than ever. Some of the more recent changes will almost certainly break compatibility with pre-1.6 versions of ComputerCraft, which is regrettable. Hopefully it isn't too broken on those older versions, but I'm not currently maintaining a test environment for the older versions, so I haven't tested it myself.
45 posts
Location
Philippines
Posted 15 March 2015 - 05:33 AM
Lyqyd 2015 is this still updating ? i like this OS :lol:/>
66 posts
Posted 11 April 2015 - 07:45 AM
the latest version doesn't seem to work in my version of ccemuredux:
process:123:Invalid redirect target
8543 posts
Posted 11 April 2015 - 08:05 PM
I've updated this to work against the latest version of the CC beta (1.74pr20 as of this writing), and removed some leftover testing code that was causing issues. I've also bumped the version number for LyqydOS in packman, so updating should be as simple as packman fetch update.
8543 posts
Posted 02 May 2015 - 08:40 AM
Just pushed an update to correct an issue with window captions when windows are resized to very small horizontal widths. They should seamlessly adjust down to the minimum window size now.
620 posts
Location
Holland
Posted 03 May 2015 - 06:36 PM
Due to an something(API change?) the minesweeper application by GopherAtl doesn't work anymore. After poking around in the _G(and then process and then process.compositor) and the source for the process file, I found a fix. Replace line 87 with:
local trueW, trueH=process.compositor.target.getSize()
8543 posts
Posted 03 May 2015 - 06:38 PM
Yep, I've posted that information on Gopher's Minesweeper topic. Hopefully he can update it next time he's about. Thanks!
620 posts
Location
Holland
Posted 03 May 2015 - 06:46 PM
Oh the error also occurs in the calc program when clicking the expand button.
To fix it replace line 282 with:
local trueW, trueH=process.compositor.target.getSize()
23 posts
Posted 03 June 2015 - 10:08 AM
Nice. i see its good for business and companies in minecraft. even good for serverses in the world.
Lyqyd. thanks for write this topic. its what i want to find!. i will try it later.
673 posts
Posted 07 July 2015 - 05:57 PM
LyqydOS has been in beta for 2 years :huh:/>
8543 posts
Posted 07 July 2015 - 06:21 PM
Yep! In a few short months, I will have been working on this project off and on for three years.
389 posts
Posted 09 July 2015 - 07:43 AM
One of my favorite operating systems, I just love having two shells open side by side! :D/>
818 posts
Location
Wherever you want me to be
Posted 06 August 2015 - 10:46 AM
so cool o.o
i even worked out how to break my own program :D/>
52 posts
Location
In a room with a computer, duh.
Posted 19 August 2016 - 09:58 PM
Crash:
Run luaide from the start menu:
lsh:531: attempt to get length of nil
window:84: Too long without yielding
Then it returns to the terminal and I can't relaunch it with startup
8543 posts
Posted 19 August 2016 - 10:51 PM
Thanks for the report! I'll look into what lsh is doing to foul things up this weekend.
52 posts
Location
In a room with a computer, duh.
Posted 20 August 2016 - 01:14 AM
Is there pocket computer support?
Used it on my pocket computer and opened up shell…
window:77: Too long without yielding
EDIT: The error looks like running luaide from the start menu :lol:/>
8543 posts
Posted 20 August 2016 - 04:52 AM
The problem with luaide should be resolved, just run packman fetch update to grab the new version of lsh. I'll look into what's going on with the pocket computers tomorrow.
52 posts
Location
In a room with a computer, duh.
Posted 20 August 2016 - 06:37 PM
The problem with luaide should be resolved, just run packman fetch update to grab the new version of lsh. I'll look into what's going on with the pocket computers tomorrow.
Thanks! (It would be awesome if there was pocket computer support)
Found same error with paint and edit:
compositor:26: Too long without yielding
Also: How do you remove an item from the menu? :)/>
8543 posts
Posted 20 August 2016 - 08:12 PM
I looked into the pocket computer issue and it turned out to be a simple case of the default window size set up by the installer being outside the bounds of the pocket computer's screen. If you run these commands on your pocket computer, you should be good to go again:
packman fetch update
rm /LyqydOS/.lyqwin
/LyqydOS/installer setup
The updated installer program will detect that it's being run on a pocket computer and set up default window sizes that make sense for the pocket computer.
You should be able to edit the items in the menu by editing
/LyqydOS/.lyqrunhistory and adding/removing items. The number of times an item appears affects its position in the menu.
52 posts
Location
In a room with a computer, duh.
Posted 21 August 2016 - 11:55 PM
I looked into the pocket computer issue and it turned out to be a simple case of the default window size set up by the installer being outside the bounds of the pocket computer's screen. If you run these commands on your pocket computer, you should be good to go again:
packman fetch update
rm /LyqydOS/.lyqwin
/LyqydOS/installer setup
The updated installer program will detect that it's being run on a pocket computer and set up default window sizes that make sense for the pocket computer.
You should be able to edit the items in the menu by editing
/LyqydOS/.lyqrunhistory and adding/removing items. The number of times an item appears affects its position in the menu.
Launched settings :mellow:/>
window:199: vm error: java.lang.NegativeArraySizeExpection
window:84: Too long without yielding
JAVA! This seems like a computercraft issue. You might not be able to fix it.
EDIT: Im running the packman updated version on my pocket computer
Edited on 21 August 2016 - 10:15 PM
52 posts
Location
In a room with a computer, duh.
Posted 22 August 2016 - 12:04 AM
Running exit from the menu hangs the system.
After a while…
compositor:26: Too long without yielding
EDIT: All of my posts are all errors saying
Too long without yielding
:lol:/>
8543 posts
Posted 22 August 2016 - 12:21 AM
The settings program requires a certain size, and I designed it without thinking about pocket computers. It's not going to work until I can get around to re-designing it or coming up with another solution for the pocket computers. Whoops.
I'll have to see what the exit program is doing, can't say as I've ever tried running that one!
52 posts
Location
In a room with a computer, duh.
Posted 22 August 2016 - 11:10 PM
The settings program requires a certain size, and I designed it without thinking about pocket computers. It's not going to work until I can get around to re-designing it or coming up with another solution for the pocket computers. Whoops.
I'll have to see what the exit program is doing, can't say as I've ever tried running that one!
Yeah I had the idea that exit would exit Lyqydos. :lol:/>
Could you implement a way to exit Lyqydos and return to the shell?
52 posts
Location
In a room with a computer, duh.
Posted 25 August 2016 - 06:54 PM
EDIT–
Comment Deleted
Edited on 30 August 2016 - 07:38 PM
2 posts
Posted 25 August 2016 - 11:20 PM
I have permission to continue your OS? whether I start now!
8543 posts
Posted 26 August 2016 - 12:00 AM
LyqydOS is released under the MIT license, so you are free to do anything that the license allows, including forking it and creating your own modifications and additions.
2427 posts
Location
UK
Posted 26 August 2016 - 01:00 AM
More information on the MIT license, just in case you're interested.
http://choosealicens...m/licenses/mit/
Edited on 25 August 2016 - 11:01 PM
71 posts
Location
Everywhere and nowhere.
Posted 28 August 2016 - 01:40 AM
I am getting this following error:
packman:265: invalid key next to 'next'
How do I fix this?
275 posts
Location
Turkey
Posted 28 August 2016 - 02:25 AM
I am getting this following error:
packman:265: invalid key next to 'next'
How do I fix this?
It was a error in a packman repository, should be fixed (try packman fetch)
Edited on 28 August 2016 - 12:26 AM
245 posts
Location
Computer, Germany
Posted 27 September 2016 - 01:38 PM
What happens:
window:84:too long without yielding
How to reproduce:
Create this file somewhere:
print("Hello")
Press F1 and enter the path to the file
It does what it has to do, the window isn't moveable and after a couple of seconds the error occurs.
EDIT:
This should work with other codes too as this originally happened while using lyqydOS to test code, tho I don't have the code anymore.
EDIT2:
I use CCEmuRedux (I think it's the newest version, as it updates everytime I start?)
Edited on 27 September 2016 - 11:40 AM
8543 posts
Posted 27 September 2016 - 08:22 PM
Thanks for the report. I'll have to look in to that some. It's possible that the bug is specific to the emulator, as it seems like a rather show-stopping bug if it's present in-game.
122 posts
Location
France
Posted 19 November 2016 - 04:46 PM
packman: 104: Could not load package API!
from WmFHmuZq (installer).
8543 posts
Posted 19 November 2016 - 08:47 PM
Whoops! I've fixed the installer to bootstrap packman correctly. It should work fine now.
122 posts
Location
France
Posted 19 November 2016 - 08:48 PM
Whoops! I've fixed the installer to bootstrap packman correctly. It should work fine now.
Thanks for your quick fix Lyquid.