ScreenShot+Record Desktop

UUID: ScreenShot+RecordDesktop@tech71
Last edited:
2 months ago 2024-10-10, 10:22
Last commit: [fd4d607e] ScreenShot+RecordDesktop@tech71: Add Brazilian Portuguese translation (#6481)

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!

40 Comments

xGSTx
xGSTx-2 months ago
Please add support to choose Applet Icon in Panel. Users with Custom Icon Packs cannot choose Icon themselves and have to live with whatever Icon is displayed in the Panel. Please add this Configuration option to this wonderful Panel Applet so users can themselves pick an Icon they would like to have.
Łukasz
Łukasz-2 months ago
Hello, Is there a shorcut for Selected Area Screenshot (such as CTRL+WKEY+S on Windows)? If not, could I setup one?
Zero
Zero-2 months ago
Also needs: libnotify-bin
bOsO400
bOsO400-8 months ago
Very Usefull app
Lee C Williams
Lee C Williams-9 months ago
Confirming the previous comment, has been an issue since LM21. Behaves fine for any subsequent use after the initial one. It's also quite a hindrance not being able to change where screenshots and videos are saved to.
junglized
junglized-9 months ago
Everytime I want to use the applet it never works at first click. I have to click second time to "activate" any of available screenshot options. Otherwise decent applet. Thanks!
Fábio Ferreira
Fábio Ferreira-10 months ago
Works very well. Video recording is saving with some glitches, but it's not a major problem. Overall, it's a clean and easy to use applet. My regards to icarter09.
Nassos Kranidiotis
Nassos Kranidiotis-10 months ago
I can't make it work in Linux Mint 21.3 Cinnamon. Packages have been installed. It seems to record but no file is saved in the default directory.
JeanKnieling
JeanKnieling-10 months ago
I have the same problem!
progzy
progzy-11 months ago
Even if there is still place for improvements/features, it is already very useful as is, thank you very much!
Kevin Kim
Kevin Kim-1 year ago
Great! It's useful applet
angelotux
angelotux-1 year ago
awesome app
spilmer01
spilmer01-2 years ago
What it does it does well but its not feature complete. Needs the option to copy to clipboard
breat.fr
breat.fr-2 years ago
thanks a lot. is it possible to change defaults images/videos locations and if yes, how ?
richo
richo-2 years ago
thanks
Midnight-Starseed
Midnight-Starseed-2 years ago
I cannot get this app to work. No error messages, it seems like its working but when i play the recorded video it is just blank. I'm using Kernel: 5.11.0-46-generic x86_64 bits: 64 compiler: N/A Desktop: Cinnamon 5.2.7 wm: muffin 5.2.0 dm: LightDM 1.30.0 Distro: Linux Mint 20.3 Una base: Ubuntu 20.04 focal Any help/info would be appreciated. I have the following installed ffmpeg xdotool x11-utils. Doesn't work with or without audio.
Isaac Rabinovitch
Isaac Rabinovitch-3 years ago
My favorite capture program. I most often use this to copy screen contents to an app. It would be helpful if there were an option to make copying to clipboard automatic.
darkmaster
darkmaster-3 years ago
Thanks for this applet! To make it work on Arch Linux: `pacman -S ffmpeg xdotool xorg-xwininfo xorg-xdpyinfo` I also need to manualy add folders in `.local/share/cinnamon/applets/ScreenShot+RecordDesktop@tech71/applet.js` and `.local/share/cinnamon/applets/ScreenShot+RecordDesktop@tech71/recorder.sh`
SphaeroX
SphaeroX-3 years ago
Works great, many thanks for the development! This is definitely an enrichment for Linux Mint.
ChooChooAl
ChooChooAl-4 years 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
ChooChooAl-4 years 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
ChooChooAl-4 years ago
Disregard this last message. I was replying to the wrong applet.
hansbee
hansbee-4 years ago
yep, there is no audio on Linux Mint 19.3 Tricia with ffmpeg, xdotool and x11-utils installed.
jcbodnar
jcbodnar-4 years 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
BRENTGAMEZ-5 years 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ş-5 years 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 years ago
Would be way more useful with the ability to change save location, at the moment this is not particularly useful.
ChooChooAl
ChooChooAl-5 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
Hansen-5 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
Knezev-6 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
MarcoB-0049-6 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
Knezev-6 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
Jano9055-6 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-6 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
2dxb-6 years ago
"Record Desktop" does not work.
©TriMoon™
©TriMoon™-6 years ago
Could you add options to configure where to save the screenshots and videos?
Seth Bergman
Seth Bergman-6 years ago
Very nice work!
Christopher .Karkarkar
Great applet
Murat Çileli
Murat Çileli-7 years ago
Useful.
Bora Ön
Bora Ön-7 years ago
Good shortcut.