Em Linux embarcado há uma demanda muito comum por aplicações modo "kiosk" "fullscreen". Nesse artigo eu mostro como deixar seu app Uno Platform Skia Gtk
em modo "tela cheia".
Há um modo de fazer isso utilizando a API do UWP, por exemplo configurando o ApplicationView.PreferredLaunchWindowingMode
logo na inicialização do App.xaml.cs
:
// namespace rerefence
using Windows.UI.ViewManagement;
ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.FullScreen;
Maaaas, no Uno Platform o PreferredLaunchWindowingMode
não está implementado.
⚠️ Talvez no futuro isso possa ser implementado, daí seria a forma recomendada a ser utilizada.
O que resta é usar a chamada ApplicationView.TryEnterFullScreenMode()
:
ApplicationView.GetForCurrentView().TryEnterFullScreenMode();
⚠️ É importante que isso seja chamado no final doOnLaunched
doApp.xaml.cs
, ou mais especificamente após o_window.Activate();
. Assim teremos um "current view" ativo.
Pronto, sua aplicação Uno Skia.GTK
será lançada em tela cheia agora.
Bom, isso funciona muito bem se você estiver utilizando o Uno apenas para aplicações Skia.GTK
em Linux Embarcado, e que precisem rodar em modo kiosk. Porém, se você estiver utilizando para aplicações cross-platform, que vão dar suporte para outros backends, plataformas, que não precisem rodar em modo kiosk isso será um problema.
Há duas formas de resolver isso. Usando a constante HAS_UNO_SKIA_GTK
:
#if HAS_UNO_SKIA_GTK
ApplicationView.GetForCurrentView().TryEnterFullScreenMode();
#endif
Assim vamos aplicar o FullScreenMode
apenas ao projeto Skia.GTK
.
Mas vamos supor que você queira rodar esse aplicativo também em Linux mas em modo desktop "normal". Podemos usar uma variável de ambiente para ter um controle maior sobre isso:
if (Environment.GetEnvironmentVariable("UNO_FULLSCREEN") != null)
{
ApplicationView.GetForCurrentView().TryEnterFullScreenMode();
}