问题标签 [lsuielement]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
40970 浏览

macos - 如何隐藏 Dock 图标

我想优先隐藏 Dock 图标并显示NSStatusItem. 我可以创建 StatusItem 但我不知道如何从 Dock 中删除图标。:-/

有任何想法吗?

0 投票
2 回答
7672 浏览

macos - LSUIElement 不工作

我有一个在 Info.plist 中有 LSUIElement = 1 的应用程序。当我运行应用程序时,会为其创建一个停靠项和顶级菜单栏。为什么?

编辑:

我正在使用一个调用 TransformProcessType() 的库,破坏了我的 Info.plist 配置。

0 投票
2 回答
1074 浏览

macos - 将 LSUIElement 转换为前台应用程序

我有一个必须一直运行的应用程序(如果用户同意这一点)。

当用户退出应用程序时,我将前台应用程序转换为 LSUIElement(应用程序只有一个菜单栏图标,停靠图标和菜单消失)。

我在菜单项中有一个选项可以正常工作并将 LSUIElement 转换为前台应用程序(我使用函数[NSApp setActivationPolicy:NSApplicationActivationPolicyRegular][NSApp activateIgnoringOtherApps:YES])。

当用户双击应用程序时出现我的问题。我[NSApp setActivationPolicy:NSApplicationActivationPolicyRegular]在委托方法中再次使用了applicationWillUnhide:(NSNotification *)notification,除了没有出现的菜单之外,一切都很好。如果我去另一个应用程序,然后我回来菜单就会出现。我尝试了不同的方法,但我找不到一个好的方法。

我想知道当用户双击应用程序时调用的委托方法,或者NSApplication在那一刻调用的函数是什么,因为我认为在函数中使用setActivationPolicy:applicationWillUnhide函数为时已晚。

0 投票
1 回答
530 浏览

macos - 隐藏窗口 Swift

有没有办法让 OS X 应用程序对用户隐藏应用程序(例如,当它打开时不在 Dock 上并且只在后台运行)。我知道有一种方法可以制作隐藏 Python 窗口之类的东西,但我可以快速完成吗?

0 投票
1 回答
492 浏览

macos - OS X - 如何检测应用程序何时在登录时以隐藏状态启动?

我的后台应用程序(LSUIElement模式)在启动时会短暂显示一个窗口,让用户知道它已经启动。

当应用程序作为登录项启动时,一些用户选择通过选中用户和组控制面板的登录项中的“隐藏”选项来隐藏此启动窗口。

虽然此隐藏选项有效地隐藏了启动窗口,但它也隐藏了我的应用程序显示其窗口的任何进一步尝试,除非它使自己成为前端(活动)应用程序,由于此应用程序的性质,这通常是不希望的.

因此,我需要了解我的应用程序是否以这种隐藏模式启动,以便它可以短暂地把自己带到前面。

(我不喜欢总是在启动时激活应用程序,因为它会导致轻微的闪烁,我希望在正常(即未隐藏)启动时避免这种闪烁。)

我还检查了Detect that os x app was started as login item? ,但是由于 LSUIElement 应用程序根本不会调用 applicationWillBecomeActive: 除非它们自己激活,这对我没有帮助。

0 投票
2 回答
961 浏览

swift - 如何使我的应用程序表现得像我正在使用 Swift 在运行时更改 Application is agent(UIElement)?

我正在编写一个NSPopover位于菜单栏右侧的 Mac 应用程序(Application is agent(UIElement)设置为YES)。我允许用户通过单击并向下拖动来分离弹出框,这会将应用程序置于窗口内。这工作正常;但是,当应用程序被拖出菜单栏并变成一个窗口时,我希望我的应用程序的图标出现在 Dock 中,并在菜单栏的左侧显示应用程序特定的菜单,就好像Application is agent(UIElement)设置为NO。相反,当窗口关闭并且应用程序返回到菜单栏中的弹出窗口时,我希望我的应用程序的图标从停靠栏中消失,并且不再在菜单栏的左侧显示应用程序特定的菜单(Application is agent(UIElement)设置回到YES)。

这个问题,我了解到Application is agent(UIElement)在运行时更改是不可能的。然而,给出的答案是在 Objective-C 中,最后一个函数似乎从 OS X 10.9 开始贬值。如何使我的应用程序具有与Application is agent(UIElement)使用 Swift 在运行时更改相同的行为?

我知道显示应用windowDidBecomeMain程序图标/菜单栏菜单会发生在windowWillClose.

谢谢。

0 投票
0 回答
11 浏览

xcode - 具有两个依赖项目和 CocoaPods 的 Xcode 工作区

我有一个项目,它包含一个 PrefPane 和一个包含 LSUIElement 的 .app 包。基本上,用户安装 prefpane,prefpane 将包含的 .app 添加到登录项(如果未运行,则启动它),以便项目的“守护程序”部分始终运行(当然,如果从 prefpane 启用。

现在,项目结构有点混乱,prefpane 项目中有一个“cp”构建阶段,它将 .app 复制到 Contents/Resources。由于这不会在将 .app 复制到 prefpane 之前自动负责重建 .app,因此这不太理想。

现在我想将 Sparkle 添加到组合中,所以我创建了一个指向“守护程序”.app 项目的 podfile,因为这样就可以每天进行背景检查。这将创建一个 xcworkspace,在构建守护程序时可以正确处理 Sparkle 依赖项。

现在,我也想将 PrefPane 项目添加到工作区,以便可以一起构建所有内容。但是,如果两个 .xcproject 都位于工作区的根级别,就在 Pods 项目旁边,我无法将 Daemon .app 目标添加为 PrefPane 的依赖项。我首先必须将守护进程的项目拖到 prefpane 项目的“下方”,这会创建一个“副本”/另一个引用。现在我可以将守护程序的 .app 目标添加为依赖项,还可以将 .app 添加到 Copy Files 阶段。但是当我构建工作区时,只构建了 .app 项目和 cocoapods。prefpane 目标在清洁和重建后保持红色。

这里发生了什么?