OSX:变更Login背景图片

来源:互联网 发布:nslookup python.org 编辑:程序博客网 时间:2024/04/29 21:29

简介

Mac OS X系统登陆时,如果你没有设置开机自动登陆到特定用户,而是让用户自己输入用户名和密码登陆,登陆画面的背景图在10.8里面的就是下图所示,这个背景一成不变,时间长了不免失去了新鲜感。另外,在企业网络环境中,或者是企业的规则规定的,需要在电脑明显位置,特别是登陆前,要有明显大标题告诉使用者,做到提示/警示的作用。Windows上就有这个功能,在OS X的10.7版本之后,苹果在系统中增加了个功能,叫做Poilcy Banner,不过他的使用却不如Windows的好用,首先,不能按Return键确认,只能使用鼠标点击;其次,如果用户操作较慢,用户还没有输入完登陆信息,或者是等待慢速服务器连接认证用户登录信息时,系统就又自动跳转到这个画面,即便是点击回去,不是登录信息没有了,就是超长时间等待,如此反复几次,用户也就失去了耐心;有的时候当前焦点不在登陆窗口,鼠标点击或者键盘输入都没有反映,必须先按ESC键,才能把焦点返回登录窗口,凡此种种的问题,是我们可能需要放弃系统自带的Policy Banner功能。


所以,变更登陆窗口的背景图,配制成自定的图案和文字,是一个好办法。

下面是几个登陆背景图的例子,看上去还不错吧:





最后一张就是带有企业规章制度在右下角的一个图例。


软件脚本

在开发中主要遇到的几个关键问题:

  1. 不同版本的OS X,使用的背景图存放位置不同:
    在10.6.x到10.7.3之前的这些版本,都是使用一种单个图形的方法。
    在10.7.4-10.8.2这些版本中,使用的是另外一种图形库的方法,而10.7.4-10.7.5与10.8.x的图形库的组织结构也有稍微差异,图的存放位置也不一样。所以要区分对待。

  2. 每台机器的屏幕分辨率不同,使用同一个图在不同的系统版本中效果可能不同:
    这个有多种途径解决。主要两种,在线生成适合分辨率的图片文件,或者放大/剪切已有的图形使之匹配当前系统的屏幕。
    我们为了简便,使用后面一种方式中的剪切法。
    无论那种方式,都要首先知道当前系统的最高分辨率,比如1680x1050,根据这个参数,剪切一张大图。目前来说苹果系统硬件所支持的最大分辨率是2880x1800,所以我们可以制作一张这样大小的图片,作为原始参考图。
    剪切的方法要依照你的图形来定,比如主图在左下角,就要以左下角作为基点剪切。

  3. 注意图形格式:
    注意要使用RGB作为颜色空间,DPI必须是72pixels/inch,颜色深度(Color Depth)须是24 bits(颜色数是16777216),不能为了节省空间使用8 bits(颜色数是256),否则显示出现问题。

为了实现功能,这里用到了3个免费软件,它们的使用很好地解决了上面的关键问题。

  1. Alex Zielenski开发的SArtFileTools工具,这个工具用来操作10.7.4之后图形库的。它的主要操作思路是,把系统图形库全部解开到一个临时目录中,你把自己的图替换到里面之后,再重新构建一个图形库,你把这个图形库复制到系统中。注意,基于个人测试,它的这个工具最新版本不能处理10.7.4/10.7.5,而需要找到旧版本(v5)来处理。

  2. 由Pierre-E Gougelet开发的nConvert,它提供了相当多的对图形文件的操作功能。执行nconvert -help可以看到它的详细功能。

  3. 由我本人开发的ScreenResolution,它也是很早再一些Mac论坛上公开源码的一个小软件,我用它来取得当前系统的分辨率信息。

经过计划和测试,开发的脚本放在了这里


制作安装包

该脚本不能单独使用,最好是和其他软件与你的图形文件放在一起,做成一个安装包。
原脚本默认把那些工具和图片放在/usr/local/_LBP.tmp目录里面,所有的临时操作也在这里。例如下图

该脚本在安装包中作为一个postinstall脚本被执行。

Tony L.
Sep 28, 2012