Um cliente X precisa necessariamente de um gerenciador de janelas para funcionar?

32

Um cliente X precisa necessariamente de um gerenciador de janelas para funcionar? Um cliente X pode trabalhar apenas com o servidor X?

Se um cliente X não tem uma janela , se ele pode funcionar precisa de um gerenciador de janelas?

Se um cliente X pode funcionar sem um gerenciador de janelas, o cliente X não possui necessariamente uma janela?

Obrigado.

Tim
fonte
4
Quando eu encontrei o X - isto é, há muito tempo - o fato de você não precisar de um gerenciador de janelas foi discutido na maioria dos materiais introdutórios. Não parece ser o caso hoje em dia, mas suponho que alguém possa pensar isso óbvio ou um exemplo de preguiça.
dmckee
11
@ Tim: Parece que você já existe há tempo suficiente para saber que um voto negativo não tem a intenção de comunicar "ódio", "maldade", "crueldade", "discriminação" ou qualquer coisa assim. Um voto negativo é simplesmente um sistema de classificação de conteúdo , e algum conteúdo é menos valioso que outro. (Para constar, não diminuí a votação desta pergunta: acho que é ótima.) Veja também: Podemos tornar mais óbvio para os novos usuários que as votações negativas no site principal não são insultos e, na verdade, podem ajudá-los a ajudar a si mesmos ? no Meta Stack Overflow.
Daniel Pryden
5
@ Tim Algumas de suas perguntas com voto negativo não parecem úteis para mim. A interface do usuário (o texto alternativo do botão) incentiva os usuários a votarem negativamente nas perguntas "não úteis". O ódio não é um componente necessário. Adicionar uma pequena dica / afirmação de que uma pergunta poderia ser potencialmente usada em algum cenário (mesmo que muito marginal / improvável) impediria principalmente essa reação instintiva. Suas perguntas que eu vi são notavelmente semelhantes, na medida em que elas não têm nenhuma sugestão / afirmação.
kubanczyk
3
Tim, os moderadores de diamantes têm acesso a algumas ferramentas que detectam a votação de padrões. Sinalize-os e peça-lhes para investigar. / mod em physics.se
dmckee
1
Partes da sua pergunta parecem não-gramaticais. O pior infrator parece ser "se ele pode funcionar precisa de um gerenciador de janelas?".
hkBst

Respostas:

26

Não. Aplicativos bem escritos não precisam de um gerenciador de janelas.

Mas alguns aplicativos quebrados "modernos" não funcionarão bem sem um gerenciador de janelas (por exemplo, firefox e suas sugestões de barra de endereço que não serão exibidas [1]).

Muitos outros aplicativos secundários não apenas assumem um gerenciador de janelas, mas para adicionar insulto à lesão, um clique para focar no gerenciador de janelas. Por exemplo, costumava ser que qualquer aplicativo java simplesmente roubava o foco na inicialização.

Se você deseja testar, instale Xephyr(um servidor X11 "aninhado"), execute-o Xephyr :1e inicie seus aplicativos DISPLAY=:1no ambiente.

[1] a "barra impressionante" do Firefox não abre o painel de sugestões quando digitado ou clicado no botão de histórico, a menos que haja um gerenciador de janelas em execução. O menu de ocultação automática também não funciona.

mosvy
fonte
Existe um bug aberto no firefox para o problema que você mencionou? Eu acho que a natureza de código aberto do firefox estaria disposta a acomodar uma correção de bug para esse problema.
T3dodson
4
@ t3dodson Você pode tentar enviar um, mas é altamente duvidoso que alguém se preocupe em revisar um patch para corrigir isso. A execução do firefox não é realmente suportada sem um gerenciador de janelas, gerenciador de sessões e, recentemente, um servidor pulseaudio em execução. Claro, você pode desembolsar, mas ter que manter um garfo firefox não é algo que eu desejo a meu pior inimigo ;-)
mosvy
Imo qualquer resposta sobre este tema não está completa sem mencionar Xephyr. +1
Rui F Ribeiro
38

Não, você não precisa estar executando um gerenciador de janelas para permitir que um cliente X funcione. Alguns sistemas oferecem uma opção para executar apenas um terminal na inicialização e, a partir disso, você pode iniciar programas adicionais, incluindo gerenciadores de janelas. Algumas configurações de quiosque que desejam que apenas um aplicativo seja executado não precisam de um gerenciador de janelas. Algumas implementações do X para microsoft windows evitam um gerenciador de janelas X, permitindo que o sistema operacional gerencie as janelas.

Sem um gerenciador de janelas, você normalmente precisa especificar a geometria dos programas para não colocar tudo no canto superior esquerdo.

No X, o gerenciador de janelas é apenas outro cliente X. Isso era incomum na época, mas tornava fácil ter gerenciadores de janelas diferentes.

Outra maneira de analisar a questão é observar que você pode alterar os gerenciadores de janelas em tempo real, para que haja um tempo entre o primeiro parar e o segundo a assumir o controle, mas, como todos os seus aplicativos não falham, eles devem poder trabalhar sem.

Icaro
fonte
2
Dica: existe uma ferramenta chamada xwit que realmente ajuda ao experimentar configurações sem ui.
rackandboneman
7

Um gerenciador de janelas é uma conveniência para os usuários.

Nos bons tempos antigos, eu costumava ter um ~/.Xclientsarquivo que dizia:

#!/bin/sh

HOST=`uname -n | sed 's/\..*$//'`

xv -root -rmode 5 $HOME/misc/millennium/theme/Wallpaper.gif -quit &

xterm -geometry 80x24+0+85 \#52x71-104+0 -n $HOST -T $HOST &
xterm -geometry 80x24+510+429 \#52x71-52+0  -n $HOST -T $HOST &
xclock -digital -update 1 -geometry +1059+982 &
xscreensaver -nosplash &
exec /usr/local/lib/X11/fvwm/fvwm

Este arquivo seria executado quando iniciei o X com startx. Quando esse script terminar, o servidor X será desligado.

Observe a última linha: exec .../fvwm. Esta é a linha que iniciou meu gerenciador de janelas (fvwm). Todos os pedidos anteriores ( xv, xterm, xclock, xscreensaver) estavam em execução antes de o gerenciador de janelas começou. Como a chamada para fvwmera a última linha e não foi colocada em segundo plano, isso significava que, quando fvwmterminado, X seria encerrado.

A inicialização do X ainda tinha um padrão de "retorno" ... se não houvesse arquivos de configuração, inicie o X com uma única xtermexecução. Fechamento que xtermencerraria a sessão X.

Stephen Harris
fonte
Qual foi a vantagem de não ter experiência com fvwm?
Alex Hajnal
1
Precisamos que o script não termine porque, se o fizer, o servidor X será finalizado; ao não ter um plano de fundo fvwm(e executá-lo exec), garantimos que ainda existe um processo que impede o servidor X de desligar. Ao fazer esse último processo, fvwmpermite que um item de menu "sair" funcione conforme o esperado.
Stephen Harris
Consegui. Faz um tempo desde que fiz muito baixo nível com o X. Devo dizer que o fvwm 2 é um dos meus dois gerenciadores de janelas favoritos (o outro é o kwin 3).
Alex Hajnal
No meu caso, fvwm-1.24rfoi o meu gerenciador de janelas favorito :-)
Stephen Harris
Eu ouvi você sobre isso. Parece que me lembro que a v2 era mais personalizável que a v1 (com todas as opções de configuração em um único arquivo de texto e recarregável on-the-fly?). Muito leve também, especialmente pelos padrões atuais. Eu o usei diariamente pela última vez na era P-II IIRC.
Alex Hajnal
6

Para adicionar a outras respostas, desenvolvi e liberei um aplicativo de código aberto que funciona sem um gerenciador de janelas (o que significa que você pode iniciá-lo diretamente no xinitrc). Existem algumas etapas extras que o aplicativo deve executar nesse caso, além de gerenciar a geometria e a ordem Z de seus diálogos, mas isso é totalmente gerenciável.

George Y.
fonte
1

Há muitas boas respostas detalhadas aqui. Aqui está a resposta simples e clara.

Um cliente X precisa necessariamente de um gerenciador de janelas para funcionar?

Não: mas sem se você se esforçar para gerenciar suas janelas (mover, redimensionar, abaixar, elevar etc.). Existem outras ferramentas que podem fazer isso, se você precisar.

Um cliente X pode trabalhar apenas com o servidor X?

sim

Se um cliente X não tem uma janela, se ele pode funcionar precisa de um gerenciador de janelas?

Se não tiver janelas, não deve haver desvantagem em não ter gerenciador de janelas.

Se um cliente X pode funcionar sem um gerenciador de janelas, o cliente X não possui necessariamente uma janela?

Não: pode ter janelas.

Tente isso.

DISPLAY=:21
vncserver -localhost -geometry 1920x1080  -SecurityTypes None $DISPLAY &
ssvnc $DISPLAY
xterm &

depois no novo xtermtipo fvwm.

Você pode precisar instalar vncserver, ssvnce fvwm, em primeiro lugar.

ctrl-alt-delor
fonte
1

Sim, um cliente X pode trabalhar apenas com o servidor X. Como exemplo, eu dou minhas máquinas virtuais seu próprio console virtual no host, assim.

# Press CTRL-ALT-F5, login and enter this command:
startx /usr/bin/virt-viewer -a -k -r -w -c qemu:///system CentOS -- :4

# Press CTRL-ALT-F6, login and enter this command:
startx /usr/bin/virt-viewer -a -k -r -w -c qemu:///system Windows -- :5

O comando "startx" inicia o servidor Xorg X nos displays: 4 e: 5 com apenas virt-viewer como cliente.

"CentOS" e "Windows" são os nomes que dei às minhas máquinas virtuais quando as instalei. A opção -k para o virt-viewer torna a tela cheia com controles mínimos, de modo que cada máquina virtual parece ser a proprietária da máquina até pressionar CTRL-ALT-Fn para alternar para um console virtual diferente.

Obviamente, o CentOS está executando um gerenciador de exibição e gerenciador de janelas dentro da máquina virtual, mas isso não tem conexão com o servidor X em execução no host.

Ken Jackson
fonte