#include int main() { _gui_win(); int xterm_in[2]; int xterm_out[2]; _pipe(xterm_in); _pipe(xterm_out); vesa_init(); void *tty=terminal_init_vesa(); int pid=_fork(); if(!pid) { _close(xterm_in[1]); _close(xterm_out[0]); _dup2(xterm_in[0],0);// stdin _dup2(xterm_out[1],1);// stdout _dup2(xterm_out[1],2);// stderr while(1); char *argv1[]={"/bin/fsh",0}; char *env1[]={"HOME=/home/miguel","PS1=\033[34m$\033[37m","PWD=/home/miguel","PATH=/bin","TERM=fool-term",0}; while(1); _execve("/bin/fsh",argv1,env1); // replace process with our foolshell :) } _close(xterm_in[0]); _close(xterm_out[1]); _dup2(xterm_in[1],1); // compositor writes here. while(1); while(1) { char buf[1]; _read(xterm_out[0],buf,1); // show what foolshell writes to its stdout/stderr _gui_rect(); //lock terminal_put(tty,buf[0]); _gui_rect(); //unlock } }