You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在KDE Plasma终端跨活动移动窗口及编写启动脚本并确定存放路径

嘿,我刚好在KDE Plasma里折腾过这些操作,给你拆解成两部分详细说:

一、在终端跨活动移动窗口

KDE Plasma自带的DBus接口是控制窗口和活动最靠谱的方式,步骤如下:

  • 获取目标窗口的ID

    • 方法一:运行 wmctrl -l 列出所有窗口,找到对应应用的那一行,第一列就是窗口ID(格式类似 0x04000003)。
    • 方法二:运行 xprop WM_CLASS,然后点击目标窗口,输出里的 WM_CLASS(STRING) 字段可以帮你精准定位窗口,再结合 wmctrl -l 找到对应ID。
  • 获取目标活动的ID
    运行以下命令列出所有活动的唯一ID:

    qdbus org.kde.ActivityManager /ActivityManager/Activities ListActivities
    

    输出的哈希字符串(比如 d9b7f8e0-1234-5678-9abc-def012345678)就是活动ID。

  • 移动窗口到指定活动
    将窗口ID和活动ID代入下面的命令:

    qdbus org.kde.kwin /KWin moveWindowToActivity <窗口ID> <活动ID>
    

    示例:

    qdbus org.kde.kwin /KWin moveWindowToActivity 0x04000003 d9b7f8e0-1234-5678-9abc-def012345678
    

二、写启动脚本,自动将应用分配到指定活动

核心逻辑是「启动应用→等待窗口加载→获取窗口ID→调用DBus命令移动到活动」,具体操作:

  • 编写Shell脚本
    创建一个脚本文件,比如 launch-app-to-activity.sh,内容如下:

    #!/bin/bash
    
    # 配置项:替换成你的应用命令和目标活动ID
    APP_COMMAND="firefox"
    TARGET_ACTIVITY="d9b7f8e0-1234-5678-9abc-def012345678"
    
    # 启动应用并后台运行
    $APP_COMMAND &
    APP_PID=$!
    
    # 循环等待窗口加载完成(避免找不到窗口ID)
    WINDOW_ID=""
    while [ -z "$WINDOW_ID" ]; do
        sleep 0.5
        WINDOW_ID=$(wmctrl -lp | grep "$APP_PID" | awk '{print $1}')
    done
    
    # 移动窗口到目标活动
    qdbus org.kde.kwin /KWin moveWindowToActivity "$WINDOW_ID" "$TARGET_ACTIVITY"
    
  • 脚本的放置与权限设置

    • 个人使用:把脚本放到 ~/.local/bin/ 目录(这个目录默认在系统PATH中,终端可直接调用),然后赋予执行权限:
      chmod +x ~/.local/bin/launch-app-to-activity.sh
      
      之后在终端输入脚本名称就能运行。
    • 桌面启动器:如果想在应用菜单里找到它,创建 .desktop 文件放在 ~/.local/share/applications/,比如 firefox-on-work-activity.desktop
      [Desktop Entry]
      Name=Firefox - 工作活动
      Exec=~/.local/bin/launch-app-to-activity.sh
      Type=Application
      Icon=firefox
      Comment=启动Firefox并自动移到工作活动
      
      保存后刷新应用菜单(或重启Plasma)即可看到。
  • 依赖安装
    如果系统没有 wmctrl,需要先安装:

    • Debian/Ubuntu系:sudo apt install wmctrl
    • openSUSE:sudo zypper install wmctrl
    • Fedora:sudo dnf install wmctrl
  • 额外技巧:无需脚本的默认活动分配
    如果你想让某个应用每次启动都自动打开在指定活动,直接用KDE窗口规则更简单:

    1. 打开「系统设置」→「窗口管理」→「窗口规则」
    2. 点击「新建」,在「窗口类(应用程序)」中选择目标应用
    3. 切换到「活动」标签,选择「强制」,然后指定目标活动
    4. 保存设置,下次启动应用就会自动进入指定活动

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

火山引擎 最新活动