Jump to content


  • Posts

  • Joined

  • Last visited

  • Days Won


Everything posted by alfredclough

  1. Alfred appears to block it so I'm checking if there is a way.
  2. The title says it all. I have a keyword that triggers a snippet when it is typed and would love to have it trigger a workflow where I can send some custom keystrokes. Is that possible? Or can I insert keystrokes into a snippet (I'm guessing not since it is text).
  3. Setting up a new computer and want to sync my Alfred preferences. I've always use the Apps folder and yes I know about the restriction. In the past this always fixed it: defaults write com.runningwithcrayons.Alfred-Preferences-3 dropbox.allowappsfolder -bool TRUE However it is not working on the new machine. I even tried changing the above to Preferences-4 and it still did not work. My other machine is still synching fine. Any idea what I need to do on the new machine to allow Alfred to load my synced preferences from the Apps folder?
  4. Thanks! That fixed it. Hmm. I wonder why it worked for years 🤔
  5. Every since I've upgraded to Catalina I have a workflow that is throwing an error but I cannot figure out why. It is a script folder that searches file in a folder. Here is the error: [08:11:59.413] Logging Started... [08:12:03.783] Recent Downloads[Script Filter] Queuing argument '' [08:12:04.065] Recent Downloads[Script Filter] Script with argv '(null)' finished [08:12:04.069] Recent Downloads[Script Filter] Warning: Use of undefined constant BASE_DIR - assumed 'BASE_DIR' (this will throw an Error in a future version of PHP) in Command line code on line 1 Warning: Use of undefined constant FILE_PATTERN - assumed 'FILE_PATTERN' (this will throw an Error in a future version of PHP) in Command line code on line 8 Here is the code for the script filter: define(BASE_DIR, getenv('HOME') . '/Downloads'); $file_pattern = "{query}"; if ( $file_pattern ) { $file_pattern = trim($file_pattern); $file_pattern = preg_quote($file_pattern); $file_pattern = '/' . str_replace(' ', '.', $file_pattern) . '/i'; } define(FILE_PATTERN, $file_pattern); $dir_contents = scandir(BASE_DIR); $files = array(); foreach ( $dir_contents as $file ) { $files[$file] = filemtime(BASE_DIR . '/' . $file); } arsort($files, SORT_NUMERIC); //filter out non matching files if ( $file_pattern ) { foreach ( $files as $file => $modtime ) { if ( ! preg_match(FILE_PATTERN, $file) ) { unset($files[$file]); } } } $items = new SimpleXMLElement("<items></items>"); if ( count($files) == 0 ) { $c = $items->addChild('item'); $c->addAttribute('arg', 'No Match'); $c->addAttribute('valid', 'no'); $c->arg = 'No Match'; $c->addAttribute('type', 'file'); $c->title = 'No Match'; $c->subtitle = ''; $c->icon = 'icon.png'; $c->icon->addAttribute('type', 'default'); } foreach( $files as $basename => $modtime ) { $fullpath = BASE_DIR . '/' . $basename; if ( substr($basename, 0, 1) != '.' ) { $c = $items->addChild( 'item' ); $c->addAttribute('arg', $fullpath); $c->arg = $fullpath; $c->addAttribute('type', 'file'); $c->title = $basename; $c->subtitle = $fullpath; $c->icon = $fullpath; $c->icon->addAttribute('type', 'fileicon'); } } echo $items->asXML(); I can't quite figure out what went wrong? I've used this for a long time however if there is an easier way to do this I'm also open for ideas.
  6. Sorry about that--I updated the link.
  7. To make a long story short, I updated a workflow. It has a long action that is done by an Alfred Script object in AppleScript. In certain cases, I want to do some of the work via a python script rather than in AppleScript. To do this I added the following which checks a variable already set and if so tries to run a python script I put in the workflow folder. (The argument passed is encapsulated in quotes) --check if online and if so, use Python. if contents of online is "online" then --run script to put passage onto the clipboard do shell script "python ./get_verse.py \"" + passageRef + "\"" --paste the passage into the current app keystroke "v" using command down else The réponse I'm getting back in Alfred debugging is: [2019-01-16 15:18:30][ERROR: action.script] /Users/samuel/Library/Caches/com.runningwithcrayons.Alfred-3/Workflow Scripts/27C48708-2D1A-4008-BCBF-CCABCD6247DC:801:811: execution error: Can’t make "python ./get_verse.py \"" into type number. (-1700) This tells me it's not executing the python script. I'm sure there's something simple here I'm missing but cannot figure out what it is.
  8. Thank you! It's a solution I found that seemed to work reasonable quickly. If there's a better option I'm open to it.
  9. I have a strange problem I am trying to solve. I must be missing something because this should be quite simple. I have a script to check and see if the computer is online. Here is the script: echo -e "GET http://google.com HTTP/1.0\n\n" | nc google.com 80 > /dev/null 2>&1 if [ $? -eq 0 ]; then echo "online" else echo "offline" fi After this I have two filters. One filter checks if the value is online and the other checks if the value is offline. The problem is when I run the workflow it always stops at the filter and does not continue. I ran Alfred in debut and here is what I see: [2019-01-10 07:38:49][action.script] Processing output of 'utility.filter' with arg 'online ' [2019-01-10 07:38:49][action.script] Processing output of 'utility.filter' with arg 'online ' It appears to me that there is an extra new line after "online" which would explain why the filter is not successfully completing. However, I cannot see any reason why an extra new line would be inserted? This seems like it should be something very simple so I must be missing something but I cannot see what it is.
  10. I found the bug fix for tags with spaces. In the script that is run by the Bear Search Tag trigger to open Bear, the first line of the script is: orig_query={query} It needs to be changed to enclose {query} in quotes otherwise any tag with spaces in it will fail. Here is what the corrected line should be: orig_query="{query}"
  11. I'm not sure if anyone else has run into this, but it seems like the ability to open a tag in bear does not work if a tag has spaces in it. I'm guessing something's not getting encoded properly somewhere?
  12. I had created a Bear workflow to automate a few things and this workflow adds some really helpful functionality. Thank you
  13. Playing around more with Script filter looks like it will work. I think I can capture the input plus set a variable for which option a user clicked so I should be able to do it all in one step.
  14. Right--My question is how I can capture an argument at the same time as giving the user three selections to choose between in one step.
  15. Here's what I want to do: User selects an option in a script filter. That passes them to a second step which is a list filter where they can make a choice and optionally enter a second argument. In my case what I want to do is let someone enter a search parameter in that second step. So the second step is a list filter that gives them three choices: search, search in a new window, search in a new tab and allows them to enter a search parameter. My problem is that anytime you enter an argument in a list filter it filters the options if that makes sense, but what I want to do is let someone enter a parameter that is passed along the workflow but have a choice of how to action that parameter. I realize I could easily do this by using modifiers (shift, fn, etc) but I'd rather make it more obvious by picking the option out from a list. I haven't created it yet or I would attach the workflow--I'm looking for input on how to do this.
  16. I tried that and I can build the JSON when I run the AppleScript in Apple's script editor, but when I tried to run it using Alfred, I get the message: execution error: System Events got an error: Can’t get path of file of application process "Safari" Here's the AppleScript I'm running: on run argv tell application "System Events" set runningProcesses to (every process whose background only is false) end tell set alfredJSON to "{\"items\": [" repeat with runningProcess in runningProcesses set appName to name of runningProcess set appPath to path of file of runningProcess set alfredJSON to alfredJSON & "{\"uid\": \"" & appName & "\", \"type\": \"default\", \"title\": \"" & appName & "\",\"subtitle\": \"\", \"arg\": \"" & appName & "\",\"autocomplete\": \"insert passage\", \"icon\": { \"type\": \"fileicon\", \"path\":\"" & appPath & "\" }}," end repeat set alfredJSON to alfredJSON & "]}" return alfredJSON end run Here's a link to the workflow. I'm using Alfred 3.6 and Mac OS 10.13.3
  17. I have a workflow where I want to provide a list of applications so that an application can be selected and the workflow continue. I want a list of the current running applications so I'm using a Script Filter. My question is how can I load the icon of the app to show it in the list rather than the icon of the workflow? I can't seem to find out how to programmatically load it. Here is the AppleScript I'm using with the Script Filter: on run argv tell application "System Events" set runningProcesses to (name of every process whose background only is false) end tell set alfredJSON to "{\"items\": [" repeat with appName in runningProcesses --set appName to name of runningProcess set alfredJSON to alfredJSON & "{\"uid\": \"" & appName & "\", \"type\": \"default\", \"title\": \"" & appName & "\",\"subtitle\": \"\", \"arg\": \"" & appName & "\",\"autocomplete\": \"insert passage\"}," end repeat set alfredJSON to alfredJSON & "]}" return alfredJSON end run
  18. I used NSPasteboard. For reference in case someone else lands here, here's what I used. The first option gets the html version of what's on the clipboard, the second version gets the text (how Alfred returns the clipboard in a workflow). In the first option, you could use other formats (rtf, etc) as per Apple's documentation. from AppKit import * # Get the current clipboard directly from Mac pb = NSPasteboard.generalPasteboard() # Check if we need html format from the clipboard if ulFormat == "html": cbDirect = pb.stringForType_("public.html") else: cbDirect = pb.stringForType_(NSStringPboardType)
  19. I tried a shell script first but I was running into problems with how it escaped markdown characters. Probably easy to fix, but to be honest it's been over a decade since I did any bash scripts so it wasn't obvious to me how to fix it. I solved it by doing a python script. In the process I discovered that Alfred seems to always use the plain text version of the clipboard in workflows, so I had to use Python to pull the clipboard directly if I wanted html that had been copied instead of just text. Regardless, Python solved the problem.
  20. Here's what I'm trying to do: I frequently capture information and store it in Ulysses for research on writing projects. I typically copy/paste it into Ulysses in the appropriate group. I created a workflow to automate this via Alfred. The workflow takes the contents of the clipboard and passes it to an Openurl to use Ulysses x-callback-url to add a new sheet. So far, so good. Frequently I copy/paste content that is online, and I want to keep the url of the content for later research. In order to automate this as much as possible, I used clipboard history. I copy the url, then copy the content, then insert it into Ulysses. In order to automate this completely, I modified my workflow so that it checks the chipboard history and if {clipboard:1} is a url, it combines that url with the content on the current clipboard and then passes it to Ulysses. I used an AppleScript to do this by storing the clipboard and previous item from clipboard history into a variable, loading those variables in AppleScript and then creating a new string. Here's the problem: when I do this something is wrong with the encoding of the string and I get strange characters in it. For example, apostrophes become Äô. Text passed through the workflow fine until I added this AppleScript. I don't know if the problem is when the AppleScript loads the variables using system attribute or if the problem is when it returns the string. I've included the AppleScript below to show what is does. Does anyone know how to get the AppleScript to encode the text properly? I tried using Run NSApplescript instead. It seems to properly encode the text, but the problem is that I cannot find a way to pass the clipboard contents since it doesn't read workflow variables and as far as I know, can't access the clipboard history. If an NSApplescript action could access the clipboard that would be an ideal solution. on run argv set theQuery to item 1 of argv set cbCurrent to (system attribute "cb_current") set cbPast to (system attribute "cb_past") set httpPrefix to "http" set newQuery to theQuery if cbPast starts with httpPrefix then set newQuery to theQuery & "\n" & "%% Source: " & cbPast & "\n" & cbCurrent else set newQuery to theQuery & "\n" & cbCurrent end if return newQuery end run
  • Create New...