como redesenhar ou invalidar desktop ubuntu programaticamente por c ou python

1

Agora estou usando o ubuntu16.04 com o ambiente de área de trabalho GNOME. Eu posso alterar atributos (por exemplo, metadata::nautilus-icon-position ) de arquivos na área de trabalho por c ou python, mas a exibição da área de trabalho não é atualizada. Então eu simulo um evento de imprensa "F5" usando xdo_send_keysequence_window(x, CURRENTWINDOW, "F5", 0) de libxdo , exibir agora atualizar, mas com um piscar de olhos (Parece-me que todos os widgets na área de trabalho são primeiro limpos e, em seguida, redesenhados). Se eu alterar continuamente os atributos de arquivo e simular a impressora "F5", a área de trabalho continuará atualizando e piscando.

Eu tenho duas perguntas:

  1. como o sistema de área de trabalho lida com eventos de imprensa "F5"? (primeiro limpar todos os widgets, exceto o plano de fundo na área de trabalho e, em seguida, talvez na próxima vez, redigir todos os widgets ??)
  2. existe uma maneira (interface de API ou enviar eventos para a área de trabalho) para invalidar ou redesenhar a área de trabalho sem piscar, como um aplicativo de GUI normal (widget.move () ou container.invalidate ())?

Tenho pesquisado muito e não consigo encontrar resposta. Muito obrigado

    
por growingant 06.12.2017 / 02:11

1 resposta

1

Como F5 é a tecla de atalho para a função Atualizar , ela é tratada como tal. Isso não é diferente de exibir F5 em um navegador da web para atualizar. A página é limpa e uma nova solicitação é feita ao servidor. No caso do Nautilus, isso significa que a visualização é limpa e o diretório é varrido novamente.

Você poderia escrever um plug-in (extensão) para o Nautilus, que poderia pegar o widget real do plano de fundo e depois invalidar apenas um retângulo parcial, embora eu não tenha certeza se isso resolveria seu problema (você deve poder para testar movendo janelas sobre a área em questão e, em seguida, afastando-as novamente.

A melhor solução, no entanto, seria registrar um bug contra o Nautilus e resolver o problema diretamente, de modo que, quando esses atributos forem alterados nos arquivos, o Nautilus fará a coisa correta e alterará a posição do ícone ou algo semelhante.

    
por dobey 06.12.2017 / 03:26