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.

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
-
-