Create a supported SFTP plugin for shutter
Step-by-step guide to install Shutter on Ubuntu 24.04, enable annotations, and configure SFTP uploads to your own server for instant, shareable screenshot links
🎯 Goal
Install Shutter on Ubuntu 24.04, enable annotation tools, and configure it to automatically upload screenshots to your own web hosting using SFTP.
🛠️ Step 1 — Install Shutter
Shutter isn’t installed by default, but it’s available in Ubuntu’s repositories.
sudo apt update
sudo apt install shutterYou can now launch Shutter from the application menu or by typing:
shutter🖌️ Step 2 — Enable the Edit (Annotate) Feature
Sometimes the Edit button is disabled if dependencies are missing. Install them like this:
sudo apt install libgoo-canvas-perlNow restart Shutter — the Edit option should be active, letting you crop, blur, draw arrows, and add text to your screenshots.
📤 Step 3 — Add SFTP Upload Support
By default, Shutter only supports FTP/Imgur/Dropbox uploads. To use SFTP we need a plugin.
- Install the required Perl library:
sudo apt install libnet-sftp-foreign-perl - Download the community SFTP plugin:
wget https://raw.githubusercontent.com/elivin/shutter-sftp/master/SftpUpload.pm - Move it into Shutter’s upload plugin directory:
sudo mv SftpUpload.pm /usr/share/shutter/resources/system/upload_plugins/upload/ sudo chmod +x /usr/share/shutter/resources/system/upload_plugins/upload/SftpUpload.pm
(Optional) To make SFTP the default, move other upload plugins into a backup folder:
sudo mkdir -p /usr/share/shutter/resources/system/upload_plugins/upload.bak
cd /usr/share/shutter/resources/system/upload_plugins/upload
sudo mv !(SftpUpload.pm) ../upload.bak/⚙️ Step 4 — Configure Your SFTP Settings
Create a JSON config file:
nano ~/.config/shutter-sftp.jsonExample contents (replace with your host/user/password):
{
"host": "sftp.examplehost.com",
"username": "exampleuser",
"password": "EXAMPLE_PASSWORD",
"port": 22,
"directory": "screenshots",
"link": "https://example.com/screenshots"
}Save and exit.
🔑 Step 5 — Accept the Server’s Host Key
On first connection, SFTP asks if you trust the server. Pre-seed the key:
ssh-keyscan -H sftp.examplehost.com >> ~/.ssh/known_hostsThis avoids Shutter getting stuck waiting for confirmation.
📂 Step 6 — Prepare the Remote Folder
Log in via SFTP and create the folder where screenshots will be stored:
sftp exampleuser@sftp.examplehost.com
sftp> mkdir screenshots
sftp> bye🖼️ Step 7 — Take and Upload Screenshots
- Launch Shutter.
- Take a screenshot (full screen, window, or selection).
- Annotate if needed (blur sensitive info, draw arrows, etc.).
- Click Upload → SFTP.
- Shutter uploads the file, and you get a direct link like:
https://example.com/screenshots/Selection_001.png
🧯 Troubleshooting
- Upload fails with “authenticity of host can’t be established” → run
ssh-keyscanas shown above. - Upload fails with “Permission denied” → check directory permissions on your server.
- Upload goes to wrong folder → adjust
directoryin JSON. - Still defaults to other uploaders → remove/backup other plugins so only SFTP remains.
🛡️ Security Notes
- Passwords in the JSON file are plain text. Restrict file permissions:
chmod 600 ~/.config/shutter-sftp.json - Consider switching to SSH key authentication for better security.
🎉 Conclusion
With Shutter configured for SFTP, I can now capture, annotate, and instantly share screenshots hosted on my own domain with a simple link.
This makes it a powerful replacement for third-party screenshot tools that don’t integrate well with Ubuntu 24.04 and KDE.