macapps Subreddit Mac Apps Reddit r/macapps Backup by AppleStyle on Telegram – Telegram
macapps Subreddit Mac Apps Reddit r/macapps Backup by AppleStyle on Telegram
84 subscribers
2.31K photos
503 videos
15.9K links
r/macapps subreddit backup on Telegram. A backup Project by @RoadToPetabyte and @AppleStyleOfficial http://pixly.me/rtp Join our subreddit backup on Discord, Telegram and Pinterest: https://discord.gg/abCudZwgBr or @redditbackup
Download Telegram
Created a Free & Open-source Floating App widget with Focus/Pomodo Timer. In case someone has any use for this.

Hey there, wanted to share Madda Floating Clock and Pomodo/Focus Timer with you all.
.
.

I have a 55" OLED TV screen as my main monitor and couldn't look at the very top to see the time. Also needed a floating focus timer app to tally how much time I spent working each day.

It's very customizable and remembers the position you set it in for each monitor setup. Also compared to Dato, it can be moved to be next to the dock.

I didn't find anything that fit my requirements exactly so decided to create my own. Hope someone finds this useful and please feel free to fork it or do whatever you want with it.

Open to feedback so please let me know if you're missing a setting or have a usecase that's not supported currently so I can add it.


It's coded with Claude Opus but I guided it a lot and checked every line and wrote some parts by hand (so it's not "vibe coded", more like "agentic coded")

Also it shows the day name and number in the menu bar.

Instructions to install it are in the readme on Github.

https://github.com/maddada/MaddaFloatingClock


Hope the admins don't mind I didn't sign it because I don't want to pay $99 for a dev license.



Screenshots (with optional timers shown - can be disabled):

Pomodoro timer \(click on the clock to show it or hide it\)

Focus timer \(click on the timer to pause it, click on the clock to accumulate focus time for the day\)

Almost everything about the clock can be configured


Thank you



https://redd.it/1pv0el2
@macappsbackup
Best CD player?

Im looking for a CD player that has gapless playback and a good UI and runs on macOS 13. Any recommendations please? Thanks.


Also burning and ripping doesn't matter too much. Maybe it does but not as much as listening.

https://redd.it/1pv3sqk
@macappsbackup
OptiLoad *Lightning Fast, Ultra Lightweight Native SwiftUI Download Manager for MacOS Sequoia + (Apple Silicon Only)*

https://preview.redd.it/e1sze7ud5a9g1.jpg?width=1656&format=pjpg&auto=webp&s=3cca15d660528655537540ab56dd1ed40d3bbb6e

***\*\*My second app after*** [***OptiMac***](https://github.com/VonKleistL/OptiMac)***\*\****
***\*\*Free and open source\*\****
***\*\*I am the developer\*\****

LINK: [OptiLoad](https://github.com/VonKleistL/OptiLoad/tree/main)

\> Written in Native SwiftUI

\> Sits in Menu Bar and Browser extension intercepts downloads automatically

***\*\*Currently awaiting Mozilla Team to sign off on the .xpi, however Chromium Based Browsers are optimal\*\****

\> Approximately 3-6x faster than standard browser download (based on my testing with Firefox and Chromium based <Helium>

***\*\* Who does this appeal to?\*\****

\> To be honest, I never intended to release this as I wrote it for myself after tiring of apps like FDM, FOLX etc (as good as they are) eating a tonne of resources where I feel they didn't have to.

\> [OptiLoad](https://github.com/VonKleistL/OptiLoad/tree/main) (I feel) will be for the average user that wants things to simply be faster when downloading and "just work" without having to monitor constantly, confirm, cleanup downloads etc.

***\*\*Instructions for use\*\****

1: Download .dmg from [Releases](https://github.com/VonKleistL/OptiLoad/releases/tag/OptiLoad) page
2: Chromium based browser users also download `ChromeExtension.zip`

***\*\*As mentioned Firefox based browser users (myself included) are only waiting on Mozilla Team to sign off on extension\*\****


3: Install .app from the .dmg you downloaded (Only requires access to downloads folder)
4: Unzip and save the `ChromeExtension` folder
5: In your browser got to: Extensions > Manage Extensions > Ensure Developer Mode is on (usually top right hand side) > Select Load Unpacked > Select your saved ChromeExtension folder
6: Open OptiLoad.app
7: Enjoy :)

If anyone has feedback of any sort, it is always welcomed. This is a great community and all ideas are welcomed.

Have a wonderful Holiday break and a fantastic New Year! 🎉
\- VonKleistL

https://redd.it/1pv5wgh
@macappsbackup
Christmas Gift - Lumina (AI Wellness Coach) is FREE for our Beta Testers
https://redd.it/1pv989o
@macappsbackup
BrewServicesManager – A menu bar app for managing Homebrew services

Built a simple macOS menu bar app to manage Homebrew services without using the terminal. Most existing tools felt stale or unreliable, so created this.

It simply does what `brew services` intended to do:

* Start, stop, and restart services from the menu bar
* See the status of all brew services at a glance
* Auto-refresh with a configurable interval

I made it for myself because I was tired of running `brew services` in the terminal. Plus I wanted to try SwiftUI. If you try it, I’d love your feedback.

GitHub: [https://github.com/validatedev/BrewServicesManager](https://github.com/validatedev/BrewServicesManager)

https://redd.it/1pvdcsf
@macappsbackup
Is anyone else dealing with mac offline playback issues

I download stuff thinking it’ll just work later and then suddenly it needs internet again or refuses to open.

Feels like local files aren’t really local anymore.

Am I misunderstanding how offline access works on mac or is this just the new normal?

https://redd.it/1pvd6wb
@macappsbackup
Update Ahsk v2.1 - Added follow-up conversations for screenshot analysis and AI search

https://preview.redd.it/j9e5vgbijc9g1.png?width=1602&format=png&auto=webp&s=ad3b3927166f6253caba1818b4aa2f7dc0c9ff93

Hey r/macapps

Quick update on Ahsk - just shipped v2.1 with a feature many of you requested: follow-up questions.

What's New in v2.1:

Follow-up Conversations:

After analyzing a screenshot (⌥⇧S), you can now ask follow-up questions
Same for global AI search (⌥⇧A) - maintains conversation context
Natural back-and-forth dialogue instead of one-off queries
Conversation history persisted across sessions

Why this matters: Before: Analyze screenshot → Get answer → Want to dig deeper → Start over Now: Analyze screenshot → Get answer → Ask "Can you explain that part?" → Get clarification

Great for code reviews, design critiques, debugging screenshots, or exploring complex topics.

Previous Updates (last 6 weeks):

v1.0.9: One-click translation to 50+ languages
v2.0.0: Major stability improvements and bug fixes
Enhanced history with screenshot storage
Force menu with Option key for tricky apps

For those new to Ahsk: Native macOS AI assistant that works everywhere:

Select text anywhere → Get instant AI help
⌥⇧A: Global AI search from any app
⌥⇧S: Screenshot analysis with AI vision
⌥⇧D: Video downloader (YouTube, TikTok, Instagram)
Works in: Safari, Mail, VS Code, Notion, PDFs, everywhere

Technical Details:

Built with Swift (native macOS)
Uses Accessibility API for universal text selection
Local screenshot storage at \~/Library/Application Support/ahsk
Supports macOS 12+
100% free to start (100 credits on signup)

Download: https://www.ahsk.app/ahsk-v2.1.dmg

Full Changelog: https://www.ahsk.app/changelog

Would love feedback, bug reports, or feature requests! Been iterating quickly based on user input.

Thanks! 🎄

https://redd.it/1pvcpcz
@macappsbackup
Mailbird pro andbcon

I'm contemplating to install a free version of MailBird (just one account) and wonder the pro and con of this app. My main purpose is to have easy access to my Gmail account from my MacBook Air. TIA

https://redd.it/1pvgkp2
@macappsbackup
(Feedback needed and source code)Wiggle the mouse the show the window

https://reddit.com/link/1pvd3tn/video/86ceij3r6y8g1/player

Just added this feature to my electron app and I really enjoyed building it , at first it was really challenging but simplifying and breaking it into small context pure functions I eventually achieved a clean implementation :

here is the feature is implemented , this is called in the main (this code is called .

Note : esm is a s singleton class that acts as my app's state manager

app.on('ready', async () => {

listenToMouseMovement(({inside,position})=>{
if (onMouseStopped(position) && !esm.mainWindow.isVisible()){
const hasTheThreeMoves= esm.mouseCursorPaths.length > 2

if(esm.enableCursorWiggleGestureToOpenMainWindow && hasTheThreeMoves){
const firstDirection=esm.mouseCursorPaths0
const secondDirection=esm.mouseCursorPaths1
const thirdDirection=esm.mouseCursorPaths2


if(firstDirection === "right" && secondDirection === "left" && thirdDirection === "right"){
handleShowTheAppWindow()
}
}

esm.mouseCursorPaths=

return
// at this step we don't need to record the gestures since the app is shown
}


recordMouseGestures(position)
// this functions records the gestures and adds to esm.mouseCursorPaths array
},esm.mainWindow );

});

logic checks :

esm.mainWindow.isVisible : we only want to check for the gesture if the app is not actually visible .
enableCursorWiggleGestureToOpenMainWindow : this controls wether the gesture feature is enabled or not . we set it to false in handleShowTheAppWindow , and on Escape click we set it to true after 100 ms , because 100 ms matches the onMouseStopped's threshold used to detect the if the mouse stopped . this prevents accidental triggers .

listenToMouseMovement :

since we don't have an actual event to track mouse move in electron , and personally I don't like using external libraries I used a simple interval check . the function is self explanatory I guess:

function listenToMouseMovement(callback,window) {
const id = setInterval(() => {
const cursor = screen.getCursorScreenPoint();
const bounds = window.getBounds();


const inside =
cursor.x >= bounds.x &&
cursor.x <= bounds.x + bounds.width &&
cursor.y >= bounds.y &&
cursor.y <= bounds.y + bounds.height;


callback({
inside,
position: cursor,
});
}, 8);
// ~60fps polling


return () => clearInterval(id);
}

trackMouseGestureDirections :

this is where we set mouseCursorPaths to an array of paths (eg : ["left","right","left"\])

let lastSampleTime = 0
const MAXPATHLENGTH = 3
const SAMPLEINTERVAL = 50
const MIN
DELTA = 50
// px, ignore jitter
lastX = null

function trackMouseGestureDirections(position) {
const now = performance.now()



// debounce sampling
if (now - lastSampleTime < SAMPLEINTERVAL) {
return esm.mouseCursorPaths
}
lastSampleTime = now


if (lastX === null) {
lastX = position.x
return esm.mouseCursorPaths
}


const dx = position.x - lastX
lastX = position.x


if (Math.abs(dx) < MIN
DELTA) {
return esm.mouseCursorPaths
}


const direction = dx > 0 ? "right" : "left"
const lastDirection = esm.mouseCursorPathsesm.mouseCursorPaths.length - 1



// collapse duplicates
if (direction !== lastDirection) {
esm.mouseCursorPaths.push(direction)
}



// keep only last 3
if (esm.mouseCursorPaths.length > MAXPATHLENGTH) {