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

如何在AwesomeWM中通过命令行指定标签启动程序?

如何通过命令行在指定虚拟桌面启动程序

当然可行,不同操作系统的实现方式有所区别,下面分平台说明具体操作:

Windows 系统

方法1:借助第三方工具 nircmd

这是最简便的方式,先下载nircmd并放到系统PATH路径下,然后执行:

start notepad.exe && timeout /t 1 && nircmd.exe win move desktop 2 "notepad.exe"
  • 2 是目标虚拟桌面的编号(从1开始计数)
  • timeout /t 1 是给程序启动留缓冲时间,避免窗口还没创建就执行移动命令

方法2:用 PowerShell 原生实现

无需第三方工具,直接编写PowerShell脚本执行:

# 启动目标程序
$proc = Start-Process notepad -PassThru
# 等待窗口加载完成
Start-Sleep -Seconds 1
# 获取程序窗口句柄
$hwnd = $proc.MainWindowHandle

# 导入Windows API函数
Add-Type @"
using System;
using System.Runtime.InteropServices;
public class DesktopHelper {
    [DllImport("user32.dll")]
    public static extern bool SetWindowDesktopWindow(IntPtr hWnd, IntPtr hDesktop);
    [DllImport("user32.dll")]
    public static extern IntPtr GetDesktopWindow();
    [DllImport("user32.dll")]
    public static extern IntPtr GetWindow(IntPtr hWnd, uint uCmd);
    public const uint GW_HWNDNEXT = 2;
}
"@

# 获取第2个虚拟桌面的句柄(循环次数对应桌面编号,这里2对应第2个桌面)
$targetDesktop = [DesktopHelper]::GetDesktopWindow()
for ($i=1; $i -lt 2; $i++) {
    $targetDesktop = [DesktopHelper]::GetWindow($targetDesktop, [DesktopHelper]::GW_HWNDNEXT)
}

# 将窗口移动到目标虚拟桌面
[DesktopHelper]::SetWindowDesktopWindow($hwnd, $targetDesktop)

Linux 系统

Linux不同桌面环境的命令工具差异较大,以下是常见桌面的操作方式:

GNOME 桌面

借助wmctrl工具(先通过apt install wmctrl安装):

gedit & sleep 1 && wmctrl -r gedit -t 1
  • 1 是目标工作区的编号(从0开始计数)
  • sleep 1 用于等待程序窗口创建完成

KDE 桌面

结合xdotool和qdbus(先安装xdotool):

kwrite & sleep 1 && qdbus org.kde.KWin /KWin moveWindowToDesktop $(xdotool search --name kwrite) 2
  • 2 是目标工作区的编号(从1开始计数)

Xfce 桌面

同样用wmctrl工具:

xfce4-terminal & sleep 1 && wmctrl -r "Terminal" -t 0
  • 0 是目标工作区的编号(从0开始计数)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 14:20:02