ScreenShot+Record Desktop

UUID: ScreenShot+RecordDesktop@tech71
Last edited:
2 weeks ago 2021-02-17, 18:00
Last commit: [f1a2ab1d] ScreenShot+RecordDesktop@tech71: Update German l10n

Take A Snapshot Or Record Your Desktop (recording requires the packages ffmpeg, xdotool & x11-utils to be installed)



Screenshot & Record Desktop


To use this applets recording functionality you must have the following packages installed.

  • ffmpeg
  • xdotool
  • x11-utils

To install in Linux Mint open a terminal (Ctrl-Alt-T) and enter the command apt install ffmpeg xdotool x11-utils

Log In To Comment!


ChooChooAl-10 months ago
Tried Dragoş applet suggestion. Didn't work for me. No errors at least but even when I put in the default path I want, it still falls into ~/Pictures
ChooChooAl-8 months ago
The error message is that the application is not compatible. It downloads and installs but adding to my panel is where I get the message. I did not try beyond that.
ChooChooAl-8 months ago
Disregard this last message. I was replying to the wrong applet.
hansbee-1 year ago
yep, there is no audio on Linux Mint 19.3 Tricia with ffmpeg, xdotool and x11-utils installed.
jcbodnar-1 year ago
Everything worked great until I upgraded to Linux Mint 19.3 Tricia. Since then when I try to record video (current window) with audio I get the audio but just a black screen for the video. I have ffmpeg, xdotool and x11-utils installed.
BRENTGAMEZ-1 year ago
I like it but I do wish there was a way to record the desktop sounds and mic audio separate cause sometimes I want to record my desktop with sound but no mic audio included, Also if there was a way to change the default save location or it be able to ask you were you want the file to save to after the screenshots or recordings are done, that would be grand.
Dragoş-1 year ago
Until (and if) the author decides to improve this applet, I've taken upon myself to make a few changes which have been repeatedly asked here, namely 'save to clipboard' and 'allow custom paths for saving'. Disclaimer: I'm no programmer, and although the changes work for me (on Mint 19.2 beta) you may have a different experience. Please exercise caution if you decide to use the modified file! Also please note there are a few places where you would have to enter your own preferred info (save paths, image prefix/suffix, delay time) - those have been clearly marked in the beginning of the file. Special note: all spaces, parenthesis and other special characters need to be escaped by double-backslash (see the prefix example). Having said that, here's the new contents of applet.js that should replace the original at /home/<username>/.local/share/cinnamon/applets/ScreenShot+RecordDesktop@tech71 (make a backup copy of the original first !!!): //=============================================================== //ScreenShot+Record Applet By Infektedpc // Modded by Drugwash 2019.08.02 const Applet = imports.ui.applet; const Main = imports.ui.main; const PopupMenu = imports.ui.popupMenu; const Util = imports.misc.util; const GLib =; const UUID = 'ScreenShot+RecordDesktop@tech71'; const Gettext = imports.gettext; // The constant values below can be modified by the user const UImgPath = '/media/<username>/Data/Downloads/Pictures/Screenshots'; // destination path for images (escape any spaces, paranthesis etc in your path) const UVidPath = '/media/<username>/Data/Downloads/video/screencast'; // destination path for videos (escape any spaces, paranthesis etc in your path) const UImgPre = 'Screenshot\\ from\\ '; // Image filenames prefix (note the spaces escaped by double-backslashes!) const UImgSuf = ''; // Image filenames suffix (escape any spaces, paranthesis etc) const UDel = '5'; // User-defined delay (in seconds) for whole screen screenshot // No more user modifications after this point (unless you know what you're doing!) Gettext.bindtextdomain(UUID, GLib.get_home_dir() + "/.local/share/locale") function _(str) { return Gettext.dgettext(UUID, str); } function ConfirmDialog(){ this._init(); } function MyApplet(orientation, panelHeight, instanceId) { this._init(orientation, panelHeight, instanceId); } function SetSSpath(params) { var d = new Date(); var df = d.getFullYear() + "-" + ("0"+(d.getMonth()+1)).slice(-2) + "-" + ("0" + d.getDate()).slice(-2) + "\\ " + ("0" + d.getHours()).slice(-2) + "-" + ("0" + d.getMinutes()).slice(-2) + "-" + ("0" + d.getSeconds()).slice(-2); var imgpath=UImgPath + "/" + UImgPre + df + UImgSuf + ".png"; // global.log("Format=" + df + "\tPath=" + imgpath); Main.Util.spawnCommandLine("gnome-screenshot " + " " + params + " -f " + imgpath); } MyApplet.prototype = { __proto__: Applet.IconApplet.prototype, defineScreenShotDefault: function () { //Advanced Screenshot - opens gnome-screenshot"Interactive ScreenShot"), function(event) { SetSSpath("--interactive"); }); }, defineScreenShotMenuItemC: function () { this.screenshotItemC = new PopupMenu.PopupSubMenuMenuItem(_("Copy to Clipboard"));"Current Window"), function(actor, event) { SetSSpath("-c -w --delay=1"); });"Selected Area"), function(actor, event) { SetSSpath("-c -a"); });"Whole Screen"), function(actor, event) { SetSSpath("-c --delay=1"); });"Whole Screen (delayed)"), function(actor, event) { SetSSpath("-c --delay=" + UDel); }); }, defineScreenShotMenuItemS: function () { this.screenshotItemS = new PopupMenu.PopupSubMenuMenuItem(_("Save to Disk"));"Current Window"), function(actor, event) { SetSSpath("-w --delay=1"); });"Selected Area"), function(actor, event) { SetSSpath("-a"); });"Whole Screen"), function(actor, event) { SetSSpath("--delay=1"); });"Whole Screen (delayed)"), function(actor, event) { SetSSpath("--delay=" + UDel); });;; PopupMenu.PopupSeparatorMenuItem()); }, defineRecordMenuItem: function () { this.recordItem = new PopupMenu.PopupSubMenuMenuItem(_("Record Screencast")); var self = this; //Start Recording With Audio"Record Desktop With Audio"), function(actor, event) { self.set_applet_icon_symbolic_name("media-record"); Main.Util.spawnCommandLine("bash " + GLib.get_home_dir() + "/.local/share/cinnamon/applets/" + UUID + "/"); Main.Util.spawnCommandLine("notify-send --icon=gtk-add '" + _("Recording") + "' '" + _("With-Audio") + "'"); }); //Start Recording No Audio"Record Desktop Without Audio"), function(actor, event) { self.set_applet_icon_symbolic_name("media-record"); Main.Util.spawnCommandLine("bash " + GLib.get_home_dir() + "/.local/share/cinnamon/applets/" + UUID + "/"); Main.Util.spawnCommandLine("notify-send --icon=gtk-add '" + _("Recording") + "' '" + _("No-Audio") + "'"); }); //Start Recording With Audio"Record Current Window With Audio"), function(actor, event) { self.set_applet_icon_symbolic_name("media-record"); Main.Util.spawnCommandLine("bash " + GLib.get_home_dir() + "/.local/share/cinnamon/applets/" + UUID + "/"); Main.Util.spawnCommandLine("notify-send --icon=gtk-add '" + _("Recording") + "' '" + _("With-Audio") + "'"); }); //Start Recording No Audio"Record Current Window Without Audio"), function(actor, event) { self.set_applet_icon_symbolic_name("media-record"); Main.Util.spawnCommandLine("bash " + GLib.get_home_dir() + "/.local/share/cinnamon/applets/" + UUID + "/"); Main.Util.spawnCommandLine("notify-send --icon=gtk-add '" + _("Recording") + "' '" + _("No-Audio") + "'"); }); //Stop Recording"Stop Recording"), function(actor, event) { self.set_applet_icon_symbolic_name("camera-photo-symbolic"); Main.Util.spawnCommandLine("killall -SIGTERM"); Main.Util.spawnCommandLine("killall -SIGTERM"); Main.Util.spawnCommandLine("killall -SIGTERM ffmpeg"); Main.Util.spawnCommandLine("notify-send --icon=gtk-add '" + _("Recording-Stopped") + "'"); Main.Util.spawnCommandLine("notify-send --icon=gtk-add '" + _("Recording-Finished") + "'"); });; PopupMenu.PopupSeparatorMenuItem()); }, _init: function(orientation, panelHeight, instanceId) {, orientation, panelHeight, instanceId); try { this.set_applet_icon_symbolic_name("camera-photo-symbolic"); this.set_applet_tooltip(_("Take A Snapshot or Record Your Desktop")); this.menuManager = new PopupMenu.PopupMenuManager(this); = new Applet.AppletPopupMenu(this, orientation); this.menuManager.addMenu(; this._contentSection = new PopupMenu.PopupMenuSection();; this.defineScreenShotDefault(); this.defineScreenShotMenuItemC(); this.defineScreenShotMenuItemS(); //Record My Desktop - Dropdown Menu this.defineRecordMenuItem(); //Open Screenshot Pictures Folder"Open Pictures Folder"), function(actor, event) { // For the Pictures user folder Main.Util.spawn_async(["xdg-open", UImgPath], null); }); //Open Recorded Video Folder"Open Videos Folder"), function(actor, event) { // For the Videos user folder Main.Util.spawn_async(["xdg-open", UVidPath], null); }); // Doesn't work (yet)'open-state-changed', Lang.bind(this, function(){ popupMenuExpander.setSubmenuShown(true); })); } catch (e) { global.logError(e); } }, on_applet_clicked: function(event) {; }, }; function main(metadata, orientation, panelHeight, instanceId) { let myApplet = new MyApplet(orientation, panelHeight, instanceId); return myApplet; } //=============================================================== That's it, hope it works for you but don't blame me if it doesn't. :-)
Inoro-1 year ago
Would be way more useful with the ability to change save location, at the moment this is not particularly useful.
ChooChooAl-2 years ago
Are there shortcuts to do selected area or window without having to click the applet icon on the panel? I want to capture another window that closes as soon as I click anywhere. I currently have to capture the whole screen and then edit it in GIMP or such. Yes, save location and filename would be a great option.
Hansen-2 years ago
It would be nice if it would let me use a custom save path and save the image to my clipboard so I can paste it into another application too.
Knezev-2 years ago
I noticed only one problem, around the sound, it always takes my sound from the microphone, Record Current Window With Audio - it takes a sound from my microphone, not with window.
MarcoB-0049-2 years ago
EU/DE: Sehr gute Arbeit, keine Frage! Eine Option zum Ändern des Standardpfads für die Bildspeicherung, z.B. Bilder/ein Unterordner, würde das Applet noch komfortabler gestalten. ;) EU-brexit/UK: Very good work, no question! An option to change the default path for image storage, e.g. images/subfolders, would make the applet even more comfortable. ;)
Knezev-2 years ago
Works great :), although I'm a little burden on the computer when recording. Add if you want the option of the screen resolution 720p and 480p and other formats eg mp4,3gp...
Jano9055-2 years ago
An error occurred during the installation of ScreenShot+RecordDesktop@tech71. Please report this incident to its developer. Detaily: [Errno 13] Prístup odmietnutý: '/home/*****/.local/share/cinnamon/applets/ScreenShot+RecordDesktop@tech71/applet.js'
Steve Ebey
Steve Ebey-2 years ago
Keyboard shortcuts to start and stop screen recorder, so I do not have to edit recording and remove the popup of my stopping the recording.
2dxb-2 years ago
"Record Desktop" does not work.
©TriMoon™-2 years ago
Could you add options to configure where to save the screenshots and videos?
Seth Bergman
Seth Bergman-3 years ago
Very nice work!
Christopher .Karkarkar
Great applet
Murat Çileli
Murat Çileli-3 years ago
Bora Ön
Bora Ön-3 years ago
Good shortcut.