如何在macOS上以编程方式获取当前工作区
我希望能够随时告知用户当前在macOS 10.13上以编程方式使用的任务控制工作区。 我在搜索过程中找不到任何有效答案。 任何语言都可以,任何工作区标识符都适用于我(uuid,工作区编号…)如何在macOS上以编程方式获取当前工作区,macos,cocoa,applescript,mission-control,Macos,Cocoa,Applescript,Mission Control,我希望能够随时告知用户当前在macOS 10.13上以编程方式使用的任务控制工作区。 我在搜索过程中找不到任何有效答案。 任何语言都可以,任何工作区标识符都适用于我(uuid,工作区编号…) 谢谢你的帮助 看起来这需要未记录的API调用 及 CG\u外部CGSSpaceID CGSGetActiveSpace(CGSConnectionID cid) 你可以做你想做的,但是这段代码已经三年没有被接触过了,所以系统/api可能已经迁移了,使用未记录的api的所有问题都适用 在项目中找到了这个 尚
谢谢你的帮助 看起来这需要未记录的API调用 及
CG\u外部CGSSpaceID CGSGetActiveSpace(CGSConnectionID cid)代码>
你可以做你想做的,但是这段代码已经三年没有被接触过了,所以系统/api可能已经迁移了,使用未记录的api的所有问题都适用
在项目中找到了这个
尚未使用或验证。
- 下载私有标题
- 将它们放在系统上的文件夹中
- 转到您的项目
生成设置
,并将该文件夹添加到用户标题搜索路径
然后你可以这样做:
如果您想要一个“工作答案”,请使用一个间接GUI“变量”来告知您的位置:
告诉应用程序“系统事件”以字符串的形式将(每个桌面的图片作为列表)的第1项的第27项到第1项发送到文本中(谢谢,这是很实用的!)(为什么有人要投票否决这个实际上帮助了某人的答案,并且清楚地标记为“工作解决方案”?!我不理解这里的一些“用户”…“很伤心”;-))谢谢你也解决了我的用例,你认为你能把它转换成JXA吗?在我把我的“工作答案”贴在下面之后,我为自己创建了一个“菜单栏图标”,它由一个简单的.sh脚本组成<代码>#/bin/bash_/'osascript/Users/myComputerName/.config/bitbar/Workingspace_Desktop.app
。只需放置在第三方(“BitBar”)插件文件夹中,该文件夹调用带有的AppleScript,如果BGname为“Sierra.jpg”,则将BGname设置为“[1]”
等。在我的右侧菜单栏中显示[1]或[2]或[3]或[4]。如果你读到目前为止,你会猜到任何信息都可以永久显示…嗨,我对这个问题有一些扩展。我的目标是将应用程序创建的窗口放在前面。因此,我使用CGSSpaceCreate
创建新空间,并希望使用CGSSpaceSetAbsoluteLevel
设置它的优先级,但如何找到应该在level中输入的内容?谢谢
#import "AppDelegate.h"
#import "CGSInternal/CGSSpace.h"
@implementation AppDelegate
typedef int CGSConnection;
extern CGSConnection _CGSDefaultConnection(void);
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
CGSSpaceID activeSpace = CGSGetActiveSpace(_CGSDefaultConnection());
NSLog(@"activeSpace: %zu", activeSpace);
CFArrayRef spaceArray = CGSCopySpaces(_CGSDefaultConnection(), kCGSAllSpacesMask);
NSLog(@"allSpaces: %@", spaceArray);
}
@end
set delimOrgs to text item delimiters
set text item delimiters to {"/"}
tell application "System Events" to set BGpict to ¬
last text item of (picture of current desktop as text)
set text item delimiters to delimOrgs
return BGpict [improved: user3439894's suggestion]