Permitir que os eventos do mouse passem pelo terminal

2

Eu trabalho em um laptop com uma tela pequena e não tenho acesso a vários monitores nesta máquina como faço no trabalho. Configurei meu terminal com transparência para poder ver o que estou desenvolvendo no navegador atrás do terminal, mas adoraria poder clicar no terminal e interagir diretamente com o navegador.

Eu não tentei nada fora da pesquisa do Google porque não tenho experiência com esse tipo de coisa.

EDIT: A pergunta "possível duplicada" não responde à minha pergunta porque basicamente cria um script para fazer uma troca de janela com alt + tab mais rápida. Eu não tenho nenhum problema usando Alt + Tab para alternar as janelas, eu só prefiro não ter que alternar as janelas em tudo. Quero que meu mouse interaja com o navegador enquanto meu teclado interage com o terminal.

    
por CaldwellYSR 24.08.2016 / 02:54

2 respostas

8

Por que isso não é possível

O que você pergunta é essencialmente impossível. Para simplificar a explicação, existem dois tipos de áreas de trabalho gráficas: empilhamento e ladrilhos. Unity é um exemplo de empilhamento de desktop, onde você tem uma pilha de janelas (como uma pilha de bandeja de refeitório), onde a janela ativa no momento é a de cima.

O comportamento do mouse foi definido no X11 de forma que clicar em uma janela o leva ao topo da pilha. Embora existam maneiras de manter a janela abaixo de outras (mais notavelmente com wmctrl ), não há nenhuma maneira de clicar em uma janela sem ativá-la em foco . Isso não é bom para ajustes - a menos que você esteja disposto a criar alguma nova camada para a GUI, e até agora não ouvi falar de nenhum projeto desse tipo.

Se você solicitar, posso até colocar recompensas nessa questão, mas posso apostar que não haverá resposta satisfazendo suas exigências exatas.

Um pouco de solução alternativa

Pode-se fazer isso: definir a janela do terminal transparente para o tamanho mínimo, defini-la como "sempre no topo" e clicar em * qualquer coisa ao redor da própria janela.

Nesta captura de tela, você pode ver duas abordagens para isso: uma por padrão, clique com o botão direito na borda da janela e via comando wmctrl . O último pode permitir a abordagem de scripts para isso, mas a premissa básica é a mesma - você tem que clicar em qualquer coisa em torno do próprio temperamento.

Alternativas possíveis

  • Existem terminais suspensos, como Guake . Você pode ter um terminal suspenso ligado à tecla F12, com a janela que mantém a posição no topo, e você pode clicar em qualquer coisa ao redor dele
  • Use a tela dividida com o terminal e a outra janela desejada conectados

Exemplo de Guake

    
por Sergiy Kolodyazhnyy 25.08.2016 / 01:41
1

Contra-pergunta:

Você quer uma solução "pronta" para isso ou planeja escrever um programa C próprio?

Se você quer uma solução "pronta para uso", eu acho que você não encontrará nenhuma: Há poucas pessoas que precisam de algo assim para que eu não pense que alguém tenha implementado tal programa até agora.

Se você quiser escrever um programa desse tipo, eu tentarei fazer o seguinte:

Escreva um programa com uma janela grande (cobrindo (quase) a tela inteira) que tenha 100% de transparência. (Infelizmente eu nunca trabalhei com transperancy, então eu não sei se isso realmente funciona.)

Use a biblioteca X11 de baixo nível (libX11) e nenhuma API de nível superior (Gnome, etc.) para isso.

Como esta janela está em primeiro plano, receberá todas as informações do teclado e do mouse.

Use a API XSendEvent () para emular eventos de teclado e mouse no console e no navegador ...

Infelizmente, isso não será tão fácil quanto parece. Especialmente emular os eventos do mouse no navegador não será fácil!

    
por Martin Rosenau 30.08.2016 / 13:25