如何在没有桌面环境的情况下运行我的 GUI 应用程序并使其全屏化?

如何在没有桌面环境的情况下运行我的 GUI 应用程序并使其全屏化?

我在 Intel Celeron CPU 上运行 ubuntu 16.04。

Linux kevin-minipc 4.8.0-39-generic #42~16.04.1-Ubuntu SMP Mon Feb 20 15:06:07 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

我编写了一个 Qt 应用程序。当我在桌面环境中运行它时,它是全屏的。

现在,我希望系统自动登录,并且当系统在没有桌面环境的情况下启动时,我的应用程序作为 X 客户端全屏运行。

因此我做了以下改变:

  1. lightdm.conf添加一个名为的文件/etc/lightdm

    [Seat:*]
    user-session=myxclient
    autologin-user=kevin
    autologin-user-timeout=delay
    

    kevin是我的系统账户。

  2. myxclient.desktop添加文件/usr/share/xsessions

    [Desktop Entry]
    Name=myapp
    Comment=myapp
    Exec=/home/kevin/myapp
    Icon=
    Type=Application
    

    /home/kevin/myapp是我的 Qt 应用程序的路径。

当我重新启动并且系统启动时,myapp 将在没有桌面的情况下运行,但是它不是全屏我尝试在 .desktop 文件中运行其他应用程序,例如 Firefox,但它也不是全屏的。

那么,我该如何让它全屏呢?其他一些方法也是可以接受的。(最好当我使用不同尺寸的显示器时不必更改任何配置。)

还有一个问题:没有桌面环境,我可以使用像 ibus 这样的输入程序吗?

答案1

这取决于您运行的应用程序。您的应用程序可能会接受参数,例如 --fullscreen 或 --window-size。但是,全屏取决于窗口管理器,因此如果您只有显示管理器(LightDM)而没有窗口管理器,最好简单地将应用程序窗口大小设置为整个屏幕大小。

此外,我没有将应用程序作为 LightDM 配置文件中定义的会话运行,而是在 ~/.xsession 文件中定义了它。默认情况下,没有窗口管理器的 LightDM 会执行 xterm。当您有 ~/.xsession 文件时,它会代替 xterm 执行。

例如,我有一个装有 Chromium 浏览器的自助服务终端,我使用它开始

chromium --app=https://example.com --window-position=0,0 --window-size=1920,1080

如果您的应用程序不支持窗口位置和大小,您可以使用 xdotool(Debian 上的 xdotool 包)调整大小,这需要一些脚本。启动应用程序后,您必须首先使用以下命令获取可见窗口编号:

xdotool search --onlyvisible --maxdepth 1 ""

然后下一步移动并调整窗口大小

xdotool windowmove {window_number} {posx} {posy} windowsize {window_num} {sizex} {sizey}

相关内容