Jump to content

Bash Output to Notification

Recommended Posts

I feel like I must be too stupid to use Alfred and maybe I shouldn't even try to do this anymore.


I just want to take the output of a bash command and post to OSX Notification; I honestly can't believe how so dramatically different (difficult/frustration/inane) trying to do this simple thing is compared with the amazing ease of use and simple to understand the rest of Alfred typically is.


I will post my workflow as it is currently, but it should be noted this is perhaps the 37th attempt to figure it out:


Workflow view attached, where contents of 'Terminal Command' are as follows:


export LPR
LPR=$(/usr/local/bin/xmda -l | grep {query})
echo $LPR


Terminal Command

xmda is simply a program (which works perfectly fine at bash prompt) that outputs a number of lines of text. Here I am simply filtering that output using grep, and again this works at a bash prompt without fail.  I am using the full path, although that is not necessary at a bash prompt (however it works either way, this is not a path issue). 


Post Notification

As the image shows, I have {query} in the Text field, conforming I believe anyway, to the ahem, unique manner in which Alfred requires {query} to be used as a "placeholder" variable of sorts, rather than simply allowing normal variable use. Neverminding the latter, I am confounded and feel like I am doing this right.  I have searched and read numerous articles and this forum, but each bit of help I can find either seems to fail for me or doesn't come quite close enough to do exactly what I am trying to in this case —leaving me to wonder if there is something "off".


I have tried to do something like this perhaps a dozen times in Alfred, each time going away insanely frustrated --I can get around in bash and understand basic programming reasonably well. I think that contributes to the way I feel and why I always end up walking away from each effort.


here' s the part where I get schooled, and I stand humbly by with great appreciation for any help that can be provided by those more knowledgeable (and patient) than I!


--Thank you for reading.


Share this post

Link to post

The problem is you’re using a Terminal Command. What you want is a Run Script with bash as the language.

A Terminal Command will spawn a terminal (i.e. an external app) and tell that app to do things. It has no way for that app to return things to the Workflow itself — it’s a separate thing. By doing it in a Run Script (which you should be doing most of the time anyway), the end of your script will then be passed along and things will work as you expect.

Terminal Command definitely has its place, but I see it used wrong more often than I see it used when appropriate. It seems like a perfectly normal mistake for users new to scripting to do, though. I wonder if Alfred should show a warning on the difference between the two methods whenever a user adds a Terminal Command.

Edited by vitor

Share this post

Link to post

The only real reason you'd want to use Terminal Command is to launch an interactive terminal application, such as an SSH session or the like.

Share this post

Link to post

I was initially completely befuddled because I knew for certain that I had tried that and every other imaginable method/approach.  


In the end, apparently it is not acceptable to use a pipe (e.g., | pbcopy, or as I had used above | grep) to the end of the line or it wipes out the value of {query}.  Is there a way around that?


I re-worked my process in order to get the output into my clipboard another way, and ultiamtely I'm really happy it works, I just think there must be something unnecessarily confusing about it or I wouldn't have run into this problem, it is just too easy!??   I don't know...



Edited by apgarmd

Share this post

Link to post

Pipes work fine. Any script output to STDOUT will be passed as input to any downstream Post Notification output.


You're probably doing something wrong, like printing an empty line that's causing your actual message to disappear.

Share this post

Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...