{
  "@context": "https://schema.org",
  "@id": "https://aggr.aymericbeaumet.com/items/hnrss-org/2026-11-05-window-sweaters/#webpage",
  "@type": [
    "WebPage",
    "ArchiveComponent"
  ],
  "articleBody": "A little Mac app I made to give my windows sweaters. 🧶 Knitted borders, colours inspired by your favourite apps, and a cosier desktop.\n\n[![Four overlapping windows edged with knitted borders in green, blue and rust colourways](https://github.com/saragordic/window-sweaters/raw/main/docs/hero.jpg)](https://github.com/saragordic/window-sweaters/blob/main/docs/hero.jpg)\n\nwindow-sweaters-demo-github.mp4\n\n> See Window Sweaters in action on X →\n>\n> [@saragordic on X](https://x.com/saragordic/status/2098916110787916219)\n\n## Get it\n\nYou can just send this repo to your coding agent and ask it to install Window Sweaters for you:\n\n> Install Window Sweaters on my Mac: [https://github.com/saragordic/window-sweaters](https://github.com/saragordic/window-sweaters)\n\nOr install it yourself with [Homebrew](https://brew.sh):\n\n```shell\nbrew trust saragordic/tap\nbrew install --cask saragordic/tap/window-sweaters\n```\n\nThen open **Window Sweaters** from your Applications folder.\n\nYou can also grab the latest ZIP from [Releases](https://github.com/saragordic/window-sweaters/releases), unzip it, and drag **Window Sweaters.app** into Applications.\n\nIf macOS blocks it, open **System Settings → Privacy & Security → Open Anyway** after trying to launch it. The app isn't notarized by Apple yet. [Apple's instructions](https://support.apple.com/en-us/102445) explain this step.\n\n## Make yourself cosy\n\nClick 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.\n\nTo leave an app bare, open **Apps** 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 **Turn Off for All Apps**, then tick the ones you like. Apps you open later start off too.\n\n**By App** gives each app its own sweater. **Zigzag** gives them all a softer, matching cream zigzag in colours taken from their icons. Try both and see what you like.\n\nIf macOS asks for Accessibility access, enable Window Sweaters in **System Settings → Privacy & Security → Accessibility** so it can follow which window is focused.\n\n## The sweaters\n\n**Custom sweaters for 37 apps, and counting!** Almost 40 little colourways, with colours picked by hand. These are just a few of my favourites:\n\n[![Eight apps shown in By App and Zigzag styles, with enlarged yarn details](https://github.com/saragordic/window-sweaters/raw/main/docs/collection/styles-comparison.png)](https://github.com/saragordic/window-sweaters/blob/main/docs/collection/styles-comparison.png)\n\nShown above in By App and Zigzag. Here’s everyone we’ve knitted for so far:\n\n- **Apple:** Finder, Safari, Mail, Messages, Notes, Calendar, Reminders, Apple Music, Photos, Preview, Terminal.\n- **Work and notes:** Notion, Paper, Granola, Microsoft Teams, Slack, Zoom.\n- **Coding and AI:** Cursor, VS Code, Claude, ChatGPT, Codex, Grok Bot, Ghostty.\n- **Design:** Figma, Adobe Photoshop, Adobe Illustrator.\n- **Microsoft Office:** Word, Excel, PowerPoint, Outlook.\n- **More favourites:** Spotify, WhatsApp, Google Chrome, Firefox, Telegram, Discord.\n\nSee every sweater and its close-up stitches in the [catalogue](https://github.com/saragordic/window-sweaters/blob/main/docs/COLLECTION.md), or download the [By App PDF](https://github.com/saragordic/window-sweaters/blob/main/docs/catalogues/Window-Sweaters-Catalogue.pdf).\n\nThe 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 **By App** 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.\n\nIcons are sampled locally in the background when needed. While the colour is being prepared, the border uses its usual fallback. **Zigzag** 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 `apps.conf` always win. Other shared patterns keep their own contrast yarns, with each app’s own base colour.\n\n## A little work in progress\n\nI 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're done.\n\nThe app is built for **macOS 13 or later, on Apple Silicon and Intel**. I've tested it on Apple Silicon with macOS 26; older macOS versions and Intel Macs haven't had the same hands-on testing. It uses private macOS window APIs, so system updates may affect how it works.\n\nIf something looks wrong, [open an issue](https://github.com/saragordic/window-sweaters/issues) and tell me your macOS version, Mac model, and whether you're using another screen. Reproduction steps help a lot.\n\n## Build it yourself\n\nYou'll need Apple's Command Line Tools (`xcode-select --install`) and Python 3.\n\n```shell\ngit clone https://github.com/saragordic/window-sweaters.git\ncd window-sweaters\n./scripts/build-app.sh\npython3 scripts/install-local.py\n```\n\nThis builds `outputs/Window Sweaters.app`, installs it in `~/Applications`, and opens it. The installer backs up any previous local installation before replacing it.\n\n## Your own colourways\n\nIf you'd like to experiment, edit these files and restart the app:\n\n```\n~/Library/Application Support/Knit Borders/apps.conf\n~/Library/Application Support/Knit Borders/charts/\n```\n\nThe folder still uses the app's original name so existing settings keep working. For example, an app rule looks like this:\n\n```\nClaude = #D58561 atelier-claude\n```\n\nNames 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.\n\nIf you like setting things up from the command line, Window Sweaters also runs an optional shell script at startup, if you have one at `~/.config/window-sweaters/sweatersrc` or `~/.sweatersrc`.\n\n## Taking it off\n\nQuit Window Sweaters from the yarn icon first. Then, if you installed it with Homebrew:\n\n```shell\nbrew uninstall --zap --cask window-sweaters\n```\n\n`--zap` also removes your saved colourways. Leave it off to keep them for later.\n\nIf you installed it by hand, drag **Window Sweaters.app** to the Trash, then delete these if you want everything gone:\n\n```\n~/Library/Application Support/Knit Borders\n~/Library/Preferences/local.knitborders.app.plist\n```\n\nmacOS remembers the Accessibility permission separately, so remove Window Sweaters from **System Settings → Privacy & Security → Accessibility** too.\n\n## Contributing\n\n```shell\nmake test       # run the tests\nmake catalogue  # render the sweater collection\nmake bench     # benchmark the renderer\n```\n\nSee [CONTRIBUTING.md](https://github.com/saragordic/window-sweaters/blob/main/CONTRIBUTING.md) for more details.\n\n## Credits and license\n\nBuilt on [JankyBorders](https://github.com/FelixKratz/JankyBorders) by Felix Kratz, with thanks. Released under [GPL-3.0](https://github.com/saragordic/window-sweaters/blob/main/LICENSE). See [NOTICE.md](https://github.com/saragordic/window-sweaters/blob/main/NOTICE.md) for attribution.\n",
  "authors": [
    "nickswalker"
  ],
  "captured_at": "2026-11-05T23:32:43.152740887+00:00",
  "category": "news",
  "content_html": "<p>A little Mac app I made to give my windows sweaters. 🧶 Knitted borders, colours inspired by your favourite apps, and a cosier desktop.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/saragordic/window-sweaters/blob/main/docs/hero.jpg\"><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://github.com/saragordic/window-sweaters/raw/main/docs/hero.jpg\" alt=\"Four overlapping windows edged with knitted borders in green, blue and rust colourways\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></a></p>\n<p>window-sweaters-demo-github.mp4</p>\n<blockquote>\n<p>See Window Sweaters in action on X →</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://x.com/saragordic/status/2098916110787916219\">@saragordic on X</a></p>\n</blockquote>\n<h2>Get it</h2>\n<p>You can just send this repo to your coding agent and ask it to install Window Sweaters for you:</p>\n<blockquote>\n<p>Install Window Sweaters on my Mac: <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/saragordic/window-sweaters\">https://github.com/saragordic/window-sweaters</a></p>\n</blockquote>\n<p>Or install it yourself with <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://brew.sh\">Homebrew</a>:</p>\n<pre><code class=\"language-shell\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">brew</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> trust saragordic/tap</span>\n<span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">brew</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> install<span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> --</span>cask</span> saragordic/tap/window-sweaters</span>\n</span></span></code></pre>\n<p>Then open <strong>Window Sweaters</strong> from your Applications folder.</p>\n<p>You can also grab the latest ZIP from <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/saragordic/window-sweaters/releases\">Releases</a>, unzip it, and drag <strong>Window Sweaters.app</strong> into Applications.</p>\n<p>If macOS blocks it, open <strong>System Settings → Privacy &amp; Security → Open Anyway</strong> after trying to launch it. The app isn't notarized by Apple yet. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://support.apple.com/en-us/102445\">Apple's instructions</a> explain this step.</p>\n<h2>Make yourself cosy</h2>\n<p>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.</p>\n<p>To leave an app bare, open <strong>Apps</strong> 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 <strong>Turn Off for All Apps</strong>, then tick the ones you like. Apps you open later start off too.</p>\n<p><strong>By App</strong> gives each app its own sweater. <strong>Zigzag</strong> gives them all a softer, matching cream zigzag in colours taken from their icons. Try both and see what you like.</p>\n<p>If macOS asks for Accessibility access, enable Window Sweaters in <strong>System Settings → Privacy &amp; Security → Accessibility</strong> so it can follow which window is focused.</p>\n<h2>The sweaters</h2>\n<p><strong>Custom sweaters for 37 apps, and counting!</strong> Almost 40 little colourways, with colours picked by hand. These are just a few of my favourites:</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/saragordic/window-sweaters/blob/main/docs/collection/styles-comparison.png\"><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://github.com/saragordic/window-sweaters/raw/main/docs/collection/styles-comparison.png\" alt=\"Eight apps shown in By App and Zigzag styles, with enlarged yarn details\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></a></p>\n<p>Shown above in By App and Zigzag. Here’s everyone we’ve knitted for so far:</p>\n<ul>\n<li><strong>Apple:</strong> Finder, Safari, Mail, Messages, Notes, Calendar, Reminders, Apple Music, Photos, Preview, Terminal.</li>\n<li><strong>Work and notes:</strong> Notion, Paper, Granola, Microsoft Teams, Slack, Zoom.</li>\n<li><strong>Coding and AI:</strong> Cursor, VS Code, Claude, ChatGPT, Codex, Grok Bot, Ghostty.</li>\n<li><strong>Design:</strong> Figma, Adobe Photoshop, Adobe Illustrator.</li>\n<li><strong>Microsoft Office:</strong> Word, Excel, PowerPoint, Outlook.</li>\n<li><strong>More favourites:</strong> Spotify, WhatsApp, Google Chrome, Firefox, Telegram, Discord.</li>\n</ul>\n<p>See every sweater and its close-up stitches in the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/saragordic/window-sweaters/blob/main/docs/COLLECTION.md\">catalogue</a>, or download the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/saragordic/window-sweaters/blob/main/docs/catalogues/Window-Sweaters-Catalogue.pdf\">By App PDF</a>.</p>\n<p>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 <strong>By App</strong> 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.</p>\n<p>Icons are sampled locally in the background when needed. While the colour is being prepared, the border uses its usual fallback. <strong>Zigzag</strong> 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 <code>apps.conf</code> always win. Other shared patterns keep their own contrast yarns, with each app’s own base colour.</p>\n<h2>A little work in progress</h2>\n<p>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're done.</p>\n<p>The app is built for <strong>macOS 13 or later, on Apple Silicon and Intel</strong>. I've tested it on Apple Silicon with macOS 26; older macOS versions and Intel Macs haven't had the same hands-on testing. It uses private macOS window APIs, so system updates may affect how it works.</p>\n<p>If something looks wrong, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/saragordic/window-sweaters/issues\">open an issue</a> and tell me your macOS version, Mac model, and whether you're using another screen. Reproduction steps help a lot.</p>\n<h2>Build it yourself</h2>\n<p>You'll need Apple's Command Line Tools (<code>xcode-select --install</code>) and Python 3.</p>\n<pre><code class=\"language-shell\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">git</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> clone https://github.com/saragordic/window-sweaters.git</span>\n<span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-support syntax-function syntax-cd syntax-shell\">cd</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> window-sweaters</span>\n<span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">./scripts/build-app.sh</span></span>\n<span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">python3</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> scripts/install-local.py</span>\n</span></span></code></pre>\n<p>This builds <code>outputs/Window Sweaters.app</code>, installs it in <code>~/Applications</code>, and opens it. The installer backs up any previous local installation before replacing it.</p>\n<h2>Your own colourways</h2>\n<p>If you'd like to experiment, edit these files and restart the app:</p>\n<pre><code><span class=\"code-snippet\">~/Library/Application Support/Knit Borders/apps.conf\n~/Library/Application Support/Knit Borders/charts/\n</span></code></pre>\n<p>The folder still uses the app's original name so existing settings keep working. For example, an app rule looks like this:</p>\n<pre><code><span class=\"code-snippet\">Claude = #D58561 atelier-claude\n</span></code></pre>\n<p>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.</p>\n<p>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 <code>~/.config/window-sweaters/sweatersrc</code> or <code>~/.sweatersrc</code>.</p>\n<h2>Taking it off</h2>\n<p>Quit Window Sweaters from the yarn icon first. Then, if you installed it with Homebrew:</p>\n<pre><code class=\"language-shell\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">brew</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> uninstall<span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> --</span>zap</span><span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> --</span>cask</span> window-sweaters</span>\n</span></span></code></pre>\n<p><code>--zap</code> also removes your saved colourways. Leave it off to keep them for later.</p>\n<p>If you installed it by hand, drag <strong>Window Sweaters.app</strong> to the Trash, then delete these if you want everything gone:</p>\n<pre><code><span class=\"code-snippet\">~/Library/Application Support/Knit Borders\n~/Library/Preferences/local.knitborders.app.plist\n</span></code></pre>\n<p>macOS remembers the Accessibility permission separately, so remove Window Sweaters from <strong>System Settings → Privacy &amp; Security → Accessibility</strong> too.</p>\n<h2>Contributing</h2>\n<pre><code class=\"language-shell\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">make</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> test       <span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> run the tests</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span></span><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">make</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> catalogue  <span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> render the sweater collection</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span></span><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">make</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> bench     <span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> benchmark the renderer</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span></span></span></span></code></pre>\n<p>See <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/saragordic/window-sweaters/blob/main/CONTRIBUTING.md\">CONTRIBUTING.md</a> for more details.</p>\n<h2>Credits and license</h2>\n<p>Built on <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/FelixKratz/JankyBorders\">JankyBorders</a> by Felix Kratz, with thanks. Released under <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/saragordic/window-sweaters/blob/main/LICENSE\">GPL-3.0</a>. See <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/saragordic/window-sweaters/blob/main/NOTICE.md\">NOTICE.md</a> for attribution.</p>\n",
  "content_markdown": "A little Mac app I made to give my windows sweaters. 🧶 Knitted borders, colours inspired by your favourite apps, and a cosier desktop.\n\n[![Four overlapping windows edged with knitted borders in green, blue and rust colourways](https://github.com/saragordic/window-sweaters/raw/main/docs/hero.jpg)](https://github.com/saragordic/window-sweaters/blob/main/docs/hero.jpg)\n\nwindow-sweaters-demo-github.mp4\n\n> See Window Sweaters in action on X →\n>\n> [@saragordic on X](https://x.com/saragordic/status/2098916110787916219)\n\n## Get it\n\nYou can just send this repo to your coding agent and ask it to install Window Sweaters for you:\n\n> Install Window Sweaters on my Mac: [https://github.com/saragordic/window-sweaters](https://github.com/saragordic/window-sweaters)\n\nOr install it yourself with [Homebrew](https://brew.sh):\n\n```shell\nbrew trust saragordic/tap\nbrew install --cask saragordic/tap/window-sweaters\n```\n\nThen open **Window Sweaters** from your Applications folder.\n\nYou can also grab the latest ZIP from [Releases](https://github.com/saragordic/window-sweaters/releases), unzip it, and drag **Window Sweaters.app** into Applications.\n\nIf macOS blocks it, open **System Settings → Privacy & Security → Open Anyway** after trying to launch it. The app isn't notarized by Apple yet. [Apple's instructions](https://support.apple.com/en-us/102445) explain this step.\n\n## Make yourself cosy\n\nClick 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.\n\nTo leave an app bare, open **Apps** 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 **Turn Off for All Apps**, then tick the ones you like. Apps you open later start off too.\n\n**By App** gives each app its own sweater. **Zigzag** gives them all a softer, matching cream zigzag in colours taken from their icons. Try both and see what you like.\n\nIf macOS asks for Accessibility access, enable Window Sweaters in **System Settings → Privacy & Security → Accessibility** so it can follow which window is focused.\n\n## The sweaters\n\n**Custom sweaters for 37 apps, and counting!** Almost 40 little colourways, with colours picked by hand. These are just a few of my favourites:\n\n[![Eight apps shown in By App and Zigzag styles, with enlarged yarn details](https://github.com/saragordic/window-sweaters/raw/main/docs/collection/styles-comparison.png)](https://github.com/saragordic/window-sweaters/blob/main/docs/collection/styles-comparison.png)\n\nShown above in By App and Zigzag. Here’s everyone we’ve knitted for so far:\n\n- **Apple:** Finder, Safari, Mail, Messages, Notes, Calendar, Reminders, Apple Music, Photos, Preview, Terminal.\n- **Work and notes:** Notion, Paper, Granola, Microsoft Teams, Slack, Zoom.\n- **Coding and AI:** Cursor, VS Code, Claude, ChatGPT, Codex, Grok Bot, Ghostty.\n- **Design:** Figma, Adobe Photoshop, Adobe Illustrator.\n- **Microsoft Office:** Word, Excel, PowerPoint, Outlook.\n- **More favourites:** Spotify, WhatsApp, Google Chrome, Firefox, Telegram, Discord.\n\nSee every sweater and its close-up stitches in the [catalogue](https://github.com/saragordic/window-sweaters/blob/main/docs/COLLECTION.md), or download the [By App PDF](https://github.com/saragordic/window-sweaters/blob/main/docs/catalogues/Window-Sweaters-Catalogue.pdf).\n\nThe 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 **By App** 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.\n\nIcons are sampled locally in the background when needed. While the colour is being prepared, the border uses its usual fallback. **Zigzag** 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 `apps.conf` always win. Other shared patterns keep their own contrast yarns, with each app’s own base colour.\n\n## A little work in progress\n\nI 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're done.\n\nThe app is built for **macOS 13 or later, on Apple Silicon and Intel**. I've tested it on Apple Silicon with macOS 26; older macOS versions and Intel Macs haven't had the same hands-on testing. It uses private macOS window APIs, so system updates may affect how it works.\n\nIf something looks wrong, [open an issue](https://github.com/saragordic/window-sweaters/issues) and tell me your macOS version, Mac model, and whether you're using another screen. Reproduction steps help a lot.\n\n## Build it yourself\n\nYou'll need Apple's Command Line Tools (`xcode-select --install`) and Python 3.\n\n```shell\ngit clone https://github.com/saragordic/window-sweaters.git\ncd window-sweaters\n./scripts/build-app.sh\npython3 scripts/install-local.py\n```\n\nThis builds `outputs/Window Sweaters.app`, installs it in `~/Applications`, and opens it. The installer backs up any previous local installation before replacing it.\n\n## Your own colourways\n\nIf you'd like to experiment, edit these files and restart the app:\n\n```\n~/Library/Application Support/Knit Borders/apps.conf\n~/Library/Application Support/Knit Borders/charts/\n```\n\nThe folder still uses the app's original name so existing settings keep working. For example, an app rule looks like this:\n\n```\nClaude = #D58561 atelier-claude\n```\n\nNames 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.\n\nIf you like setting things up from the command line, Window Sweaters also runs an optional shell script at startup, if you have one at `~/.config/window-sweaters/sweatersrc` or `~/.sweatersrc`.\n\n## Taking it off\n\nQuit Window Sweaters from the yarn icon first. Then, if you installed it with Homebrew:\n\n```shell\nbrew uninstall --zap --cask window-sweaters\n```\n\n`--zap` also removes your saved colourways. Leave it off to keep them for later.\n\nIf you installed it by hand, drag **Window Sweaters.app** to the Trash, then delete these if you want everything gone:\n\n```\n~/Library/Application Support/Knit Borders\n~/Library/Preferences/local.knitborders.app.plist\n```\n\nmacOS remembers the Accessibility permission separately, so remove Window Sweaters from **System Settings → Privacy & Security → Accessibility** too.\n\n## Contributing\n\n```shell\nmake test       # run the tests\nmake catalogue  # render the sweater collection\nmake bench     # benchmark the renderer\n```\n\nSee [CONTRIBUTING.md](https://github.com/saragordic/window-sweaters/blob/main/CONTRIBUTING.md) for more details.\n\n## Credits and license\n\nBuilt on [JankyBorders](https://github.com/FelixKratz/JankyBorders) by Felix Kratz, with thanks. Released under [GPL-3.0](https://github.com/saragordic/window-sweaters/blob/main/LICENSE). See [NOTICE.md](https://github.com/saragordic/window-sweaters/blob/main/NOTICE.md) for attribution.\n",
  "dateCreated": "2026-11-05T23:32:43.152740887+00:00",
  "date_created": "2026-11-05T16:50:14+00:00",
  "date_modified": "2026-11-05T16:50:14+00:00",
  "date_published": "2026-11-05T16:50:14+00:00",
  "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…",
  "external_url": "https://github.com/saragordic/window-sweaters",
  "git": {
    "commit": "20068632b65d2830a2d54f25ca1d90d697bea2c0",
    "path": "items/hnrss-org/2026/11/2026-11-05-window-sweaters.md",
    "permalink": "https://github.com/aymericbeaumet/aggr-instance/blob/20068632b65d2830a2d54f25ca1d90d697bea2c0/items/hnrss-org/2026/11/2026-11-05-window-sweaters.md"
  },
  "id": "urn:aggr:item:4f01c875c4b6d4a455b1a003fbb9041c7423638f",
  "isBasedOn": {
    "@id": "https://github.com/saragordic/window-sweaters"
  },
  "mainEntity": {
    "@id": "https://github.com/saragordic/window-sweaters",
    "@type": "CreativeWork",
    "archivedAt": {
      "@id": "https://aggr.aymericbeaumet.com/items/hnrss-org/2026-11-05-window-sweaters/#webpage"
    },
    "author": [
      {
        "@type": "Person",
        "name": "nickswalker"
      }
    ],
    "dateModified": "2026-11-05T16:50:14+00:00",
    "datePublished": "2026-11-05T16:50:14+00:00",
    "headline": "Window Sweaters",
    "image": {
      "@type": "ImageObject",
      "caption": "A macOS menu-bar app that dresses your windows in knitted borders. - saragordic/window-sweaters",
      "height": 90,
      "url": "https://repository-images.githubusercontent.com/1370747786/3a594398-957d-455e-a8cd-65e13e23e4b4",
      "width": 160
    },
    "timeRequired": "PT5M",
    "url": "https://github.com/saragordic/window-sweaters",
    "wordCount": 927
  },
  "name": "Archived snapshot: Window Sweaters",
  "preview": {
    "alt": "A macOS menu-bar app that dresses your windows in knitted borders. - saragordic/window-sweaters",
    "color": null,
    "height": 90,
    "placeholder": {
      "data_url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII=",
      "hash": ""
    },
    "url": "https://repository-images.githubusercontent.com/1370747786/3a594398-957d-455e-a8cd-65e13e23e4b4",
    "width": 160
  },
  "reading_minutes": 5,
  "replicated_at": null,
  "source": "hnrss-org",
  "source_name": "Hacker News: Front Page",
  "summary": null,
  "tags": [],
  "temporalCoverage": "2026-11-05T23:32:43.152740887+00:00",
  "title": "Window Sweaters",
  "url": "https://aggr.aymericbeaumet.com/items/hnrss-org/2026-11-05-window-sweaters/",
  "word_count": 927
}