导读:在这个快节奏的技术世界里,重温过去并从中汲取灵感总是一件有趣的事情。今天要介绍的是一款仅用一天时间重制的经典 Macintosh 应用——Stapler。这款应用最初发布于1992年,现在由一位充满激情的开发者重新打造,不仅保留了原汁原味的功能,还加入了现代化的改进和特性,使其更适合现代 macOS 用户的需求。

作者 | Matt Sephton

翻译 | Jonathan Ssst

几天前,我在 Hacker News 上读到一些 Linux 窗口管理器的一项功能,它们允许从不同的应用程序中收集标签页。

这让我想起了 BeOS,但同时也让我想起了 1992 年的一款经典 Macintosh 应用程序——Stapler,以及我过去是如何谈论过它和它的精神继承者 LaunchList 的。它们都是类似的应用程序,允许你收集并启动与特定任务相关的所有应用程序、文件、文件夹和文档,从而节省时间。正如阿里·兰塔卡里(Ali Rantakari)在 2009 年所说的那样,“在 Mac 上同时打开一堆东西”。

因此,在过去的一天多时间里,我为现代 macOS 构建了自己的这一概念!

虽然我的应用受到了 Stapler(连名字都是)和 LaunchList 的启发,但我的应用增加了自己的改进和功能,更像是两者的混合体。例如,Stapler 没有拖放功能,LaunchList 没有零点击自动启动功能。我的目标是尽可能简单,但不能更简单。

详情、下载和使用方法请参阅 GitHub 软件仓库:https://github.com/gingerbeardman/stapler

图:Stapler,适用于现代 macOS(12.0 或更新版本)

告诉我更多

其原理是为每个项目设置一个 Stapler 文档,其中包含相关的应用程序、文件、文件夹等。然后,你就可以通过启动单个文档一次性打开它们。每个文档都包含一个别名列表,可以使用该应用程序进行管理、检查和启动。省时的关键在于,如果直接启动订书机文档,其列表中的所有项目都会自动启动。酷毙了!

  • 工作:文本编辑器、运行当前游戏、像素艺术编辑器、位图字体应用程序、待办事项列表
  • 播放:音乐应用程序、Hacker News 应用程序、Twitter 应用程序、定位窗口的脚本
  • 电影:运行 Caffeine 以保持计算机开机状态、让显示器进入休眠状态的快捷方式

在电脑上工作,这是一种奇怪的思维方式——它以任务为基础,而不是以应用程序或文档为基础。的确,有人可能会说这是一种过时的工作方式。但我一直在鼓吹,有很多好东西都随着 System 7(虽然我还在用它)、BeOS、OS/2、Amiga Workbench、GEM 和雅达利 ST 等众多替代桌面的记忆被过早地抛在了脑后。因此,我想看看我是否能说到做到。

详细信息

它是用 Swift 和 SwiftUI 编写的,大小为 640KB,其中约三分之一是许多不同大小和分辨率的图标文件。通过创建基于文档的应用程序,您可以免费获得大量功能,例如文档/标签/窗口管理、撤销/重做(不过我还是需要注意并刷新应用程序窗口)等等。

编辑器是一个本地 macOS 窗口,有点像文件管理器中的列表视图、电子表格或小文件夹......这取决于你的观点。此外还有一些菜单命令和键盘对应功能。您可以同时打开多个窗口,例如为所有常用任务各打开一个窗口,这样就能以最小的代价启动全部或部分任务。

每个列表中的项目都是 macOS 书签(有时也称为安全范围书签),是一种经过授权/验证/安全的别名(事实上,它们在代码中仍被称为别名),已经存在了大约 10-15 年。它们包含路径和更多信息。随着 macOS 的封锁程度越来越高,建议访问文件的方式是通过正常的系统权限和安全层检索这些书签。如果没有书签,例如只使用纯文本路径,我就无法在快速查看中显示完整图像,也无法轻松启动列表项。这样做的一个主要好处是,即使文件被移动到同一磁盘的其他地方,甚至是不同的卷中,书签仍然可以解析!

我在保存的文件中将项目存储为 JSON 格式,只是因为比起 XML(这是主要/默认选项),我更喜欢 JSON 格式。我希望文件在一定程度上仍然是可读和可编辑的。

文件使用该文件指定的默认应用程序启动,因此可以根据每个文件进行更改。单个图像可能会在图像编辑器、图像查看器、运行 OCR 的应用程序、运行 OCR 的脚本等中打开。

处理文件既酷又烦,酷的是你可以如此轻松地将书签指向文件,烦的是你必须跳过这么多圈才能绕过安全和沙盒保护,最终不得不以一种啰嗦的方式进行文件请求,然后还必须调整 plist 条目,以便为应用提供正确的权限。我正在使用 SwiftUI 的某些功能,这意味着应用程序无法在 macOS 14 Sonoma 之前的版本上运行。总而言之,我认为现代 macOS 开发有点喜忧参半。要么接受,要么放弃。

图标

由于这是一个周末的快速项目,我在设计图标时有点力不从心。我希望能有一个更好的应用程序图标,以及一个特定的文档图标,所以任何图标设计师都可以加入进来(https://github.com/gingerbeardman/stapler/issues/1)。

额外提示

确保取消选中: System Settings > Desktop & Dock > Windows > Close windows when quitting an application

然后,在退出应用程序时让其窗口保持打开状态。 当您下次启动应用程序时,其窗口将恢复到以前的大小和位置。 如果您先关闭窗口,那么应用程序将恢复到未打开窗口的状态。

感谢:

我的好朋友戴夫-罗伯茨(Serendipity App Company)的集思广益,让我明白了为什么让应用程序在从 Finder 打开文档时做出不同的反应会如此困难。 撕掉它,重新开始! 感谢 Dustin Mierau 为现代 macOS 重塑已被遗忘的旧版应用程序,开启了这一潮流。 永远感谢 Chris Patterson 和 Ali Rantakari 提供的应用程序。

其他

仅花一天时间,开发者重制 32 年前经典 Mac 应用!的更多相关文章

  1. [Unity3D]自己动手重制坦克舰队ArmadaTank

    [Unity3D]自己动手重制坦克舰队ArmadaTank 我玩过一款坦克游戏ArmadaTank(坦克舰队),如下图所示 几个月前我尝试用Unity3D重制这款游戏,已经可以玩起来了.下面是在PC上 ...

  2. 使用AndEngine重制《是男人就上一百层》

    1.为什么还要做<是男人就上一百层> 一是在用Android原生API开发完<是男人就上一百层>以后,一直想体验一下用引擎开发游戏是个什么感觉,顺便也让游戏听上去高大上一些(使 ...

  3. [Unity3D]自己动手重制坦克舰队ArmadaTank(2)从碰撞说起

    [Unity3D]自己动手重制坦克舰队ArmadaTank(2)从碰撞说起 在上一篇里我给出了重制的坦克舰队效果图和试玩程序.本篇介绍一下玩家坦克和敌方坦克碰撞问题. +BIT祝威+悄悄在此留下版了个 ...

  4. Xamarin.Forms之UserDialogs 重制版本

    在 forms 里面,目前使用比较多的弹出组件是 Acr.UserDialogs ,但是这个组件有些小问题,比如 loading .hide 会同时把 toast 给一起关掉,android 下的 t ...

  5. WINDOWS 2003系统时间24小时制与12小时显示格式不一致问题与解决

    WINDOWS 2003 SERVER系统时间24小时制与12小时格式不一致问题,而导致论坛或BLOG不能正常显示更新日期的问题及解决方法问题的方法. 在WIN2003上出现这种情况的原因是在程序中使 ...

  6. 花一天时间试玩vsphere6.7(EXSI)服务器版的vmware

    花一天时间试玩vsphere6.7(EXSI)服务器版的vmware 要注册账号(2019年11月14注册): 登陆网址:https://my.vmware.com/cn/group/vmware/h ...

  7. 12小时制时间&&24小时制时间

    今天在获取时间的时候发现,插入到数据库中的时间,其中下午的时间直接显示01,02的样子...查了下资料发现了端倪, java.text.SimpleDateFormat f=new java.text ...

  8. Linux系统硬件时间12小时制和24小时制表示设置

    目前的服务器status是下面这样的 服务器系统    centos7 Linux系统时间      Fri Mar 20 15:26:27 CST 2020 Linux系统硬件时间  Fri 20 ...

  9. 重制AdvanceWars第一步 -- 搞定地图

    首先来聊下高级战争吧Advance Wars,由任天堂旗下的Intelligent Systems开发的战棋游戏.初作诞生于GBA上,后来继续跟进了高战2黑洞崛,而后在下一代掌机DS上也出了三代续作高 ...

  10. 16进制 32进制 base64之间的区别

    Base64: 包含大写字母(A-Z),小写字母(a-z),数字(0-9)以及+/; Base32: 而Base32中只有大写字母(A-Z)和数字234567: Base16: 而Base16就是16 ...

随机推荐

  1. python利用公私钥加解密

    小贴士 这里不再赘述公私钥的生成过程.可以利用OpenSSL进行生成. 加密代码 #!/usr/bin/python #加密 #conda install pycrypto #提前安装模块 impor ...

  2. python json反序列化为对象

    在Python中,将JSON数据反序列化为对象通常意味着将JSON格式的字符串转换为一个Python的数据结构(如列表.字典)或者一个自定义的类实例.虽然Python的标准库json模块不提供直接将J ...

  3. git 有用配置汇总

    背景 git config的不同级别,每一个级别覆盖上一级别的配置,所以.git/config的配置变量会覆盖/etc/gitconfig中的配置变量 git config --system #为整个 ...

  4. 【韦东山】嵌入式全系统:单片机-linux-Android对硬件操作的不同侧重点

    我是韦东山,一直从事嵌入式Linux培训,最近打算连载一系列文章. 正在录制全新的嵌入式Linux视频,使用新路线,不再从裸机/uboot开始,效率更高. 对应文档也会写成书<<嵌入式Li ...

  5. Java反射机制原理详解

    什么是反射? Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法.本质是JVM得到class对象之后,再通过class对象进行反编译,从而获取对象的各种信息 ...

  6. 解决方案 | Claunch 如何更新配置文件

    1.问题 比如我的电脑上有Claunch 3.26版本(绿色版本),但是更新的时候如何保证我的新版本的图标.链接也更新是个问题. 官网说得比较模糊: 2.解决方法 打开复制data数据覆盖到新版本同样 ...

  7. [oeasy]python0010_怎么用命令行保存文件

    编写 py 文件 回忆上次内容 上次 真的输出了 程序员的浪漫 Hello world!   print函数 可以输出 字符串 但是 print这个词 别拼错 就连 大小写 也别能错 错了就改 也没事 ...

  8. oeasy 教您玩转 linux 010214 画面转文字 asciiview

  9. Django 多数据库配置与使用总结

    Django 多数据库配置与使用总结 By:授客 QQ:103355122 #实践环境 Win 10 Python 3.5.4 Django-2.0.13.tar.gz 官方下载地址: https:/ ...

  10. 从DDPM到DDIM (一) 极大似然估计与证据下界

    从DDPM到DDIM (一) 极大似然估计与证据下界   现在网络上关于DDPM和DDIM的讲解有很多,但无论什么样的讲解,都不如自己推到一遍来的痛快.笔者希望就这篇文章,从头到尾对扩散模型做一次完整 ...