Custom widget of the Reminders application

I am a student who uses the Reminders app daily to note down homework assignments to do. I'm currently using the default widget of the Reminders app, but this one isn't enough for me - it doesn't show for when I should do an assignment, it doesn't display the tags (which I use to describe subjects), etc.
I thought a great solution would be BTT, while I have no idea how I could combine those two apps and create such a widget using, for example, Floating Menu.
Does anyone have any idea how to solve this?

It depends a bit on what you want to achieve exactly.

Here is a very basic example that shows the next 5 reminders with their tags in a floating menu. It uses the Apple Shortcuts app to retrieve a JSON of the reminder details. I'm not a shortcuts expert, this is just what I put together in 5min:

get_reminders.shortcut (22.4 KB)
reminders_example.bttpreset (5.6 KB)

The shortcuts returns the floating menu content in Simple JSON Format · GitBook

This is the script for the floating menu:

//see https://docs.folivora.ai/docs/1108_simple_format.html
async function retrieveJSON() {
  let result = await runAppleShortcut({name: "get_reminders"});

 return result;

}

Your solution looks interesting, while I wonder if it is possible to somehow prepare it in html form displayed on the widget? So that at the same time to include as much information as possible, and at the same time so that it doesn't just look ugly

yes, you can get the shortcut output into a webview in BTT and render it there, I can post an example later!

1 Like

Here is an example floating menu with a webview:

reminders_webview_example.bttpreset (38.2 KB)

It doesn't do any formatting yet but that can easily be changed (ChatGPT can help a lot with that if you provide it this base code:)

<html>

<head>
    <script>

        /* This is called after the webview content has loaded*/
        function BTTInitialize() {
            console.log("initialize");
            updateReminders();
        }

        /* This is called before the webview exits and destroys its content*/
        function BTTWillCloseWindow() {

        }

        /* This is called before the webview hides*/
        function BTTWillHideWindow() {

        }

        /* This is called when the webview becomes visible*/
        function BTTWindowWillBecomeVisible() {
            console.log("show");
            updateReminders();
        }

        async function updateReminders() {

            // example result string (needs to be parsed to json): [{ "title": "Essigkurken - " },{ "title": "Apfelmus - " },{ "title": "Kichererbsen - " },{ "title": "Tomatensoße - " },{ "title": "Kokosmilch - " }]

            let result = await runAppleShortcut({ name: "get_reminders" });

          // use JSON.parse(result) to convert into a JSON array)

            document.getElementById("output").innerHTML = result;

        }


    </script>
</head>

<body>
    <div id="output"></div>
</body>

</html>

1 Like

Thanks! I'll try to do something with it!

Thanks again for your help. I think it looks much better now and for me it is more useful than the original widget from Apple.