diff --git a/sysdata/libraries/horizon_api/src/widgets/label.hb b/sysdata/libraries/horizon_api/src/widgets/label.hb index 3241b52..62b6492 100644 --- a/sysdata/libraries/horizon_api/src/widgets/label.hb +++ b/sysdata/libraries/horizon_api/src/widgets/label.hb @@ -38,9 +38,9 @@ Label := struct { } render_label_to_surface := fn(surface: Surface, label: Label, font: Font, pos: Vec2(uint)): void { - if label.is_dirty { - render.clear(label.surface, label.bg) - render.put_text(label.surface, font, .(0, 0), label.fg, label.text) - } + // if label.is_dirty { + render.clear(label.surface, label.bg) + render.put_text(label.surface, font, .(0, 0), label.fg, label.text) + // } render.put_surface(surface, label.surface, pos, false) } \ No newline at end of file diff --git a/sysdata/libraries/sunset_proto/src/server.hb b/sysdata/libraries/sunset_proto/src/server.hb index 4dd16d9..014bfcd 100644 --- a/sysdata/libraries/sunset_proto/src/server.hb +++ b/sysdata/libraries/sunset_proto/src/server.hb @@ -132,4 +132,4 @@ render_clients := fn(screen: Surface): void { put_surface(screen, window.surface, window.data.props.position, false) i += 1 } -} \ No newline at end of file +} diff --git a/sysdata/programs/ablefetch/src/main.hb b/sysdata/programs/ablefetch/src/main.hb index 7010775..2f5b191 100644 --- a/sysdata/programs/ablefetch/src/main.hb +++ b/sysdata/programs/ablefetch/src/main.hb @@ -11,7 +11,7 @@ horizon_api := @use("../../../libraries/horizon_api/src/lib.hb"); main := fn(): void { sunset.client.find_server() - window := sunset.client.new(.(.(400, 100), .(400, 300), "ableFetch!\0")) + window := sunset.client.new(.(.(10, 10), .(400, 300), "ableFetch!\0")) font := @unwrap(render.text.font_from_psf2(@bitcast(&psf), false)) // pos := Vec2(uint).(1, 100) @@ -21,26 +21,27 @@ main := fn(): void { } text_label := Label.new_label("kernel : akern 0.2.0\0", 300) - text_label.set_color(sunset.server.DECO_COLOUR, render.black) + text_label_2 := Label.new_label("os : ableos\0", 300) + text_label_3 := Label.new_label("wm : sunset\0", 300) + text_label.set_color(render.black, render.white) - text_label_2 := Label.new_label("os : ableos\0", 300) - text_label_2.set_color(sunset.server.DECO_COLOUR, render.black) - text_label_3 := Label.new_label("wm : sunset\0", 300) - text_label_3.set_color(sunset.server.DECO_COLOUR, render.black) + text_label_2.set_color(render.black, render.white) + text_label_3.set_color(render.black, render.white) + pos1 := Vec2(uint).(1, 1) + pos2 := Vec2(uint).(1, 20) + pos3 := Vec2(uint).(1, 40) + // render.clear(window.surface, render.black) + render_label_to_surface(window.surface, text_label, font, pos1) + render_label_to_surface(window.surface, text_label_2, font, pos2) + render_label_to_surface(window.surface, text_label_3, font, pos3) loop { - render.clear(window.surface, render.black) - // render.put_surface(window.surface, image, .(image.width + x % window.data.props.dimensions.x, 40), false) - pos := Vec2(uint).(1, 100) - - render_label_to_surface(window.surface, text_label, font, pos) - pos = Vec2(uint).(1, 120) - - render_label_to_surface(window.surface, text_label_2, font, pos) - - pos = Vec2(uint).(1, 140) - render_label_to_surface(window.surface, text_label_3, font, pos) + // stn.log.info("AAAA\0") + // render.put_text(text_label.surface, font, pos1, text_label.fg, text_label.text) + // render.put_text(text_label_2.surface, font, pos2, text_label_2.fg, text_label_2.text) + // render.put_text(text_label_3.surface, font, pos3, text_label_3.fg, text_label_3.text) _ = sunset.client.send_frame(window) + // stn.sleep.sleep_until_interrupt(100) } } \ No newline at end of file diff --git a/sysdata/programs/angels_halo/README.md b/sysdata/programs/angels_halo/README.md new file mode 100644 index 0000000..76d2bab --- /dev/null +++ b/sysdata/programs/angels_halo/README.md @@ -0,0 +1,5 @@ +# angels_halo + +A Minix 3 style reincarnation service. + +Running in the background restarting your drivers. diff --git a/sysdata/programs/angels_halo/meta.toml b/sysdata/programs/angels_halo/meta.toml new file mode 100644 index 0000000..a390679 --- /dev/null +++ b/sysdata/programs/angels_halo/meta.toml @@ -0,0 +1,11 @@ +[package] +name = "angels_halo" +authors = ["able"] + +[dependants.libraries] + +[dependants.binaries] +hblang.version = "1.0.0" + +[build] +command = "hblang src/main.hb" diff --git a/sysdata/programs/angels_halo/pkg.lisp b/sysdata/programs/angels_halo/pkg.lisp new file mode 100644 index 0000000..315e53a --- /dev/null +++ b/sysdata/programs/angels_halo/pkg.lisp @@ -0,0 +1,7 @@ +(pkg angels-halo + (authors ("able")) + (version 0 1 0)) + +(dependencies + (libraries ()) + (programs (hblang))) diff --git a/sysdata/programs/angels_halo/src/main.hb b/sysdata/programs/angels_halo/src/main.hb new file mode 100644 index 0000000..b9452fa --- /dev/null +++ b/sysdata/programs/angels_halo/src/main.hb @@ -0,0 +1,20 @@ +stn := @use("stn"); +.{log} := stn; +.{ProcessID} := stn.acs + +Strategy := enum { + None, + Restart, +} + +MonitoredProcess := struct { + pid: ProcessID, +} + +main := fn(): int { + log.info("Angels Halo reincarnation server started.\0") + + + + return 0 +} diff --git a/sysdata/programs/render_example/src/examples/mandelbrot.hb b/sysdata/programs/render_example/src/examples/mandelbrot.hb index db1b054..5070de4 100644 --- a/sysdata/programs/render_example/src/examples/mandelbrot.hb +++ b/sysdata/programs/render_example/src/examples/mandelbrot.hb @@ -59,7 +59,7 @@ $Y_MAX := 1.12 // if you use the minibrot this should be at least 100 to actually see the minibrot, // if you use the mandelbrot it looks best under 30 -$MAX_MAX_ITERATION := 10000 +$MAX_MAX_ITERATION := 100 $USE_SUNSET := true @@ -79,7 +79,7 @@ example := fn(): void { window := @as(?sunset.Window, null) if USE_SUNSET { sunset.client.find_server() - window = sunset.client.new(.(.(400, 140), .(400, 400), "Mandelbrot Set\0")) + window = sunset.client.new(.(.(450, 140), .(400, 400), "Mandelbrot Set\0")) if window == null { log.error("got no window\0") return @@ -97,6 +97,7 @@ example := fn(): void { y_scale := (Y_MAX - Y_MIN) / @floatcast(@itf(@bitcast(screen.height))) loop if max_iteration >= MAX_MAX_ITERATION break else { + log.info("Iteration complete.\0") py := 0 loop if py == screen.height break else { px := 0 @@ -165,4 +166,4 @@ example := fn(): void { // _ = sunset.client.send_frame(window) // } // } -} \ No newline at end of file +} diff --git a/sysdata/programs/sunset_client/src/main.hb b/sysdata/programs/sunset_client/src/main.hb index a52ee3f..f35cb8b 100644 --- a/sysdata/programs/sunset_client/src/main.hb +++ b/sysdata/programs/sunset_client/src/main.hb @@ -13,7 +13,7 @@ main := fn(): void { return } - window := sunset.client.new(.(.(100, 100), .(200, 200), "Hello,\0")) + window := sunset.client.new(.(.(400, 400), .(200, 200), "Hello\0")) if window == null { log.error("got no window\0") @@ -26,4 +26,4 @@ main := fn(): void { _ = sunset.client.send_frame(window) x += 1 } -} \ No newline at end of file +} diff --git a/sysdata/programs/sunset_client_2/src/main.hb b/sysdata/programs/sunset_client_2/src/main.hb index 2e54759..fa4625f 100644 --- a/sysdata/programs/sunset_client_2/src/main.hb +++ b/sysdata/programs/sunset_client_2/src/main.hb @@ -2,7 +2,7 @@ sunset := @use("../../../libraries/sunset_proto/src/lib.hb") render := @use("../../../libraries/render/src/lib.hb") -bmp := @embed("../../../assets/able.bmp") +bmp := @embed("../../../assets/mini.bmp") main := fn(): void { sunset.client.find_server() @@ -13,7 +13,7 @@ main := fn(): void { return } - window := sunset.client.new(.(.(400, 100), .(400, 240), "Sunset!\0")) + window := sunset.client.new(.(.(100, 350), .(400, 240), "Sunset!\0")) if window == null { log.error("got no window\0") diff --git a/sysdata/programs/sunset_server/src/main.hb b/sysdata/programs/sunset_server/src/main.hb index 68ba597..ac478ff 100644 --- a/sysdata/programs/sunset_server/src/main.hb +++ b/sysdata/programs/sunset_server/src/main.hb @@ -11,6 +11,30 @@ stn := @use("../../../libraries/stn/src/lib.hb"); psf := @embed("../../../assets/consolefonts/tamsyn/10x20r.psf") img := @embed("../../../assets/wallpaper.qoi") +Mouse := struct { + x: uint, + y: uint, + // TODO: Make this configurable via wm config + cursor_width: u8, + + max_x: uint, + max_y: uint, + + new := fn(max_x: uint, max_y: uint): Self { + center_x := max_x / 2 + center_y := max_y / 2 + + return Self.(center_x, center_y, 3, max_x, max_y) + } + /* + center := fn(self: Self){ + center_x := max_x / 2 + center_y := max_y / 2 + + return Self.(center_x, center_y, 3, max_x, max_y) + }*/ +} + main := fn(): int { sunset.server.start() defer { @@ -27,8 +51,11 @@ main := fn(): int { return 1 } - mouse_x := 100 - mouse_y := 100 + // mouse_x := 100 + // mouse_y := 100 + + mouse := Mouse.new(screen.width, screen.height) + //mouse.center() text_label := Label.new_label("\0", 1024) text_label.set_color(sunset.server.DECO_COLOUR, render.black) @@ -40,24 +67,24 @@ main := fn(): int { change_x = change_x << 8 change_x = change_x >> 8 - mouse_x += change_x - if mouse_x <= 0 { - mouse_x = 0 + mouse.x += change_x + if mouse.x <= 0 { + mouse.x = 0 } - if mouse_x >= screen.width - 20 { - mouse_x = @intcast(screen.width - 21) + if mouse.x >= screen.width - 20 { + mouse.x = @intcast(screen.width - 21) } change_y := @as(i16, mouse_event.y_change) change_y = change_y << 8 change_y = change_y >> 8 - mouse_y -= change_y - if mouse_y < 0 { - mouse_y = 1 + mouse.y -= change_y + if mouse.y < 0 { + mouse.y = 1 } - if mouse_y >= screen.height - 20 { - mouse_y = @intcast(screen.height - 21) + if mouse.y >= screen.height - 20 { + mouse.y = @intcast(screen.height - 21) } if mouse_event.left { @@ -92,8 +119,8 @@ main := fn(): int { // Mouse cursor { - render.put_filled_circle(screen, .(mouse_x, mouse_y), 10, sunset.server.DECO_COLOUR_DARKER) - render.put_circle(screen, .(mouse_x, mouse_y), 10, sunset.server.DECO_COLOUR) + render.put_filled_circle(screen, .(mouse.x, mouse.y), mouse.cursor_width, sunset.server.DECO_COLOUR_DARKER) + render.put_circle(screen, .(mouse.x, mouse.y), mouse.cursor_width, sunset.server.DECO_COLOUR) } render.sync(screen) diff --git a/sysdata/system_config.toml b/sysdata/system_config.toml index 8df697f..797454a 100644 --- a/sysdata/system_config.toml +++ b/sysdata/system_config.toml @@ -25,6 +25,7 @@ resolution = "1024x768x24" [boot.limine.ableos.modules.render_example] path = "boot:///render_example.hbf" + [boot.limine.ableos.modules.sunset_server] path = "boot:///sunset_server.hbf" @@ -37,11 +38,15 @@ path = "boot:///ps2_mouse_driver.hbf" # [boot.limine.ableos.modules.ps2_driver] # path = "boot:///ps2_driver.hbf" -# [boot.limine.ableos.modules.sunset_client] -# path = "boot:///sunset_client.hbf" +# [boot.limine.ableos.modules.sunset_client_2] +# path = "boot:///sunset_client_2.hbf" -# [boot.limine.ableos.modules.ablefetch] -# path = "boot:///ablefetch.hbf" +[boot.limine.ableos.modules.ablefetch] +path = "boot:///ablefetch.hbf" # [boot.limine.ableos.modules.diskio_driver] # path = "boot:///diskio_driver.hbf" + + +#[boot.limine.ableos.modules.angels_halo] +#path = "boot:///angels_halo.hbf"