Desenvolvendo aplicativo GUI para o servidor Ubuntu CLI

4

Eu preciso ser capaz de renderizar minha própria GUI na tela, mas não tenho certeza de como fazer isso, considerando que estou em um ambiente CLI. Eu não quero instalar o Ubuntu-desktop ou qualquer coisa, eu não preciso de um desktop inteiro, apenas a capacidade de renderizar diretamente para a tela.

Li um pouco sobre X . Eu suponho que preciso fazer algo que o implemente. Existem referências que explicam isso? Eu estou supondo que uma linguagem de baixo nível (por exemplo, C) será necessária, mas obviamente eu me sentiria mais confortável se fosse um idioma de nível superior necessário (por exemplo, Python).

Por favor, deixe-me saber, não consigo encontrar nada no Google. Não acho que estou procurando a coisa certa, talvez eu precise apenas de termos de pesquisa refinados.

O que estou desenvolvendo é um aplicativo que eu quero instalar em um computador de placa única. O computador só seria usado para o propósito deste aplicativo, então eu não quero desperdiçar recursos carregando ubuntu-desktop ou gnome apenas para que eu possa renderizar meu aplicativo. Eu realmente não quero o overhead extra. Deixe-me saber se isso muda alguma coisa.

    
por FreeSnow 27.02.2013 / 20:08

2 respostas

4

Se você quiser fazer aplicativos de tela cheia sem janelas envolvidas e usar o Python em C, você tem várias opções:

Mecanismos de jogos : por exemplo, a biblioteca SDL . Ligações de Python existem aqui . Aplicativos SDL são executados em cima de X, wayland, framebuffer, SVGALib e muito mais. Ele fornecerá gráficos em tela cheia e, para um SOC, você precisará apenas de um dispositivo de buffer de quadro, por exemplo, quando você vê o mascote do Linux durante a inicialização, você já está lá. No entanto, se você tiver alguma GUI avançada como o cockpit de um carro moderno em mente, ela pode envolver OpenGL para anti-aliasing. Para um caixa eletrônico (ATM), como a GUI, ele perderá os botões e caixas padrão que você teria que implementar por conta própria. Muitos jogos SDL nos repositórios do Ubuntu podem ser recompilados para rodar sob um framebuffer.

Instaladores Linux : O debian-installer usa o kit de ferramentas gtk + em cima de um dispositivo framebuffer , não X envolvido. Você terá todos os widgets Gtk + sob seu comando e uma boa renderização de texto com pango , gráficos modernos com anti-aliasing com cairo . Ligações de Python existem. A distribuição OpenSuse tem um instalador similar em cima de QT .

Gráficos em modo de texto (TUI) : Se você tiver apenas saída de texto com alguns botões para renderizar, considere usar a biblioteca ncurses . Ele permitirá uma interface de usuário textual com uma API de alto nível. O midnight-commander é um bom exemplo. Ligações de Python existem.

Licitações comerciais : Se este for um projeto profissional, empregar outros kits de ferramentas comerciais e sistemas operacionais em tempo real é uma opção. Consulte também this e perguntas marcadas semelhantes , mesmo sem o linux no Stack Overflow.

Palavras-chave úteis da pesquisa

  • biblioteca de gui do microcontrolador
  • gráficos de modo imediato
  • DirectFB
  • Gráficos RTOS
  • Kit de ferramentas de gui RTOS
  • linux customizado
por aquaherd 01.03.2013 / 14:30
1

A maioria dos usuários que não instalam GUIs não deseja executar aplicativos GUI. Existem muitas opções para instalar uma GUI em um servidor e algumas delas são bem leves. Você não precisa de um ambiente de trabalho inteiro para usar o sistema de janelas X. Instalar o X11 e um gerenciador de janelas, ou possivelmente até mesmo um ambiente leve de desktop, provavelmente fará o que você precisa.

Se você considerou isso (incluindo a parte sobre usuários CLI que desejam executar programas CLI), você provavelmente tem um conjunto único e notável de circunstâncias para querer fazer isso. Se você expandir sua pergunta para explicá-las, poderá obter respostas mais úteis.

Se você realmente quiser reinventar a lâmpada e reimplementar sua própria GUI, o comentário de aquaherd (que eu espero que se torne uma resposta em breve) explica o básico de como.

    
por Eliah Kagan 01.03.2013 / 00:12