DEV Community

Cover image for Multitouch Gestures no Ubuntu com fusuma
Kazuki Yokoyama
Kazuki Yokoyama

Posted on

3 2

Multitouch Gestures no Ubuntu com fusuma

Ao trabalhar com duas máquinas diferentes, podemos ficar acostumados com atalhos de uma não presentes na outra. No meu caso, trabalhando com Mac e Ubuntu, senti muita falta das gestures do trackpad do Mac na minha máquina Linux. Por exemplo, ao deslizar três dedos para cima no Mac, acessa-se o Mission Control, mostrando todas as janelas abertas. E eu também queria ter esse tipo de controle no Ubuntu.

Para resolver isso, instalei e configurei o fusuma, um projeto open-source para habilitar multitouch gestures no Linux. O README do fusuma é bem completo, mas vou deixar aqui o meu passo a passo e configurações.

Isso foi feito no Ubuntu 21.10 e fusuma v2.3.0.

  • Adicionar seu usuário ao grupo input (sem precisar de logout):
$ sudo gpasswd -a $USER input
$ newgrp input
Enter fullscreen mode Exit fullscreen mode
  • Instalar o libinput (>=1.0):
$ sudo apt-get install libinput-tools
Enter fullscreen mode Exit fullscreen mode
  • O projeto é feito em Ruby, então é necessário instalar o Ruby, se ainda não estiver instalado:
$ sudo apt-get install ruby
Enter fullscreen mode Exit fullscreen mode
  • Instalar o fusuma como uma gem:
$ sudo gem install fusuma
Enter fullscreen mode Exit fullscreen mode
  • Instalar o xdotool:
$ sudo apt-get install xdotool
Enter fullscreen mode Exit fullscreen mode
  • Criar o arquivo de configuração do fusuma:
$ mkdir ~/.config/fusuma
$ cd ~/.config/fusuma
$ vim config.yml
Enter fullscreen mode Exit fullscreen mode

Aqui fica um alerta: o arquivo deve ser nomeado exatamente config.yml. Na primeira vez, achei que config.yaml também seria aceito (em muitos lugares é), mas não foi.

  • Adicionar suas configurações no config.yml. As minhas ficaram da seguinte forma para emular um ambiente Mac:
swipe:
  3: 
    left:
      command: 'xdotool key super+Page_Down'
    right:
      command: 'xdotool key super+Page_Up'
    up: 
      command: 'xdotool key super'
    down:
      command: 'xdotool key alt+Escape'
  4:
    left: 
      command: 'xdotool key shift+super+Page_Down'
    right: 
      command: 'xdotool key shift+super+Page_Up'
    up: 
      command: 'xdotool key shift+super+Left'
    down: 
      command: 'xdotool key shift+super+Right'
pinch:
  in:
    command: 'xdotool key ctrl+plus'
  out:
     command: 'xdotool key ctrl+minus'

threshold:
  swipe: 0.4
  pinch: 0.4

interval:
  swipe: 0.8
  pinch: 0.1
Enter fullscreen mode Exit fullscreen mode

O que faz:

3 dedos swipe left: Vai para workspace da esquerda.
3 dedos swipe right: Vai para workspace da direita.
3 dedos swipe up: Mostra todas janelas (equivalente a super+S).
3 dedos swipe down: Troca para última janela aberta.

4 dedos swipe left: Move janela para workspace da direita (se achar, contra-intuitivo, só modificar).
4 dedos swipe right: Move janela para workspace da esquerda.
4 dedos swipe up: Move janela para monitor da direita.
4 dedos swipe down: Move janela para monitor da esquerda.

pinch in (juntar os dedos como uma pinça): Zoom Out (tira o zoom).
pinch out (afastar os dedos): Zoom In (aumenta o zoom).

Se quiser saber como configurar alguma tecla específica, verifique aqui.

  • Reiniciar a máquina. Sim, sem fazer isso, as permissões de leitura do input não eram atualizadas e o fusuma não funcionava no meu usuário, apesar de funcionar como root.

  • Rodar o fusuma:

$ fusuma
Enter fullscreen mode Exit fullscreen mode
  • Adicionar fusuma à lista de aplicações que rodam durante startup:
    • super+A para abrir a busca por aplicações.
    • Startup Applications Preferences
    • Adicione o fusuma como no screenshot: fusuma on startup applications preferences

E é isso!

Referências

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more