Run shell script on keyboard shortcut
Solution 1:
I'm pretty sure the problem is the ~
. That is a shell (commandline shell) feature and the keyboard shortcuts are handled by the graphical shell. I don't think that ~
or $HOME
will be expanded correctly there. So, instead of ~/path/to/script
, use
/home/username/Documents/Various/SyncStuff.sh
That assumes you have made the script executable. If not, use
sh /home/username/Documents/Various/SyncStuff.sh
The sh
should be enough since the $PATH
is also read by graphical shells as far as I know. If that also fails, try with the full path but I doubt it will be necessary:
/bin/sh /home/username/Documents/Various/SyncStuff.sh
Solution 2:
Awesome post. I've been searching for a way to do this for the last few versions of ubuntu (currently on 19.04)
Using the full path is what did it. Thank you. What worked for me was the following...
I was looking for a way to set a hotkey to insert the date / time into whatever document I had open.
I found a script online and made a few minor changes (primarily the hotkey association because I didn't like their choice since it was a key combo that was already used by ubuntu) to one I wanted and which was also available.
Created a file called 'insertTimestamp.sh' in my root directory.
I then pasted (and slightly modified) the code to my liking...
Copy/paste the code below
# ! /bin/sh
xdotool keyup "super+t"; # needed to refresh the status of the request. simulates letting go of the hotkey super+t keys, otherwise it interferes with ctrl-v paste function
date '+%Y-%m-%d %H:%M:%S' | tr -d "\n" | xsel -i -b; # add the date/time to the clipboard
xdotool key "ctrl+v"; #simulate a ctrl-v
# xdotool keydown "super"; #unpretend the user let go of the super key
Once I pasted the above into the file and saved it, it was necessary to change the permissions of the file
chmod u+x ~/insertTimestamp.sh
Once done, you simply need to search for "keyboard" => choose Keyboard => Go to Application Shortcuts Tab => Add => For "Command" type sh the/full/path/insertTimestamp.sh
(update your full path) => Set keys as super+t.
I hope this provides a decent example of how to set this up.