Pergunta antiga, mas para googlers:
Eu estava tendo problemas semelhantes, mas em uma escala muito mais simples. Eu estava simplesmente tentando fazer
echo "Some string\nWith a bunch of chars" | osd_cat
O que eu descobri é que o osd_cat parece ter alguns problemas com a detecção atrasada da disponibilidade do mecanismo do OSD ou com problemas de buffer de entrada.
Se a string de entrada for muito longa (varia entre 7 e 11 caracteres imprimíveis no meu sistema), ela será interrompida pelo tempo de atraso e, em seguida, será encerrada sem mostrar nada.
Meus problemas desapareceram se eu usasse a opção --wait
para osd_cat.
O efeito colateral, no entanto, é que pode levar mais de 5 segundos para a mensagem aparecer (no meu sistema). Quaisquer tempos de atraso que você especificar para osd_cat só serão iniciados quando a mensagem estiver visível pelo menos, mas isso pode significar que uma mensagem destinada a ser exibida pelos 5 segundos padrão demorará 5 segundos a aparecer e ficará visível por mais 5 antes de desaparecer.
Em uma nota relacionada, isso parece ser um problema com todas as ferramentas criadas sobre osd_cat, e nenhuma delas é responsável por isso. A lista dessas ferramentas do autor original está em sua página (conforme listado na página man do osd_cat) em: link
Isso inclui o mais comum osdsh
, que é o que eu estava tentando encontrar uma alternativa, já que ele mostrava intermitentemente nada na invocação, quando eu encontrava osd_cat
.