<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Evernote on Chen</title><link>https://hechen.github.io/zh-cn/tags/evernote/</link><description>Recent content in Evernote on Chen</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Sat, 30 Mar 2019 11:29:54 +0800</lastBuildDate><atom:link href="https://hechen.github.io/zh-cn/tags/evernote/index.xml" rel="self" type="application/rss+xml"/><item><title>写个小工具 Swwwitch</title><link>https://hechen.github.io/zh-cn/post/swwwitch/</link><pubDate>Sat, 30 Mar 2019 11:29:54 +0800</pubDate><guid>https://hechen.github.io/zh-cn/post/swwwitch/</guid><description>&lt;p&gt;最近看到开发圈某热点，做了个小工具，总结下最近的几个 CocoaApp 上的功能，仅做练手。现在只包含了两个开关：切换系统主题和隐藏桌面 icon 的功能。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Swwwitch-c500" loading="lazy" src="https://i.imgur.com/U9RTmVU.png"&gt;&lt;/p&gt;
&lt;h2 id="功能点"&gt;功能点&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;切换系统主题&lt;/li&gt;
&lt;li&gt;显式或者印象桌面图标&lt;/li&gt;
&lt;li&gt;完全的 Menu Only 应用&lt;/li&gt;
&lt;li&gt;开机自启动&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;关于第三点的实现在&lt;a href="https://hechen.github.io/post/dockless-cocoaapps/"&gt;另外一篇文章&lt;/a&gt;有讲过，第四点的实现在 &lt;a href="https://hechen.github.io/post/autostartwhenlogin/"&gt;这一篇&lt;/a&gt; 中有讲。&lt;/p&gt;
&lt;h3 id="系统主题切换"&gt;系统主题切换&lt;/h3&gt;
&lt;p&gt;关于系统主题切换主要是基于 AppleScript 所写，&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-applescript" data-lang="applescript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;tell&lt;/span&gt; &lt;span class="nb"&gt;application&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;System Events&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;tell&lt;/span&gt; &lt;span class="nv"&gt;appearance&lt;/span&gt; &lt;span class="nv"&gt;preferences&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;dark&lt;/span&gt; &lt;span class="nv"&gt;mode&lt;/span&gt; &lt;span class="k"&gt;to&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="nv"&gt;dark&lt;/span&gt; &lt;span class="nv"&gt;mode&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;end&lt;/span&gt; &lt;span class="k"&gt;tell&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;end&lt;/span&gt; &lt;span class="k"&gt;tell&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;你完全可以自行执行这段 Apple Script 来切换主题，你可以点击下面链接尝试。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://hechen.github.io/zh-cn/post/swwwitch/#ZgotmplZ"&gt;Click Here to run&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="显式隐藏桌面图标"&gt;显式/隐藏桌面图标&lt;/h3&gt;
&lt;p&gt;关于隐藏桌面图标，实际上是执行系统的 Command 来实现的，Cocoa 应用可以显式使用 Process（也就是 NSTask）来执行任务，我们也是通过 NSTask 执行了一段如下的命令行达到的目的：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;defaults write com.apple.finder CreateDesktop &lt;span class="nb"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;killall Finder
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;你可以自行点击以下链接尝试。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://hechen.github.io/zh-cn/post/swwwitch/#ZgotmplZ"&gt;Click here to hide Desktop Icons&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://hechen.github.io/zh-cn/post/swwwitch/#ZgotmplZ"&gt;Click here to show Desktop Icons&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;感兴趣可以去看下代码，领会意思即可。
&lt;a href="https://github.com/hechen/Swwwitch/releases"&gt;Releases&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="todo"&gt;TODO&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Add more switch&lt;/li&gt;
&lt;li&gt;Add User-Customized switch setting&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="links"&gt;Links&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://ss64.com/osx/"&gt;Checkout all command lines macOS Support&lt;/a&gt;&lt;/p&gt;</description></item><item><title>关于 Mac 应用的自启动是如何做到的</title><link>https://hechen.github.io/zh-cn/post/autostartwhenlogin/</link><pubDate>Mon, 18 Mar 2019 17:29:54 +0800</pubDate><guid>https://hechen.github.io/zh-cn/post/autostartwhenlogin/</guid><description>&lt;p&gt;开机自启动是 Cocoa 应用最常见的一种功能，尤其是针对需要常驻 Menu 的服务来说更是如此，今天我们对开机启动项的功能加入做个梳理。&lt;/p&gt;
&lt;p&gt;在 &lt;a href="https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingLoginItems.html#//apple_ref/doc/uid/10000172i-SW5-SW1"&gt;Daemons and Services Programming Guide&lt;/a&gt; 中我们能找到关于自启动项的开发说明：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Applications can contain a helper application as a full application bundle, stored inside the main application bundle in the Contents/Library/LoginItems directory. Set either the LSUIElement or LSBackgroundOnly key in the Info.plist file of the helper application’s bundle.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Use the SMLoginItemSetEnabled function (available in OS X v10.6.6 and later) to enable a helper application. It takes two arguments, a CFStringRef containing the bundle identifier of the helper application, and a Boolean specifying the desired state. Pass true to start the helper application immediately and indicate that it should be started every time the user logs in. Pass false to terminate the helper application and indicate that it should no longer be launched when the user logs in. This function returns true if the requested change has taken effect; otherwise, it returns false. This function can be used to manage any number of helper applications.&lt;/p&gt;</description></item><item><title>Mac 平台上那些 Dockless 的 App 都是如何实现的？</title><link>https://hechen.github.io/zh-cn/post/dockless-cocoaapps/</link><pubDate>Wed, 13 Mar 2019 17:29:54 +0800</pubDate><guid>https://hechen.github.io/zh-cn/post/dockless-cocoaapps/</guid><description>&lt;p&gt;Menu Only 算是 Cocoa App 中最常见的一项，它使得 App 不占用你的 Dock 栏，在多 workspace 的时候也不影响正常使用，随时都可以在屏幕的菜单栏中执行快捷操作。尤其是针对一些需要便捷性要求比较高的应用来讲，Menu bar 的功能必不可少。本文就简单介绍一下关于 Menu App 中关键的几个开发步骤。&lt;/p&gt;
&lt;h1 id="介绍"&gt;介绍&lt;/h1&gt;
&lt;p&gt;以 &lt;a href="https://www.shimovpn.com/"&gt;Shimo&lt;/a&gt; 这个 App 举例，&lt;/p&gt;
&lt;p&gt;&lt;img alt="Shimo" loading="lazy" src="https://i.imgur.com/vT7EEVK.png"&gt;&lt;/p&gt;
&lt;p&gt;在其设置选项卡中能看到 Show Shimo in 的选项菜单，其中有三项：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Menubar only&lt;/li&gt;
&lt;li&gt;Dock only&lt;/li&gt;
&lt;li&gt;Menubar &amp;amp; Dock&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img alt="Shimo Menu" loading="lazy" src="https://i.imgur.com/WywIVkV.png"&gt;&lt;/p&gt;
&lt;p&gt;这也是常见的 Cocoa 应用的模式支持，很多常见的 App 都支持，比如 DayOne，Dash，Todoist 等。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Dash" loading="lazy" src="https://i.imgur.com/ioUvpNw.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="Todoist" loading="lazy" src="https://i.imgur.com/ORYAEcZ.png"&gt;&lt;/p&gt;
&lt;p&gt;其实核心功能有两点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;可以显示或者隐藏 Dock 图标；&lt;/li&gt;
&lt;li&gt;可以显示或者隐藏 Menu 菜单这两者的组合。&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id="核心步骤"&gt;核心步骤&lt;/h1&gt;
&lt;h2 id="dock"&gt;Dock&lt;/h2&gt;
&lt;p&gt;普通的 Cocoa Application 创建之后，默认都是 Dock 上展示的，如果想隐藏 Dock 图标，首先它需要有这个能力，这个能力是通过 info.plist 文件中的 Key 来指定的，这个 Key 就是 &lt;code&gt;LSUIElement&lt;/code&gt;，我们将其值设置为 true&lt;/p&gt;</description></item><item><title>在英文语言系统的 Safari 中使用印象笔记</title><link>https://hechen.github.io/zh-cn/post/using-yinxiangbiji-system-english/</link><pubDate>Wed, 13 Mar 2019 00:30:49 +0800</pubDate><guid>https://hechen.github.io/zh-cn/post/using-yinxiangbiji-system-english/</guid><description>&lt;blockquote&gt;
&lt;p&gt;因为 Evernote 在国内使用了不同的账户体系，去年团队也彻底独立出来，但是 Safari 的剪藏插件是同一个，&lt;a href="https://safari-extensions.apple.com/details/?id=com.evernote.safari.clipper-Q79WDW8YH9"&gt;下载地址&lt;/a&gt;，但是当你系统是英文系统的时候，使用 Safari 剪藏有点尴尬，就是根本找不到印象笔记的登录入口，该文做个记录。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;首先 Safari 默认是没有 Develop 菜单的，因此先开启 Develop 模式，进入 Safari 的选项设置面板中，最后 Advanced 选项卡最下方如图勾选。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Capto_Capture 2019-03-13_12-39-08_A" loading="lazy" src="https://i.imgur.com/J5HvXn1.png"&gt;&lt;/p&gt;
&lt;p&gt;此时，在 Safari 的顶部菜单中会多出 Develop 菜单入口，如下图所示：&lt;/p&gt;
&lt;p&gt;&lt;img alt="Capto_Capture 2019-03-13_12-40-57_A" loading="lazy" src="https://i.imgur.com/OxPf4Ji.png"&gt;&lt;/p&gt;
&lt;p&gt;安装印象笔记的插件之后，点击 Safari 上的印象笔记剪藏按钮，你会发现直接带到 Evernote 的登录界面，没有渠道让我登录印象笔记，即使你 Safari 已经登录了印象笔记，登录的 Session 和 Cookie 信息并没有任何用。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Capto_Capture 2019-03-13_12-50-48_A" loading="lazy" src="https://i.imgur.com/gVTWCOc.png"&gt;&lt;/p&gt;
&lt;p&gt;这时，你就登录国际版 Evernote 账户，如果你没有，那就注册一个。总之，你需要先登录进去，因为我们必须让剪藏菜单展示出来才行。&lt;/p&gt;
&lt;p&gt;登录 Evernote 之后，打开一个页面进行剪裁，之后如图，我们终于看到了剪藏菜单：&lt;/p&gt;
&lt;p&gt;&lt;img alt="Capto_Capture 2019-03-13_12-52-36_A" loading="lazy" src="https://i.imgur.com/VtvROcP.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="Capto_Capture 2019-03-13_12-53-45_A" loading="lazy" src="https://i.imgur.com/LsitsxG.png"&gt;&lt;/p&gt;
&lt;p&gt;点击下方的 Options，打开设置选项&lt;/p&gt;
&lt;p&gt;&lt;img alt="Capto_Capture 2019-03-13_12-56-16_A" loading="lazy" src="https://i.imgur.com/KpQefZc.png"&gt;&lt;/p&gt;
&lt;p&gt;此时，因为刚才开启了 Develop 菜单选项卡，此时右键点击该窗口，&lt;/p&gt;
&lt;p&gt;&lt;img alt="Capto_Capture 2019-03-13_12-58-02_A" loading="lazy" src="https://i.imgur.com/ylecnyS.png"&gt;&lt;/p&gt;
&lt;p&gt;点击 Inspect Element 打开页面元素查看器，在下方元素展示区为焦点的前提下，Command +F 搜索 &lt;strong&gt;DeveloperContainer&lt;/strong&gt; 关键字。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Capto_Capture 2019-03-13_12-59-28_A" loading="lazy" src="https://i.imgur.com/0DSMO39.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="Capto_Capture 2019-03-13_01-02-18_A" loading="lazy" src="https://i.imgur.com/t3uqMa4.png"&gt;&lt;/p&gt;</description></item></channel></rss>