Linux sem SO gráfico, mas com recursos gráficos

23

Minha primeira experiência com computadores foi com um Commodore. Eu gostaria que o computador Linux funcionasse de maneira semelhante a isso. Fiquei me perguntando se era possível ter algo semelhante usando o Linux.

O que eu gostaria de ver é quando eu inicializo minha máquina na linha de comando, e não em uma GUI, mas tenho recursos gráficos disponíveis. Então, quando eu digito dizer: Firefox, o programa e sua interface gráfica serão disponibilizados. Quando saio do Firefox, ele retorna à linha de comando. Se eu precisar procurar no sistema de arquivos, digite: XFE ou qualquer outro gerenciador que esteja sendo usado e ele será exibido e permitirá que eu navegue na pasta. Quando eu sair, ele retornará à linha de comando novamente. Portanto, a capacidade de executar, gerenciar e usar programas sem precisar usar uma GUI, mas ter gráficos disponíveis.

Seria bom ter tudo isso voltado para a programação. Portanto, na linha de comando do BASH, é possível chamar um IDE do ambiente do compilador e começar a escrever programas sem se distrair com o ambiente da área de trabalho.

E se mais de um programa gráfico estiver em execução, acho que tenho um gerenciador de janelas com guias. Isso é viável ou estou sonhando?

Linuxuser00
fonte
22
Você está procurando apenas um konsole / gnome-terminal / xterm maximizado?
precisa saber é o seguinte
mas isso tem, em seguida, nada a ver com Ubuntu ;-) Melhor perguntar isso em L & L unix.stackexchange.com
Rinzwind
11
Gostaria de convidar você a pressionar Ctrl + Alt + F1 através de Ctrl + Alt + F7, respectivamente.
Michael Hampton
1
Outra opção é usar o xterm como gerenciador de janelas. Não é possível testar isso agora, mas deve editar ~ / .Xsession e definir a última linha como / usr / bin / xterm sem um &, portanto, esse processo é o não-final que mantém X ativo. Quando esse xterm termina, a sessão termina e o X é encerrado. Pode precisar de alguns parâmetros geométricos.
precisa saber é o seguinte
1
Xterm sozinho não resolve o problema. Eu criei uma instalação muito mínima. Então eu instalei o Firefox. Diz erro: GDK_BACKEND não corresponde aos monitores disponíveis. o que estou perdendo?
Linuxuser00

Respostas:

43

Eu acho que você pode obter o que deseja usando um Gerenciador de janelas lado a lado, como i3 ou xmonad . Existem outros gerenciadores de janelas minimalistas com funcionalidade semelhante. O i3 e o xmonad estão nos repositórios do Ubuntu, portanto, são fáceis de instalar e você pode selecioná-los na tela de login.

Eduar
fonte
Isso é legal e interessante, mas não é exatamente o que estou procurando. Gostaria de ver cada programa sendo executado em seu próprio espaço de trabalho usando a tela inteira para si.
Linuxuser00
12
@ Linuxuser00: Eu acho que isso é apenas uma questão de configuração. A maioria dos usuários de gerenciadores de janelas lado a lado gosta de usar suas telas grandes para exibir informações lado a lado, mas todos oferecem suporte à alternância entre vários aplicativos em tela cheia.
ojdo
Depois de ler esta resposta, experimentei o i3. Parece um pouco mais responsivo que o compiz. Mas é preciso algum tempo para se acostumar. Ainda não descobri como fazer com que as janelas no i3 tenham os tamanhos exatos, quero que elas tenham.
precisa saber é o seguinte
@ Kasperd você quer dizer mod + R, em seguida, jogar com as setas? então depois que você terminar de escapar?
vimdude
24

Receio que você esteja perdendo a principal diferença entre os ambientes modernos de computação e os da era C-64. Os computadores domésticos da era C-64 eram de usuário único, sistemas de processo único e não compartilhavam os recursos dos computadores com outros processos. Isso significa simplesmente que, quando você executava um programa no seu C-64 que era um programa gráfico, ele reconfigurava o hardware do computador para estar no modo 'gráficos' e, em seguida, o programa em execução tratava de toda a saída gráfica e do usuário entrada do mouse e do próprio teclado.

Os computadores modernos e seu software, por outro lado, são multiusuários, multiprocessos, mas não apenas isso, o software moderno depende de bibliotecas compartilhadas, por exemplo, o Firefox conta com a biblioteca de janelas GTK e, por sua vez, com outras bibliotecas de nível inferior. Portanto, para que o Firefox seja executado, isso depende de uma pilha inteira de software e configuração.

Como há muito software subjacente, isso torna mais eficiente permanecer dentro de um ambiente gráfico após a inicialização, em vez de carregar o ambiente gráfico para o Firefox, desligá-lo e iniciar o ambiente gráfico para outro programa, assim por diante e assim por diante.

Você pode simplesmente iniciar e executar qualquer programa da GUI do Linux a partir de uma janela do terminal (console), portanto, aconselho que você escolha um ambiente gráfico simples para desktop, talvez o Enlightenment ou o Openbox , e execute tudo a partir de uma janela do terminal / xterm.

David
fonte
11

Concordo com Eduar, você provavelmente deseja um Gerenciador de janelas de mosaico / dinâmico (WM). Mas ninguém se dirigiu diretamente:

O que eu gostaria de ver é quando eu inicializar minha máquina na linha de comando

Atualmente, você deve inicializar em um gerenciador de exibição (DM) no qual faz login. Então você tem duas opções: inicialize em um shell ou em um console DM.

Se você não possui DMs configurados, por padrão, efetuará login em um shell, isso fornecerá um prompt de login com nome de usuário e senha, se você inserir as credenciais corretas, efetuará login no shell padrão. Eu uso isso e o seguinte é aproximadamente meu 'processo' inicial de inicialização:

Arch Linux 4.1.5-1-ARCH (tty1)

localhost login: Joe
Password: 
$ startx

Se você deseja ter um DM, mas um console, precisará instalá-lo e configurá-lo. O wiki de Arch atualmente diz que existem três DMs de console: CDM, Console TDM e nodm .

O Ubuntu usa o LightDM por padrão , então você pode ter que removê-lo.
Mas como alguém que atualmente não tem um DM, eu recomendaria manter o seu DM atual e apenas mudar seu WM. É tedioso ter que digitar startxe, a partir da memória, fazê-lo executar automaticamente corretamente foi irritante para a instalação.

Theresa Lane
fonte
O Ubuntu usa o lightdm por padrão, pelo menos na variante do Unity.
Léo Lam
Em termos de executar startxautomaticamente, acredito que cada conta tem um script que é executado no início da sessão (ou equivalente para outras conchas)
Nick Mertin
Por favor, perdoe-me se isso estiver completamente incorreto, mas como .bash_profileé um script bash comum, você não pode simplesmente colocá startx-lo?
precisa saber é o seguinte
@ MagikM18 E se você quiser executar um shell bash interativo depois que o X for iniciado? Sem nenhuma verificação, .bash_profiletentaria executar startxnovamente.
Joeytwiddle 29/04
@joeytwiddle verdade, eu não pensava nisso #
Nick Mertin 29/04
10

startx e xinit podem receber um cliente inicial para começar. O seguinte comando:

startx /usr/bin/firefox

ativará um xserver no TTY em que você está trabalhando no momento e iniciará uma única instância do firefox em algo como tela cheia. Você pode mudar para outros tty's para evitar ter que interromper a sessão do firefox apenas para voltar ao console ou trazer outros clientes para lá. Pode ser necessário especificar várias opções para tornar isso agradável ao seu monitor, pois você não terá o ambiente de área de trabalho executando algumas dessas configurações para você.

Você deve estar ciente de que alguns xclients não funcionam muito bem fora dos gerenciadores de janelas ou ambientes de desktop. Não há DE fornecendo decorações de janelas nem WM ouvindo combos de teclas MOD; portanto, se eles não fornecerem uma maneira gráfica de sair, você terá que interromper o processo (ou X) de outro TTY.

Normalmente, o cliente inicial que as pessoas usam com o X é um ambiente de desktop ou gerenciador de janelas, que é apenas um tipo especial de cliente que inicia e incorpora outros clientes, além de exibir sua própria janela.

Steve Cox
fonte
10

Alternativas

Modo framebuffer

Existem alguns programas capazes de executar no modo framebuffer. O modo Framebuffer permite que um aplicativo tenha a tela só para si, permitindo que o aplicativo desenhe o que quiser na tela pixel por pixel. Nem todos os programas suportam, mas há alguns que o fazem.

O modo Framebuffer não requer um servidor X (como X.orgno caso das versões atuais do Ubuntu, ou em um futuro próximo, talvez Mirou Waylanddependendo de qual se torne mais popular), ou qualquer gerenciador de janelas / ambiente de desktop para ser iniciado. Isso deve fornecer uma alternância mais rápida de texto para modo gráfico (e vice-versa), especialmente em (mais?) Distribuições e drivers de gráficos modernos do Linux, os Alt-F[1-6]consoles são renderizados usando o modo framebuffer de qualquer maneira.

"Interface do usuário de texto" (TUI)

Alguns programas que normalmente oferecem suporte apenas à linha de comando usando o mouse via gpm. No Ubuntu, tudo que você precisa fazer é apenas instalar o pacote gpme ele deve funcionar imediatamente, sem nenhuma configuração ou mesmo a necessidade de reinicialização (IIRC). Uma vez gpminstalado, o ponteiro do mouse será mostrado como um cursor de texto no estilo de bloco e você poderá usar o mouse normalmente para clicar nos elementos da interface do usuário. Você também pode destacar o texto e usar copiar e colar.

Se você quiser dar um passo adiante, existe até um "gerenciador de janelas" que permite executar vários aplicativos de terminal no mesmo modo "área de trabalho" de texto.


Lista não exaustiva de programas que suportam o modo buffer de quadros

  • mc (Midnight Commander) - gerenciador de arquivos
  • Links / Links 2, Netsurf - navegadores da web
  • fbi - visualizador de imagens
  • fbgs (relacionado ao fbi, parte do mesmo conjunto), fbpdf - visualizador de PDF
  • mplayer, fbff (baseado em ffmpeg) - reprodução de áudio / vídeo
Pabru
fonte
Parece muito bom, se não fosse tão limitado, obrigado.
Linuxuser00
Olá @ Linuxuser00. Existem mais alguns programas, eu simplesmente não têm tempo para lista mais :)
Pabru
Hey @ Linuxuser00, eu adicionei um par mais se você ainda estiver interessado
Pabru
5

Veja como usar um gerenciador de janelas como o FVWM2, em vez de uma "área de trabalho". Você pode configurá-lo para abrir apenas um (ou mais) xterms na inicialização, pode executar qualquer aplicativo gráfico como um navegador da Web na linha de comando, não se incomoda com itens da área de trabalho como "bandeja do sistema" ou ícones para tudo, mas pode adicionar qualquer parte que você considere realmente útil. (No meu caso, é uma janela de pager para várias telas e um monitor de carga da Conky.)

jamesqf
fonte
Atualmente, estou brincando com este. Talvez eu não o tenha configurado no momento, mas parece instável e caiu sobre mim.
Linuxuser00
Humm ... eu estou no comando desde - oh, em algum momento do final do século 20 - e não tive problemas. Mas eu uso o OpenSuSE em vez do Ubuntu porque (entre outras razões) parece mais simples usar gerenciadores de janelas em vez do 'desktop' padrão. Se você quiser ir além, o FVWM tem um fórum de suporte: fvwmforums.org/phpBB3 O truque para se inscrever é que eles fazem uma pergunta sobre uma "formação". A resposta são os membros dos Beatles, um grupo pop dos anos 60. (Eu tinha para o Google para a resposta mesmo que eu estava ao redor nos anos 60.)
jamesqf
4

Isto é muito possível.

Primeiro, você precisa desativar a inicialização gráfica. Então você quer "Modo de Usuário Único" (avisando que existem alguns riscos extremos de segurança com isso); finalmente, você precisa abordar o que fazer quando deseja executar uma GUI.

Consulte Como inicio no modo de usuário único a partir do GRUB?

Essencialmente, você adiciona a opção singleà sua configuração de inicialização do GRUB. Você pode fazer isso no seu arquivo / etc / default / grub para tornar as alterações permanentes.

Consulte Como desabilito o X no momento da inicialização, para que o sistema inicialize no modo de texto?

Essencialmente, você adiciona textàs suas opções em/etc/default/grub

Isso lhe dará um único usuário, ambiente apenas de texto. Em seguida, use a GUI. O programa que você deseja executar éstartx

Você iria correr

startx /path/to/executable

O problema é que você provavelmente deseja um gerenciador de janelas de algum tipo. Eu sugeriria twmsuas necessidades.

sudo apt-get install twm

Em seguida, para executar comandos, eu diria que execute startxe volte para o console (CTRL + ALT + F1) e faça algo parecido export DISPLAY=:0. Agora, sempre que você for um aplicativo GUI na linha de comando, ele será iniciado no "Lado Gráfico", que você pode acessar com Ctrl + Alt + F7 (geralmente).

Se você gosta dessa configuração, pode até automatizar a configuração com um script.

É isso, o mais próximo que você vai conseguir, sem muito trabalho.

coteyr
fonte
Por que você precisa do modo de usuário único?
precisa saber é o seguinte
"O que eu gostaria de ver é quando eu inicializar minha máquina na linha de comando, ...". Os computadores antigos "Commodore" não eram multiusuário. Eles não eram "usuários". Você os ativou e obteve um cursor piscante para digitar comandos. Todos os comandos foram tentativas e não havia segurança para falar. O mais próximo disso hoje é o "modo de usuário único", que basicamente inicia o logon como root, ignora a maioria, senão toda a segurança.
coteyr
Aha, eu já suspeitava que você estivesse confuso. Não há uma boa razão para você querer o Modo de usuário único aqui. No Linux, o modo de usuário único versus o modo de multiusuário é independente da opção da GUI ou da CLI.
precisa saber é o seguinte
Não, não estou confuso. O OP solicitou um ambiente o mais parecido com um Commodore possível. Isso significa que não há segurança, nenhum usuário e login. A melhor maneira de se aproximar disso é o modo de usuário único. Os dois objetivos não estão relacionados entre si; você pode ter acesso ao console com vários usuários; você pode ter uma GUI com um único usuário. São duas partes do objetivo geral maior.
coteyr
Não, não quero um ambiente o mais próximo possível do Commodore. Eu quero simplicidade semelhante ao Commodore (sem SO gráfico). O Bash por si só é ótimo, mas gostaria de entrar em um ambiente de codificação se eu quiser codificar ou entrar em um ambiente de navegador se quiser navegar na rede e assim por diante. E quando terminar esses programas, feche-os e retorne ao BASH. ou talvez tenha vários programas em execução em seu próprio espaço de trabalho. Eu tenho estado ocupado e não consegui implementar alguns desses métodos discutidos até agora.
Linuxuser00
3

Eu gosto de ratpoison pelo que você está tentando fazer. Não publicarei uma captura de tela porque você não pode dizer a diferença de uma captura de tela do xterm (ou de qualquer aplicativo que esteja executando). Em sua configuração padrão, ele exibe uma janela em tela cheia. Você pode dividi-lo para exibir várias janelas, mas para a maior parte do meu uso diário, não. Se você iniciar um emulador de terminal a partir do arquivo .ratpoisionrc, receberá um prompt quase assim que efetuar o login. Ele é inspirado na tela do gnu, e o único conceito que eles perderam foi sessões destacáveis ​​e compartilhadas (mas o vnc preenche essa lacuna). .

hildred
fonte
2

Eu acho que você pode conseguir o que deseja sem jogar fora a área de trabalho. Como outras respostas abordaram, você provavelmente obterá melhor desempenho com a área de trabalho em execução de qualquer maneira e há razões técnicas para executar o Linux como um sistema operacional mais antigo realmente não funcionaria.

Vou usar o gnome como meu exemplo de fluxo de trabalho, porque é o que eu sei, mas acho que outros ambientes de desktop também suportariam funcionalidades semelhantes. No gnome 3, você pode ter um espaço de trabalho (ou vários) com um terminal de tela cheia com a mesma aparência de execução no modo somente de linha de comando. O fato de a área de trabalho do gnome estar em execução em segundo plano é irrelevante.

Em seguida, usando um gerenciador de janelas (como o discutido nesta pergunta do SO ) para controlar em qual área de trabalho novas janelas são criadas, você pode forçar cada nova janela a ser colocada em sua própria área de trabalho. Se você deseja mover as janelas quando elas são criadas, não precisa de nenhum software além do gnome. O Gnome 3 suporta espaços de trabalho automáticos, assim como você abre / fecha janelas no espaço de trabalho mais baixo, novos espaços de trabalho serão criados / excluídos automaticamente para eles. Então você pode simplesmente usar ctrl + alt + arrowpara se mover rapidamente entre eles. Quando você fecha uma janela, a área de trabalho em que estava é excluída automaticamente e as duas áreas de trabalho de cada lado se movem juntas. Tudo que você vê são as janelas que você abriu e o terminal.

Godric Seer
fonte
Isso parece certo. Talvez o Openbox e o Gnome me desse o que eu quero?
Linuxuser00
Como não usei o openbox (ou qualquer outro gerenciador de janelas), você terá que avaliá-los por conta própria), mas eu executo o gnome 3 no meu laptop e uso o fluxo de trabalho descrito nesta resposta (movendo as janelas manualmente). Estou muito feliz com isso, embora a reorganização das janelas na ordem que desejo depois que elas sejam criadas seja um pouco mais dolorosa do que deveria ser.
21716 Godric Seer
2

Instale o Xvfb:

apt-get install xvfb

Corre:

/usr/bin/Xvfb :1 &
export DISPLAY=:1

em seguida, execute qualquer software gráfico que você gosta sem cabeça.

Ian Ellis
fonte
1

Você pode mudar rapidamente para uma interface de linha de comando usando [ctrl] [alt] [F1] (funciona com [F1] - [F12], eu acho). Um deles também retornará à sua GUI para quando você precisar; Eu acho que é [ctrl] [alt] [F8] no Mint, então você pode tentar esse. Vou me jogar no campo "use um gerenciador de janelas lado a lado"; O i3 é realmente uma ótima ferramenta.

Johnathan Andersen
fonte
Sim, mas o problema que tenho com isso é que há uma GUI em execução em segundo plano usando meus recursos; portanto, devo usar a GUI em vez de fingir que não está lá.
Linuxuser00
Muito verdadeiro! Uma maneira de contornar isso seria configurar o sistema operacional para trocar a sessão inteira quando não estiver ativo. Eu não ficaria muito surpreso se fizesse isso automaticamente, mas provavelmente é algo que você precisaria passar por um problema considerável para definir.
Johnathan Andersen