Olá pessoal, recentemente tenho usado o OBS e reparei um comportamento no minimo estranho do OBS na captura de janela com PipeWire no GNOME com Wayland (Fedora desde o 40).
Ao capturar uma janela de algum flatpak (testei com o Open TTD) ele captura corretamente, apenas o jogo (imagem abaixo):
Porém ao tentar capturar alguma coisa “instalada no sistema host” ele simplesmente além de capturar os decoradores da janela ainda captura uma zona morta gigantesca (testado com o OpenTTD da Steam):
Atualmente estou usando o OBS em flatpak por além de ser a versão oficial também é a que vem tudo certinho, se eu instalar a versão do repositório do fedora fica faltando os codecs e coisas do tipo.
Imagino que isso seja algum comportamento causado pelo GNOME, mas não entendo o motivo e se é possivel “arrumar” isso.
Até da pra “contornar” este problema cropando a imagem, da um trabalho chato e não fica perfeito visto que eu utilizo a extensão de deixar os cantos arredondados (para manter a coerência visual entre todos os apps) e ela aparece na captura pois parece que quando o OBS captura algo que não é flatpak ele meio que “filma a janela como um visualizador externo”.
O que pude reparar nos poucos testes que fui capaz de fazer:
- Tanto a versão baixada pelo site, quanto a versão baixada via steam tem o mesmo comportamento, ja a versão flatpak não.
- Usando o
xwininfo verifiquei que ambos rodam com o xorg (então devem rodar pelo xwayland) pois consigo obter informações destas janelas.
- Ao rodar com o
SDL_VIDEODRIVER=wayland ./openttd ele até “funciona”, a janela aparentemente roda pelo wayland porém além de perder totalmente os decoradores da janela, ao capturar via OBS os cantos arredondados continuam.
Aparentemente quando uma janela roda nativamente via Wayland o OBS/Captura via PipeWire é capaz de capturar somente o conteúdo da janela porém caso esteja rodando via XWayland talvez a forma como o GNOME constrói a janela faz este comportamento estranho acontecer.
Lembro que quando usei KDE não tive estes problemas, no fim parece que existem duas alternativas:
- Se manter na sessão com xorg até que este problema (talvez) seja resolvido.
- Quando precisar capturar algo, rodar este algo com o
SDL_VIDEODRIVER=wayland e desativar a extensão das bordas arredondadas.
Atualização 2:
O que consegui entender é que ele roda sem nenhum decorador pois o GNOME joga a responsabilidade de criar os decoradores para a window.
O que faz com que caso o SDL tenha sido compilado com suporte a wayland uasar SDL_VIDEODRIVER=wayland vai funcionar porém caso não tenha sido compilado com suporte ao libdecor ele simplesmente não mostra nenhum decorador.
Realizei um teste “genérico” compilando o SDL na mesma versão que tenho no meu sistema porém com o libdecor e então substitui o libSDL2-2.0.so.0 do StardewValley e dai consegui rodar (antes não conseguia nem sequer rodar com SDL_VIDEODRIVER=wayland) dai apareceu um decorador de janela “genérico” mas como não compilei direito outras coisas não funcionaram.
Atualização 3:
Utilizando o libSDL2 do sistema, novamente testado no Stardew fazendo um link simbólico ln -s /usr/lib64/libSDL2-2.0.so.0.3000.11 libSDL2-2.0.so.0 consegui ter o mesmo comportamento da atualização 2, o problema (mesmo da atualização 2) é que ao fazer isso o mouse simplesmente não funciona.
Ja no OpenTTD não descobri como sobrescrever a libSDL2 dele então rodar SDL_VIDEODRIVER=wayland ./openttd roda (aparentemente) normal porém sem decoradores.
Que novela hein amigo. Estou com um PC com Fedora 41 (Instalação limpa) e o OBS lá está normal (versão em flatpak).
Espero que consiga solucionar, mas o OBS para mim funciona tanto em x11 quando em Wayland.
Acabei optando por mudar para o KDE (mesmo sendo meio contra minha vontade).
Pelo que entendi isso é um “problema” (esta entre aspas pq não sei se é real um problema ou um comportamento conhecido e esperado) do GNOME, como ele joga a responsabilidade de construir os decorados para a aplicação, quando uma aplicação é xorg ela roda via xwayland dai o xwayland cria o decorador ao que parece e dai fica tudo como “um monolito”, já quando a aplicação é nativamente wayland e implementa corretamente os decoradores, ele consegue capturar somente o conteúdo.
Dai no KDE acaba que isso não rola pq eu acho que o KDE atribui para si a responsabilidade de desenhar os decoradores.