V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
noisywolf
V2EX  ›  程序员

Linux 启动自己的 GUI 应用,不进桌面

  •  1
     
  •   noisywolf · 217 天前 · 3069 次点击
    这是一个创建于 217 天前的主题,其中的信息可能已经有所发展或是发生改变。

    不想要装那一大堆桌面,有没有办法开机直接全屏进应用?

    16 条回复    2024-05-27 14:20:36 +08:00
    libook
        1
    libook  
       217 天前 via Android
    装窗口管理器,不装桌面,然后用命令行或在启动脚本里启动应用程序
    noisywolf
        2
    noisywolf  
    OP
       217 天前
    @libook 有介绍的文章推荐吗?
    1rv013c6aiWPGt24
        3
    1rv013c6aiWPGt24  
       217 天前
    @noisywolf 看看 i3 和 dwm
    vvhy
        4
    vvhy  
       217 天前
    用 xorg 的话在.xinitrc 最后启动一个 terminal ,不启动桌面,参考 archwiki
    kuanat
        5
    kuanat  
       217 天前   ❤️ 1
    取决于用途和场景,大致有几个思路,你可以按照关键词去搜对应的做法。

    如果以安装的包来划分,整个显示框架大概有:Framebuffer 层( DRM/KMS ),Display Server 层( X.org/Wayland ),窗口管理器,桌面附加组件四层。FB 层肯定都有也不需要关心,Display Server 层必须要有一个,根据你的应用来选。按照你的描述,桌面( KDE/Gnome )这些都可以不要,窗口管理器可以有也可以没有。

    这里以 X11 作为显示后端为例:

    在某个 tty 启动 X session 。用到的命令就是 `startx`,后面可以直接跟你的 x11 应用,也可以跟 `xterm` 之类的 vte 终端,之后可以在终端里面按需启动 x11 应用。

    这里对于 tty 的分配,以及对应到显示器需要你手动配置。如果你是 ssh 连接到远程服务器,需要 ssh x11 tunneling 。

    如果需要窗口管理器,可以 `startx` 先启动窗口管理器,然后再启动对应的应用。
    libook
        6
    libook  
       217 天前 via Android
    archwiki 上看看 xorg 词条
    Tink
        7
    Tink  
       217 天前 via iPhone
    .xinitrc
    qaq44566
        8
    qaq44566  
       217 天前   ❤️ 1
    wayland 的话用这个 https://github.com/cage-kiosk/cage
    kkocdko
        9
    kkocdko  
       217 天前
    我的建议是装 sway (
    Iamsonny
        10
    Iamsonny  
       217 天前
    startx 原生 X11~最基本要求。
    yolee599
        11
    yolee599  
       217 天前 via Android
    大多数嵌入式就是这样的啊,不用窗口管理器,x 也不用安装,直接写 framebuffer 或者 drm
    GeekGao
        12
    GeekGao  
       217 天前
    1. 假设在基于 Debian 的系统上,可以使用以下命令安装:

    sudo apt-get update
    sudo apt-get install xorg xorg-twm

    2. 创建并编辑.twmrc 配置文件(.twmrc 文件允许你配置各种设置,比如字体、颜色、边框宽度、标题栏按钮等)

    3. chmod +x ~/.xinitrc
    编辑.xinitrc 文件。在这个文件中,你可以指定 TWM 作为窗口管理器,并在其后面列出你想要启动的应用程序:

    #!/bin/sh
    exec twm :1 -geometry 1024x768 -root :0.0
    # 在这里添加你的自定义应用程序
    # 例如,如果你的应用程序名为 myapp ,你可以这样做:
    # exec myapp
    L4Linux
        13
    L4Linux  
       217 天前
    #5 说的 X11 的场景,Wayland 推荐用 cage 。
    debuggerx
        14
    debuggerx  
       216 天前
    如果是类似工控机点餐机那种,只需要开机打开一个图形应用然后点点点,那就直接 xinitrc 指定程序就行,参考:
    https://wiki.archlinuxcn.org/wiki/Xinit#%E5%9C%A8%E6%B2%A1%E6%9C%89%E7%AA%97%E5%8F%A3%E7%AE%A1%E7%90%86%E5%99%A8%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E5%90%AF%E5%8A%A8%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F

    但是这种方式不适合自用,比如输入法就不好搞,建议还是起一个最简单的窗管,除了上面别人提到了的 i3wm 这种平铺式,还可以考虑 openbox 这种配置简单的堆叠式窗管
    wildlife
        15
    wildlife  
       216 天前
    以 Debian Server 开机启动 Chromium 为例:

    使用 Xorg

    ```bash
    sudo apt install -y xorg chromium fonts-noto*
    sudo dpkg-reconfigure locales
    sudo dpkg-reconfigure tzdata
    nano ~/.xinitrc

    #!/bin/bash
    # xrandr >/tmp/x.log
    sx=1920
    sy=1080
    # 禁用 DPMS
    xset -dpms
    # 禁用屏幕保护程序
    xset s off
    # 禁止屏幕空白
    xset s noblank
    xrandr --output HDMI-1 --mode ${sx}x${sy} --pos 0x0
    xsetroot -solid red && sleep 1
    xsetroot -solid green && sleep 1
    xsetroot -solid blue && sleep 1
    xsetroot -solid black
    # xsetroot -bitmap /boot/backgroud.xbm && sleep 1
    # feh --bg-scale /home/pi/133.jpg && sleep 2
    chromium-browser --kiosk --incognito \
    --window-size=${sx},${sy} --window-position=0,0 \
    --app=https://www.baidu.com

    nano ~/.bashrc
    if [[ -z $DISPLAY && $XDG_VTNR -eq 1 ]]; then
    exec startx
    fi

    # 然后 systemd 设置一个用户自动登录 shell
    ```

    使用 Wayland

    ```bash
    sudo apt install -y weston chromium fonts-noto* wayland-utils
    # man 5 weston.ini
    nano ~/.config/weston.ini

    [core]
    #shell=kiosk-shell.so
    idle-time=0
    #xwayland=true

    [shell]
    background-image=/home/orangepi/background.jpg
    background-type=scale-crop
    clock-format=seconds-24h
    #panel-position=none
    locking=false

    [output]
    name=HDMI-A-1
    mode=1024x600
    #transform=rotate-90
    #scale=2

    #[xwayland]
    #path=/usr/bin/Xwayland

    [autolaunch]
    path=/home/orangepi/launch.sh
    watch=true

    nano ~/launch.sh

    #!/bin/bash
    # weston-info >/tmp/w.log
    wayland-info >/tmp/w.log
    chromium --enable-features=UseOzonePlatform \
    --ozone-platform=wayland \
    --kiosk --incognito \
    --window-size=1024,600 \
    --window-position=0,0 \
    --app=https://www.baidu.com

    # 开机自启动 https://wayland.pages.freedesktop.org/weston/toc/running-weston.html#running-weston-from-a-systemd-service
    ```
    AoEiuV020JP
        16
    AoEiuV020JP  
       216 天前
    我有试过 vnc 不启动桌面直接启动 chrome ,
    真的不好用,得小心翼翼的,
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1841 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 16:15 · PVG 00:15 · LAX 08:15 · JFK 11:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.