Mac的GUI哲学
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哲学的更多相关文章
- 实现Mac主机上的Docker容器中的图形界面显示(运行GUI应用)
我有一个需求: 一方面,我需要在 Docker 容器环境下运行应用(因为有些环境在 Mac 下很难安装配置,并且希望环境干净隔离). 另一方面,容器中的应用又需要进行图形界面的显示. 由于 Docke ...
- 使用Git、Git GUI和TortoiseGit
1. 关于命令行 我一直建议在命令行中使用Git或者SVN.因为这样可能更加了解他们的工作方式,也不容易遗漏重要的问题和提醒. 在Windows习惯的驱使下,大多数人是不会看弹出的对话框中有什么信息的 ...
- 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 ...
- ansys 14.0
张建伟等.2012.12 人民邮电 一天一本书,这种感觉 真是爽啊. 但我觉得什么也没学到. 话说回来,此authors 确实书写得比较一般,实例不如百度文档上的WORD实例,理论不如我看的那本CFD ...
- jProfiler远程连接Linux监控jvm、tomcat运行状态
第一步.下载软件 官网地址:https://www.ej-technologies.com/download/jprofiler/files , Mac客户端 GUI界面 Linux服务端 第二步.安 ...
- 推荐一款万能抓包神器:Fiddler Everywhere
搞IT技术的同行,相信没有几个人是不会抓包这项技能的(如果很不幸你中枪了,那希望这篇文章给你一些动力),市面上的抓包工具也有很多,常用的有:Charles.Fiddler.Burpsuite.Wire ...
- Mac下好用的编辑器VIM GUI版本 VimR 推荐
vim号称是编辑器之神,轮其功能和扩展性的确少有编辑器能比,但是大多数编辑器都有的文件浏览功能它确没有,虽然有些插件可以实现,但用起来都不是很方便,偶然发现了一个GUI版本的VIM,与普通的GUI版本 ...
- Mac OS X 中使用SAP GUI的方法
下载sap gui for mac 730 解压后 安装之前需要去oracle 官网下载jdk 6 然后运行 安装完成后配置登陆端 新建连接时,只需要配置Advanced 页签:勾选Expert Mo ...
- SourceTree - 好用的 Git / Mercurial GUI 管理工具 for Mac OS X
Git 是免費.開放源碼的分散式版本控制系統,從小專案到非常大的專案,都可以很快速.有效地管理. 對程式設計師來說,一定要熟記 git 指令的用法,在終端機下操作 git 是必備的基本技能.(其他的 ...
随机推荐
- StackExchange.Redis 官方文档(六) PipelinesMultiplexers
原文:StackExchange.Redis 官方文档(六) PipelinesMultiplexers 流水线和复用 糟糕的时间浪费.现代的计算机以惊人的速度产生大量的数据,而且高速网络通道(通常在 ...
- ASI使用
一.ASI类库集成: .添加源代码文件 ASIAuthenticationDialog.h ASIAuthenticationDialog.m ASICacheDelegate.h ASIDataCo ...
- u3d demo起步第二章
假设要给一个角色加入寻路组件.那么仅仅须要选中这个角色,Component->Navigation->Nav Mesh Agent就能够加入寻路组件. 然后仅仅要agent.SetDest ...
- iOS进阶路线以及进阶书籍
第一,熟悉ARC机制:首先要了解ARC的前世今生.假设了解不清楚会导致两种可能,1,一个对象的引用莫名奇异为空.或失效了.这个一般都能在开发阶段及时发现,由于会导致应用异常.2.导致内存溢出:不了解A ...
- 在Eclipse中运行Nutch2.3 分类: H3_NUTCH 2015-01-28 16:41 3175人阅读 评论(13) 收藏
参考http://wiki.apache.org/nutch/RunNutchInEclipse 一.环境准备 1.下载nutch2.3源代码 wget http://mirror.bit.edu.c ...
- Java 字符转Unicode
static String unicode2String(String unicodeStr) { StringBuffer sb = new StringBuffer(); String str[] ...
- 8大排序算法图文讲解 分类: B10_计算机基础 2014-08-18 15:36 243人阅读 评论(0) 收藏
排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存. 常见的内部排序算法有:插入排序.希尔排序. ...
- windll对象
回过头来,再看一下windll和oledll的差别,这两者之间最大的差别是oledll调用的函数都是固定返回HRESULT类型的值,而windll是不固定的类型的.在Python 3.3版本号之前,都 ...
- [Compose] 16. Apply multiple functors as arguments to a function (Applicatives)
We find a couple of DOM nodes that may or may not exist and run a calculation on the page height usi ...
- base64码通过http传输 +号变 空格 问题解决
通过七牛云base64上传图片,通过官方示例上传成功后,根据示例改了一个controller. 通过前端往后端传base64码形式进行测试.死活不通过,七牛报400. 仔细排查后发现,示例转换的bas ...