www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - How do I use ncurses library with D? are there any wrapper?

reply Marc <jckj33 gmail.com> writes:
Long time ago, IIRC, I read somewhere there was a ncurses for D 
but now I can't find it are there any wrapper or am I mistaken? 
anyway, I'm doing it from scratch and not porting anything so 
even a library with same functionality as ncurses for D is 
welcome.
Jan 03 2018
next sibling parent Jonathan M Davis <newsgroup.d jmdavisprog.com> writes:
On Wednesday, January 03, 2018 15:47:58 Marc via Digitalmars-d-learn wrote:
 Long time ago, IIRC, I read somewhere there was a ncurses for D
 but now I can't find it are there any wrapper or am I mistaken?
 anyway, I'm doing it from scratch and not porting anything so
 even a library with same functionality as ncurses for D is
 welcome.
There appear to be two which might be of use (maybe three, but the one called sf sounds more like it's using it than providing a wrapper or bindings): http://code.dlang.org/search?q=ncurses IIRC, I have a project which uses the one called ncurses so that it could take a password at the command-line without showing it. - Jonathan M Davis
Jan 03 2018
prev sibling parent reply "H. S. Teoh" <hsteoh quickfur.ath.cx> writes:
On Wed, Jan 03, 2018 at 03:47:58PM +0000, Marc via Digitalmars-d-learn wrote:
 Long time ago, IIRC, I read somewhere there was a ncurses for D but
 now I can't find it are there any wrapper or am I mistaken? anyway,
 I'm doing it from scratch and not porting anything so even a library
 with same functionality as ncurses for D is welcome.
Depending on what you want to do, this might be just the ticket: https://github.com/adamdruppe/arsd/blob/master/terminal.d I've used this for several of my CLI programs, and it works quite well, and is relatively easy to use. Best of all: zero dependencies, just copy terminal.d into a subdirectory called arsd, and `import arsd.terminal;` and off you go. Depending on what you want, you could also tack on eventloop.d from the same repo, with an appropriate version=with_eventloop compiler option, and you'll get a very nice event-driven API to handle keystrokes, etc.. T -- When solving a problem, take care that you do not become part of the problem.
Jan 03 2018
parent reply Adam D. Ruppe <destructionator gmail.com> writes:
On Wednesday, 3 January 2018 at 19:15:18 UTC, H. S. Teoh wrote:
 	https://github.com/adamdruppe/arsd/blob/master/terminal.d
indeed. some dox here http://dpldocs.info/arsd.terminal
 Best of all: zero dependencies, just copy terminal.d into a 
 subdirectory called arsd, and `import arsd.terminal;` and off 
 you go.
You still need to link it in. I suggest just listing the module on the command line with the rest of your build. If you are using rdmd or dub though I think they both automatically do, but with plain dmd you are best off just listing yourself: `dmd yourfile.d terminal.d`
 Depending on what you want, you could also tack on eventloop.d 
 from the same repo, with an appropriate version=with_eventloop 
 compiler option, and you'll get a very nice event-driven API to 
 handle keystrokes, etc..
Note that is Linux only and I might remove support for it in a couple years. I'm working on a new event loop design...
Jan 03 2018
parent "H. S. Teoh" <hsteoh quickfur.ath.cx> writes:
On Wed, Jan 03, 2018 at 09:04:00PM +0000, Adam D. Ruppe via Digitalmars-d-learn
wrote:
 On Wednesday, 3 January 2018 at 19:15:18 UTC, H. S. Teoh wrote:
 	https://github.com/adamdruppe/arsd/blob/master/terminal.d
[...]
 Depending on what you want, you could also tack on eventloop.d from
 the same repo, with an appropriate version=with_eventloop compiler
 option, and you'll get a very nice event-driven API to handle
 keystrokes, etc..
Note that is Linux only and I might remove support for it in a couple years. I'm working on a new event loop design...
Thanks for the heads up. I don't mind updating my code to a new event loop design, if the new design makes sense for me. What we *really* need is a standard event loop in Phobos, so that everyone can just adhere to that API instead of reinventing event loops all over the place (I've done it myself, multiple times). T -- Meat: euphemism for dead animal. -- Flora
Jan 03 2018