Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions scripts/awesome-list/README.md
Original file line number Diff line number Diff line change
@@ -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.
45 changes: 45 additions & 0 deletions scripts/awesome-list/add-snapstate.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
From 50227295e041820fd3d4155e6e5100c45ac7d3ba Mon Sep 17 00:00:00 2001
From: Ar Wad <awadhawan@my.waketech.edu>
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

20 changes: 20 additions & 0 deletions scripts/awesome-list/snapstate-entry.json
Original file line number Diff line number Diff line change
@@ -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"
]
}
111 changes: 111 additions & 0 deletions scripts/awesome-list/submit.sh
Original file line number Diff line number Diff line change
@@ -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."