{
  "description": "Browse aymeric's, an independent, searchable archive of readable snapshots from followed feeds, preserved in Git with aggr.",
  "feed_url": "https://aggr.aymericbeaumet.com/sources/github.com/saragordic/feed.json",
  "home_page_url": "https://aggr.aymericbeaumet.com/sources/github.com/saragordic/",
  "items": [
    {
      "authors": [
        {
          "name": "nickswalker"
        }
      ],
      "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",
      "date_modified": "2026-11-05T16:50:14+00:00",
      "date_published": "2026-11-05T16:50:14+00:00",
      "external_url": "https://github.com/saragordic/window-sweaters",
      "id": "urn:aggr:item:4f01c875c4b6d4a455b1a003fbb9041c7423638f",
      "image": "https://repository-images.githubusercontent.com/1370747786/3a594398-957d-455e-a8cd-65e13e23e4b4",
      "summary": "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…",
      "tags": [
        "news"
      ],
      "title": "Window Sweaters",
      "url": "https://aggr.aymericbeaumet.com/items/hnrss-org/2026-11-05-window-sweaters/"
    }
  ],
  "language": "en",
  "title": "github.com/saragordic",
  "version": "https://jsonfeed.org/version/1.1"
}