
tendedero 之后谁在抄晾衣绳同思路项目与跟风生态盘点【免费下载链接】tendederoScreenshots, hung out to dry. A tiny native macOS app that hangs every screenshot on a line at the top of your screen.项目地址: https://gitcode.com/gh_mirrors/te/tendedero一个 1.7 MB 的原生 macOS 应用不截图、不联网、不需要任何辅助功能权限却在 GitHub 趋势榜上持续出没把截图收纳做成了一条会随风摆动的晾衣绳。它就是 tendedero——Screenshots, hung out to dry。它的出现其实给整个截图工具品类划了一条新界线过去十年大家比的是截得准、标注全、贴得快而 tendedero 关心的是截图被截下来之后去哪儿、怎么活、怎么死。本文不打算复述 README。我直接翻了一遍它的全部源码Sources/Tendedero把晾衣绳这个交互隐喻背后的实现拆开再对照社区里仍在升温的贴图、录屏、剪贴板类工具聊聊一个现实问题这类顶栏收纳思路火了之后跟风者会往哪抄又怎么判断谁是创新、谁是缝合。一、晾衣绳不是贴图而是一个有生命周期的队列先说清楚 tendedero 到底做了什么。它自己从不截图——ScreenshotWatcher.swift 的注释写得很直白Tendedero never takes screenshots itself: you keep your usual shortcut (or CleanShot, or anything else) and the line just picks them up.它用DispatchSourceFileSystemObject监听 macOS 截图保存目录同时兼容桌面文件夹只认带com.apple.metadata:kMDItemIsScreenCapture扩展属性的文件也就是说任何图片落进来都上绳的口子被刻意收窄了。这就是它和 Snipaste/PixPin 贴图逻辑的分野贴图是用户主动从截图里挑一张钉在屏幕上tendedero 是系统刚产出的一张自动排队上绳。再往下看这条绳本质是一个环形队列而不是一堆漂浮窗口。在 Line.swift 里每个截图被建模成Pegged自带一个Double.random(in: -2.5...2.5)的随机倾角——像真的晾衣绳上那样挂得歪一点maxItems由屏幕宽度算出3 到 12 张超员时最老的照片从绳尾自动掉下去文件被外部删除时prune()让对应卡片自动落下。截图文件本身从不移动代码注释强调The files never move. The line is only a view onto them.生命周期闭环还体现在手势语义上GrabArea.swift 给每张照片定义了四种拖动归宿拖进 App 是复制一份、照片留在绳上拖进文件夹是文件归位、照片下绳拖进废纸篓是删除拖到任何不接受的地方照片飞回绳上。同一个手势目的地不同语义就不同——这比贴上去再手动关更接近真实物理世界的操作直觉。二、顶栏收纳一类正在被重新发现的边缘地带把 tendedero 放进顶栏/边缘收纳这个坐标里它的同思路项目其实早就存在只是形态各异。Windows 生态里Snipaste 的贴图把截图钉在窗口之上任意位置跨平台的 PixPin 在其基础上叠加了长截图、OCR、取色。macOS 生态里Yoink、Dropshelf 这类工具把拖拽暂存区做成了屏幕边缘的浮岛拖出的文件先落在岛上看一看再决定去处。剪贴板工具如 Paste 则在菜单栏附近维护一条历史货架。这些项目共享同一个洞察屏幕边缘是未被利用的临时工作区而菜单栏这条带尤其特殊——它天然跨 Space 常驻、天然不抢焦点、天然比 Dock 更容易藏起来。tendedero 在实现层面把这个洞察做透了LinePanel.swift 的NSPanel只有几行关键配置level .floating浮在所有 App 之上collectionBehavior [.canJoinAllSpaces, .stationary, .ignoresCycle]让绳跟随所有 Space全屏除外ignoresMouseEvents true让整条面板默认鼠标穿透。配合 AppDelegate.swift 里每 1/30 秒的tick()只有当光标真的悬停在某张照片上方时才临时恢复鼠标响应——其余点击全部落给下层 App。这就是它敢把一条 210pt 高的透明面板铺满屏幕顶部、却不干扰任何操作的原因。更值得抄的是它处理边缘收纳共性问题的方式进入全屏时整条绳自动隐藏FullScreen.swift 调用了窗口服务器私有的CGSCopyManagedDisplaySpaces判断当前 Space 类型注释里专门提到这是 yabai 这类窗口管理器同样依赖的稳定私有 API看视频、做演示时绳绝不跨过屏幕。相比之下很多贴图工具在全屏/多显示器场景下的表现一直是用户吐槽重灾区。三、可预见的跟风方向贴图、录屏、剪贴板谁的赛道最挤从社区情报看截图工具的话题流量几乎被 Snipaste 与 PixPin 的贴图之争垄断掘金上抛弃 Snipaste平替 Snipaste的帖子动辄上万阅读PixPin 的文本识别、节点标注、长截图、取色被反复安利另一边Screenshot-to-Code 这类截图变代码的 AI 工具能冲到 60.9K Star说明截图之后还能干什么的想象空间远没到头。把这些情报与 tendedero 的架构对照可以预判三个跟风方向贴图pin。这是最拥挤的赛道。Snipaste 定义心智在先PixPin 靠功能堆叠追赶在后。若有人把晾衣绳当成贴图的又一个皮肤——即把截图钉在一条绳子上——大概率只是缝合贴图解决的是多张参考图同时可见、独立操作而绳解决的是临时截图的统一去留。两者交互模型不同硬缝只会得到两套规则打架的工具。录屏 / GIF。FastStone Capture 这类老牌工具早已把录屏、滚动截图塞进同一入口属功能全家桶路线。tendedero 的启发在于它连截图本身都不做只做接收。如果录屏产物也能作为文件被监听、被上绳、被拖出分享那么录屏与截图共享同一条工作流这才是真正的增量而不是把录制按钮和晾衣绳并排放进一个工具栏。剪贴板管理。这是和绳天然同构的方向——都是最近产出物的临时队列。剪贴板管理器已经有成熟的自动过期、置顶、搜索范式晾衣绳完全可以成为剪贴板历史的可视化形态。但注意 Line.swift 里那条while liveCount maxItems的淘汰逻辑容量有限、自然淘汰这是绳的核心。剪贴板工具普遍是无限历史搜索两者产品哲学相反跟风者如果只学贴边显示而放弃淘汰机制会立刻失去晾衣绳的轻盈感。四、怎么判断创新还是缝合四条源码级判据社区里天天有人发明新截图工具但多数是功能拼接。用 tendedero 的源码当尺子可以提炼四条可操作的判据判据一交互模型是否自洽。tendedero 的每个手势只干一件事单击复制、按住标注、双击打开、拖动按目的地分流见 README 的手势表。GrabArea.swift 中sourceOperationMaskFor精确返回.copy, .move, .delete把 macOS 的拖动语义吃干榨净。缝合怪的特征恰恰相反——一个入口塞进八种功能每种都能用但记不住。判据二是否尊重宿主系统。快捷键用 Carbon 的RegisterEventHotKeyHotKey.swift注释明确写着不需要辅助功能权限接管截图设置时先把原值存进UserDefaults退出或关停时原样恢复连 SIGTERM/SIGINT/SIGHUP 都单独兜底Inbox.swift 与 AppDelegate.swift。真正的系统级工具懂得不留下任何痕迹缝合怪通常上来就索要录屏、辅助功能、网络权限。判据三生命周期是否闭环。上绳、复制、标注、拖出、淘汰、下绳、因文件被删而自动prune、重启后从UserDefaults恢复pegged列表——tendedero 把一张截图的完整生死都覆盖了。缝合怪常见病是只做展示不做清理截图越积越多最后沦为又一个吃磁盘的常驻应用。判据四隐喻是否渗透到实现细节。这是最狠的一刀。tendedero 的绳是一条用二次贝塞尔曲线画出的悬链线LineView.swift两端渐隐像是从屏幕外伸进来Line.swift 每 7~16 秒随机生成一阵风gustPeggedView.swift 让每张照片随之轻轻摇晃新截图会从拍摄时的屏幕坐标读自com.apple.metadata:kMDItemScreenCaptureGlobalRect扩展属性飞向绳上的落点途中逐渐缩小、倾斜、长出玻璃框和夹子CaptureFlight.swift。甚至 README 里的宣传图都是scripts/make-readme-art.swift用代码画的。缝合怪抄得到一条绳挂截图抄不到这些让工具像物体而非控件的物理细节——风吹绳动、卡片随悬垂线摇摆这些才是晾衣绳之所以成立的灵魂。结语晾衣绳的走红本质上是截图工具从捕捉能力竞赛转向收纳心智竞争的信号截图本身早已免费且同质真正的体验差距在截图之后。tendedero 用 14 个 Swift 文件、1.7 MB 的体量示范了一种克制——不碰截图管线只做一件交互隐喻做到极致的事。跟风者如果只抄顶栏一条绳得到的只是一个皮如果抄的是边缘地带 统一隐喻 完整生命周期这套组合才有资格说自己做了第二个东西。而判断标准永远藏在源码里看它有没有像 tendedero 那样为一个 0.45 秒的长按延迟写注释解释手感为一帧 120Hz 的飞行动画单独开一个 220 行的文件。细节密度才是创新与缝合的分界线。【免费下载链接】tendederoScreenshots, hung out to dry. A tiny native macOS app that hangs every screenshot on a line at the top of your screen.项目地址: https://gitcode.com/gh_mirrors/te/tendedero创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考