~ilmu/tala

Menu prims
Changed tala.scm to guix.scm so I can run guix shell unqualified. Sketched some plans for perfect reproducibility.
Just a small overflow from cxp, I will give this repo proper attention soon.
Adrien sync

refs

master
browse  log 

clone

read-only
https://git.sr.ht/~ilmu/tala
read/write
git@git.sr.ht:~ilmu/tala

You can also use your local clone with git send-email.

# Design

{ You can run overview.sh for intro }

driver-loop is the bottom template, we have three (dependent) slots.
defstate is the top template, it can be cleanly checked with predicates.
defstate coordinates input, drawing and cleanup for the driver-loop.
each "name" (canonical S-expression) is in 1-1 correspondence with a state.

To understand the higher level design please check datalisp.is (and wait patiently for updates).

# Installing ** Warning ** this is not yet working.

Quickly install the current version using ./install.sh

TODO (besides getting it working)
- Update version logic (from completely manual :)
- Make it configurable how much code is seen by the build (via asd).

## Debugging install

You can use the shell.sh script to get a repl to run the commands guix will run.

This can let you locate problems faster than rebuilding with guix constantly.

# Hacking

Run hack.sh in the terminal where you will test the program.

Then open emacs and do M-x `sly-connect` and give it port 4008.

Now you can run `(in-package #:init-dev)` to be able to access *scr*
and `(croatoan:submit (croatoan:clear *scr* :redraw t))` will allow
for clearing you canvas.


To start hacking on the menu load it into the application using...

:: TODO/REVIEW BELOW
...now you can open src/tala.lisp and send the buffer to the repl.

(test) lets you try the program in the terminal where you ran the script.

## Contributing

Send me an email if you are interested: ilmu@rishi.is.



# Notes

Split tui into lots of files each their own package.

main picks the one active at any point in time.

entry point is opening a shell with the package.




List of future concerns:

* Communicating menus (like IRC/email client for example).
* Breaking a window in the ncurses sense out into a new terminal window.
* Font availability and bundling fonts alongside the program (guix).
* Toggling into byte font (square with 8 tringales).
* When ASCII show unprintable characters with the byte character.
* When UTF8 show unprintable / unavailable characters as bytes?


fontforge is cool



Ghost process:

if you abort the thread that you send croatoan tasks to (instead of skipping task) then you can have to kill sbcl using sth like `ps -e | rg sbcl` and `kill -9 $PID`.