ShareX
by Lucas Machado de Oliveira Universidade Federal de Minas Gerais
Table of Contents
[TOC]
Context
Every major operating systems comes with tools for screen capturing. But those tools are usually very simple and sometimes they don't solve every problem. It is very likely that users encounter themselves with the need for more advanced screen capturing features, such as audio/video capture, image editing, text insertion, image sharing and more.
ShareX is an open source application for easy screen capturing. It is a free software for Windows only. It lets you capture and record screen areas with a single key press. It also allows for easy upload and sharing of images/videos.
It was developed and is maintained by ShareX Team, which is located in Turkey, and it was developed in C#.
Features
Capturing
ShareX incorporates the following methods to allow screen capture:
- Fullscreen
- Window
- Active window
- Window menu
- Monitor
- Active monitor
- Monitor menu
- Region
- Region
- Rectangle
- Rounded rectangle
- Ellipse
- Freehand
- Drawing
- Rectangle
- Rounded rectangle
- Ellipse
- Freehand
- Line
- Arrow
- Text
- Speech balloon
- Step
- Image
- Effect
- Blur
- Pixelate
- Highlight
- Last region
- Custom region
- Screen recording
- Screen recording (GIF)
- Scrolling capture
- Webpage capture
- Text capture (OCR)
- Auto capture
Apart from screen capturing features, ShareX can automate tasks to be run after the capture. You can select any of the following:
- Show quick task menu
- Show "After capture" window
- Add image effects / watermark
- Open in image editor
- Copy image to clipboard
- Print image
- Save image to file
- Save image to file as
- Save thumbnail image to file
- Perform actions
- Copy file to clipboard
- Copy file path to clipboard
- Show file in explorer
- Recognize text (*OCR)
- Show "Before upload" window
- Upload image to host
- Delete file locally
Uploading
ShareX has multiple ways to upload files.
- Upload file
- Upload folder
- Upload from clipboard
- Upload from URL
- Drag and drop upload (drop area or main window)
ShareX can also automate tasks to be run after the upload. These tasks will automatically run after successful upload to any host. You can select any of the following:
- Show "After upload" window
- Shorten URL
- Share URL
- Copy URL to clipboard
- Open URL
- Show QR code window
ShareX supports the following destinations:
Image uploaders
- Imgur
- ImageShack
- TinyPic
- Flickr
- Photobucket
- Google Photos (Picasa)
- Chevereto
- vgy.me
- SomeImage
- Imgland
- SLiMG
- Custom image uploader
- File uploader
Text uploaders
- Pastebin
- Paste2
- Slexy
- Pastee.org
- Paste.ee
- GitHub Gist
- uPaste
- Hastebin
- OneTimeSecret
- Custom text uploader
- File uploader
File uploaders
- Dropbox
- FTP
- OneDrive
- Google Drive
- puush
- Box
- MEGA
- Amazon S3
- ownCloud
- MediaFire
- Gfycat
- Pushbullet
- SendSpace
- Minus
- Ge.tt
- Hostr
- JIRA
- Lambda
- VideoBin
- Pomf
- Uguu
- Dropfile
- Seafile
- Streamable
- s-ul
- Lithiio
- transfer.sh
- Uplea
- Shared folder
- Custom file uploader
URL shorteners
- bit.ly
- goo.gl
- is.gd
- v.gd
- tinyurl.com
- turl.ca
- yourls.org
- adf.ly
- coinurl.com
- qr.net
- vurl.com
- 2.gp
- Polr
- Custom URL shortener
URL sharing services
Tools
Productivity tools to make certain tasks more efficient.
- Color picker
- Screen color picker
- Image editor
- Image effects
- Hash check
- DNS changer
- QR code
- Ruler
- Automate
- Directory indexer
- Image combiner
- Video thumbnailer
- FTP client
- Tweet message
- Monitor test
Stakeholders
Stakeholder analysis
ShareX is maintained under the GNU General Public License. It was created and is maintained by ShareX Team, which is located in Turkey, but everyone can contribute to the software, by issuing pull requests. To contribute, one must use Visual Studio 2015 and CodeMade, to format the code. The steps to contribute are described on their wiki page.
The most important stakeholders that are identified based on the categorization of Rozanski and Woods [1] are discussed below.
The users of ShareX consist of everyone that uses the application to perform any screen sharing action provided by the application. ShareX is used ostly by non-commercial users wishing to perform more advanced screen capturing tasks, that are not natively available on Windows. Similarly, commercial users of the application use it for the same purposes as non-commercial users. There are no commercial parties that acknowledge that they specifically use ShareX.
The current most active maintainer of the project is the user Jaex, which is the ShareX Team. They are actively involved in the development and they oversee and and review all new contributions to assure the quality of the project.
The community offers support using the GitHub issue system. This support is provided by the community of ShareX, here different kind of stakeholders ask for support, ask questions and they submit bug reports and feature requests. Support at issues is often provided by the maintainer, though sometimes other community-members get involved.
Context Viewpoint
Context viewpoint of ShareX
ShareXis a completely open source project and GitHub is the main platform in which it is developed. Like any project hosted in GitHub, the developers come from everywhere as long as they are interested in ShareX and are willing to contribute. Nevertheless, the maintainer and owner of the project is the ShareX Team. Those people are the core developers of the ShareX.
ShareX's main data source are programs and applications screens, which the user wants to capture. As an open source project, users can easily download the source code and build the program from GitHub. ShareX can run on on Windows, mainly because it is developed in C#.
Releases
The ShareX Team started the development of ShareX in 2010, releasing a major update every month or so. The latest version released is V11.3.0, which was released in September, 2016. Prior to version 6.0.0, ShareX was called ZUploader.
Below, are presented the changes implemented on the major version releases, since its name change to ShareX:
ShareX 11.3.0 - 2016-09-28
- Region capture related changes:
- Added speech balloon drawing tool which works similar to text drawing tool but have moveable tail
- Added image drawing tool so now you can select image from file dialog
- Added support to paste image or text using Ctrl + V key
- Allow region capture right click menu to be closed by right clicking inside region capture window
- Using rounded cap for line/arrow drawing
- All region capture related tasks (screen color picker, ruler, screen record region selection etc.) will use currently configured region capture options such as magnifier, crosshair, snap size etc.
- In text drawing tool, rectangle will be automatically resized according to initial text size so no need to drag rectangle when adding text anymore
- Added corner radius setting to text drawing
- In text input window, pressing Ctrl + Enter will close window
- In text input window, if a non-existent font was selected, automatically default to Arial font
- Swapped Mouse wheel tool changing keybind with Ctrl + Mouse wheel magnifier zoom changing keybind, otherwise people can change tool accidentally; so Mouse wheel will only change magnifier size now which will be less problematic than changing tool accidentally
- Change pixel offset mode dynamically depending on pen size to draw line, rounded rectangle etc. aligned to exact pixels to avoid blurry lines
- Removed Region capture (Simple annotate) hotkey because now current region capture have all features of old region capture annotate window
- Using AppVeyor build server to compile and build ShareX setup/portable files and release them automatically without any user interaction that way it will increase security of our releases
- Added experimental setting to use ShareX region capture to annotate images instead of using Greenshot image editor (In "Task settings -> Advanced tab -> UseShareXForAnnotation")
- Added Uplea file uploader (by @osfancy)
- Added secondary screenshot path location option for situations where primary custom screenshot path is unavailable (In "Application settings -> Advanced tab -> CustomScreenshotsPath2")
- Added transparent button to color picker dialog
- Removed up1.ca file uploader because service is down now
- In image file dialog not allow non image file types to be selected
- Updated DreamObjects endpoint
- Returned SSH.NET library to previous version until buffer related issue fix is released
ShareX 11.0.1 - 2016-06-10
- Added annotation support inside region capture. In region capture you can right click to open menu which you can select annotation tool, capture fullscreen/monitor or be able to change region capture options. You can use middle click to cancel capture.
- These are the currently available annotation tools:
- Region, Rectangle, Rounded rectangle, Ellipse, Drawing, Rectangle, Rounded rectangle, Ellipse, Line, Arrow, Text, Step, Effect, Blur, Pixelate, Highlight
- You can change these settings from region capture options menu:
- Multi region mode
- Show tips
- Show position and size info
- Show magnifier
- Square shape magnifier
- Magnifier pixel count
- Magnifier pixel size
- Show screen wide crosshair
- Fixed size region mode
- Show FPS
- Added option to disable annotation support via "Task settings window -> Region capture tab"
- Removed "Region (Annotate)" capture because default region capture has annotation support now
- Added "Text capture (OCR)" to capture menu
- Also added "Recognize text (OCR)" option to "After capture tasks" menu
- Added lithi.io file uploader (by @lithium720)
- Added sli.mg image uploader
- Added option in "Destination settings, Email tab" to send email to a specific email address without requiring user prompt
- Added icons for "After capture tasks" menu and "After upload tasks" menu items; checked items text will now display as bold
- Added Copy dropdown button in "Color picker" window with the following items to be able to copy specific color type:
- All, RGB, Hexadecimal, CMYK, HSB, Decimal, Position
- Added "SaveSettingsAfterTaskCompleted" setting to "Application settings, Advanced tab" and enabled by default, this setting saves all settings after each task completed but only if there is no other active task (so if there are 50 tasks running in same time only after all tasks completed, settings will save) reason for this setting is because in few people while Windows shutdown does not let ShareX to save settings therefore having this option allows to secure settings in this situations
- Region capture tips will show in active monitor instead of primary monitor
- "Quick task menu" and "After capture window" after capture tasks now can be used in all image related tasks
- Before uploading ShareX will check current destination config requirements and if config is not valid then will stop the task, warn user about invalid config and open destination settings window with current upload destination tab selected so user can check config easily
- Added Shift + C hotkey to main window list to be able to copy selected file
- Added tip icon to top right corner of main window to show tips and hotkeys that can be used in main window
- Added support to be able to drag file from main window list to Windows Explorer or any other software (Holding Ctrl while dragging will copy URL or file path instead of file)
- Added custom region hotkeys for "Screen recording" and "Screen recording (GIF)"
- Added "Select region" button for custom region option in "Task settings, Capture tab", this custom region option is used with custom capture hotkeys
- Added Text to speech support for capture and task completed sounds in "Task settings -> Advanced tab"
- All picture boxes in ShareX will now show image size when hovered with cursor
- Added DisableUpload setting to "Application settings, Advanced tab" which can disable uploading in whole application
- Added TrayTextMoreInfo setting to "Application settings, Advanced tab" which shows version and build info in tray icon tooltip which can be handy if you are running multiple ShareX build in same time
- ShareX now uses system colors in all UI as possible to support custom themes such as Windows high contrast theme correctly
- Added image drag & drop support to "Image combiner" tool
- Added direct URL support for Streamable
- Added tray button click options to "Application settings" window to be able to change which task to execute. If tray primary double click action is None then single primary click action can execute immediately without wait for double click check
- Added "Open main window" hotkey
- Added settings window to Greenshot Image Editor to be able to change few settings
- Location of custom setting file paths will be stored in %LocalAppData%\ShareX\PersonalPath.cfg so that way it will be specific to user account and also allows to change it without requiring to run ShareX as admin. If you already have PersonalPath.cfg where ShareX.exe is then it would still work as usual
- Added "Maximum image limit" option to Image History window to be able to improve load speed of images in case if you have high amount of images
- Added screen tearing test button to monitor test tool
- Allow drag n drop file support to hash check window
- Added upload duration to debug log separate from task duration to be able to measure upload time properly
- Main window right click "Clear list" button will also clear recent history now
- Added toast window fade duration setting to "Task settings, Advanced tab"
ShareX 10.0.0 - 2015-07-04
- Added FFmpeg GIF encoding support
- Added GIF encoder setting in "Screen recorder" tab and it defaults to FFmpeg
- Added FFmpeg x265 encoding support (browsers do not support it yet)
- Added webpage capture
- Added MaxFile file uploader
- Added DropFile file uploader
- Added VideoBin file uploader (by @corey-)
- Added Up1 file uploader (by @Upload developers)
- Recent list in tray menu will be saved between sessions
- Double clicking Regex list entry in "Custom uploaders" tab will try to automatically add correct syntax to URL section
- Custom uploader test result will also show thumbnail and deletion URLs
- Added optional force result URL HTTPS setting in Task settings -> Advanced
- Allow empty text in Twitter image upload
- Hotkey "Task" dropdown menu is now categorized so it does not fill the screen
- FFmpeg video/audio device installation is now optional and install button for it is available in "Screen recording options" window
- Added active window screen recording (including GIF) hotkeys
- Both last region and active window screen recording hotkeys won't steal focus now
- Added hotkeys for all remaining Tools available in main window
- Added countdown timer for screen recording when auto start timer is configured
ShareX 9.0.0 - 2014-05-16
- Capture screen recordings with audio using FFmpeg
- Capture screen recordings using Video Compression Manager (VCM) via Video for Windows (VfW) encoders
- Clipboard Upload supports image or file URLs in their respective data types
- DreamObjects hosting support via Amazon S3
- Added Greenshot Image Editor to Tools menu
- Added FTP Client to Tools menu
- MediaCrush moved to file uploaders to be able to upload videos
ShareX 8.0.0.463 - 2013-08-12
- Ability to create custom hotkeys with task settings
- Unlimited screen recorder support
- Commandline support for screen recorder
- Added auto capture support
- Capture selected monitor screen
- Windows 7 taskbar support
- Ability to change settings folder
ShareX 7.0.0.350 - 2013-04-05
- Added modified version of Greenshot image editor (After capture -> Annotate Image)
- Imgur, Google URL Shortener and Picasa using OAuth 2.0 now (You need to re-authorize)
- Added Imgur album support
- Added Google Drive uploader
- Fixed Flickr upload issue
- Updated to use Twitter 1.1 API
- Fixed Possible crash with non existent program paths
- Simplified Proxy handling behavior. No need to manually enter proxy host as the program will automatically retrieve it from the system proxy.
- Added "Send URL with email" After upload task
- Issues with DST time fixed
ShareX 6.0.0.161 - 2012-06-09
- Improved right click menu to include more open/copy options
- Added support to preview image in the main window
- Added support to run External Programs
- Added pastee.org Text Uploader support
- Ability to capture Last region
- Proportional resizing of shapes while holding shift key
- Added shortcut to "Send To" without using registry
- Cursor can be moved using arrow keys during a shapes capture
- Screen-wide crosshair support during shapes capture
- Magnifier support during shapes capture, resizeable with mouse wheel (hold shift to increase box size)
- Added imm.io Image Uploader
- Rebranded as ShareX
Architecture
In this section we aim to give the reader more insight into the architecture of the application. The component structure of the application is explained and visualized using a diagram.
Component Structure
ShareX consists of 12 projects that are related to each other, and their relationship are visualized in the image below. The main components are:
- ShareX: This is the project that binds together all the others. It is mainly responsible for the menus, app configurations, helpers and managers. It also defines forms for configurations such as: hotkeys, after capture and upload actions, encoders, notifications, quick tasks, color picker, screen recording, first time configuration, etc.
- ShareX.HelpersLib: This project defines helpers that are user throughout the entire system. Almost all other projects depends somehow on this one. It defines things such as automation, the command line tool, cryptography, name parsers, tokenizers, printer options, extensions, forms, GIF definitions, colors, update checker and more.
- ShareX.HistoryLib: This projects is responsible for the History feature of the app. It keeps track of the screen captures, and present them in a list, sorted by date.
- ShareX.ImageEffectsLib: This project is responsible for the image effects feature. When you perform a capture, you can add effects, such as blur, emboss, edge detection, pixelate, shadow, sharpen, and much more. You can also, resize and crop, flip, rotate, scale, and skew. And also you can draw on the image you captured.
- ShareX.IndexerLib: Responsible for the app's indexer. It defines the configurations for indexing files and folders.
- ShareX.MediaLib: Responsible for the video capturing configurations, such as mpeg codecs, video thumbnailer, etc.
- ShareX.ScreenCaptureLib: Responsible for the screen capturing process. Defines the classes for region capture, screen capture, screen recording, webpage capture and scrolling capturing.
- ShareX.Setup: Reponsible for the system setup. It uses AppVeyor to create the executables, both the complete and portable, and also the Steam folder, which is used to publish the app on Steam.
- ShareX.Uploaders: Responsible for defining the image, text and file uploaders as well as the URL shortener services and sharing services, such as email, Facebook, Google+, Twitter, Reddit, and so on.
- ShareX.Chrome: Defines the Chrome Extension.
- ShareX.Steam: ShareX is also available on the Steam Store. This project is responsible for defining that.
- Greenshot.ImageEditor: This Greenshot image editor is used when the user wants to do more advanced editing to an image. It defines all the configurations, controls, interfaces as well as the core of the editing tool.
References
[1]: Nick Rozanski and Eoin Woods. Software Systems Architecture: Working with Stakeholders using Viewpoints and Perspectives. Addison-Wesley, 2012.