From 56f6d6101bdfdfb77e7e3a2d06b84e7bc16d57e8 Mon Sep 17 00:00:00 2001 From: Allen Houchins <32207388+allenhouchins@users.noreply.github.com> Date: Fri, 5 Dec 2025 22:44:44 -0600 Subject: [PATCH] Add Snagit as a macOS FMA (#36828) --- .../inputs/homebrew/snagit.json | 8 +++++++ ee/maintained-apps/outputs/apps.json | 7 ++++++ ee/maintained-apps/outputs/snagit/darwin.json | 21 ++++++++++++++++++ .../SoftwarePage/components/icons/Snagit.tsx | 14 ++++++++++++ .../SoftwarePage/components/icons/index.ts | 2 ++ .../images/app-icon-snagit-60x60@2x.png | Bin 0 -> 9627 bytes 6 files changed, 52 insertions(+) create mode 100644 ee/maintained-apps/inputs/homebrew/snagit.json create mode 100644 ee/maintained-apps/outputs/snagit/darwin.json create mode 100644 frontend/pages/SoftwarePage/components/icons/Snagit.tsx create mode 100644 website/assets/images/app-icon-snagit-60x60@2x.png diff --git a/ee/maintained-apps/inputs/homebrew/snagit.json b/ee/maintained-apps/inputs/homebrew/snagit.json new file mode 100644 index 0000000000..f4a062e5c7 --- /dev/null +++ b/ee/maintained-apps/inputs/homebrew/snagit.json @@ -0,0 +1,8 @@ +{ + "name": "Snagit", + "unique_identifier": "com.TechSmith.Snagit", + "token": "snagit", + "installer_format": "dmg", + "slug": "snagit/darwin", + "default_categories": ["Productivity"] +} diff --git a/ee/maintained-apps/outputs/apps.json b/ee/maintained-apps/outputs/apps.json index 50de3f2073..cd90e32d21 100644 --- a/ee/maintained-apps/outputs/apps.json +++ b/ee/maintained-apps/outputs/apps.json @@ -806,6 +806,13 @@ "unique_identifier": "Slack", "description": "Slack is a team communication and collaboration software for modern workplaces." }, + { + "name": "Snagit", + "slug": "snagit/darwin", + "platform": "darwin", + "unique_identifier": "com.TechSmith.Snagit", + "description": "Snagit is screen capture software." + }, { "name": "Spotify", "slug": "spotify/darwin", diff --git a/ee/maintained-apps/outputs/snagit/darwin.json b/ee/maintained-apps/outputs/snagit/darwin.json new file mode 100644 index 0000000000..b5bfd0ed1f --- /dev/null +++ b/ee/maintained-apps/outputs/snagit/darwin.json @@ -0,0 +1,21 @@ +{ + "versions": [ + { + "version": "2025.4.0", + "queries": { + "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'com.TechSmith.Snagit';" + }, + "installer_url": "https://download.techsmith.com/snagitmac/releases/2540/snagit.dmg", + "install_script_ref": "16e177f3", + "uninstall_script_ref": "c5a5aac4", + "sha256": "35d82469310930c01d08b246721339e3a45535f8e2c43a8a68e6134fe97d2fc3", + "default_categories": [ + "Productivity" + ] + } + ], + "refs": { + "16e177f3": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath $INSTALLER_PATH)\")\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n if ! osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ $EUID -eq 0 && \"$console_user\" == \"root\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\n# extract contents\nMOUNT_POINT=$(mktemp -d /tmp/dmg_mount_XXXXXX)\nhdiutil attach -plist -nobrowse -readonly -mountpoint \"$MOUNT_POINT\" \"$INSTALLER_PATH\"\nsudo cp -R \"$MOUNT_POINT\"/* \"$TMPDIR\"\nhdiutil detach \"$MOUNT_POINT\"\n# copy to the applications folder\nquit_application 'com.TechSmith.Snagit'\nif [ -d \"$APPDIR/Snagit.app\" ]; then\n\tsudo mv \"$APPDIR/Snagit.app\" \"$TMPDIR/Snagit.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/Snagit.app\" \"$APPDIR\"\n", + "c5a5aac4": "#!/bin/sh\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nsudo rm -rf \"$APPDIR/Snagit.app\"\ntrash $LOGGED_IN_USER '~/Library/Caches/com.TechSmith.Snagit*'\ntrash $LOGGED_IN_USER '~/Library/Group Containers/*.com.techsmith.snagit'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.TechSmith.Snagit*.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/com.techsmith.snagit.capturehelper*.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/com.TechSmith.Snagit*.savedState'\ntrash $LOGGED_IN_USER '~/Library/WebKit/com.TechSmith.Snagit*'\n" + } +} diff --git a/frontend/pages/SoftwarePage/components/icons/Snagit.tsx b/frontend/pages/SoftwarePage/components/icons/Snagit.tsx new file mode 100644 index 0000000000..b931042281 --- /dev/null +++ b/frontend/pages/SoftwarePage/components/icons/Snagit.tsx @@ -0,0 +1,14 @@ +import * as React from "react"; + +import type { SVGProps } from "react"; + +const Snagit = (props: SVGProps) => ( + + + +); +export default Snagit; diff --git a/frontend/pages/SoftwarePage/components/icons/index.ts b/frontend/pages/SoftwarePage/components/icons/index.ts index 40ce1757aa..fa9d5d427f 100644 --- a/frontend/pages/SoftwarePage/components/icons/index.ts +++ b/frontend/pages/SoftwarePage/components/icons/index.ts @@ -113,6 +113,7 @@ import Santa from "./Santa"; import Signal from "./Signal"; import Sketch from "./Sketch"; import Slack from "./Slack"; +import Snagit from "./Snagit"; import Spotify from "./Spotify"; import SublimeText from "./SublimeText"; import TablePlus from "./TablePlus"; @@ -257,6 +258,7 @@ export const SOFTWARE_NAME_TO_ICON_MAP = { signal: Signal, sketch: Sketch, slack: Slack, + snagit: Snagit, spotify: Spotify, "sublime text": SublimeText, tableplus: TablePlus, diff --git a/website/assets/images/app-icon-snagit-60x60@2x.png b/website/assets/images/app-icon-snagit-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..330f956ffc233979134b1e219f6461d4682d8a59 GIT binary patch literal 9627 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 literal 0 HcmV?d00001