#Eventide - Yet Another TUI Library

10 messages · Page 1 of 1 (latest)

hexed elk
#

In an attempt to get my motivation going, I decided I might as well start this post. Eventide is yet another TUI library, designed with heavy customization in mind.

As of right now, I'm keeping the scope of the project small and making the tasks relatively easy to complete, that way I don't burn myself out with the sheer size of the project.

Also, there's a screenshot attached of an "artistic rendition" of what the library should be able to do with the basic window management tools. It's not much, but as mentioned before, it's a small start to help me avoid burnout.

Feature Implementation:
☒ Window Management
☒ Display & Main Loop
☑ Post-Creation Modification (title modification, resizing, etc.)
☑ Title Rendering (modifying window name specifically)
☐ Menu System
☐ Menu & Menu Items
☐ Automatic Arrow Key Navigation

-# ☐: Not Started
-# ☒: Partially Finished
-# ☑: Mostly or Fully Finished

#

The test window has a custom config applied which:

  • Disables automatically wrapping text around (preventing it from getting cut off like how it would in a normal terminal)
  • Enables ending hyphenation
  • Enables starting hyphenation
hexed elk
#

Would it be better to use a builder-style pattern (Window::new(...).set_size(...).set_title(...);) or just modify it after creation? (let window = Window::new(...); window.set_size(...); window.set_title(...);)

wispy shadow
hexed elk
hexed elk
#

a little late on mentioning the update, but it new stuff added (mainly a config thingy):

use eventide::core::{Static, Config};
use eventide::window::Window;

fn main() {
    let mut global_config = Config::new().defaults()
        .auto_wrap(false);
    global_config.set("hyphenate_end", true);
    global_config.set("hyphenate_start", true);
    
    let window = Window::new(Static, &global_config)
        .title("Test window!")
        .text(vec![
            "This is a window that uses a global config.", 
            "All settings within the config variable can be used across everything (windows, menus, etc.)"
        ]);
    
    window.render() // renders one frame of the window and displays that
}
hexed elk
#

my laptop that i was using junked out

#

so this project has unfortunately been taken out

#

however, i still have some motivation for it

#

so i might start work again on one of my backup devices