diff --git a/scripts/awesome-list/README.md b/scripts/awesome-list/README.md new file mode 100644 index 0000000..7ce9b04 --- /dev/null +++ b/scripts/awesome-list/README.md @@ -0,0 +1,17 @@ +# Submit SnapState to Open Source Mac OS Apps + +Helper for listing SnapState on [serhii-londar/open-source-mac-os-apps](https://github.com/serhii-londar/open-source-mac-os-apps) under **Window Management**, **Productivity**, and **Menubar**. + +## One-command submit + +From your machine (requires [GitHub CLI](https://cli.github.com/) logged into your account): + +```bash +./scripts/awesome-list/submit.sh +``` + +This forks the list (if needed), inserts the SnapState entry into `applications.json`, and opens the pull request. + +## Manual entry + +See `snapstate-entry.json` for the exact JSON object to add. diff --git a/scripts/awesome-list/add-snapstate.patch b/scripts/awesome-list/add-snapstate.patch new file mode 100644 index 0000000..b7680b2 --- /dev/null +++ b/scripts/awesome-list/add-snapstate.patch @@ -0,0 +1,45 @@ +From 50227295e041820fd3d4155e6e5100c45ac7d3ba Mon Sep 17 00:00:00 2001 +From: Ar Wad +Date: Fri, 10 Jul 2026 10:49:50 +0000 +Subject: [PATCH] Add SnapState + +Menu bar workspace manager for capturing and restoring window layouts, +browser tabs, and multi-monitor setups. +--- + applications.json | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +diff --git a/applications.json b/applications.json +index 8324e40..e02b06c 100644 +--- a/applications.json ++++ b/applications.json +@@ -1,5 +1,26 @@ + { + "applications": [ ++ ++ { ++ "short_description": "Menu bar app that captures and restores macOS workspace layouts, window positions, browser tabs, and multi-monitor setups.", ++ "categories": [ ++ "window-management", ++ "productivity", ++ "menubar" ++ ], ++ "repo_url": "https://github.com/SoulSniper-V2/SnapState", ++ "title": "SnapState", ++ "icon_url": "https://raw.githubusercontent.com/SoulSniper-V2/SnapState/main/SnapState/Assets.xcassets/AppIcon.appiconset/icon_512x512.png", ++ "screenshots": [ ++ "https://raw.githubusercontent.com/SoulSniper-V2/SnapState/main/assets/demo.gif", ++ "https://raw.githubusercontent.com/SoulSniper-V2/SnapState/main/assets/menubar.png", ++ "https://raw.githubusercontent.com/SoulSniper-V2/SnapState/main/assets/settings.png" ++ ], ++ "official_site": "https://getsnapstate.com/", ++ "languages": [ ++ "swift" ++ ] ++ }, + { + "title": "ActivityWatch", + "short_description": "Open-source automated time tracker that tracks how you spend time on your devices.", +-- +2.43.0 + diff --git a/scripts/awesome-list/snapstate-entry.json b/scripts/awesome-list/snapstate-entry.json new file mode 100644 index 0000000..b63e8ec --- /dev/null +++ b/scripts/awesome-list/snapstate-entry.json @@ -0,0 +1,20 @@ +{ + "short_description": "Menu bar app that captures and restores macOS workspace layouts, window positions, browser tabs, and multi-monitor setups.", + "categories": [ + "window-management", + "productivity", + "menubar" + ], + "repo_url": "https://github.com/SoulSniper-V2/SnapState", + "title": "SnapState", + "icon_url": "https://raw.githubusercontent.com/SoulSniper-V2/SnapState/main/SnapState/Assets.xcassets/AppIcon.appiconset/icon_512x512.png", + "screenshots": [ + "https://raw.githubusercontent.com/SoulSniper-V2/SnapState/main/assets/demo.gif", + "https://raw.githubusercontent.com/SoulSniper-V2/SnapState/main/assets/menubar.png", + "https://raw.githubusercontent.com/SoulSniper-V2/SnapState/main/assets/settings.png" + ], + "official_site": "https://getsnapstate.com/", + "languages": [ + "swift" + ] +} diff --git a/scripts/awesome-list/submit.sh b/scripts/awesome-list/submit.sh new file mode 100755 index 0000000..0d2a5f7 --- /dev/null +++ b/scripts/awesome-list/submit.sh @@ -0,0 +1,111 @@ +#!/usr/bin/env bash +# Submits SnapState to serhii-londar/open-source-mac-os-apps +# Requires: gh (authenticated as you), git, python3 +set -euo pipefail + +ROOT="$(cd "$(dirname "$0")" && pwd)" +WORK="$(mktemp -d)" +cleanup() { rm -rf "$WORK"; } +trap cleanup EXIT + +echo "→ Forking (or reusing your fork of) open-source-mac-os-apps…" +gh repo fork serhii-londar/open-source-mac-os-apps --clone=false --remote=false 2>/dev/null || true + +OWNER="$(gh api user --jq .login)" +echo "→ Using fork: ${OWNER}/open-source-mac-os-apps" + +git clone --depth 1 "https://github.com/${OWNER}/open-source-mac-os-apps.git" "$WORK/repo" +cd "$WORK/repo" +git remote add upstream https://github.com/serhii-londar/open-source-mac-os-apps.git 2>/dev/null || true +git fetch upstream master +git checkout -B add-snapstate upstream/master + +if grep -q '"title": "SnapState"' applications.json; then + echo "SnapState is already listed — nothing to do." + exit 0 +fi + +python3 - "$ROOT/snapstate-entry.json" <<'PY' +import json +import pathlib +import sys + +entry = json.loads(pathlib.Path(sys.argv[1]).read_text()) +path = pathlib.Path("applications.json") +text = path.read_text() + +def csv_block(values, indent=" "): + lines = [] + for i, value in enumerate(values): + comma = "," if i < len(values) - 1 else "" + lines.append(f"{indent}{json.dumps(value)}{comma}") + return "\n".join(lines) + +insert = "\n".join([ + "\t{", + f' "short_description": {json.dumps(entry["short_description"])},', + ' "categories": [', + csv_block(entry["categories"]), + " ],", + f' "repo_url": {json.dumps(entry["repo_url"])},', + f' "title": {json.dumps(entry["title"])},', + f' "icon_url": {json.dumps(entry["icon_url"])},', + ' "screenshots": [', + csv_block(entry["screenshots"]), + " ],", + f' "official_site": {json.dumps(entry["official_site"])},', + ' "languages": [', + csv_block(entry["languages"]), + " ]", + " },", + "", +]) + +marker = '\t{\n "title": "ActivityWatch",' +if marker not in text: + raise SystemExit("Could not find insertion marker in applications.json — list format may have changed.") +path.write_text(text.replace(marker, insert + marker, 1)) +print("Inserted SnapState entry.") +PY + +git add applications.json +git -c user.email="$(gh api user --jq .email // empty)" \ + -c user.name="$(gh api user --jq .name // .login)" \ + commit -m "$(cat <<'EOF' +Add SnapState + +Menu bar workspace manager for capturing and restoring window layouts, +browser tabs, and multi-monitor setups. +EOF +)" || git commit -m "Add SnapState" + +git push -u origin add-snapstate + +gh pr create \ + --repo serhii-londar/open-source-mac-os-apps \ + --base master \ + --head "${OWNER}:add-snapstate" \ + --title "Add SnapState" \ + --body "$(cat <<'EOF' +## Project URL +https://github.com/SoulSniper-V2/SnapState + +## Category +window-management, productivity, menubar + +## Description +SnapState is a native macOS menu bar app that captures and restores workspace layouts — window positions, running apps, browser tabs, and multi-monitor setups — with global hotkeys and automation triggers. + +## Why it should be included to `Awesome macOS open source applications ` (optional) +Open-source MIT Swift app with a clear README, recent commits, screenshots, and an official site (https://getsnapstate.com/). Strong fit for Window Management and Productivity. + +## Checklist +- [x] Edit [applications.json](https://github.com/serhii-londar/open-source-mac-os-apps/blob/master/applications.json) instead of [README.md](https://github.com/serhii-londar/open-source-mac-os-apps/blob/master/README.md). +- [x] Only one project/change is in this pull request +- [x] Screenshots(s) added if any +- [x] Has a commit from less than 2 years ago +- [x] Has a **clear** README in English +EOF +)" + +echo "Done."