Using grim (with examples)
- Linux
- November 5, 2023
Screenshot all outputs
Code:
grim
Motivation: This command allows you to capture screenshots of all connected outputs. It can be useful when you want to quickly capture what is being displayed on all your screens.
Explanation:
The grim
command, without any additional arguments, takes screenshots of all the outputs connected to your machine. It captures the entire content of each output, including all windows and desktop elements.
Example Output:
When running the grim
command, it will save the screenshots in PNG format in the current working directory. The output files will be named based on the current date and time, such as “20211201T134359.png”.
Screenshot a specific output
Code:
grim -o path/to/output_file
Motivation: Sometimes you may only want to capture the contents of a specific output, such as a particular monitor or screen. This command allows you to target a specific output and capture its screenshot.
Explanation:
The -o
argument followed by the path/to/output_file
allows you to specify the output file where the screenshot should be saved. By providing the path to the desired file, you can capture the screenshot of a specific output and save it with a custom name and location.
Example Output:
Running the command grim -o /home/user/screenshots/my_screen.png
captures the screenshot of the specified output and saves it as “my_screen.png” in the “/home/user/screenshots/” directory.
Screenshot a specific region
Code:
grim -g "<x_position>,<y_position> <width>x<height>"
Motivation: In some cases, you may only be interested in capturing a specific region of your screen, rather than the entire output. This command allows you to define a custom region and capture a screenshot of that particular area.
Explanation:
The -g
argument followed by the region coordinates and dimensions allows you to specify the exact area you want to capture. The region is defined by its top-left corner coordinates (x_position
, y_position
) and the width (width
) and height (height
) of the rectangle.
Example Output:
Running the command grim -g "100,200 800x600"
captures the screenshot of the region starting from coordinates (100, 200) and having a width and height of 800 and 600 pixels, respectively.
Select a specific region and screenshot it
Code:
grim -g "$(slurp)"
Motivation:
When you want to capture a specific region but find it easier to visually select the area rather than manually entering the coordinates, this command can be helpful. It uses the slurp
command to interactively select a region.
Explanation:
The -g
argument followed by the $(slurp)
command allows you to capture a screenshot of a region that you select on your screen. slurp
provides an interactive overlay where you can click and drag to define the region to be captured.
Example Output:
Running the command grim -g "$(slurp)"
opens a selection overlay on the screen. After you define a region by dragging with your mouse, grim captures the screenshot of that selected region.
Use a custom filename
Code:
grim "path/to/file.png"
Motivation:
By default, grim
saves the screenshots using a filename based on the current date and time. However, there may be situations where you want to specify a custom filename upfront.
Explanation:
Providing a custom filename as an argument to grim
allows you to have control over the name and location of the saved screenshot. You can replace the “path/to/file.png” portion with any desired path and filename.
Example Output:
Running the command grim "/home/user/screenshots/custom_name.png"
captures the screenshot and saves it as “custom_name.png” in the “/home/user/screenshots/” directory.
Screenshot and copy to clipboard
Code:
grim - | clipboard_manager
Motivation:
When you want to quickly capture a screenshot and have it available in your clipboard to easily paste into another application, this command combination can be useful. It pipes the output of grim
to a clipboard manager.
Explanation:
The -
character after the grim
command instructs it to output the screenshot to stdout instead of saving it to a file. The output is then piped with the |
character to a clipboard manager, which is responsible for storing the image in the clipboard.
Example Output:
Running the command grim - | clipboard_manager
captures the screenshot and copies it to the clipboard. You can then paste the image directly into another application using the standard paste action (Ctrl+V or right-click and select Paste).