diff --git a/Obsidian.alfredworkflow b/Obsidian.alfredworkflow index 2d64444..f9f5c18 100644 Binary files a/Obsidian.alfredworkflow and b/Obsidian.alfredworkflow differ diff --git a/Obsidian/info.plist b/Obsidian/info.plist index e196094..7268f96 100644 --- a/Obsidian/info.plist +++ b/Obsidian/info.plist @@ -165,7 +165,7 @@ destinationuid - CDEBE435-E442-4054-80BE-59ADD7EEA597 + 72D894BC-364C-4E9E-9022-99B4A6D7FE91 modifiers 0 modifiersubtext @@ -369,6 +369,19 @@ + 72D894BC-364C-4E9E-9022-99B4A6D7FE91 + + + destinationuid + CDEBE435-E442-4054-80BE-59ADD7EEA597 + modifiers + 0 + modifiersubtext + + vitoclose + + + 76C3031F-7B85-45C6-9D05-DF5802BBC167 @@ -473,6 +486,19 @@ + A606B9DB-2246-4459-B325-ED5831996525 + + + destinationuid + 83B53E1F-BC75-4636-8D79-D0229D35477F + modifiers + 0 + modifiersubtext + + vitoclose + + + A60FCD19-F3A3-4B26-BDB2-52D548E38686 @@ -3398,11 +3424,23 @@ function interpolate_homepath(path) { var inbox_md = $.getenv('inbox_md'); inbox_md = interpolate_homepath(inbox_md) +// where to add timestamp +var inbox_timestamp = $.getenv('inbox_timestamp'); + +// get timestamp +var timestamp = $.getenv('date'); + // escape " var query = "{query}"; // query = query.replaceAll('"', '\"'); query = query.replace(/\"/g, '\"'); // github #25 @jamiew +if (inbox_timestamp == "append") { + query += (" " + timestamp); +} else if (inbox_timestamp == "prepend") { + query = timestamp + " " + query; +} + // split paragraphs into separate bullet points query = query.split("@NEWLISTITEM@") console.log("query: " + query) @@ -3577,6 +3615,26 @@ Application('com.runningwithcrayons.Alfred').setConfiguration("dailytodo", { version 2 + + config + + argument + + passthroughargument + + variables + + date + {date:yyyyMMdd_HHmmss} + + + type + alfred.workflow.utility.argument + uid + 72D894BC-364C-4E9E-9022-99B4A6D7FE91 + version + 1 + config @@ -3891,6 +3949,97 @@ app.openLocation(uri); version 1 + + config + + alfredfiltersresults + + alfredfiltersresultsmatchmode + 0 + argumenttreatemptyqueryasnil + + argumenttrimmode + 0 + argumenttype + 1 + escaping + 68 + keyword + oinboxtime + queuedelaycustom + 3 + queuedelayimmediatelyinitially + + queuedelaymode + 0 + queuemode + 1 + runningsubtext + + script + ObjC.import('stdlib'); +console.log('Running script - oinboxtime') + +// options +var options = [] +options.push({title: "Append to end of note", arg: "append", uid: "append"}) +options.push({title: "Prepend to beginning of note", arg: "prepend", uid: "prepend"}) +options.push({title: "Don't add timestamp", arg: "none", uid: "none"}) + + +// list vaults +JSON.stringify({items: options}) + scriptargtype + 1 + scriptfile + + subtext + Where to add timestamp? + title + Specify where to insert inbox timestamp + type + 7 + withspace + + + type + alfred.workflow.input.scriptfilter + uid + A606B9DB-2246-4459-B325-ED5831996525 + version + 3 + + + config + + concurrently + + escaping + 68 + script + ObjC.import('stdlib'); + +console.log('Running script') + +Application('com.runningwithcrayons.Alfred').setConfiguration("inbox_timestamp", { + toValue: "{query}", + exportable: false, + inWorkflow: $.getenv('alfred_workflow_bundleid'), +}); + scriptargtype + 0 + scriptfile + + type + 7 + + type + alfred.workflow.action.script + uid + 83B53E1F-BC75-4636-8D79-D0229D35477F + version + 2 + readme A workflow to open Obsidian vaults, daily note, and search for notes in vaults. Tested in Obsidian 0.11.4. @@ -3901,6 +4050,9 @@ RELEASE NOTES Full documentation: https://github.com/hauselin/obsidian-alfred +v0.3.4 +- Append or prepend timestamp when adding with oi. Use oinboxtime to specify whether to append, prepend, or not add timestamp. + v0.3.3 - New command oterm to open terminal in selected vault directory - Fix bug with oi query.replaceAll @jamiew #25 @@ -3988,9 +4140,9 @@ If the Obsidian app isn't already opened, this workflow will always open the las note Open inbox note. xpos - 600 + 595 ypos - 2410 + 2400 08A7509B-BDA4-455E-A628-38ABF42C04D7 @@ -4081,9 +4233,9 @@ If the Obsidian app isn't already opened, this workflow will always open the las note Set up: Turn on/off notifications when adding text to inbox note. xpos - 160 + 140 ypos - 2270 + 2255 2EEFE48E-B0E2-406A-BCA9-930F5969A364 @@ -4126,7 +4278,7 @@ If the Obsidian app isn't already opened, this workflow will always open the las note replace newline xpos - 920 + 905 ypos 1895 @@ -4248,9 +4400,9 @@ If the Obsidian app isn't already opened, this workflow will always open the las 6290B8D5-ECEB-4623-848B-E5AB92089E79 xpos - 360 + 350 ypos - 2265 + 2250 65DEE317-811D-4787-87B4-3909B62061EA @@ -4315,6 +4467,17 @@ If the Obsidian app isn't already opened, this workflow will always open the las ypos 1200 + 72D894BC-364C-4E9E-9022-99B4A6D7FE91 + + colorindex + 2 + note + Set up: Configure timestamp. + xpos + 1020 + ypos + 1895 + 73853368-ED10-4729-A4D0-E231647C3CF4 xpos @@ -4349,6 +4512,13 @@ If the Obsidian app isn't already opened, this workflow will always open the las ypos 1355 + 83B53E1F-BC75-4636-8D79-D0229D35477F + + xpos + 360 + ypos + 2460 + 854EB1EE-9017-4F43-BC80-BAF317FC5315 note @@ -4403,6 +4573,13 @@ If the Obsidian app isn't already opened, this workflow will always open the las ypos 180 + A606B9DB-2246-4459-B325-ED5831996525 + + xpos + 140 + ypos + 2460 + A60FCD19-F3A3-4B26-BDB2-52D548E38686 xpos @@ -4479,7 +4656,7 @@ If the Obsidian app isn't already opened, this workflow will always open the las note Append text to end of note as list item. xpos - 1045 + 1120 ypos 1865 @@ -4577,8 +4754,10 @@ If the Obsidian app isn't already opened, this workflow will always open the las inbox_md + inbox_timestamp + none oinotify - on + vault1 obsidian help vault1name @@ -4598,6 +4777,7 @@ If the Obsidian app isn't already opened, this workflow will always open the las inbox_md vault3 dailyvaultname + oinotify vault2 dailyabspath dailytodo @@ -4609,7 +4789,7 @@ If the Obsidian app isn't already opened, this workflow will always open the las dailyheader version - 0.3.3 + 0.3.4 webaddress https://github.com/hauselin/obsidian-alfred diff --git a/README.md b/README.md index 331625f..817e8ea 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ # Alfred workflow for Obsidian -This simple [Alfred](https://www.alfredapp.com/) workflow uses [Obsidian](https://obsidian.md/)'s [URI scheme](https://publish.obsidian.md/help/Advanced+topics/Using+obsidian+URI) and JXA actions/scripts (thanks to [@hjklapp](https://github.com/hjklapp)) to open notes in their vaults. This workflow has been tested in Obsidian 0.11.9. See also [known issues](#known-issues). +This simple [Alfred](https://www.alfredapp.com/) workflow uses [Obsidian](https://obsidian.md/)'s [URI scheme](https://publish.obsidian.md/help/Advanced+topics/Using+obsidian+URI) and JXA actions/scripts (thanks to [@hjklapp](https://github.com/hjklapp)) to open notes in their vaults. This workflow has been tested in Obsidian 0.11.10. See also [known issues](#known-issues). Available Alfred features/keywords (contributors in parentheses) - Open a vault: `ov`,`oo` ([@hjklapp](https://github.com/hjklapp)) @@ -61,6 +61,8 @@ All other features require a one-time set-up (v0.2.0 onward). **If you want to append text to an inbox note, you'll have to specify the note you're using as your inbox note.** - Specify inbox note: `oinbox` +- Specify whether to append or prepend a timestamp when adding to inbox: `oinboxtime` + - Run this configuration step only if you want to include timestamp. If not, default is to not add timestamp. ## Features available after set-up @@ -105,6 +107,8 @@ In addition, you can set up hotkey (see image below) to directly append the cont **BECAUSE THIS FEATURE MODIFIES YOUR NOTES, BACK UP YOUR VAULT AND NOTES!** +Timestamps can also be included when adding text (#27). Use `oinboxtime` to specify whether to prepend or append timestamp. You can also manually configure the format of the timestamp (see screenshot below). + To open your inbox note in Obsidian, use `oii` or customize your hotkey. ![](img/append_to_inbox.png) diff --git a/img/append_to_inbox.png b/img/append_to_inbox.png index 173e82e..e0640c0 100644 Binary files a/img/append_to_inbox.png and b/img/append_to_inbox.png differ diff --git a/info.plist b/info.plist deleted file mode 100644 index a130de4..0000000 --- a/info.plist +++ /dev/null @@ -1,4469 +0,0 @@ - - - - - bundleid - com.hauselin.obsidian - category - Productivity - connections - - 08189677-1EA8-4DC2-9C09-DC2F2AF0866E - - - destinationuid - 2C31829D-621E-4707-B16D-5899AE7907FD - modifiers - 0 - modifiersubtext - - vitoclose - - - - 0EEA412C-D42E-4C94-9C26-077C1CFEFF9D - - - destinationuid - E5FAA23D-08AB-47A3-A5C9-5211B9D677C4 - modifiers - 0 - modifiersubtext - - vitoclose - - - - 0F2ED3A2-F821-40B0-9915-C8E5E2D84A02 - - - destinationuid - 67E25071-1FF8-4F8B-9A9F-2509093593B6 - modifiers - 0 - modifiersubtext - - vitoclose - - - - 1BD03BB0-06B9-47F5-9346-7A829C38B248 - - - destinationuid - 86967BF2-99A7-43FB-A22A-7AC2F9A8C34C - modifiers - 0 - modifiersubtext - - vitoclose - - - - 249B0782-BFFB-4382-A857-5058D7C3D244 - - - destinationuid - 5ADBB309-EC74-453A-B7F5-9E34E2CDB7E3 - modifiers - 0 - modifiersubtext - - vitoclose - - - - 29B3A4DB-80CD-498F-A079-18F1CA7DD20C - - - destinationuid - 0796CFDE-8B84-4EAD-A82D-6558AF6C4D42 - modifiers - 0 - modifiersubtext - - vitoclose - - - - 2CC3DBA2-EDA4-4548-A215-611A436E43DB - - - destinationuid - 70AEEB77-35DB-44B9-B633-BE1D2B43D581 - modifiers - 0 - modifiersubtext - - vitoclose - - - - 2D878E69-78A2-499B-B7F1-BE3B30AD5C70 - - - destinationuid - 6290B8D5-ECEB-4623-848B-E5AB92089E79 - modifiers - 0 - modifiersubtext - - vitoclose - - - - 2EEFE48E-B0E2-406A-BCA9-930F5969A364 - - - destinationuid - 8B221971-0089-4DAC-A056-EC2C961C6EAB - modifiers - 0 - modifiersubtext - - vitoclose - - - - 333B2B54-2894-418E-A8DE-522F8BB1F3E5 - - - destinationuid - 73853368-ED10-4729-A4D0-E231647C3CF4 - modifiers - 0 - modifiersubtext - - vitoclose - - - - 353B5FD9-BF6A-4635-9AA1-313E16E86B05 - - - destinationuid - 08A7509B-BDA4-455E-A628-38ABF42C04D7 - modifiers - 0 - modifiersubtext - - vitoclose - - - - destinationuid - 9F656256-DD01-4508-BF9F-CDB3168DB9B6 - modifiers - 0 - modifiersubtext - - vitoclose - - - - 39F0A80F-98F0-47BE-B519-26563D139E54 - - - destinationuid - CDEBE435-E442-4054-80BE-59ADD7EEA597 - modifiers - 0 - modifiersubtext - - vitoclose - - - - 3B2DA9A3-761D-467C-BDD7-841584877816 - - - destinationuid - 2C31829D-621E-4707-B16D-5899AE7907FD - modifiers - 0 - modifiersubtext - - vitoclose - - - - 3BD1A5BF-C96B-4C33-B2A6-2EEB18C41B62 - - - destinationuid - 3CF13837-2DBB-46AA-93B4-6CA9598A106E - modifiers - 0 - modifiersubtext - - vitoclose - - - - 3DF54CDE-9D13-4486-B7EC-7921A46C8AE2 - - - destinationuid - 6FF78F6F-9167-45D0-B022-7BE55106848C - modifiers - 0 - modifiersubtext - - vitoclose - - - - 3F7FA866-52E3-46A9-84EE-80A4D3244647 - - - destinationuid - A70B656D-CA4C-41F9-99E3-988FB6158F5F - modifiers - 0 - modifiersubtext - - vitoclose - - - - 403F9FD9-33F0-42FC-8E20-FEC2C821B083 - - - destinationuid - 249B0782-BFFB-4382-A857-5058D7C3D244 - modifiers - 0 - modifiersubtext - - vitoclose - - - - 44D69DBA-085D-4208-86A1-CED1CA068AB3 - - - destinationuid - 46732892-62E0-47CE-B727-EBA967105197 - modifiers - 0 - modifiersubtext - - vitoclose - - - - 46732892-62E0-47CE-B727-EBA967105197 - - - destinationuid - 2CC3DBA2-EDA4-4548-A215-611A436E43DB - modifiers - 0 - modifiersubtext - - vitoclose - - - - 54B8D923-3C08-4CD2-8F05-0AF628F5C029 - - - destinationuid - 0796CFDE-8B84-4EAD-A82D-6558AF6C4D42 - modifiers - 0 - modifiersubtext - - vitoclose - - - - 5ADBB309-EC74-453A-B7F5-9E34E2CDB7E3 - - - destinationuid - 70AEEB77-35DB-44B9-B633-BE1D2B43D581 - modifiers - 0 - modifiersubtext - - vitoclose - - - - 5DE0CED7-F7E2-4A3F-B3A2-53FF23C8C6D3 - - - destinationuid - D79944EC-E799-4CC4-9961-A6EBF5D6FBDC - modifiers - 0 - modifiersubtext - - vitoclose - - - - 65DEE317-811D-4787-87B4-3909B62061EA - - - destinationuid - B1E46976-D5FD-41F9-AC39-C5F7D93F53E7 - modifiers - 0 - modifiersubtext - - vitoclose - - - - 6C92B3BB-C347-4EEE-AC10-2EC7E3381F2A - - - destinationuid - 82B5116A-964C-4E76-AA72-45B844D83BEA - modifiers - 0 - modifiersubtext - - vitoclose - - - - 6F34BFA1-14F5-49E9-B25D-417D71A29AD4 - - - destinationuid - DE762236-EFCC-45D3-85CA-A1B6B191762C - modifiers - 0 - modifiersubtext - - vitoclose - - - - 6FF78F6F-9167-45D0-B022-7BE55106848C - - - destinationuid - C016E20E-3F44-4372-90DC-1B00DA8C07F8 - modifiers - 0 - modifiersubtext - - vitoclose - - - - 76C3031F-7B85-45C6-9D05-DF5802BBC167 - - - destinationuid - 3E2AE83C-BAFA-4EB9-ADCB-0BB7989CF9E9 - modifiers - 0 - modifiersubtext - - vitoclose - - - - 82B5116A-964C-4E76-AA72-45B844D83BEA - - - destinationuid - 39F0A80F-98F0-47BE-B519-26563D139E54 - modifiers - 0 - modifiersubtext - - vitoclose - - - - 834BB1A9-B643-4448-97B4-B6B6582602CB - - - destinationuid - 2754DF89-417E-46D0-A435-3ED58F2CB8CF - modifiers - 0 - modifiersubtext - - vitoclose - - - - 854EB1EE-9017-4F43-BC80-BAF317FC5315 - - - destinationuid - 2EEFE48E-B0E2-406A-BCA9-930F5969A364 - modifiers - 0 - modifiersubtext - - vitoclose - - - - 86967BF2-99A7-43FB-A22A-7AC2F9A8C34C - - - destinationuid - CD6980A3-E50D-4689-B8D6-1A677CDE1914 - modifiers - 0 - modifiersubtext - - vitoclose - - - - 8B221971-0089-4DAC-A056-EC2C961C6EAB - - - destinationuid - 3BD1A5BF-C96B-4C33-B2A6-2EEB18C41B62 - modifiers - 0 - modifiersubtext - - vitoclose - - - - 8C017EEF-38DD-4148-9291-9302EFCE33DE - - - destinationuid - 72CFFBA4-02FC-4875-BB2C-562FCF5E43BC - modifiers - 0 - modifiersubtext - - vitoclose - - - - 9295060C-B513-4806-8F12-52EC6D30C9A3 - - - destinationuid - 46732892-62E0-47CE-B727-EBA967105197 - modifiers - 0 - modifiersubtext - - vitoclose - - - - A60FCD19-F3A3-4B26-BDB2-52D548E38686 - - - destinationuid - 001B3A3A-722E-440B-AA33-3589A525546C - modifiers - 0 - modifiersubtext - - vitoclose - - - - A7CCBBCE-F078-4780-BF5C-42D9CE64D568 - - - destinationuid - 82B5116A-964C-4E76-AA72-45B844D83BEA - modifiers - 0 - modifiersubtext - - vitoclose - - - - ADAB8847-A309-4A02-9D42-E8D30C47BC5D - - - destinationuid - E6955BE2-FEB7-470D-92BE-03EDF6C498FB - modifiers - 0 - modifiersubtext - - vitoclose - - - - B768A804-C61E-4133-AB9C-74C6448BFC62 - - - destinationuid - 3E2AE83C-BAFA-4EB9-ADCB-0BB7989CF9E9 - modifiers - 0 - modifiersubtext - - vitoclose - - - - BDE4BB5C-ECD8-439A-B893-A9C70345010D - - - destinationuid - 001B3A3A-722E-440B-AA33-3589A525546C - modifiers - 0 - modifiersubtext - - vitoclose - - - - C016E20E-3F44-4372-90DC-1B00DA8C07F8 - - - destinationuid - 70AEEB77-35DB-44B9-B633-BE1D2B43D581 - modifiers - 0 - modifiersubtext - - vitoclose - - - - CD6980A3-E50D-4689-B8D6-1A677CDE1914 - - - destinationuid - 6F34BFA1-14F5-49E9-B25D-417D71A29AD4 - modifiers - 0 - modifiersubtext - - vitoclose - - - - CEC4065E-BADA-44B7-A255-4A9D613685E2 - - - destinationuid - 249B0782-BFFB-4382-A857-5058D7C3D244 - modifiers - 0 - modifiersubtext - - vitoclose - - - - F118473C-D1EF-472F-A1F6-CC9A8C65ABF2 - - - destinationuid - 360748C4-EF05-4FC2-8AB9-E4A969D2D256 - modifiers - 0 - modifiersubtext - - vitoclose - - - - F565051F-71D8-42F7-A733-5DA9F39AAEA2 - - - destinationuid - F8C5232B-3EDC-4388-851E-BFE6602C88D0 - modifiers - 0 - modifiersubtext - - vitoclose - - - - FFD4328D-FE08-4222-8AA1-FD71A1DC33F9 - - - destinationuid - 6FF78F6F-9167-45D0-B022-7BE55106848C - modifiers - 0 - modifiersubtext - - vitoclose - - - - - createdby - Hause Lin - description - A workflow to open Obsidian vaults, daily note, and search for notes in vaults. - disabled - - name - Obsidian - objects - - - config - - argumenttype - 2 - keyword - od - subtext - - text - Open Obsidian Daily Note - withspace - - - type - alfred.workflow.input.keyword - uid - B768A804-C61E-4133-AB9C-74C6448BFC62 - version - 1 - - - config - - action - 0 - argument - 0 - focusedappvariable - - focusedappvariablename - - hotkey - 31 - hotmod - 1572864 - hotstring - O - leftcursor - - modsmode - 0 - relatedAppsMode - 0 - - type - alfred.workflow.trigger.hotkey - uid - BDE4BB5C-ECD8-439A-B893-A9C70345010D - version - 2 - - - config - - browser - - spaces - - url - https://forum.obsidian.md/ - utf8 - - - type - alfred.workflow.action.openurl - uid - 08A7509B-BDA4-455E-A628-38ABF42C04D7 - version - 1 - - - config - - paths - - /Applications/Obsidian.app - - toggle - - - type - alfred.workflow.action.launchfiles - uid - 001B3A3A-722E-440B-AA33-3589A525546C - version - 1 - - - config - - argumenttype - 2 - keyword - o? - subtext - Open help and forum pages - text - Obsidian help - withspace - - - type - alfred.workflow.input.keyword - uid - 353B5FD9-BF6A-4635-9AA1-313E16E86B05 - version - 1 - - - config - - concurrently - - escaping - 0 - script - /* cSpell:disable */ - -ObjC.import('stdlib'); -console.log('Running script - od') - - -// get the current app to access the standard additions -app = Application.currentApplication(); -app.includeStandardAdditions = true; - - -function interpolate_homepath(path) { - homepath = app.pathTo('home folder') - return path.replace(/^~/, homepath) -} - - - -// date format -date_format = $.getenv('dailyformat') -console.log(date_format) - -// vault name -v = $.getenv('dailyvaultname'); -console.log(v) - -// specify the absolute/full path to the directory where you keep your daily notes -fulldir_daily = $.getenv('dailyabspath'); -fulldir_daily = interpolate_homepath(fulldir_daily) -console.log(fulldir_daily) - -// if you have a template for your daily note, specify the absolute/full path to this note -fullpath_template = $.getenv('dailytempabspath'); -fullpath_template = interpolate_homepath(fullpath_template) -console.log(fullpath_template) - - - - - - -var months = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ] -var months_short = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ] - -// https://momentjscom.readthedocs.io/en/latest/moment/07-customization/04-weekday-abbreviations/ -var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'] -var days_short = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'] -var days_e = [0, 1, 2, 3, 4, 5, 6] -var days_E = [7, 1, 2, 3, 4, 5, 6] - -// get week of year -function ISO8601_week_no(dt) { - var tdt = new Date(dt.valueOf()); - var dayn = (dt.getDay() + 6) % 7; - tdt.setDate(tdt.getDate() - dayn + 3); - var firstThursday = tdt.valueOf(); - tdt.setMonth(0, 1); - if (tdt.getDay() !== 4) { - tdt.setMonth(0, 1 + ((4 - tdt.getDay()) + 7) % 7); - } - return 1 + Math.ceil((firstThursday - tdt) / 604800000); -} - - - - - -// get today's date -today = new Date(); -yyyy = today.getFullYear().toString(); -mm = (today.getMonth() + 1).toString(); -dd = today.getDate().toString(); -ww = ISO8601_week_no(today).toString(); -day = today.getDay() - - - - - - - - - - -date_format_original = date_format; - -// get today's day if requested -if (date_format.includes('dddd')) { - day_string = days[day] - date_format = date_format.replace('dddd', 'zzzz') -} -if (date_format.includes('ddd')) { - day_string_short = days_short[day] - date_format = date_format.replace('ddd', 'zzz') -} - -if (date_format.includes('e')) { - date_format = date_format.replace('e', '!') -} -if (date_format.includes('E')) { - date_format = date_format.replace('E', '@') -} - -date_format = date_format.toLowerCase(); -console.log('original: ' + date_format_original); -console.log('date_format: ' + date_format); - -// determine no. of y, m, d needed -n_y = date_format.split('y').length - 1; -n_m = date_format.split('m').length - 1; -n_d = date_format.split('d').length - 1; -n_w = date_format.split('w').length - 1; - -if (n_y == 0) {n_y = 1}; -if (n_m == 0) {n_m = 1}; -if (n_d == 0) {n_d = 1}; -if (n_w == 0) {n_w = 1}; - - -y_char = "y".repeat(n_y); -m_char = "m".repeat(n_m); -d_char = "d".repeat(n_d); -w_char = "w".repeat(n_w); - -console.log('y_char: ' + y_char); -console.log('m_char: ' + m_char); -console.log('d_char: ' + d_char); -console.log('w_char: ' + w_char); - - -// format date according to user specification (e.g., yy, m, d) -yyyy = yyyy.slice(4-n_y, 4); -if (mm.length == 1) {mm = mm.padStart(2, '0').slice(2-n_m, 2)}; -if (dd.length == 1) {dd = dd.padStart(2, '0').slice(2-n_d, 2)}; -if (ww.length == 1) {ww = ww.padStart(2, '0').slice(2-n_w, 2)}; - -date_format = date_format.replace(y_char, yyyy); -date_format = date_format.replace(m_char, mm); -date_format = date_format.replace(d_char, dd); -date_format = date_format.replace(w_char, ww); - -console.log('2. date_format: ' + date_format); - -// convert to MMM or MMMM -if (m_char == 'mmmm') { - date_format = date_format.replace(mm, months[Number(mm)-1]) -} -if (m_char == 'mmm') { - date_format = date_format.replace(mm, months_short[Number(mm)-1]) -} - -// day of week if requested -if (date_format.includes('zzzz')) { - date_format = date_format.replace('zzzz', day_string) -} -if (date_format.includes('zzz')) { - date_format = date_format.replace('zzz', day_string_short) -} -// e is day of week (0, 1, ... 7) -if (date_format_original.includes('e')) { - date_format = date_format.replace('!', days_e[day].toString()) -} -if (date_format_original.includes('E')) { - date_format = date_format.replace('@', days_E[day].toString()) -} - -console.log('3. date_format: ' + date_format); - -p = encodeURIComponent(v) + "&file=" + date_format + ".md"; -uri = "obsidian://open?vault=" + p; - - -console.log('uri', uri); - -// create new daily note if it doesn't exist -if (fulldir_daily != "") { - // format file path - if (fulldir_daily[(fulldir_daily.length-1)] != "/") {fulldir_daily += "/"} - filepath = fulldir_daily + date_format + ".md" - - console.log('filepath', filepath); - - // get template content - var template_txt = "" - if (fullpath_template != "") { - console.log('fullpath_template', fullpath_template); - var template_path_obj = Path(fullpath_template); - console.log('template_path_obj', template_path_obj) - template_txt = app.read(Path(fullpath_template)) - } - - console.log('template_txt', template_txt); - - // create note with template (if exists) - var path = Path(filepath) - var finderApp = Application("Finder") - if (!finderApp.exists(path)) { - console.log("Note doesn't exist. Creating note.") - var openedFile = app.openForAccess(path, {writePermission: true}) - app.write(template_txt, { to: openedFile, startingAt: app.getEof(openedFile) }) - app.closeAccess(openedFile) - uri = "obsidian://open?path=" + encodeURIComponent(filepath) - // wait a bit for note to show up in file system - delay(1) - } -} - - -if (v == "" | date_format == "2111") { - app.displayDialog("Set up the workflow first") -} else { - // open file in vault - app.openLocation(uri); - console.log(uri); -} - - -// save today note path -Application('com.runningwithcrayons.Alfred').setConfiguration("dailytodaypath", { - toValue: filepath, - exportable: false, - inWorkflow: $.getenv('alfred_workflow_bundleid'), -}); - scriptargtype - 0 - scriptfile - - type - 7 - - type - alfred.workflow.action.script - uid - 3E2AE83C-BAFA-4EB9-ADCB-0BB7989CF9E9 - version - 2 - - - config - - concurrently - - escaping - 68 - script - ObjC.import('stdlib'); -console.log('Running script') - -// get the current app to access the standard additions -app = Application.currentApplication(); -app.includeStandardAdditions = true; - -homepath = app.pathTo('home folder') -console.log(homepath) - - - -function interpolate_homepath(path) { - homepath = app.pathTo('home folder') - return path.replace(/^~/, homepath) -} - - -// date format -date_format = $.getenv('dailyformat') -console.log(date_format) - -// vault name -v = $.getenv('dailyvaultname'); -console.log(v) - -// specify the absolute/full path to the directory where you keep your daily notes -fulldir_daily = $.getenv('dailyabspath'); -fulldir_daily = interpolate_homepath(fulldir_daily) -console.log(fulldir_daily) - -// if you have a template for your daily note, specify the absolute/full path to this note -fullpath_template = $.getenv('dailytempabspath'); -fullpath_template = interpolate_homepath(fullpath_template) -console.log(fullpath_template) - - - - - - - - - -var months = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ] -var months_short = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ] - -// https://momentjscom.readthedocs.io/en/latest/moment/07-customization/04-weekday-abbreviations/ -var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'] -var days_short = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'] -var days_e = [0, 1, 2, 3, 4, 5, 6] -var days_E = [7, 1, 2, 3, 4, 5, 6] - -// get week of year -function ISO8601_week_no(dt) { - var tdt = new Date(dt.valueOf()); - var dayn = (dt.getDay() + 6) % 7; - tdt.setDate(tdt.getDate() - dayn + 3); - var firstThursday = tdt.valueOf(); - tdt.setMonth(0, 1); - if (tdt.getDay() !== 4) { - tdt.setMonth(0, 1 + ((4 - tdt.getDay()) + 7) % 7); - } - return 1 + Math.ceil((firstThursday - tdt) / 604800000); -} - - - - -// get today's date -today = new Date() -// get tomorrrow's date -tomorrow = new Date(today) -tomorrow.setDate(tomorrow.getDate() + 1) - -yyyy = tomorrow.getFullYear().toString(); -mm = (tomorrow.getMonth() + 1).toString(); -dd = tomorrow.getDate().toString(); -ww = ISO8601_week_no(tomorrow).toString(); -day = tomorrow.getDay() - - - - - -date_format_original = date_format; - -// get today's day if requested -if (date_format.includes('dddd')) { - day_string = days[day] - date_format = date_format.replace('dddd', 'zzzz') -} -if (date_format.includes('ddd')) { - day_string_short = days_short[day] - date_format = date_format.replace('ddd', 'zzz') -} - -if (date_format.includes('e')) { - date_format = date_format.replace('e', '!') -} -if (date_format.includes('E')) { - date_format = date_format.replace('E', '@') -} - -date_format = date_format.toLowerCase(); -console.log('original: ' + date_format_original); - -// determine no. of y, m, d needed -n_y = date_format.split('y').length - 1; -n_m = date_format.split('m').length - 1; -n_d = date_format.split('d').length - 1; -n_w = date_format.split('w').length - 1; - -if (n_y == 0) {n_y = 1}; -if (n_m == 0) {n_m = 1}; -if (n_d == 0) {n_d = 1}; -if (n_w == 0) {n_w = 1}; - -y_char = "y".repeat(n_y); -m_char = "m".repeat(n_m); -d_char = "d".repeat(n_d); -w_char = "w".repeat(n_w); - -// format date according to user specification (e.g., yy, m, d) -yyyy = yyyy.slice(4-n_y, 4); -if (mm.length == 1) {mm = mm.padStart(2, '0').slice(2-n_m, 2)}; -if (dd.length == 1) {dd = dd.padStart(2, '0').slice(2-n_d, 2)}; -if (ww.length == 1) {ww = ww.padStart(2, '0').slice(2-n_w, 2)}; - -date_format = date_format.replace(y_char, yyyy); -date_format = date_format.replace(m_char, mm); -date_format = date_format.replace(d_char, dd); -date_format = date_format.replace(w_char, ww); - -// convert to MMM or MMMM -if (m_char == 'mmmm') { - date_format = date_format.replace(mm, months[Number(mm)-1]) -} -if (m_char == 'mmm') { - date_format = date_format.replace(mm, months_short[Number(mm)-1]) -} - -// day of week if requested -if (date_format.includes('zzzz')) { - date_format = date_format.replace('zzzz', day_string) -} -if (date_format.includes('zzz')) { - date_format = date_format.replace('zzz', day_string_short) -} -// e is day of week (0, 1, ... 7) -if (date_format_original.includes('e')) { - date_format = date_format.replace('!', days_e[day].toString()) -} -if (date_format_original.includes('E')) { - date_format = date_format.replace('@', days_E[day].toString()) -} - -p = encodeURIComponent(v) + "&file=" + date_format + ".md"; -uri = "obsidian://open?vault=" + p; - -// create new daily note if it doesn't exist -if (fulldir_daily != "") { - // format file path - if (fulldir_daily[(fulldir_daily.length-1)] != "/") {fulldir_daily += "/"} - filepath = fulldir_daily + date_format + ".md" - - // get template content - var template_txt = "" - if (fullpath_template != "") { - template_txt = app.read(Path(fullpath_template)) - } - - // create note with template (if exists) - var path = Path(filepath) - var finderApp = Application("Finder") - if (!finderApp.exists(path)) { - console.log("Note doesn't exist. Creating note.") - var openedFile = app.openForAccess(path, {writePermission: true}) - app.write(template_txt, { to: openedFile, startingAt: app.getEof(openedFile) }) - app.closeAccess(openedFile) - uri = "obsidian://open?path=" + encodeURIComponent(filepath) - // wait a bit for note to show up in file system - delay(1) - } -} - - -if (v == "" | date_format == "2111") { - app.displayDialog("Set up the workflow first") -} else { - // open file in vault - app.openLocation(uri); - console.log(uri); -} - - -// save today note path -Application('com.runningwithcrayons.Alfred').setConfiguration("dailytodaypath", { - toValue: filepath, - exportable: false, - inWorkflow: $.getenv('alfred_workflow_bundleid'), -}); - scriptargtype - 0 - scriptfile - - type - 7 - - type - alfred.workflow.action.script - uid - 360748C4-EF05-4FC2-8AB9-E4A969D2D256 - version - 2 - - - config - - argumenttype - 2 - keyword - obs - subtext - - text - Open Obsidian - withspace - - - type - alfred.workflow.input.keyword - uid - A60FCD19-F3A3-4B26-BDB2-52D548E38686 - version - 1 - - - config - - argumenttype - 2 - keyword - otmr - subtext - - text - Open tomorrow's Obsidian Daily Note - withspace - - - type - alfred.workflow.input.keyword - uid - F118473C-D1EF-472F-A1F6-CC9A8C65ABF2 - version - 1 - - - config - - action - 0 - argument - 0 - focusedappvariable - - focusedappvariablename - - hotkey - 2 - hotmod - 393216 - hotstring - D - leftcursor - - modsmode - 0 - relatedAppsMode - 0 - - type - alfred.workflow.trigger.hotkey - uid - 76C3031F-7B85-45C6-9D05-DF5802BBC167 - version - 2 - - - config - - browser - - spaces - - url - https://publish.obsidian.md/help/Index - utf8 - - - type - alfred.workflow.action.openurl - uid - 9F656256-DD01-4508-BF9F-CDB3168DB9B6 - version - 1 - - - config - - argumenttype - 0 - keyword - ov - subtext - Available vaults: obsidian help - text - Open Obsidian {query} Vault - withspace - - - type - alfred.workflow.input.keyword - uid - 29B3A4DB-80CD-498F-A079-18F1CA7DD20C - version - 1 - - - config - - concurrently - - escaping - 0 - script - // NOTE electron bug (if app isn't already opened, it will always open the last opened vault. -// https://discordapp.com/channels/686053708261228577/716028884885307432/755203478413902036 - -console.log('Running script - on') - -// get the current app to access the standard additions -app = Application.currentApplication(); -app.includeStandardAdditions = true; - -// get vault name -v="{query}"; - -// construct uri -uri = "obsidian://open?vault=" + encodeURIComponent(v); - -// open -app.openLocation(uri); -console.log(uri); - scriptargtype - 0 - scriptfile - - type - 7 - - type - alfred.workflow.action.script - uid - 0796CFDE-8B84-4EAD-A82D-6558AF6C4D42 - version - 2 - - - config - - alfredfiltersresults - - alfredfiltersresultsmatchmode - 0 - argumenttreatemptyqueryasnil - - argumenttrimmode - 0 - argumenttype - 1 - escaping - 68 - keyword - on - queuedelaycustom - 3 - queuedelayimmediatelyinitially - - queuedelaymode - 0 - queuemode - 1 - runningsubtext - Specify which vault to create a new note in - script - ObjC.import('stdlib'); -console.log('Running script') - -// get all vaults -var vaults = [] -var vaultpaths = [] // keep track of vaultpaths to prevent duplicating -try { - for (i = 2; i < 100; i++) { - var vidx = 'vault' + i.toString() - var vpath = $.getenv(vidx) - var vname = $.getenv(vidx + 'name') - if (vname == "") { - throw "catch" - } - if (!vaultpaths.includes(vpath)) { // include/list vault only if it doesn't exist yet - vaults.push({title: vname, arg: vname, subtitle: vpath, uid: vpath}) - vaultpaths.push(vpath) - } - } -} catch { - console.log('Found ' + (i-1).toString() + ' vaults') -} - -// list vaults -JSON.stringify({items: vaults}) - scriptargtype - 1 - scriptfile - - subtext - Specify which vault to create a new note in - title - Create new note in a vault - type - 7 - withspace - - - type - alfred.workflow.input.scriptfilter - uid - 854EB1EE-9017-4F43-BC80-BAF317FC5315 - version - 3 - - - config - - argumenttype - 1 - subtext - {query}.md (default: {var:fname_default}) - text - New note title? - withspace - - - type - alfred.workflow.input.keyword - uid - 8B221971-0089-4DAC-A056-EC2C961C6EAB - version - 1 - - - config - - concurrently - - escaping - 0 - script - /* cSpell:disable */ - -ObjC.import('stdlib'); -console.log('Running script - on') - -// get the current app to access the standard additions -app = Application.currentApplication(); -app.includeStandardAdditions = true; - -var v = $.getenv('vault'); -var fname = $.getenv('fname'); - -function interpolate_homepath(path) { - homepath = app.pathTo('home folder') - return path.replace(/^~/, homepath) -} - -if (fname == "") { // use default title - fname = $.getenv('fname_default') -} - -console.log(v) -console.log(fname) - -// get vault path -for (i = 2; i < 1000; i++) { - var vidx = 'vault' + i.toString() + 'name' - var temp = $.getenv(vidx) // throws error if variable doesn't exist - console.log(temp) - if (temp == v) { - var vpath = $.getenv('vault' + i.toString()) - vpath = interpolate_homepath(vpath) - console.log('vpath: ' + vpath) - break - } -} - -var filepath = vpath + "/" + fname + ".md"; -console.log("filepath: " + filepath) - -// create file -var path = Path(filepath) -var finderApp = Application("Finder") -if (!finderApp.exists(path)) { - console.log("Note doesn't exist. Creating note.") - var openedFile = app.openForAccess(path, {writePermission: true}) - app.write("", { to: openedFile, startingAt: app.getEof(openedFile) }) - app.closeAccess(openedFile) - delay(1) -} - -// open file -// construct uri -uri = "obsidian://open?vault=" + encodeURIComponent(v) + "&file=" + encodeURIComponent(fname); - -// open file in vault -app.openLocation(uri); -console.log(uri); - -delay(3.0); // temporary fix for Electron bug (open note twice) -app.openLocation(uri); - scriptargtype - 0 - scriptfile - - type - 7 - - type - alfred.workflow.action.script - uid - 3CF13837-2DBB-46AA-93B4-6CA9598A106E - version - 2 - - - config - - argument - - passthroughargument - - variables - - fname - {query} - - - type - alfred.workflow.utility.argument - uid - 3BD1A5BF-C96B-4C33-B2A6-2EEB18C41B62 - version - 1 - - - config - - argument - - passthroughargument - - variables - - fname_default - {date:yyyyMMdd_HHmmss} - vault - {query} - - - type - alfred.workflow.utility.argument - uid - 2EEFE48E-B0E2-406A-BCA9-930F5969A364 - version - 1 - - - config - - alfredfiltersresults - - alfredfiltersresultsmatchmode - 0 - argumenttreatemptyqueryasnil - - argumenttrimmode - 0 - argumenttype - 1 - escaping - 68 - keyword - oo - queuedelaycustom - 3 - queuedelayimmediatelyinitially - - queuedelaymode - 0 - queuemode - 1 - runningsubtext - - script - ObjC.import('stdlib'); -console.log('Running script') - -// get all vaults -var vaults = [] -var vaultpaths = [] // keep track of vaultpaths to prevent duplicating -try { - for (i = 1; i < 100; i++) { - var vidx = 'vault' + i.toString() - var vpath = $.getenv(vidx) - var vname = $.getenv(vidx + 'name') - if (vname == "") { - throw "catch" - } - if (!vaultpaths.includes(vpath)) { // include/list vault only if it doesn't exist yet - vaults.push({title: vname, arg: vname, subtitle: vpath, uid: vpath}) - vaultpaths.push(vpath) - } - } -} catch { - console.log('Found ' + (i-1).toString() + ' vaults') -} - -// list vaults -JSON.stringify({items: vaults}) - scriptargtype - 1 - scriptfile - - subtext - Type something to autcomplete or space to list vaults - title - Which vault to open? - type - 7 - withspace - - - type - alfred.workflow.input.scriptfilter - uid - 54B8D923-3C08-4CD2-8F05-0AF628F5C029 - version - 3 - - - config - - concurrently - - escaping - 68 - script - ObjC.import('stdlib'); -console.log('Running script - fallback search') - -// get the current app to access the standard additions -app = Application.currentApplication(); -app.includeStandardAdditions = true; - -var v = $.getenv('vault'); -var fname = $.getenv('fname'); - -// construct uri -uri = "obsidian://search?vault=" + encodeURIComponent(v) + "&query=" + encodeURIComponent(fname); - -// search in vault -app.openLocation(uri); -console.log(uri); - scriptargtype - 0 - scriptfile - - type - 7 - - type - alfred.workflow.action.script - uid - DE762236-EFCC-45D3-85CA-A1B6B191762C - version - 2 - - - config - - text - Search Obsidian for {query} - - type - alfred.workflow.trigger.fallback - uid - 1BD03BB0-06B9-47F5-9346-7A829C38B248 - version - 1 - - - config - - alfredfiltersresults - - alfredfiltersresultsmatchmode - 0 - argumenttreatemptyqueryasnil - - argumenttrimmode - 0 - argumenttype - 1 - escaping - 68 - queuedelaycustom - 3 - queuedelayimmediatelyinitially - - queuedelaymode - 0 - queuemode - 1 - runningsubtext - - script - ObjC.import('stdlib'); -console.log('Running script - retrieve vaults') - -// get all vaults -var vaults = [] -var vaultpaths = [] // keep track of vaultpaths to prevent duplicating -try { - for (i = 2; i < 100; i++) { - var vidx = 'vault' + i.toString() - var vpath = $.getenv(vidx) - var vname = $.getenv(vidx + 'name') - if (vname == "") { - throw "catch" - } - if (!vaultpaths.includes(vpath)) { // include/list vault only if it doesn't exist yet - vaults.push({title: vname, arg: vname, subtitle: vpath, uid: vpath}) - vaultpaths.push(vpath) - } - } -} catch { - console.log('Found ' + (i-1).toString() + ' vaults') -} - -// list vaults -JSON.stringify({items: vaults}) - scriptargtype - 1 - scriptfile - - subtext - Type something to autcomplete or space to list vaults - title - Which vault to search in? - type - 7 - withspace - - - type - alfred.workflow.input.scriptfilter - uid - CD6980A3-E50D-4689-B8D6-1A677CDE1914 - version - 3 - - - config - - argument - - passthroughargument - - variables - - vault - {query} - - - type - alfred.workflow.utility.argument - uid - 6F34BFA1-14F5-49E9-B25D-417D71A29AD4 - version - 1 - - - config - - argument - - passthroughargument - - variables - - fname - {query} - - - type - alfred.workflow.utility.argument - uid - 86967BF2-99A7-43FB-A22A-7AC2F9A8C34C - version - 1 - - - config - - argumenttype - 2 - keyword - oss - subtext - Press enter to continue - text - Search within vaults - withspace - - - type - alfred.workflow.input.keyword - uid - 44D69DBA-085D-4208-86A1-CED1CA068AB3 - version - 1 - - - config - - anchorfields - - argumenttrimmode - 0 - argumenttype - 0 - daterange - 0 - fields - - - field - kMDItemDisplayName - not - - split - - value - {query} - words - - - - field - kMDItemFinderComment - not - - split - - value - {query} - words - - - - field - kMDItemTextContent - not - - split - - value - {query} - words - - - - includesystem - - keyword - oaddvault - limit - 0 - runningsubtext - - scopes - - sortmode - 0 - subtext - Type to search - title - Add an Obsidian vault - types - - public.folder - - withspace - - - type - alfred.workflow.input.filefilter - uid - 3F7FA866-52E3-46A9-84EE-80A4D3244647 - version - 2 - - - config - - concurrently - - escaping - 68 - script - ObjC.import('stdlib'); - -console.log('Running script') - -// get vault name from path -var path = '{query}' -var idx = path.lastIndexOf("/") -var vaultname = path.substring(idx+1) -var vaultpaths = [] // keep track of vaultpaths to prevent duplicating - -try { // loop through existing vault variables - for (i = 1; i < 1000; i++) { - var vidx = 'vault' + i.toString() - var temp = $.getenv(vidx) // throws error if variable doesn't exist - if (temp == "") { // throws error if variable exists but doesn't have value - throw "catch" - } else { - vaultpaths.push(temp) - } - } -} catch { // create new variable if doesn't exist - - if (!vaultpaths.includes(path)) { // add vault variable only vault hasn't been added - // store vault path - console.log('Assigned ' + vaultname + ' to ' + vidx) - Application('com.runningwithcrayons.Alfred').setConfiguration(vidx, { - toValue: path, - exportable: false, - inWorkflow: $.getenv('alfred_workflow_bundleid'), - }); - - // store vault name - Application('com.runningwithcrayons.Alfred').setConfiguration(vidx + "name", { - toValue: vaultname, - exportable: false, - inWorkflow: $.getenv('alfred_workflow_bundleid'), - }); - } - -} - scriptargtype - 0 - scriptfile - - type - 7 - - type - alfred.workflow.action.script - uid - A70B656D-CA4C-41F9-99E3-988FB6158F5F - version - 2 - - - config - - concurrently - - escaping - 68 - script - ObjC.import('stdlib'); -console.log('Running script') - -// get all vaults -var vaults = [] -var vaultpaths = [] // keep track of vaultpaths to prevent duplicating -try { - for (i = 2; i < 100; i++) { - var vidx = 'vault' + i.toString() - var vpath = $.getenv(vidx) - var vname = $.getenv(vidx + 'name') - if (vname == "") { - throw "catch" - } - if (!vaultpaths.includes(vpath)) { // include/list vault only if it doesn't exist yet - vaults.push({title: vname, arg: vname, subtitle: vpath, uid: vpath}) - vaultpaths.push(vpath) - } - } -} catch { - console.log('Found ' + (i-1).toString() + ' vaults') -} - - -// create json object to pass to next object -var jsonobj = { - "alfredworkflow" : { - "arg" : "{query}", - "config" : { - "scopes" : vaultpaths, - } - } -} - -// pass to next object in workflow -JSON.stringify(jsonobj) - scriptargtype - 0 - scriptfile - - type - 7 - - type - alfred.workflow.action.script - uid - 46732892-62E0-47CE-B727-EBA967105197 - version - 2 - - - config - - anchorfields - - argumenttrimmode - 0 - argumenttype - 0 - daterange - 0 - fields - - - field - kMDItemDisplayName - not - - split - - value - {query} - words - - - - field - kMDItemFinderComment - not - - split - - value - {query} - words - - - - field - kMDItemTextContent - not - - split - - value - {query} - words - - - - includesystem - - keyword - os - limit - 0 - runningsubtext - - scopes - - sortmode - 0 - subtext - Search for {query} - title - Search markdown files - types - - net.daringfireball.markdown - net.ia.markdown - public.plain-text - - withspace - - - type - alfred.workflow.input.filefilter - uid - 2CC3DBA2-EDA4-4548-A215-611A436E43DB - version - 2 - - - config - - action - 0 - argument - 0 - focusedappvariable - - focusedappvariablename - - hotkey - 0 - hotmod - 0 - hotstring - - leftcursor - - modsmode - 0 - relatedAppsMode - 0 - - type - alfred.workflow.trigger.hotkey - uid - 9295060C-B513-4806-8F12-52EC6D30C9A3 - version - 2 - - - config - - concurrently - - escaping - 68 - script - ObjC.import('stdlib'); - -console.log('Running script') - -// get vault name from path -var path = '{query}' -var idx = path.lastIndexOf("/") -var vaultname = path.substring(idx+1) - -Application('com.runningwithcrayons.Alfred').setConfiguration("dailyvault", { - toValue: path, - exportable: false, - inWorkflow: $.getenv('alfred_workflow_bundleid'), -}); - -Application('com.runningwithcrayons.Alfred').setConfiguration("dailyvaultname", { - toValue: vaultname, - exportable: false, - inWorkflow: $.getenv('alfred_workflow_bundleid'), -}); - scriptargtype - 0 - scriptfile - - type - 7 - - type - alfred.workflow.action.script - uid - E6955BE2-FEB7-470D-92BE-03EDF6C498FB - version - 2 - - - config - - anchorfields - - argumenttrimmode - 0 - argumenttype - 0 - daterange - 0 - fields - - - field - kMDItemDisplayName - not - - split - - value - {query} - words - - - - field - kMDItemFinderComment - not - - split - - value - {query} - words - - - - field - kMDItemTextContent - not - - split - - value - {query} - words - - - - includesystem - - keyword - odailyvault - limit - 0 - runningsubtext - - scopes - - sortmode - 0 - subtext - Type to search (current: {var:dailyvaultname}) - title - Specify daily note vault - types - - public.folder - - withspace - - - type - alfred.workflow.input.filefilter - uid - ADAB8847-A309-4A02-9D42-E8D30C47BC5D - version - 2 - - - config - - argumenttype - 2 - keyword - orr - subtext - Press enter to continue - text - Search within vaults (modified last 3 days) - withspace - - - type - alfred.workflow.input.keyword - uid - 403F9FD9-33F0-42FC-8E20-FEC2C821B083 - version - 1 - - - config - - argumenttype - 0 - keyword - odailyformat - subtext - Examples: yyyy-mm-dd, mddyyyy, dd_MMM_yyyy (current: {var:dailyformat}) - text - Specify daily note format: {query} - withspace - - - type - alfred.workflow.input.keyword - uid - 5DE0CED7-F7E2-4A3F-B3A2-53FF23C8C6D3 - version - 1 - - - config - - concurrently - - escaping - 68 - script - ObjC.import('stdlib'); - -console.log('Running script') - -Application('com.runningwithcrayons.Alfred').setConfiguration("dailyformat", { - toValue: "{query}", - exportable: false, - inWorkflow: $.getenv('alfred_workflow_bundleid'), -}); - scriptargtype - 0 - scriptfile - - type - 7 - - type - alfred.workflow.action.script - uid - D79944EC-E799-4CC4-9961-A6EBF5D6FBDC - version - 2 - - - config - - concurrently - - escaping - 0 - script - /* cSpell:disable */ -ObjC.import('stdlib'); -console.log('Running script - search') - -// absolute file path to file -p="{query}"; - -// construct uri -uri = "obsidian://open?path=" + encodeURIComponent(p); -console.log(uri) - -// get the current app to access the standard additions -app = Application.currentApplication(); -app.includeStandardAdditions = true; - -// open file in vault -// app.openLocation(uri); -console.log(p); - - - -function interpolate_homepath(path) { - homepath = app.pathTo('home folder') - return path.replace(/^~/, homepath) -} - - - -// check if file path contains vault names; if not, append "file://" to it to open in default app -// get all vaults -var vaultpaths = [] // keep track of vaultpaths to prevent duplicating -try { - for (i = 2; i < 100; i++) { - var vidx = 'vault' + i.toString() - var vpath = $.getenv(vidx) - vpath = interpolate_homepath(vpath); - - var vname = $.getenv(vidx + 'name') - if (vname == "") { - throw "catch" - } - if (!vaultpaths.includes(vpath)) { // include/list vault only if it doesn't exist yet - vaultpaths.push(vpath) - } - } -} catch { - console.log('Found ' + (i-1).toString() + ' vaults') -} - -console.log(vaultpaths) - -var invault = 0 -for (i=0; i<vaultpaths.length; i++) { - if (p.indexOf(vaultpaths[i]) >= 0) { - invault = 1 - } -} - -if (invault == 0) { - uri = uri.replace("obsidian://open?path=", "file:///") -} - -app.openLocation(uri); -console.log(uri); -delay(3.0); // temporary fix for Electron bug (open note twice) -app.openLocation(uri); - scriptargtype - 0 - scriptfile - - type - 7 - - type - alfred.workflow.action.script - uid - 70AEEB77-35DB-44B9-B633-BE1D2B43D581 - version - 2 - - - config - - concurrently - - escaping - 68 - script - ObjC.import('stdlib'); -console.log('Running script') - -// get all vaults -var vaults = [] -var vaultpaths = [] // keep track of vaultpaths to prevent duplicating -try { - for (i = 2; i < 100; i++) { - var vidx = 'vault' + i.toString() - var vpath = $.getenv(vidx) - var vname = $.getenv(vidx + 'name') - if (vname == "") { - throw "catch" - } - if (!vaultpaths.includes(vpath)) { // include/list vault only if it doesn't exist yet - vaults.push({title: vname, arg: vname, subtitle: vpath, uid: vpath}) - vaultpaths.push(vpath) - } - } -} catch { - console.log('Found ' + (i-1).toString() + ' vaults') -} - - -// create json object to pass to next object -var jsonobj = { - "alfredworkflow" : { - "arg" : "{query}", - "config" : { - "scopes" : vaultpaths, - } - } -} - -// pass to next object in workflow -JSON.stringify(jsonobj) - scriptargtype - 0 - scriptfile - - type - 7 - - type - alfred.workflow.action.script - uid - 249B0782-BFFB-4382-A857-5058D7C3D244 - version - 2 - - - config - - anchorfields - - argumenttrimmode - 0 - argumenttype - 0 - daterange - 2 - fields - - - field - kMDItemDisplayName - not - - split - - value - {query} - words - - - - field - kMDItemFinderComment - not - - split - - value - {query} - words - - - - field - kMDItemTextContent - not - - split - - value - {query} - words - - - - includesystem - - keyword - or - limit - 0 - runningsubtext - - scopes - - sortmode - 0 - subtext - Search for {query} - title - Search markdown files (modified last 3 days) - types - - net.daringfireball.markdown - net.ia.markdown - public.plain-text - - withspace - - - type - alfred.workflow.input.filefilter - uid - 5ADBB309-EC74-453A-B7F5-9E34E2CDB7E3 - version - 2 - - - config - - action - 0 - argument - 0 - focusedappvariable - - focusedappvariablename - - hotkey - 0 - hotmod - 0 - hotstring - - leftcursor - - modsmode - 0 - relatedAppsMode - 0 - - type - alfred.workflow.trigger.hotkey - uid - CEC4065E-BADA-44B7-A255-4A9D613685E2 - version - 2 - - - config - - anchorfields - - argumenttrimmode - 0 - argumenttype - 0 - daterange - 0 - fields - - - field - kMDItemDisplayName - not - - split - - value - {query} - words - - - - field - kMDItemFinderComment - not - - split - - value - {query} - words - - - - field - kMDItemTextContent - not - - split - - value - {query} - words - - - - includesystem - - keyword - odailytemplate - limit - 0 - runningsubtext - - scopes - - sortmode - 0 - subtext - Type to search (current: {var:dailytempabspath}) - title - Specify daily note template - types - - withspace - - - type - alfred.workflow.input.filefilter - uid - F565051F-71D8-42F7-A733-5DA9F39AAEA2 - version - 2 - - - config - - concurrently - - escaping - 68 - script - ObjC.import('stdlib'); - -console.log('Running script') - -Application('com.runningwithcrayons.Alfred').setConfiguration("dailytempabspath", { - toValue: "{query}", - exportable: false, - inWorkflow: $.getenv('alfred_workflow_bundleid'), -}); - scriptargtype - 0 - scriptfile - - type - 7 - - type - alfred.workflow.action.script - uid - F8C5232B-3EDC-4388-851E-BFE6602C88D0 - version - 2 - - - config - - argumenttype - 2 - keyword - ott - subtext - Press enter to continue - text - Search within vaults (modified today) - withspace - - - type - alfred.workflow.input.keyword - uid - FFD4328D-FE08-4222-8AA1-FD71A1DC33F9 - version - 1 - - - config - - concurrently - - escaping - 68 - script - ObjC.import('stdlib'); - -console.log('Running script') - -Application('com.runningwithcrayons.Alfred').setConfiguration("dailyabspath", { - toValue: "{query}", - exportable: false, - inWorkflow: $.getenv('alfred_workflow_bundleid'), -}); - scriptargtype - 0 - scriptfile - - type - 7 - - type - alfred.workflow.action.script - uid - 72CFFBA4-02FC-4875-BB2C-562FCF5E43BC - version - 2 - - - config - - anchorfields - - argumenttrimmode - 0 - argumenttype - 0 - daterange - 0 - fields - - - field - kMDItemDisplayName - not - - split - - value - {query} - words - - - - field - kMDItemFinderComment - not - - split - - value - {query} - words - - - - field - kMDItemTextContent - not - - split - - value - {query} - words - - - - includesystem - - keyword - odailypath - limit - 0 - runningsubtext - - scopes - - sortmode - 0 - subtext - Type to search (current: {var:dailyabspath}) - title - Specify daily note directory - types - - public.folder - - withspace - - - type - alfred.workflow.input.filefilter - uid - 8C017EEF-38DD-4148-9291-9302EFCE33DE - version - 2 - - - config - - anchorfields - - argumenttrimmode - 0 - argumenttype - 0 - daterange - 1 - fields - - - field - kMDItemDisplayName - not - - split - - value - {query} - words - - - - field - kMDItemFinderComment - not - - split - - value - {query} - words - - - - field - kMDItemTextContent - not - - split - - value - {query} - words - - - - includesystem - - keyword - ot - limit - 0 - runningsubtext - - scopes - - sortmode - 0 - subtext - Search for {query} - title - Search markdown files (modified today) - types - - net.daringfireball.markdown - net.ia.markdown - public.plain-text - - withspace - - - type - alfred.workflow.input.filefilter - uid - C016E20E-3F44-4372-90DC-1B00DA8C07F8 - version - 2 - - - config - - concurrently - - escaping - 68 - script - ObjC.import('stdlib'); -console.log('Running script') - -// get all vaults -var vaults = [] -var vaultpaths = [] // keep track of vaultpaths to prevent duplicating -try { - for (i = 2; i < 100; i++) { - var vidx = 'vault' + i.toString() - var vpath = $.getenv(vidx) - var vname = $.getenv(vidx + 'name') - if (vname == "") { - throw "catch" - } - if (!vaultpaths.includes(vpath)) { // include/list vault only if it doesn't exist yet - vaults.push({title: vname, arg: vname, subtitle: vpath, uid: vpath}) - vaultpaths.push(vpath) - } - } -} catch { - console.log('Found ' + (i-1).toString() + ' vaults') -} - - -// create json object to pass to next object -var jsonobj = { - "alfredworkflow" : { - "arg" : "{query}", - "config" : { - "scopes" : vaultpaths, - } - } -} - -// pass to next object in workflow -JSON.stringify(jsonobj) - scriptargtype - 0 - scriptfile - - type - 7 - - type - alfred.workflow.action.script - uid - 6FF78F6F-9167-45D0-B022-7BE55106848C - version - 2 - - - config - - action - 0 - argument - 0 - focusedappvariable - - focusedappvariablename - - hotkey - 0 - hotmod - 0 - hotstring - - leftcursor - - modsmode - 0 - relatedAppsMode - 0 - - type - alfred.workflow.trigger.hotkey - uid - 3DF54CDE-9D13-4486-B7EC-7921A46C8AE2 - version - 2 - - - config - - argumenttype - 2 - keyword - oclearvaults - subtext - Clears all but Obsidian help vault - text - Clear all vaults - withspace - - - type - alfred.workflow.input.keyword - uid - 834BB1A9-B643-4448-97B4-B6B6582602CB - version - 1 - - - config - - concurrently - - escaping - 68 - script - ObjC.import('stdlib'); - -console.log('Running script') - -try { // loop through existing vault variables - for (i = 2; i < 100; i++) { - var vidx = 'vault' + i.toString() - Application('com.runningwithcrayons.Alfred').removeConfiguration(vidx, { - inWorkflow: $.getenv('alfred_workflow_bundleid'), - }); - Application('com.runningwithcrayons.Alfred').removeConfiguration(vidx + 'name', { - inWorkflow: $.getenv('alfred_workflow_bundleid'), - }); - } -} catch { - console.log("Removed " + (i-1).toString() + " variables"); -} - scriptargtype - 0 - scriptfile - - type - 7 - - type - alfred.workflow.action.script - uid - 2754DF89-417E-46D0-A435-3ED58F2CB8CF - version - 2 - - - config - - concurrently - - escaping - 68 - script - ObjC.import('stdlib'); -console.log('Running script') - -var remove_vault = '{query}'; -console.log(remove_vault) - -try { // loop through existing vault variables - for (i = 2; i < 100; i++) { - var vidx = 'vault' + i.toString() - vname = $.getenv(vidx + 'name') - if (vname == remove_vault) { - console.log("Found vault. Clearing it.") - Application('com.runningwithcrayons.Alfred').removeConfiguration(vidx, { - inWorkflow: $.getenv('alfred_workflow_bundleid'), - }); - Application('com.runningwithcrayons.Alfred').removeConfiguration(vidx + 'name', { - inWorkflow: $.getenv('alfred_workflow_bundleid'), - }); - break - } - } -} catch { - console.log("Vault not found."); -} - scriptargtype - 0 - scriptfile - - type - 7 - - type - alfred.workflow.action.script - uid - 67E25071-1FF8-4F8B-9A9F-2509093593B6 - version - 2 - - - config - - alfredfiltersresults - - alfredfiltersresultsmatchmode - 0 - argumenttreatemptyqueryasnil - - argumenttrimmode - 0 - argumenttype - 0 - escaping - 68 - keyword - oclearvault - queuedelaycustom - 3 - queuedelayimmediatelyinitially - - queuedelaymode - 0 - queuemode - 1 - runningsubtext - - script - ObjC.import('stdlib'); -console.log('Running script') - -// get all vaults -var vaults = [] -var vaultpaths = [] // keep track of vaultpaths to prevent duplicating -try { - for (i = 2; i < 100; i++) { - var vidx = 'vault' + i.toString() - var vpath = $.getenv(vidx) - var vname = $.getenv(vidx + 'name') - if (vname == "") { - throw "catch" - } - if (!vaultpaths.includes(vpath)) { // include/list vault only if it doesn't exist yet - vaults.push({title: "Clear vault: " + vname, arg: vname, subtitle: vpath, uid: vpath}) - vaultpaths.push(vpath) - } - } -} catch { - console.log('Found ' + (i-1).toString() + ' vaults') -} - -// list vaults -JSON.stringify({items: vaults}) - scriptargtype - 1 - scriptfile - - subtext - Type something to autcomplete or space to list vaults - title - Clear one vault - type - 7 - withspace - - - type - alfred.workflow.input.scriptfilter - uid - 0F2ED3A2-F821-40B0-9915-C8E5E2D84A02 - version - 3 - - - config - - argumenttype - 0 - keyword - odailyheader - subtext - Examples: # Log, ## Inbox - text - Specify header to append to: {query} - withspace - - - type - alfred.workflow.input.keyword - uid - 0EEA412C-D42E-4C94-9C26-077C1CFEFF9D - version - 1 - - - config - - concurrently - - escaping - 68 - script - ObjC.import('stdlib'); - -console.log('Running script') - -Application('com.runningwithcrayons.Alfred').setConfiguration("dailyheader", { - toValue: "{query}", - exportable: false, - inWorkflow: $.getenv('alfred_workflow_bundleid'), -}); - scriptargtype - 0 - scriptfile - - type - 7 - - type - alfred.workflow.action.script - uid - E5FAA23D-08AB-47A3-A5C9-5211B9D677C4 - version - 2 - - - config - - argumenttype - 0 - keyword - oi - subtext - Append to the end of inbox note: {query} - text - Append text to an inbox note - withspace - - - type - alfred.workflow.input.keyword - uid - 6C92B3BB-C347-4EEE-AC10-2EC7E3381F2A - version - 1 - - - config - - concurrently - - escaping - 68 - script - /* cSpell:disable */ -ObjC.import('stdlib'); -console.log('Running script: oi') - -// get the current app to access the standard additions -app = Application.currentApplication(); -app.includeStandardAdditions = true; - -function interpolate_homepath(path) { - homepath = app.pathTo('home folder') - return path.replace(/^~/, homepath) -} - -// get inbox note path -var inbox_md = $.getenv('inbox_md'); -inbox_md = interpolate_homepath(inbox_md) - -// escape " -var query = "{query}"; -query = query.replace(/\"/g, '\"'); - -// split paragraphs into separate bullet points -query = query.split("@NEWLISTITEM@") -console.log("query: " + query) - -// function to read utf -// https://github.com/JXA-Cookbook/JXA-Cookbook/issues/25 -ObjC.import('Foundation') -const readFile = function (path, encoding) { - !encoding && (encoding = $.NSUTF8StringEncoding) - const fm = $.NSFileManager.defaultManager - const data = fm.contentsAtPath(path) - const str = $.NSString.alloc.initWithDataEncoding(data, encoding) - return ObjC.unwrap(str) -} - -// read file to append to it -var filetext = readFile(inbox_md); - -// remove newline characters -while (filetext.endsWith("\n")) { - filetext = filetext.slice(0, filetext.length - 1); -} -if (filetext == "") { - console.log("EMPTY NOTE!") -} else { - filetext += "\n"; // leave one newline character -} - -console.log("CURRENT TEXT (string)"); -console.log(filetext) - -// loop through each paragraph and append as separate bullet point -var formatted_text = ''; -for (i = 0; i < query.length; i++) { - - var text2append = query[i]; - - // parse string to remove extra spaces - text2append = text2append.split(" ") - text2append = text2append.filter(i => i.length > 0).join(" ") - - // add bullet point - if (!query[i].startsWith("- ")) { - text2append = "- " + text2append; - } - if (text2append == "- ") { - continue; - } - - if (!text2append.endsWith("\n")) { - text2append += "\n"; - } - console.log("TEXT TO APPEND " + (i + 1)); - console.log(text2append); - formatted_text += text2append; -} - -var final_text = filetext + formatted_text; -console.log("FINAL TEXT") -console.log(final_text) - -// write file -str2write = $.NSString.alloc.initWithUTF8String(final_text); -str2write.writeToFileAtomicallyEncodingError(inbox_md, true, $.NSUTF8StringEncoding, null); - -// notification -var oinotify = $.getenv('oinotify'); -if (oinotify == "on") { - // https://developer.apple.com/library/archive/documentation/LanguagesUtilities/Conceptual/MacAutomationScriptingGuide/DisplayNotifications.html - app.displayNotification("Added text to inbox", { withTitle: 'Obsidian Alfred workfow' }) -} - scriptargtype - 0 - scriptfile - - type - 7 - - type - alfred.workflow.action.script - uid - CDEBE435-E442-4054-80BE-59ADD7EEA597 - version - 2 - - - config - - concurrently - - escaping - 68 - script - ObjC.import('stdlib'); - -console.log('Running script') - -Application('com.runningwithcrayons.Alfred').setConfiguration("dailytodo", { - toValue: "{query}", - exportable: false, - inWorkflow: $.getenv('alfred_workflow_bundleid'), -}); - scriptargtype - 0 - scriptfile - - type - 7 - - type - alfred.workflow.action.script - uid - B1E46976-D5FD-41F9-AC39-C5F7D93F53E7 - version - 2 - - - config - - argumenttype - 0 - keyword - odailytodoheader - subtext - Examples: # To do, ## Tasks - text - Specify todo header to append to: {query} - withspace - - - type - alfred.workflow.input.keyword - uid - 65DEE317-811D-4787-87B4-3909B62061EA - version - 1 - - - config - - matchmode - 0 - matchstring - - - replacestring - @NEWLISTITEM@ - - type - alfred.workflow.utility.replace - uid - 39F0A80F-98F0-47BE-B519-26563D139E54 - version - 2 - - - config - - matchmode - 0 - matchstring - - - - replacestring - @NEWLISTITEM@ - - type - alfred.workflow.utility.replace - uid - 82B5116A-964C-4E76-AA72-45B844D83BEA - version - 2 - - - config - - action - 0 - argument - 2 - focusedappvariable - - focusedappvariablename - - hotkey - 34 - hotmod - 1835008 - hotstring - I - leftcursor - - modsmode - 0 - relatedAppsMode - 0 - - type - alfred.workflow.trigger.hotkey - uid - A7CCBBCE-F078-4780-BF5C-42D9CE64D568 - version - 2 - - - config - - concurrently - - escaping - 68 - script - ObjC.import('stdlib'); - -console.log('Running script') - -Application('com.runningwithcrayons.Alfred').setConfiguration("inbox_md", { - toValue: "{query}", - exportable: false, - inWorkflow: $.getenv('alfred_workflow_bundleid'), -}); - scriptargtype - 0 - scriptfile - - type - 7 - - type - alfred.workflow.action.script - uid - 73853368-ED10-4729-A4D0-E231647C3CF4 - version - 2 - - - config - - anchorfields - - argumenttrimmode - 0 - argumenttype - 0 - daterange - 0 - fields - - - field - kMDItemDisplayName - not - - split - - value - {query} - words - - - - field - kMDItemFinderComment - not - - split - - value - {query} - words - - - - field - kMDItemTextContent - not - - split - - value - {query} - words - - - - includesystem - - keyword - oinbox - limit - 0 - runningsubtext - - scopes - - sortmode - 0 - subtext - Type to search - title - Specify inbox markdown - types - - withspace - - - type - alfred.workflow.input.filefilter - uid - 333B2B54-2894-418E-A8DE-522F8BB1F3E5 - version - 2 - - - config - - action - 0 - argument - 0 - focusedappvariable - - focusedappvariablename - - hotkey - 0 - hotmod - 0 - hotstring - - leftcursor - - modsmode - 0 - relatedAppsMode - 0 - - type - alfred.workflow.trigger.hotkey - uid - 3B2DA9A3-761D-467C-BDD7-841584877816 - version - 2 - - - config - - concurrently - - escaping - 68 - script - ObjC.import('stdlib'); -console.log('Running script - oinotify') - - -// get current setting -var oinotify = $.getenv('oinotify'); -console.log('current value: ' + oinotify) - -var title_text = 'Toggle notification' - -// new value -if (oinotify == 'on') { - oinotify = 'off' - var text = 'Disabled notifications' -} else { - oinotify = 'on' - var text = 'Enabled notifications' -} - -// change value -Application('com.runningwithcrayons.Alfred').setConfiguration("oinotify", { - toValue: oinotify, - exportable: false, - inWorkflow: $.getenv('alfred_workflow_bundleid'), -}); -console.log('new value: ' + oinotify) - - - - -// get the current app to access the standard additions -app = Application.currentApplication(); -app.includeStandardAdditions = true; -app.displayNotification(text, {withTitle: title_text}) - scriptargtype - 0 - scriptfile - - type - 7 - - type - alfred.workflow.action.script - uid - 6290B8D5-ECEB-4623-848B-E5AB92089E79 - version - 2 - - - config - - argumenttype - 2 - keyword - oinotify - subtext - - text - Toggle notifications when adding text to inbox note. - withspace - - - type - alfred.workflow.input.keyword - uid - 2D878E69-78A2-499B-B7F1-BE3B30AD5C70 - version - 1 - - - config - - concurrently - - escaping - 102 - script - /* cSpell:disable */ - -ObjC.import('stdlib'); -console.log('Running script: oii') - -const app = Application.currentApplication() -app.includeStandardAdditions = true - -function interpolate_homepath(path) { - homepath = app.pathTo('home folder') - return path.replace(/^~/, homepath) -} - -// get inbox note path -var inbox_md = $.getenv('inbox_md'); -inbox_md = interpolate_homepath(inbox_md); -console.log(inbox_md) - -uri = "obsidian://open?path=" + encodeURIComponent(inbox_md); -console.log(uri) -app.openLocation(uri); -delay(3.0); // temporary fix for Electron bug (open note twice) -app.openLocation(uri); - scriptargtype - 1 - scriptfile - - type - 7 - - type - alfred.workflow.action.script - uid - 2C31829D-621E-4707-B16D-5899AE7907FD - version - 2 - - - config - - argumenttype - 2 - keyword - oii - subtext - - text - Open inbox note - withspace - - - type - alfred.workflow.input.keyword - uid - 08189677-1EA8-4DC2-9C09-DC2F2AF0866E - version - 1 - - - readme - A workflow to open Obsidian vaults, daily note, and search for notes in vaults. Tested in Obsidian 0.11.4. - -=== - -RELEASE NOTES - -Full documentation: https://github.com/hauselin/obsidian-alfred - -v0.3.1 -- Bug fix for paths with ~ @lastobelus #17 #24 - -v0.3.0 -- oi now works with special characters. Rewritten oi script completely. #19 #21 -- New command oinotify to toggle notification on/off when adding text with oi. Defaults to on. #21 -- oii to open inbox note or specify a hotkey to open inbox note. -- Temporary fix for Electron bug where notes don't open when Obsidian isn't already running in the background. #23 - -v0.2.6 -- Added oi to append a list item/bullet point to a note. Use oinbox to specify the note to be used as inbox before using oi. You can also specify a hotkey to directly append clipboard contents as bullet ponitsto your inbox note. #19 - -v0.2.5 -- Minor changes to allow ~ in environment variables. #17 - -v0.2.4 -- Accepts W, w, E, e, dddd, ddd datetime format. -- Open the last-opened vault with keyword obs or your hotkey. - -v0.2.3 -- Accepts MMM and MMMM datetime format. -- Clear a single vault with oclearvault - -v0.2.2 -- Opens markdown files in your default editor if os/or/ot finds/tries to open a file that's not in your Obsidian vault. - -v0.2.1 -- Added otmr to create/open daily note for tomorrow. -- os, or, ot no longer requires an extra step to list matching markdown files, but they will now list matching markdown files found *anywhere* and not just inside your vaults; if you want to search only within your vaults, use oss, orr, or ott instead. - -v0.2.0 -- Major and breaking changes. -- Now requires a one-off initial setup to tell the workflow where/what you vaults are etc. Uses workflow environment variables, so your settings will be saved whenever you update/upgrade this workflow to a newer version. -- Set up: oaddvault, odailyvault, odailyformat, odailypath, odailytemplate, oclearvaults -- No longer requires users to manually edit any osascripts or settings within the workflow. -- Fixes the issue of settings not preserving whenever you upgrade to a newer version of this workflow. -- Create new note in vault with keyword on. - -v0.1.5 -- Add fallback search. -- Daily note keyword (od) can create a new daily note that doesn't exist yet (optional feature). See step 3 in osascript. - -v0.1.4 -- Fix bug with daily note (od). - -v0.1.3 -- Now supports paths with special characters (thanks to @hjklapp). -- Uses JXA actions/scripts instead of bash scripts (thanks to @hjklapp). - -v0.1.2 -- new keywords: oo - -v0.1.1 -- new keywords: ov, od, os, or, ot - -## Known bugs - -If the Obsidian app isn't already opened, this workflow will always open the last recently opened vault. This bug is a known issue with Electron apps on MacOS. - uidata - - 001B3A3A-722E-440B-AA33-3589A525546C - - note - Set up: Specify path to Obsidian app. Open Obsidian app. - xpos - 305 - ypos - 80 - - 0796CFDE-8B84-4EAD-A82D-6558AF6C4D42 - - note - Open Obsidian vault. - xpos - 305 - ypos - 360 - - 08189677-1EA8-4DC2-9C09-DC2F2AF0866E - - note - Open inbox note. - xpos - 600 - ypos - 2410 - - 08A7509B-BDA4-455E-A628-38ABF42C04D7 - - xpos - 765 - ypos - 45 - - 0EEA412C-D42E-4C94-9C26-077C1CFEFF9D - - note - Set up: Specify header of daily note to append list items to. - xpos - 145 - ypos - 1700 - - 0F2ED3A2-F821-40B0-9915-C8E5E2D84A02 - - note - Set up: Clear a selected vault. - xpos - 150 - ypos - 1525 - - 1BD03BB0-06B9-47F5-9346-7A829C38B248 - - note - Invoked when you search for a keyword that doesn't match a result on your local. - xpos - 1575 - ypos - 470 - - 249B0782-BFFB-4382-A857-5058D7C3D244 - - note - Define scope based on vaults. - xpos - 840 - ypos - 930 - - 2754DF89-417E-46D0-A435-3ED58F2CB8CF - - xpos - 320 - ypos - 1355 - - 29B3A4DB-80CD-498F-A079-18F1CA7DD20C - - note - Edit subtext to remind yourself of your vault names. - xpos - 115 - ypos - 280 - - 2C31829D-621E-4707-B16D-5899AE7907FD - - xpos - 835 - ypos - 2345 - - 2CC3DBA2-EDA4-4548-A215-611A436E43DB - - note - os. Change settings here. - xpos - 1030 - ypos - 605 - - 2D878E69-78A2-499B-B7F1-BE3B30AD5C70 - - note - Set up: Turn on/off notifications when adding text to inbox note. - xpos - 160 - ypos - 2270 - - 2EEFE48E-B0E2-406A-BCA9-930F5969A364 - - colorindex - 2 - note - Store vault name in variable. Default title can be changed here. - xpos - 835 - ypos - 415 - - 333B2B54-2894-418E-A8DE-522F8BB1F3E5 - - note - Set up: Specify markdown file to use as inbox note. - xpos - 150 - ypos - 2075 - - 353B5FD9-BF6A-4635-9AA1-313E16E86B05 - - note - Obsidian help - xpos - 595 - ypos - 95 - - 360748C4-EF05-4FC2-8AB9-E4A969D2D256 - - xpos - 1655 - ypos - 130 - - 39F0A80F-98F0-47BE-B519-26563D139E54 - - note - replace newline - xpos - 920 - ypos - 1895 - - 3B2DA9A3-761D-467C-BDD7-841584877816 - - note - Set up: Specify hotkey to open inbox note. - xpos - 595 - ypos - 2225 - - 3BD1A5BF-C96B-4C33-B2A6-2EEB18C41B62 - - colorindex - 6 - note - Store file name/title in variable. - xpos - 1095 - ypos - 415 - - 3CF13837-2DBB-46AA-93B4-6CA9598A106E - - note - Open note in Obsidian. - xpos - 1180 - ypos - 385 - - 3DF54CDE-9D13-4486-B7EC-7921A46C8AE2 - - note - Define hotkey to search in vaults. - xpos - 635 - ypos - 1350 - - 3E2AE83C-BAFA-4EB9-ADCB-0BB7989CF9E9 - - xpos - 1185 - ypos - 105 - - 3F7FA866-52E3-46A9-84EE-80A4D3244647 - - note - Set up: Add a vault. - xpos - 145 - ypos - 585 - - 403F9FD9-33F0-42FC-8E20-FEC2C821B083 - - note - Search for recent files (default: last 3 days) - xpos - 645 - ypos - 860 - - 44D69DBA-085D-4208-86A1-CED1CA068AB3 - - note - Search for all files. - xpos - 640 - ypos - 570 - - 46732892-62E0-47CE-B727-EBA967105197 - - note - Define scope based on vaults. - xpos - 840 - ypos - 605 - - 54B8D923-3C08-4CD2-8F05-0AF628F5C029 - - xpos - 110 - ypos - 440 - - 5ADBB309-EC74-453A-B7F5-9E34E2CDB7E3 - - note - or. Change settings here. - xpos - 1025 - ypos - 930 - - 5DE0CED7-F7E2-4A3F-B3A2-53FF23C8C6D3 - - note - Set up: Specify daily note format. - xpos - 155 - ypos - 890 - - 6290B8D5-ECEB-4623-848B-E5AB92089E79 - - xpos - 360 - ypos - 2265 - - 65DEE317-811D-4787-87B4-3909B62061EA - - note - Set up: Specify header of daily note to append todos to. - xpos - 155 - ypos - 1870 - - 67E25071-1FF8-4F8B-9A9F-2509093593B6 - - note - Clear vault. - xpos - 325 - ypos - 1520 - - 6C92B3BB-C347-4EEE-AC10-2EC7E3381F2A - - note - Append text to an inbox note. - xpos - 610 - ypos - 1805 - - 6F34BFA1-14F5-49E9-B25D-417D71A29AD4 - - colorindex - 2 - note - Store vault name in variable. - xpos - 1995 - ypos - 495 - - 6FF78F6F-9167-45D0-B022-7BE55106848C - - note - Define scope based on vaults. - xpos - 815 - ypos - 1230 - - 70AEEB77-35DB-44B9-B633-BE1D2B43D581 - - note - Open note in Obsidian. - xpos - 1275 - ypos - 925 - - 72CFFBA4-02FC-4875-BB2C-562FCF5E43BC - - xpos - 325 - ypos - 1200 - - 73853368-ED10-4729-A4D0-E231647C3CF4 - - xpos - 350 - ypos - 2060 - - 76C3031F-7B85-45C6-9D05-DF5802BBC167 - - note - Daily note. - xpos - 985 - ypos - 170 - - 82B5116A-964C-4E76-AA72-45B844D83BEA - - note - replace newline - xpos - 810 - ypos - 1895 - - 834BB1A9-B643-4448-97B4-B6B6582602CB - - note - Set up: Clear all but help vault. - xpos - 150 - ypos - 1355 - - 854EB1EE-9017-4F43-BC80-BAF317FC5315 - - note - Vault to create new note in. - xpos - 635 - ypos - 380 - - 86967BF2-99A7-43FB-A22A-7AC2F9A8C34C - - colorindex - 6 - note - Store search query in variable. - xpos - 1750 - ypos - 500 - - 8B221971-0089-4DAC-A056-EC2C961C6EAB - - note - Title of new note. - xpos - 925 - ypos - 385 - - 8C017EEF-38DD-4148-9291-9302EFCE33DE - - note - Set up: Specify daily note directory/path. - xpos - 155 - ypos - 1200 - - 9295060C-B513-4806-8F12-52EC6D30C9A3 - - note - Define hotkey to search in vaults. - xpos - 640 - ypos - 700 - - 9F656256-DD01-4508-BF9F-CDB3168DB9B6 - - xpos - 765 - ypos - 180 - - A60FCD19-F3A3-4B26-BDB2-52D548E38686 - - xpos - 120 - ypos - 140 - - A70B656D-CA4C-41F9-99E3-988FB6158F5F - - xpos - 325 - ypos - 585 - - A7CCBBCE-F078-4780-BF5C-42D9CE64D568 - - note - Set up: Specify hotkey to append clipboard contents inbox note. - xpos - 610 - ypos - 1975 - - ADAB8847-A309-4A02-9D42-E8D30C47BC5D - - note - Set up: Specify daily note vault. - xpos - 150 - ypos - 735 - - B1E46976-D5FD-41F9-AC39-C5F7D93F53E7 - - xpos - 350 - ypos - 1865 - - B768A804-C61E-4133-AB9C-74C6448BFC62 - - note - Open/create today's daily note. - xpos - 975 - ypos - 10 - - BDE4BB5C-ECD8-439A-B893-A9C70345010D - - xpos - 120 - ypos - 15 - - C016E20E-3F44-4372-90DC-1B00DA8C07F8 - - note - ot. Change settings here. - xpos - 1020 - ypos - 1230 - - CD6980A3-E50D-4689-B8D6-1A677CDE1914 - - xpos - 1840 - ypos - 470 - - CDEBE435-E442-4054-80BE-59ADD7EEA597 - - note - Append text to end of note as list item. - xpos - 1045 - ypos - 1865 - - CEC4065E-BADA-44B7-A255-4A9D613685E2 - - note - Define hotkey to search in vaults. - xpos - 645 - ypos - 1010 - - D79944EC-E799-4CC4-9961-A6EBF5D6FBDC - - xpos - 325 - ypos - 890 - - DE762236-EFCC-45D3-85CA-A1B6B191762C - - note - Open search pane in Obsidian vault. - xpos - 2075 - ypos - 465 - - E5FAA23D-08AB-47A3-A5C9-5211B9D677C4 - - xpos - 355 - ypos - 1705 - - E6955BE2-FEB7-470D-92BE-03EDF6C498FB - - xpos - 325 - ypos - 735 - - F118473C-D1EF-472F-A1F6-CC9A8C65ABF2 - - note - Open/create tomorrow's daily note. - xpos - 1455 - ypos - 145 - - F565051F-71D8-42F7-A733-5DA9F39AAEA2 - - note - Set up: Specify daily note template. - xpos - 155 - ypos - 1050 - - F8C5232B-3EDC-4388-851E-BFE6602C88D0 - - xpos - 325 - ypos - 1050 - - FFD4328D-FE08-4222-8AA1-FD71A1DC33F9 - - note - Search for files modified today - xpos - 640 - ypos - 1185 - - - variables - - dailyabspath - - dailyformat - - dailyheader - - dailytempabspath - - dailytodaypath - - dailytodo - - dailyvault - - dailyvaultname - - inbox_md - - oinotify - on - vault1 - obsidian help - vault1name - obsidian help - vault2 - - vault2name - - vault3 - - vault3name - - - variablesdontexport - - vault3name - inbox_md - vault3 - dailyvaultname - vault2 - dailyabspath - dailytodo - vault2name - dailyformat - dailytodaypath - dailytempabspath - dailyvault - dailyheader - - version - 0.3.1 - webaddress - https://github.com/hauselin/obsidian-alfred - -