GUI 哲学

前些日子,看了 Tinyfool 老师的一篇文章《开发人员为何应该使用 Mac OS X 兼 OS X 小史》,才恍然 Mac 系统可不仅仅是 UI 上与 Windows 大相径庭,而是自底而上的区别。这种区别渗透到了整个系统框架的设计理念中。

简单概括下我的认识:相比 Windows 和 Linux 两大阵营,Mac OS X 除了『品味』上的优势之外,最重要的两点是:1.对 GUI 应用程序脚本化的有力支持;2.能实现 GUI 程序之间快捷的进程间通信。

GUI 程序之间的进程间通信

IPC 对于多用户分时系统的重要性不言而喻。其中从用户视角来看,如何让多个程序之间能更友好的交互是非常重要的。C++语言虽然面向对象,但在底层来看,其实依旧是冷冰冰的汇编代码,没有更整体的对象环境支撑,而以此构建的 Linux 也无法对进程间通信形成强力的支持。相比之下,乔布斯的团队借助于 SmallTalk 的消息传递机制创造了 Objective-C,并搭建了自己的运行时和类库框架 Cocoa,让系统无论从自身的迭代开发还是应用开发,得到了很大提升。值得一提的是,Objc 虽然最近才由于 iOS、Mac 平台的开发的火热进入热门编程语言的行列,其实它比 Java 还早十年出生。像最近由于 Rails 框架而火爆起来的 Ruby 和持续坚挺的 Java,都从 SamllTalk 中吸收了很多设计理念,就别提 C#了。

GUI 应用程序的脚本化

图形的交互方式确实人性化,但应用程序脚本化控制的方式在一些特定的场景里也可以大大提高生产效率。比如微软 Office 的 VBScript。即使是一般用户,不愿意自己写脚本,脚本化的方式也能让开发人员更方便快捷的开发出新颖的功能和产品。

让应用全部统一开放脚本很难,特别是从市场的层面而言,如果没有一直贯彻这一战略,造成平台很多应用不支持这一功能,则很难推广。苹果九十年代已经开始积累这方面的基础,有先见之明。

GUI 工具

下面是我接触过的一些 Mac 下的 GUI 工具。它们大都散发着对开发者的自由开放的态度:)

Quicksilver

『为了不把 Mac 当 Windows 用』,可以从 Quicksilver 入手。它能将双手从触摸板中解脱出来,或许这是很多开发者的梦想吧;)。只需用热键激活输入框,输入简单的匹配字符串,就可召唤出某个应用,或者执行某些搜索、查找任务,快哉!

简单说说配置和使用方式:

  • 1.安装好后,在 preference -> command 中可以设置 HotKey(唤醒的虚拟按键),我的习惯设置是control+enter。preference -> application 可以设置是否需要在 dock 中显示,以及登入时自动启动。
  • 2.基本功能:快捷打开应用。按下 Quicksliver 的 HotKey(我的是control+enter),在弹出的输入框中输入所需应用的头几个字母或者缩写,Quicksliver 会自动匹配最可能的应用,并显示出来,如果不是自己想要的,可以移动「上下光标」打开下拉菜单选择。选中后回车即可,如图。

  • 3.还有很多其他的细节功能,通过 Quicksliver 的插件实现,可以根据自己的需求来定制。

Shortcat

shortcat 是 Mac 下的快捷操作利器。相比 Quicksilver,Shortcat 有不同的定位:通过键盘定位到屏幕上某窗体内的某个位置。其官网的示例就是如何通过 Shortcat 使用键盘更改 DNS 设置,注意,是完全不用鼠标噢。有人可能会想那为什么卜直接使用 cmd 呢?我想答案是 Shortcat 就是基于 GUI 的解决方案,是 GUI 和键盘快捷键的完美组合,与 cmd 并不冲突。

下面简单的交代下 Shortcat 的使用方式:

  • 1.快捷键Cmd+Shift+Space用来激活输入框。使用关键字的定位方式类似于 Quicksilver。比如:如果目的是『Language & Text』,那么输入『lt』、『lang』;『sa』代表 show all,显示所能用于文字定位的区域。『.』能展示出所有可控制区域,包括没有文字定位的区域。
  • 2.输入了关键字后,界面中被匹配到的模块会被套上不同颜色的方框。接下来,可以使用control+key重定位到对应位置,其中 key 为对应的匹配上的模块的字符标识。

  • 3.定位到合适的位置后,按下enter,可执行单击动作;对应的,双击enter为鼠标双击动作;如果需要配合其他按键的点击,比如command+click,执行command+enter即可;鼠标悬浮为control;双击control可实现聚焦。

GeekTool

GeekTool 类似于 Windows 下的 widget,可以个性化的定制自己的桌面,添加插件,将 CPU、HDD 信息直接展示在桌面上,正如其名,Geek 而又文艺!如下效果图:

详细配置可参考这篇文章《教你装小清新—— Geektool && Rainmeter 桌面皮肤推荐》

Nocturne

Nocturne 这是桌面颜色控制的工具,与 Quicksilver 同为 blacktree 公司的产品。

使用方式:下载 Nocturne2.0.0,解压后拖入应用程序文件夹,打开。在 preference 中可很直观的配置各项属性。其中,switch to night 功能可以将 Mac 界面切换到黑夜模式,很好玩;)。

参考:

 原文地址:http://biaobiaoqi.github.com/blog/2013/06/09/something-about-mac-gui/
 版权声明:自由转载-非商用-非衍生-保持署名| Creative Commons BY-NC-ND 3.0

Mac的GUI哲学的更多相关文章

  1. 实现Mac主机上的Docker容器中的图形界面显示(运行GUI应用)

    我有一个需求: 一方面,我需要在 Docker 容器环境下运行应用(因为有些环境在 Mac 下很难安装配置,并且希望环境干净隔离). 另一方面,容器中的应用又需要进行图形界面的显示. 由于 Docke ...

  2. 使用Git、Git GUI和TortoiseGit

    1. 关于命令行 我一直建议在命令行中使用Git或者SVN.因为这样可能更加了解他们的工作方式,也不容易遗漏重要的问题和提醒. 在Windows习惯的驱使下,大多数人是不会看弹出的对话框中有什么信息的 ...

  3. mac android studio 出现 Error: SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.

      Error: SDK location not found. Define location with sdk.dir in the local.properties file or with a ...

  4. ansys 14.0

    张建伟等.2012.12 人民邮电 一天一本书,这种感觉 真是爽啊. 但我觉得什么也没学到. 话说回来,此authors 确实书写得比较一般,实例不如百度文档上的WORD实例,理论不如我看的那本CFD ...

  5. jProfiler远程连接Linux监控jvm、tomcat运行状态

    第一步.下载软件 官网地址:https://www.ej-technologies.com/download/jprofiler/files , Mac客户端 GUI界面 Linux服务端 第二步.安 ...

  6. 推荐一款万能抓包神器:Fiddler Everywhere

    搞IT技术的同行,相信没有几个人是不会抓包这项技能的(如果很不幸你中枪了,那希望这篇文章给你一些动力),市面上的抓包工具也有很多,常用的有:Charles.Fiddler.Burpsuite.Wire ...

  7. Mac下好用的编辑器VIM GUI版本 VimR 推荐

    vim号称是编辑器之神,轮其功能和扩展性的确少有编辑器能比,但是大多数编辑器都有的文件浏览功能它确没有,虽然有些插件可以实现,但用起来都不是很方便,偶然发现了一个GUI版本的VIM,与普通的GUI版本 ...

  8. Mac OS X 中使用SAP GUI的方法

    下载sap gui for mac 730 解压后 安装之前需要去oracle 官网下载jdk 6 然后运行 安装完成后配置登陆端 新建连接时,只需要配置Advanced 页签:勾选Expert Mo ...

  9. SourceTree - 好用的 Git / Mercurial GUI 管理工具 for Mac OS X

    Git 是免費.開放源碼的分散式版本控制系統,從小專案到非常大的專案,都可以很快速.有效地管理. 對程式設計師來說,一定要熟記 git 指令的用法,在終端機下操作 git 是必備的基本技能.(其他的 ...

随机推荐

  1. 优雅地使用Retrofit+RxJava(二)

    前言 在我上一篇讲Retrofit+RxJava在MVP模式中优雅地处理异常(一)中,发现非常多网友发邮箱给我表示期待我的下一篇文章,正好趁着清明假期.我就写写平时我在使用RxJava+Retrofi ...

  2. 参数传递方法(用Delphi的汇编代码解释)

    参数传递方法 李纬的InsideVCL<第一章>中提到Windows定义的回调函数 typedef LRESULT (CALLBACK*WNDPROC)(HWND,UNIT,WPARAM, ...

  3. JRebel热部署神器的配置(Eclipse,非教程,就自己看看)

    1.安装下载 直接下官方正版的就好了 eclipse->help->eclipse marketplace 搜索JRebel 然后按步骤一步步安好 安装好记得重启 2.注册 这东西在搞活动 ...

  4. 初识OpenStack(1)

    初识OpenStack(1) 首先 先来说说我与openstack的渊源吧.那是在上个月中旬.学张的一个朋友给我打电话说让一起来搞一个云平台,当时也不知道是什么.就非常高兴的答应下来了,到了周末,就过 ...

  5. Android中各种drawable的使用

    转载请说明出处.本文来自Android菜鸟:http://blog.csdn.net/android_cai_niao/article/details/46854767  QQ:2717521606 ...

  6. UI 06 ScrollView 的手动循环播放 与 自己主动循环播放

    假设想要循环播放的话, scrollView的照片前要加上最后一张图片, 最后要加上第一张图片. - (void)viewDidLoad { [super viewDidLoad]; // Do an ...

  7. PWA之Service work

    原文 简书原文:https://www.jianshu.com/p/84a4553d81a8 大纲 1.Service Workers: PWA 的关键 2.理解 Service Workers 3. ...

  8. Android官方数据绑定框架DataBinding(一)

    还记得在博客<高逼格UI-ASD(Android Support Design)>的開始曾经说过,Android最新推出了一个官方的数据绑定框架-Data Binding Library. ...

  9. Arcengine 实现要素选取的方法(转载)

    转自原文Arcengine 实现要素选取的方法(转载) 选择一个要素或者一个要素集(FeatureSelection)的方法很多,如IMap::SelectByShape.ILayer::search ...

  10. 《转》couldn&#39;t connect to server 127.0.0.1:27017 at src/mongo/shell/mongo.js:145

    couldn't connect to server 127.0.0.1:27017 at src/mongo/shell/mongo.js:145,有须要的朋友能够參考下. 应为昨天安装的时候没及时 ...