AppleScript 在远程桌面使用期间启用/禁用某些功能 - 已解决

AppleScript 在远程桌面使用期间启用/禁用某些功能 - 已解决

我曾尝试自己让这个脚本/应用程序运行,但搞不清楚。基本上,我试图根据我是否积极使用 VPN/RDP(Microsoft 远程桌面)在工作中使用我的 PC 来启用/禁用 SensibleSideButtons (SSB) 的功能。

使用 Mac 时,我需要启用 SSB,才能使 Logitech MX518 鼠标上的鼠标 4/鼠标 5 拇指按钮正常工作,以便在 Finder 或 Chrome 中前进/后退导航。但是,当我在工作时通过 VPN/RDP 使用 PC 时,启用 SSB 后,这些按钮将无法在 Explorer 或 Chrome 中的 PC 上导航。

我发现 SSB 应用程序的首选项文件是 ~/Library/Preferences/net.archagon.sensible-side-buttons.plist,并且我知道在启用/禁用应用程序时更改的值(SBFWasEnabled)。

这是我目前为该应用程序编写的脚本,我正在尝试制作该脚本以持续监视活动/最前面的应用程序,或者在我每次切换应用程序时运行(这会更有效率)来控制启用/禁用的 SBB 应用程序。

on run {input, parameters}
    tell application "System Events"
        set frontmostProcess to first process where it is frontmost
        set appName to name of frontmostProcess
    end tell
    if appName is equal to "Finder" then
        do shell script "sudo defaults write net.archagon.sensible-side-buttons SBFWasEnabled -bool true" with administrator privileges
    else if appName is not equal to "Finder" then
        do shell script "sudo defaults write net.archagon.sensible-side-buttons SBFWasEnabled -bool false" with administrator privileges
    end if

    return {appName}
    return 2
end run

使用脚本编辑器将其保存为应用程序后,当我尝试运行它时,看到以下错误:

       The application “SSB_MRD_control.app” can’t be opened.

希望这里有人可以让我知道我遗漏了什么或者做错了什么,以便我可以正常工作。

提前感谢所有能帮助我的人!

答案1

我找到答案了!:D

我可以通过使用键盘快捷键将我的两个显示器切换到远程桌面空间/从远程桌面空间切换,并运行我在自动程序中制作的应用程序来检查当前应用程序状态,并相应地启用/禁用 SensibleSideButtons,从而实现此功能。

这是该应用程序的脚本:

on run {input, parameters}
    tell application "System Events"
        set frontmostProcess to first process where it is frontmost
        set appName to name of frontmostProcess
    end tell

    if appName is equal to "Microsoft Remote Desktop" then
        do shell script "defaults write net.archagon.sensible-side-buttons SBFWasEnabled -bool false"
        do shell script "killall SensibleSideButtons"
    else if appName is not equal to "Microsoft Remote Desktop" then
        do shell script "defaults write net.archagon.sensible-side-buttons SBFWasEnabled -bool true"
        do shell script "open -a SensibleSideButtons"
    end if

    -- for debug, to see the active application, remove the (* *) from the following
    (* set theDialogText to "Active app is " & (appName) & "."
    display dialog theDialogText *)
    --> Result: {button returned:"OK"} 

    return {appName}
    return 2

end run

它不像基于 MS RDP 作为最前端应用程序而触发的程序那样自动化,我需要记住在首次打开连接后使用快捷方式切换到 RDP 空间(因为 RDP 创建了空间并自动切换到它)。但这已经足够好了!仍然比每次我在 Mac 和 RDP 之间切换时需要导航到菜单栏、打开菜单并启用/禁用 SSB 应用程序要好得多。

相关内容