Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3285 connectés 

 


Dernière réponse
Sujet : Faire un terminal
Jak En effet, ça a l'air totalement inutile, ton truc, donc absolument indispensable.

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Jak En effet, ça a l'air totalement inutile, ton truc, donc absolument indispensable.
e_esprit Ah ca peut etre sympa...
Tu nous tiens au courant ?
246tNt Comme j'utilise principalement que des terminal ( pour vim, pour programmer ), je me suis dit que j'essaierait bien un truc :
 
J'aurait une fenetre en full screen dans laquelle je peut faire apparaitre plusieurs autres fenetres qui sont des terminaux et avec l'open GL, je peut gerer la vrai transparence ( quand un terminal est au dessus de l'autres ), quand j'en fait passé un a l'arriere plan, on pourrait le voir "s'enfoncer" un peu comme dans de l'eau avec des petit effets graphique, ... Bref plein de truc qui servent pas a grand chose c juste pour le fun ;)
 
En fouillant les source de rxvt j'ai trouvé ce que je cherchait :
 

Code :
  1. setsid()
  2. setpgid( 0,0 );
  3. setpgrp();

   
 
Et la ca marche. Mais j'ai encore rien a montrer j'ai pas encore fait la partie graphique ;)
 

e_esprit Je peux pas t'aider, mais je vois pas bien l'interet d'un terme openGL...
Alors j'aimerais bien que tu detailles si c'est possible...
246tNt Voila, j'essaye de faire un petit prog qui m'afficherait un terminal ( comme xterm quoi ) avec de l'opengl et des truc joli.
 
Ce que je fait.
J'ouvre un couple /dev/pty /dev/tty.  
Je fork.
Dans le child :
 

Code :
  1. close( fd_pty );
  2. dup2( fd_tty, FILENO_STDIN );
  3. dup2( fd_tty, FILENO_STDOUT );
  4. dup2( fd_tty, FILENO_STDERR );
  5. exec( "/bin/sh", argv );


 
Dans le parent, je close stdin,out,err et fd_tty. J'attend un evenement ( frappe clavier ou arriver d'un char sur fd_pty ). J'affice ce qui vient de fd_pty et j'envoie les caractère au clavier sur fd_pty. Ca marche assez bien sauf :
 - Les car special je les gère pas encore ( couleur position ) mais ca je sais comment faire.
 - Certain programme ( genre 'su' ), le prompt du password s'affiche pas dans la fenetre que je gere mais dans la fenetre ou le parent a été lancé ...
 


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)