<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
  <title>github.com/saragordic</title>
  <link>https://aggr.aymericbeaumet.com/sources/github.com/saragordic/</link>
  <description>Browse aymeric&#39;s, an independent, searchable archive of readable snapshots from followed feeds, preserved in Git with aggr.</description>
  <language>en</language>
  <atom:link href="https://aggr.aymericbeaumet.com/sources/github.com/saragordic/rss.xml" rel="self" type="application/rss+xml"/>
  <lastBuildDate>Thu, 5 Nov 2026 16:50:14 +0000</lastBuildDate>
  <generator>aggr</generator>
  <item>
    <title>Window Sweaters</title>
    <link>https://aggr.aymericbeaumet.com/items/hnrss-org/2026-11-05-window-sweaters/</link>
    <guid isPermaLink="false">urn:aggr:item:4f01c875c4b6d4a455b1a003fbb9041c7423638f</guid>
    <atom:link href="https://github.com/saragordic/window-sweaters" rel="via" type="text/html"/>
    <pubDate>Thu, 5 Nov 2026 16:50:14 +0000</pubDate>
    <dc:creator>nickswalker</dc:creator>
    <description>A little Mac app I made to give my windows sweaters. 🧶 Knitted borders, colours inspired by your favourite apps, and a cosier desktop. window-sweaters-demo-github.mp4 See Window Sweaters in action on X → @saragordic on X Get it You can…</description>
    <content:encoded>&lt;p&gt;A little Mac app I made to give my windows sweaters. 🧶 Knitted borders, colours inspired by your favourite apps, and a cosier desktop.&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/saragordic/window-sweaters/blob/main/docs/hero.jpg&quot;&gt;&lt;picture class=&quot;article-picture article-picture-fallback&quot; style=&quot;--image-ratio:16 / 9&quot;&gt;&lt;img src=&quot;https://github.com/saragordic/window-sweaters/raw/main/docs/hero.jpg&quot; alt=&quot;Four overlapping windows edged with knitted borders in green, blue and rust colourways&quot; loading=&quot;eager&quot; decoding=&quot;async&quot; fetchpriority=&quot;high&quot; referrerpolicy=&quot;no-referrer&quot; class=&quot;progressive-image&quot;&gt;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;window-sweaters-demo-github.mp4&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;See Window Sweaters in action on X →&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://x.com/saragordic/status/2098916110787916219&quot;&gt;@saragordic on X&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Get it&lt;/h2&gt;
&lt;p&gt;You can just send this repo to your coding agent and ask it to install Window Sweaters for you:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Install Window Sweaters on my Mac: &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/saragordic/window-sweaters&quot;&gt;https://github.com/saragordic/window-sweaters&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Or install it yourself with &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://brew.sh&quot;&gt;Homebrew&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;&lt;span class=&quot;code-snippet&quot; data-language=&quot;Shell&quot;&gt;&lt;span class=&quot;syntax-source syntax-shell syntax-bash&quot;&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-shell&quot;&gt;&lt;span class=&quot;syntax-variable syntax-function syntax-shell&quot;&gt;brew&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-arguments syntax-shell&quot;&gt; trust saragordic/tap&lt;/span&gt;
&lt;span class=&quot;syntax-meta syntax-function-call syntax-shell&quot;&gt;&lt;span class=&quot;syntax-variable syntax-function syntax-shell&quot;&gt;brew&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-arguments syntax-shell&quot;&gt; install&lt;span class=&quot;syntax-variable syntax-parameter syntax-option syntax-shell&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-definition syntax-parameter syntax-shell&quot;&gt; --&lt;/span&gt;cask&lt;/span&gt; saragordic/tap/window-sweaters&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then open &lt;strong&gt;Window Sweaters&lt;/strong&gt; from your Applications folder.&lt;/p&gt;
&lt;p&gt;You can also grab the latest ZIP from &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/saragordic/window-sweaters/releases&quot;&gt;Releases&lt;/a&gt;, unzip it, and drag &lt;strong&gt;Window Sweaters.app&lt;/strong&gt; into Applications.&lt;/p&gt;
&lt;p&gt;If macOS blocks it, open &lt;strong&gt;System Settings → Privacy &amp;amp; Security → Open Anyway&lt;/strong&gt; after trying to launch it. The app isn&#39;t notarized by Apple yet. &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://support.apple.com/en-us/102445&quot;&gt;Apple&#39;s instructions&lt;/a&gt; explain this step.&lt;/p&gt;
&lt;h2&gt;Make yourself cosy&lt;/h2&gt;
&lt;p&gt;Click the yarn icon in your menu bar to change the style, pattern, border width, and stitch size. You can also pause the sweaters or quit from there.&lt;/p&gt;
&lt;p&gt;To leave an app bare, open &lt;strong&gt;Apps&lt;/strong&gt; and untick it. Its windows lose their sweater straight away, everything else stays as it is, and it stays off until you tick it again, even after a restart. Only want sweaters on a few apps? Choose &lt;strong&gt;Turn Off for All Apps&lt;/strong&gt;, then tick the ones you like. Apps you open later start off too.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;By App&lt;/strong&gt; gives each app its own sweater. &lt;strong&gt;Zigzag&lt;/strong&gt; gives them all a softer, matching cream zigzag in colours taken from their icons. Try both and see what you like.&lt;/p&gt;
&lt;p&gt;If macOS asks for Accessibility access, enable Window Sweaters in &lt;strong&gt;System Settings → Privacy &amp;amp; Security → Accessibility&lt;/strong&gt; so it can follow which window is focused.&lt;/p&gt;
&lt;h2&gt;The sweaters&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Custom sweaters for 37 apps, and counting!&lt;/strong&gt; Almost 40 little colourways, with colours picked by hand. These are just a few of my favourites:&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/saragordic/window-sweaters/blob/main/docs/collection/styles-comparison.png&quot;&gt;&lt;picture class=&quot;article-picture article-picture-fallback&quot; style=&quot;--image-ratio:16 / 9&quot;&gt;&lt;img src=&quot;https://github.com/saragordic/window-sweaters/raw/main/docs/collection/styles-comparison.png&quot; alt=&quot;Eight apps shown in By App and Zigzag styles, with enlarged yarn details&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;low&quot; referrerpolicy=&quot;no-referrer&quot; class=&quot;progressive-image&quot;&gt;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Shown above in By App and Zigzag. Here’s everyone we’ve knitted for so far:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Apple:&lt;/strong&gt; Finder, Safari, Mail, Messages, Notes, Calendar, Reminders, Apple Music, Photos, Preview, Terminal.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Work and notes:&lt;/strong&gt; Notion, Paper, Granola, Microsoft Teams, Slack, Zoom.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Coding and AI:&lt;/strong&gt; Cursor, VS Code, Claude, ChatGPT, Codex, Grok Bot, Ghostty.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Design:&lt;/strong&gt; Figma, Adobe Photoshop, Adobe Illustrator.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Microsoft Office:&lt;/strong&gt; Word, Excel, PowerPoint, Outlook.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;More favourites:&lt;/strong&gt; Spotify, WhatsApp, Google Chrome, Firefox, Telegram, Discord.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;See every sweater and its close-up stitches in the &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/saragordic/window-sweaters/blob/main/docs/COLLECTION.md&quot;&gt;catalogue&lt;/a&gt;, or download the &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/saragordic/window-sweaters/blob/main/docs/catalogues/Window-Sweaters-Catalogue.pdf&quot;&gt;By App PDF&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The 37 custom sweaters keep their hand-picked colours and patterns. Other apps borrow colours from their own icons, softened into yarn, and get a two-colour zigzag, picnic or twinkle sweater in &lt;strong&gt;By App&lt;/strong&gt; mode. The pattern stays the same for each app. If an icon has no usable colour, the app keeps a stable colour chosen from its name.&lt;/p&gt;
&lt;p&gt;Icons are sampled locally in the background when needed. While the colour is being prepared, the border uses its usual fallback. &lt;strong&gt;Zigzag&lt;/strong&gt; uses icon colours for every app, the 37 custom ones included, with a cream zigzag, or a deeper shade of the app’s colour on pale apps. Colours you set in &lt;code&gt;apps.conf&lt;/code&gt; always win. Other shared patterns keep their own contrast yarns, with each app’s own base colour.&lt;/p&gt;
&lt;h2&gt;A little work in progress&lt;/h2&gt;
&lt;p&gt;I built this on my Mac and use it myself, but there are still rough edges. Borders hide while you resize a window and return when you&#39;re done.&lt;/p&gt;
&lt;p&gt;The app is built for &lt;strong&gt;macOS 13 or later, on Apple Silicon and Intel&lt;/strong&gt;. I&#39;ve tested it on Apple Silicon with macOS 26; older macOS versions and Intel Macs haven&#39;t had the same hands-on testing. It uses private macOS window APIs, so system updates may affect how it works.&lt;/p&gt;
&lt;p&gt;If something looks wrong, &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/saragordic/window-sweaters/issues&quot;&gt;open an issue&lt;/a&gt; and tell me your macOS version, Mac model, and whether you&#39;re using another screen. Reproduction steps help a lot.&lt;/p&gt;
&lt;h2&gt;Build it yourself&lt;/h2&gt;
&lt;p&gt;You&#39;ll need Apple&#39;s Command Line Tools (&lt;code&gt;xcode-select --install&lt;/code&gt;) and Python 3.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;&lt;span class=&quot;code-snippet&quot; data-language=&quot;Shell&quot;&gt;&lt;span class=&quot;syntax-source syntax-shell syntax-bash&quot;&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-shell&quot;&gt;&lt;span class=&quot;syntax-variable syntax-function syntax-shell&quot;&gt;git&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-arguments syntax-shell&quot;&gt; clone https://github.com/saragordic/window-sweaters.git&lt;/span&gt;
&lt;span class=&quot;syntax-meta syntax-function-call syntax-shell&quot;&gt;&lt;span class=&quot;syntax-support syntax-function syntax-cd syntax-shell&quot;&gt;cd&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-arguments syntax-shell&quot;&gt; window-sweaters&lt;/span&gt;
&lt;span class=&quot;syntax-meta syntax-function-call syntax-shell&quot;&gt;&lt;span class=&quot;syntax-variable syntax-function syntax-shell&quot;&gt;./scripts/build-app.sh&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;syntax-meta syntax-function-call syntax-shell&quot;&gt;&lt;span class=&quot;syntax-variable syntax-function syntax-shell&quot;&gt;python3&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-arguments syntax-shell&quot;&gt; scripts/install-local.py&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This builds &lt;code&gt;outputs/Window Sweaters.app&lt;/code&gt;, installs it in &lt;code&gt;~/Applications&lt;/code&gt;, and opens it. The installer backs up any previous local installation before replacing it.&lt;/p&gt;
&lt;h2&gt;Your own colourways&lt;/h2&gt;
&lt;p&gt;If you&#39;d like to experiment, edit these files and restart the app:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span class=&quot;code-snippet&quot;&gt;~/Library/Application Support/Knit Borders/apps.conf
~/Library/Application Support/Knit Borders/charts/
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The folder still uses the app&#39;s original name so existing settings keep working. For example, an app rule looks like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span class=&quot;code-snippet&quot;&gt;Claude = #D58561 atelier-claude
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Names match app-name prefixes, ignoring capitalisation; the longest match wins. You can also put your own PNG charts in the charts folder to replace built-in patterns.&lt;/p&gt;
&lt;p&gt;If you like setting things up from the command line, Window Sweaters also runs an optional shell script at startup, if you have one at &lt;code&gt;~/.config/window-sweaters/sweatersrc&lt;/code&gt; or &lt;code&gt;~/.sweatersrc&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Taking it off&lt;/h2&gt;
&lt;p&gt;Quit Window Sweaters from the yarn icon first. Then, if you installed it with Homebrew:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;&lt;span class=&quot;code-snippet&quot; data-language=&quot;Shell&quot;&gt;&lt;span class=&quot;syntax-source syntax-shell syntax-bash&quot;&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-shell&quot;&gt;&lt;span class=&quot;syntax-variable syntax-function syntax-shell&quot;&gt;brew&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-arguments syntax-shell&quot;&gt; uninstall&lt;span class=&quot;syntax-variable syntax-parameter syntax-option syntax-shell&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-definition syntax-parameter syntax-shell&quot;&gt; --&lt;/span&gt;zap&lt;/span&gt;&lt;span class=&quot;syntax-variable syntax-parameter syntax-option syntax-shell&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-definition syntax-parameter syntax-shell&quot;&gt; --&lt;/span&gt;cask&lt;/span&gt; window-sweaters&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;--zap&lt;/code&gt; also removes your saved colourways. Leave it off to keep them for later.&lt;/p&gt;
&lt;p&gt;If you installed it by hand, drag &lt;strong&gt;Window Sweaters.app&lt;/strong&gt; to the Trash, then delete these if you want everything gone:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span class=&quot;code-snippet&quot;&gt;~/Library/Application Support/Knit Borders
~/Library/Preferences/local.knitborders.app.plist
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;macOS remembers the Accessibility permission separately, so remove Window Sweaters from &lt;strong&gt;System Settings → Privacy &amp;amp; Security → Accessibility&lt;/strong&gt; too.&lt;/p&gt;
&lt;h2&gt;Contributing&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;&lt;span class=&quot;code-snippet&quot; data-language=&quot;Shell&quot;&gt;&lt;span class=&quot;syntax-source syntax-shell syntax-bash&quot;&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-shell&quot;&gt;&lt;span class=&quot;syntax-variable syntax-function syntax-shell&quot;&gt;make&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-arguments syntax-shell&quot;&gt; test       &lt;span class=&quot;syntax-comment syntax-line syntax-number-sign syntax-shell&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell&quot;&gt;#&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-comment syntax-line syntax-number-sign syntax-shell&quot;&gt; run the tests&lt;/span&gt;&lt;span class=&quot;syntax-comment syntax-line syntax-number-sign syntax-shell&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-shell&quot;&gt;&lt;span class=&quot;syntax-variable syntax-function syntax-shell&quot;&gt;make&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-arguments syntax-shell&quot;&gt; catalogue  &lt;span class=&quot;syntax-comment syntax-line syntax-number-sign syntax-shell&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell&quot;&gt;#&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-comment syntax-line syntax-number-sign syntax-shell&quot;&gt; render the sweater collection&lt;/span&gt;&lt;span class=&quot;syntax-comment syntax-line syntax-number-sign syntax-shell&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-shell&quot;&gt;&lt;span class=&quot;syntax-variable syntax-function syntax-shell&quot;&gt;make&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-meta syntax-function-call syntax-arguments syntax-shell&quot;&gt; bench     &lt;span class=&quot;syntax-comment syntax-line syntax-number-sign syntax-shell&quot;&gt;&lt;span class=&quot;syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell&quot;&gt;#&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;syntax-comment syntax-line syntax-number-sign syntax-shell&quot;&gt; benchmark the renderer&lt;/span&gt;&lt;span class=&quot;syntax-comment syntax-line syntax-number-sign syntax-shell&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;See &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/saragordic/window-sweaters/blob/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt; for more details.&lt;/p&gt;
&lt;h2&gt;Credits and license&lt;/h2&gt;
&lt;p&gt;Built on &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/FelixKratz/JankyBorders&quot;&gt;JankyBorders&lt;/a&gt; by Felix Kratz, with thanks. Released under &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/saragordic/window-sweaters/blob/main/LICENSE&quot;&gt;GPL-3.0&lt;/a&gt;. See &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/saragordic/window-sweaters/blob/main/NOTICE.md&quot;&gt;NOTICE.md&lt;/a&gt; for attribution.&lt;/p&gt;
</content:encoded>
    <category>news</category>
  </item>
</channel>
</rss>
