ScreenShot+Record Desktop

UUID: ScreenShot+RecordDesktop@tech71
Last edited:
2 days ago 2019-10-19, 17:00 UTC
Last commit: [7c2233d6] New Italian translations (#2634)

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

README

Close

Screenshot & Record Desktop

Dependencies

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!

16 Comments

BRENTGAMEZ
BRENTGAMEZ-1 month 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ş
Dragoş-2 months 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 = imports.gi.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 this.menu.addAction(_("Interactive ScreenShot"), function(event) { SetSSpath("--interactive"); }); }, defineScreenShotMenuItemC: function () { this.screenshotItemC = new PopupMenu.PopupSubMenuMenuItem(_("Copy to Clipboard")); this.screenshotItemC.menu.addAction(_("Current Window"), function(actor, event) { SetSSpath("-c -w --delay=1"); }); this.screenshotItemC.menu.addAction(_("Selected Area"), function(actor, event) { SetSSpath("-c -a"); }); this.screenshotItemC.menu.addAction(_("Whole Screen"), function(actor, event) { SetSSpath("-c --delay=1"); }); this.screenshotItemC.menu.addAction(_("Whole Screen (delayed)"), function(actor, event) { SetSSpath("-c --delay=" + UDel); }); }, defineScreenShotMenuItemS: function () { this.screenshotItemS = new PopupMenu.PopupSubMenuMenuItem(_("Save to Disk")); this.screenshotItemS.menu.addAction(_("Current Window"), function(actor, event) { SetSSpath("-w --delay=1"); }); this.screenshotItemS.menu.addAction(_("Selected Area"), function(actor, event) { SetSSpath("-a"); }); this.screenshotItemS.menu.addAction(_("Whole Screen"), function(actor, event) { SetSSpath("--delay=1"); }); this.screenshotItemS.menu.addAction(_("Whole Screen (delayed)"), function(actor, event) { SetSSpath("--delay=" + UDel); }); this.menu.addMenuItem(this.screenshotItemC); this.menu.addMenuItem(this.screenshotItemS); this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); }, defineRecordMenuItem: function () { this.recordItem = new PopupMenu.PopupSubMenuMenuItem(_("Record Screencast")); var self = this; //Start Recording With Audio this.recordItem.menu.addAction(_("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 + "/screencapturesound.sh"); Main.Util.spawnCommandLine("notify-send --icon=gtk-add '" + _("Recording") + "' '" + _("With-Audio") + "'"); }); //Start Recording No Audio this.recordItem.menu.addAction(_("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 + "/screencapture.sh"); Main.Util.spawnCommandLine("notify-send --icon=gtk-add '" + _("Recording") + "' '" + _("No-Audio") + "'"); }); //Start Recording With Audio this.recordItem.menu.addAction(_("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 + "/screencapturesoundwindow.sh"); Main.Util.spawnCommandLine("notify-send --icon=gtk-add '" + _("Recording") + "' '" + _("With-Audio") + "'"); }); //Start Recording No Audio this.recordItem.menu.addAction(_("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 + "/screencapturewindow.sh"); Main.Util.spawnCommandLine("notify-send --icon=gtk-add '" + _("Recording") + "' '" + _("No-Audio") + "'"); }); //Stop Recording this.recordItem.menu.addAction(_("Stop Recording"), function(actor, event) { self.set_applet_icon_symbolic_name("camera-photo-symbolic"); Main.Util.spawnCommandLine("killall -SIGTERM screencapture.sh"); Main.Util.spawnCommandLine("killall -SIGTERM screencapturesound.sh"); 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") + "'"); }); this.menu.addMenuItem(this.recordItem); this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); }, _init: function(orientation, panelHeight, instanceId) { Applet.IconApplet.prototype._init.call(this, 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); this.menu = new Applet.AppletPopupMenu(this, orientation); this.menuManager.addMenu(this.menu); this._contentSection = new PopupMenu.PopupMenuSection(); this.menu.addMenuItem(this._contentSection); this.defineScreenShotDefault(); this.defineScreenShotMenuItemC(); this.defineScreenShotMenuItemS(); //Record My Desktop - Dropdown Menu this.defineRecordMenuItem(); //Open Screenshot Pictures Folder this.menu.addAction(_("Open Pictures Folder"), function(actor, event) { // For the Pictures user folder Main.Util.spawn_async(["xdg-open", UImgPath], null); }); //Open Recorded Video Folder this.menu.addAction(_("Open Videos Folder"), function(actor, event) { // For the Videos user folder Main.Util.spawn_async(["xdg-open", UVidPath], null); }); // Doesn't work (yet) this.menu.connect('open-state-changed', Lang.bind(this, function(){ popupMenuExpander.setSubmenuShown(true); })); } catch (e) { global.logError(e); } }, on_applet_clicked: function(event) { this.menu.toggle(); }, }; 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
Inoro-5 months ago
Would be way more useful with the ability to change save location, at the moment this is not particularly useful.
ChooChooAl
ChooChooAl-8 months 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
Hansen-9 months 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
Knezev-1 year 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
MarcoB-0049-1 year 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
Knezev-1 year 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
Jano9055-1 year 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-1 year 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
2dxb-1 year ago
"Record Desktop" does not work.
©TriMoon™
©TriMoon™-1 year ago
Could you add options to configure where to save the screenshots and videos?
Seth Bergman
Seth Bergman-1 year ago
Very nice work!
Christopher .Karkarkar
Great applet
Murat Çileli
Murat Çileli-2 years ago
Useful.
Bora Ön
Bora Ön-2 years ago
Good shortcut.