Linux 启动自己的 GUI 应用,不进桌面 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
noisywolf
V2EX    程序员

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

  •  1
     
  •   noisywolf 2024-05-26 12:59:12 +08:00 3691 次点击
    这是一个创建于 502 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    16 条回复    2024-05-27 14:20:36 +08:00
    libook
        1
    libook  
       2024-05-26 13:04:58 +08:00 via Android
    装窗口管理器,不装桌面,然后用命令行或在启动脚本里启动应用程序
    noisywolf
        2
    noisywolf  
    OP
       2024-05-26 13:10:43 +08:00
    @libook 有介绍的文章推荐吗?
    1rv013c6aiWPGt24
        3
    1rv013c6aiWPGt24  
       2024-05-26 13:18:28 +08:00
    @noisywolf 看看 i3 和 dwm
    vvhy
        4
    vvhy  
       2024-05-26 13:31:27 +08:00
    用 xorg 的话在.xinitrc 最后启动一个 terminal ,不启动桌面,参考 archwiki
    kuanat
        5
    kuanat  
       2024-05-26 13:33:29 +08:00   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  
       2024-05-26 14:12:44 +08:00 via Android
    archwiki 上看看 xorg 词条
    Tink
        7
    Tink  
    PRO
       2024-05-26 14:23:11 +08:00 via iPhone
    .xinitrc
    qaq44566
        8
    qaq44566  
       2024-05-26 16:02:33 +08:00   1
    wayland 的话用这个 https://github.com/cage-kiosk/cage
    kkocdko
        9
    kkocdko  
       2024-05-26 16:18:46 +08:00
    我的建议是装 sway (
    Iamsonny
        10
    Iamsonny  
       2024-05-26 18:31:05 +08:00
    startx 原生 X11~最基本要求。
    yolee599
        11
    yolee599  
       2024-05-26 20:56:08 +08:00 via Android
    大多数嵌入式就是这样的啊,不用窗口管理器,x 也不用安装,直接写 framebuffer 或者 drm
    R4rvZ6agNVWr56V0
        12
    R4rvZ6agNVWr56V0  
       2024-05-26 22:49:07 +08:00
    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  
       2024-05-26 23:16:01 +08:00
    #5 说的 X11 的场景,Wayland 推荐用 cage 。
    debuggerx
        14
    debuggerx  
       2024-05-27 09:46:28 +08:00
    如果是类似工控机点餐机那种,只需要开机打开一个图形应用然后点点点,那就直接 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  
       2024-05-27 12:25:40 +08:00
    以 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  
       2024-05-27 14:20:36 +08:00
    我有试过 vnc 不启动桌面直接启动 chrome ,
    真的不好用,得小心翼翼的,
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3097 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 11:01 PVG 19:01 LAX 04:01 JFK 07:01
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86