Como fazer bolhas de notificação com tamanho, cor e posição personalizados usando a linha de comando?

2

Gostaria de saber se existe algum método de linha de comando para fazer notificações na bolha de notificação do Ubuntu. Ou existe um arquivo que pertence a essa tarefa?
Eu quero as seguintes características:

  • Minhas próprias mensagens aparecem no balão de notificação.
  • Essas notificações aparecem em uma posição específica na tela, não somente na posição padrão.
  • O tamanho do balão de notificação pode ser alterado.
  • Sua cor pode ser alterada.

UPDATE

Eu li "Como posso enviar uma notificação de desktop personalizada?" e agora, eu sei que notify-send vai me ajudar no meu propósito. Mas há algumas limitações com este comando. Quero saber se há outro comando a ser usado ou qualquer arquivo a ser alterado, para que tamanho , cor e posição da bolha de notificação pode ser alterado?

    
por Mohammad 19.09.2015 / 18:38

1 resposta

2

Historicamente, havia diferentes abordagens para o problema de "notificações". Não há sequer consenso sobre o que é "notificação". Usamos para informar ao usuário que algo aconteceu? Esperamos alguma ação dele? Em caso afirmativo, como a entrada é coletada? Essa ação pode ser adiada ou o usuário deve agir imediatamente? Quanto tempo isso poderia demorar? Como o usuário deve revisar todas as ações pendentes? As respostas a todas essas perguntas moldam soluções propostas por diferentes equipes.

O resultado é que não há uma resposta única e definitiva para sua pergunta. Mas há diferentes abordagens que você pode tentar e escolher uma que seja adequada ao seu caso de uso específico.

notificar-enviar

Em um ponto, um padrão para notificações no Linux surgiu. A força motriz por trás disso, se a memória me serve bem, foi a equipe do GNOME 3. Eles procuraram uma maneira unificada para todos os aplicativos notificarem o usuário e descobriram que algum componente do ambiente de área de trabalho deveria ser responsável por manipular (enfileirar, exibir, coletar entrada) todas as notificações. Os aplicativos simplesmente enviam sua notificação para esse componente e esperam que o usuário o receba.

Você pode criar esse tipo de notificação com o aplicativo de linha de comando notify-send . Observe que proposital não permite personalização. Você só passa sua mensagem e deixa o resto para o ambiente de trabalho. Este tipo de notificações é suportado pelo Unity (Ubuntu), GNOME 3 e KDE SC / Plasma.

osd_cat

osd_cat é o aplicativo que exibe o conteúdo do arquivo na camada do servidor X. Ao usar a opção -d , você pode fazer com que ela desapareça automaticamente depois de algum tempo, o que a torna um pouco adequada como aplicativo de notificação.

A fonte padrão será feia, mas você pode melhorar usando a opção -f . O argumento -f deve ser criado por xfontsel .

Uma notificação de exemplo pode ser criada desta maneira:

echo -e "sample\nnotification" |osd_cat -p middle -A center -d 1 -f '-*-helvetica-*-r-*-*-34-*-*-*-*-*-*-*' -O 1 -c '#fff'

Ao contrário de notify-send , você pode colocar sua notificação em qualquer lugar da tela e personalizá-la um pouco (selecionar fonte e cor; não há cor de fundo). A principal desvantagem é que é específico do X, por isso não funcionará sob Mir ou Wayland.

zenity / kdialog

zenity (para áreas de trabalho GTK - Unity e GNOME) e kdialog (para áreas de trabalho Qt - KDE e LxQt) permitem que o usuário crie janelas de diálogo simples a partir da linha de comando. Você pode colocar texto dentro, mas também alguns ícones predefinidos, botões, formulários de entrada, listas, seletores de arquivos ou barras de progresso. Com um pouco de trabalho do seu lado, você poderia usá-los como uma maneira de notificar o usuário.

zenity suporta --width= e --height= opções de linha de comando, mas não fornece nenhuma maneira de alterar o posicionamento da janela. Pessoalmente, estou usando --title= para dar à janela algumas regras personalizadas de título e gerenciador de janelas. O gerenciador de janelas (no meu caso, o KWin) seleciona todas as janelas que correspondem a determinados critérios, como título contendo cadeia, e modifica suas propriedades. Para notificações, coloco essas janelas no canto inferior direito da tela, removo a barra de título da janela, faço com que apareçam em todos os desktops virtuais e removê-los da barra de tarefas.

Solução personalizada

Se nenhum dos programas acima atender às suas necessidades, você sempre poderá escrever sua solução personalizada. O python fornece ligações ao GTK e ao Qt e permite que você crie GUI personalizada de maneira relativamente indolor. Você terá todas as opções de personalização do mundo, mas isso exigirá algum trabalho inicial para começar.

    
por Mirosław Zalewski 20.09.2015 / 18:54