You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AwesomeWM全屏问题:显示器切换异常与视频无法全屏

解决AwesomeWM全屏相关问题

问题1:全屏后窗口切换到左侧非主显示器

原因分析

你的全局窗口规则中设置了screen = awful.screen.preferred,该函数默认优先选择编号较小的屏幕(即你左侧的HDMI-0显示器),导致全屏时窗口被强制转移到该屏幕。同时启动时的xrandr命令未明确指定主屏幕,进一步加剧了这个问题。

解决步骤

  1. 修正xrandr命令,明确主屏幕
    假设右侧DP-4是你的主显示器,修改启动时的xrandr命令,给DP-4添加--primary参数:

    xrandr --output HDMI-0 --auto --mode 1920x1080 --rate 60 --left-of DP-4 --output DP-4 --auto --mode 1920x1080 --rate 144 --primary
    
  2. 修改全屏快捷键逻辑,绑定到当前屏幕
    调整全屏快捷键的回调函数,确保窗口全屏时保留在当前所在屏幕:

    awful.key({ modkey }, "f",
        function (c)
            c.fullscreen = not c.fullscreen
            if c.fullscreen then
                c.screen = awful.screen.focused() -- 强制绑定到当前聚焦的屏幕
            end
            c:raise()
        end,
        {description = "toggle fullscreen", group = "client"}
    ),
    
  3. 调整全局窗口规则的screen属性
    将全局规则中的screen = awful.screen.preferred替换为screen = awful.screen.focused(),让新窗口默认打开在当前聚焦的屏幕:

    { rule = { },
      properties = { border_width = 3,
                     border_color = beautiful.border_normal,
                     focus = awful.client.focus.filter,
                     raise = true,
                     keys = clientkeys,
                     buttons = clientbuttons,
                     screen = awful.screen.focused(), -- 替换原有属性
                     placement = awful.placement.no_overlap+awful.placement.no_offscreen
     }
    },
    

问题2:Chromium/LibreWolf视频全屏立即退出

原因分析

这类问题通常是浏览器的全屏机制与AwesomeWM的窗口布局规则冲突,尤其是placement = awful.placement.no_overlap+awful.placement.no_offscreen规则会在窗口全屏时强制调整位置,触发浏览器的全屏退出逻辑。

解决步骤

  1. 为浏览器添加专属规则,禁用全屏时的placement限制
    在awful.rules.rules中添加针对Chromium和LibreWolf的规则,当它们进入全屏时临时跳过placement检查:

    -- 修复浏览器视频全屏退出问题
    { rule_any = {
        class = {
          "Chromium",
          "LibreWolf"
        }
      },
      callback = function(c)
        c:connect_signal("property::fullscreen", function()
          if c.fullscreen then
            c.placement = nil -- 临时禁用placement规则
          else
            c.placement = awful.placement.no_overlap+awful.placement.no_offscreen -- 恢复规则
          end
        end)
      end
    },
    
  2. 禁用浏览器硬件加速(可选)
    如果上述方法无效,可尝试在浏览器设置中关闭硬件加速:

    • Chromium:设置 → 系统 → 关闭“使用硬件加速模式(如果可用)”
    • LibreWolf:设置 → 常规 → 性能 → 关闭“使用硬件加速模式”
      重启浏览器后测试全屏功能。
  3. 调整全屏快捷键的额外参数
    在全屏函数中先取消窗口最大化状态,避免与全屏模式冲突:

    awful.key({ modkey }, "f",
        function (c)
            c.maximized = false -- 先取消最大化,避免状态冲突
            c.fullscreen = not c.fullscreen
            if c.fullscreen then
                c.screen = awful.screen.focused()
            end
            c:raise()
        end,
        {description = "toggle fullscreen", group = "client"}
    ),
    

内容的提问来源于stack exchange,提问作者Peter W

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 06:52:44