Quais aplicativos gráficos podem ser executados a partir do terminal?

0

O que exatamente faz uma aplicação gráfica rodar a partir do ambiente do terminal? Em termos de X11, o que você precisa fazer para tornar o aplicativo executável a partir do tty?

Como programas como omxplayer , minecraft ou gedit não podem ser executados a partir de tty, mas por exemplo, "anões bêbados raivosos" (um jogo python) ou emulador retroarco podem?

É claro que estes são apenas exemplos, não quero que você explique por que isso funciona ou não. Mas suspeito que exista algum denominador comum. Se você puder, por favor, entre em detalhes, mas apenas os links para a literatura / artigos certos também são bem-vindos. Obrigado.

- EDITAR

Ok, houve algum mal-entendido. Para esclarecer: vamos supor que há o Xorg rodando em tty7 e estamos tentando executar programas gráficos em um terminal diferente (digamos tty1) que não possui uma instância do Xorg em execução.

    
por Pyjong 03.02.2018 / 13:47

3 respostas

3

Se um terminal é capaz de exibir uma aplicação gráfica ou não depende de dois fatores, a capacidade do terminal e o design da aplicação gráfica.

Nos tempos antigos, em que os terminais eram dispositivos reais conectados a computadores através de linhas seriais, a maioria dos terminais, especialmente os que realmente imprimiam texto em papel, só podiam exibir texto.

Já havia algum tipo de "aplicativo" gráfico capaz de imprimir coisas semelhantes a essa:

From: pk6811s_acad_drake_edu (Paul Kline)
[Here bingle and boobie.]
"They're 'just' pixellated art, but they're original and not overly long.
Best when viewed with light characters on dark background."

 Frank Sinatra

"The old crooner himself:"
     QB"   .  . ....^FBQQBQBQ
     #^   ..../,, ,/yyBQBDBt'"B
   B"  ._L_yQ&Qy&&QQBQQDlL;S; (Q
  B^   /DQQQBQQQQQQBQBDQQD1:   "B
 Q~   ,GQBDQDQQQQQQBBQQDQ&EC    7B
 D    lQQQQQBQBQQQQQQQQBBID('    {
 E   .iDDBQQBQQQQBBBQBQQDQ1!:    (
 3   .(BQBBQBBQQQQBBQBBBDBS'     }                     I'm
 Q   '~~<MMBQQBBQBP"""<BD1EL.    Q                   dreaming
 Q    LuL '7QBBB?../LL;.!JDL     Q                    of a
"  ,  ,__&L.DBBEEL1L_,'EylEE!  ,U                     white
1 :s&yyQQQ6-DQBBQ&QQQQQQQQJY!  lyB1Q                Christmas.
S  ?DDQQBD'.QQBDQDBQBQQQDD1<  LIQDG
Q   j8BQE2 LQQBE9EBBEBQQES{! /BQSE
 Q_ 'TS7L  <#P~^,G1?TXC3({!  3PEy
  Q, ,_>'.,___yBD1DU;,'('''  yQ
   L "Qy,  'IIIZl',L/&;!;:  LQ
   Q; FD(  ('IE2L/QDB&lY!   6Q
    Q, (/. '!?"21iQDU&/~   L FB
     Q_ (EL/&&QDBQBDJ"   ,y^  'FB
      Qy 75EEBBQESf'   _yB^      "M
      Q7  ''^""~'   _yQQM'         '"FQ
      F;         _yQQQQF              Q

Depois surgiram terminais baseados em CRT, como o DEC VT100, que implementaram um padrão que os emuladores de terminais mais atuais seguem. Esses terminais eram essencialmente texto, embora houvesse suporte para alguns caracteres gráficos, mas não conseguiam exibir gráficos (de alta resolução). Uma exibição de 80 colunas de 25 linhas também pode ser considerada como um dispositivo de baixa resolução de 2000 pixels (80x25), mas a velocidade das linhas seriais estava impedindo que essa abordagem fosse muito útil.

Também costumava haver terminais capazes de exibir gráficos nativamente, por exemplo, aquele :

Atualmente,amaioriadosaplicativosgráficosemexecuçãonoUnixeLinuxsãobaseadosnoprotocoloX11nonívelinferior.EsteprotocolorequerumservidorcompatívelcomX11paraserexecutadonocomputadorquecontrolaatela.Esteservidorestáassumindoocontroledoconsolesubjacenteoudeumdosterminaisvirtuaisemtodasasimplementações,portanto,atécertoponto,todasasaplicaçõesgráficasestãorodandoapartirdeumambienteterminal,muitasvezestty7,maséclaroqueesteterminalperdesuascapacidadesoriginaislogocomooX11assumeocontrole.

OconsoleusadopelamaioriadossistemasoperacionaisUnix/Unixoferecealgumsuporteparaaplicativosgráficos.NoLinux,estesuporteestádisponívelatravésdo linux framebuffer (fbdev - / dev / fb0). É usado, por exemplo, para exibir o pingüim Linux, o Tux, no momento da inicialização.

Costumavahaveralgunsaplicativosqueusavamdiretamenteessedispositivocomodoom,masagora,amaioriadosaplicativosgráficosusaoX11,quetambémdependedofbdev.Algumasaplicaçõesmuitoversáteis,como vlc e mplayer , podem diretamente use o buffer de quadros do Linux.

Existem também bibliotecas que implementam uma camada gráfica apresentando um dispositivo gráfico para aplicativos, mas que estão sendo exibidos em consoles de texto, não muito diferente do que foi feito nos anos 60 em teletipos e nos anos 80 no PC conectado ao BBS. Um bem conhecido é libcaca com o qual você pode até assistir a um filme em um terminal com o mplayer ...

Finalmente,algunsemuladoresdeterminaltambémsuportamgráficos.Umnotáveléovenerávelxtermque fornece uma janela do emulador Tektronix 4014 para exibir gráficos vetoriais com o gnuplot e outros aplicativos / bibliotecas:

    
por 04.02.2018 / 05:59
6

Na verdade, o que você (ou mais corretamente, os aplicativos de GUI que você executa) precisa de duas coisas normalmente.

  • acesso a X11 server via xhost
  • forneça a variável de ambiente DISPLAY .

Um exemplo prático de trabalho é uma das minhas respostas antigas , em que dad-OP solicitou a exibição da mensagem do terminal (supondo ssh ) para crianças logadas via GUI.

Com alguns ambientes de área de trabalho que usam o DBUS, talvez seja necessário fornecer uma variável de ambiente para a sessão do DBUS. Esse tipo de sugestão é visto frequentemente em perguntas sobre a execução de aplicativos / mensagens da GUI para usuários de /etc/rc.local .

    
por 03.02.2018 / 19:17
1

Aplicações gráficas não são executadas em um terminal. Eles correm em um servidor X. Este servidor X não precisa estar conectado a um tty, embora geralmente seja.

Assim, a aplicação não está conectada a um tty, mas apenas o servidor X está. Você pode iniciar um servidor X em um tty apenas, não em um aplicativo.

IIRC você pode fazer um servidor X executar um único aplicativo, no entanto. Mas não posso dar detalhes sobre isso.

    
por 03.02.2018 / 16:34

Tags