Outro artigo falando sobre algo que eu configurei no meu ambiente de trabalho alguns anos atrás e que continuo usando até hoje 🙂. Dessa vez eu vou mostrar os menus que eu criei usando o rofi.
Então, o que é o rofi? É basicamente um programa para o qual você fornece uma lista de opções, e ele mostra uma janela onde o usuário pode filtrar e escolher uma opção. Então basicamente pode-se dizer que é um menu de seleção simples mas universal.
O rofi também tem alguns menus padrões, como um para abrir aplicações e outro para alternar entre janelas, que provavelmente são o seu uso mais comum. Eu também uso esses menus, mas como eles não são algo que eu mesmo customizei, eu não vou falar sobre eles.
Esses são meus menus e o que eu queria compartilhar nesse artigo, mas vale mencionar alguns outros pontos.
Primeiro, tem um outro menu rofi que eu uso e gosto, mas ele não é um que eu mesmo criei. Ele se chama rofimoji e permite que você muito facilmente pesquise e copie emojis.
Em segundo lugar, vale mencionar que o rofi oficialmente só funciona no X11, então eu na verdade uso o fork do rofi para wayland, como eu mencionei no artigo "Mudando para o Wayland".
E finalmente, para tornar a criação de menus rofi mais fácil nos meus scripts em python, eu abstraí a execução do rofi em uma função python com o seguinte protótipo:
def select(prompt, options, multi=False, args=[]):
onde prompt
é a string que aparece no prompt, options
é a lista de
opções que podem ser escolhidas, multi
representa se múltiplas opções podem
ser escolhidas ou não, e args
permite passar argumentos adicionais ao rofi.
O retorno da função é a/as opção/opções que foi/foram selecionada(s) (apenas a
opção se multi
era falso, ou a lista de opções se era verdadeiro). Se a
seleção foi abortada uma exceção é lançada. Eu considerei usar o python-rofi ao
invés de criar meu próprio módulo, mas esse módulo retorna o índice do que foi
escolhido ao invés da string em si, o que apenas tornaria o uso mais complicado.
Já que era bem fácil criar meu próprio módulo, foi o que eu fiz.
E é isso. Eu realmente gosto do quão fácil é criar menus usando o rofi em python 🙂.