MENYOKI(1)
β¨ menyoki(1) β User Commands β¨
πΈ NAME πΈ
menyoki β screenshot/screencast and perform image operations on the command line π
π¦ SYNOPSIS π¦
menyoki [FLAGS] [OPTIONS] <SUBCOMMAND>
π DESCRIPTION π
okay so menyoki is a screencast and screenshot utility that ALSO does a bunch of image-related operations β like making and splitting GIFs, and modifying/analyzing/viewing image files. it's lowkey aiming to be a lightweight command line tool for helping out with day-to-day life operations or complicated detail-centric issues, no cap. originally it was designed to record/screenshot terminal windows, but bestie you can tweak it easily for other purposes with command line arguments, environment variables, or a configuration file π«Ά
π USAGE π
Command line arguments of menyoki are designed to be as intuitive as possible. as a result of that, an action can be performed with a chain of subcommands along with the flags and options. the general prototype for the usage of command line arguments is the following:
menyoki (ACTION) (FORMAT) (OUTPUT)
the subcommand that will indicate the action is mandatory, whereas format and output subcommands might be optional (or they might not exist at all π). the format subcommand can be one of the supported formats, and output basically corresponds to the save subcommand.
the default format is the first listed subcommand if there isn't any subcommand given for specifying a format. on the other hand, the save subcommand uses the βmenyokiβ directory in the home (or images if it exists) as the default output directory.
π GENERAL ARGUMENTS π
Flags and options that will generally affect the execution of menyoki can be set before specifying the main action to perform. then the main subcommand (action) must be specified.
menyoki [FLAGS] [OPTIONS] <SUBCOMMAND>
β Arguments
FLAGS:
-h,--helpβ Print help information-V,--versionβ Print version information-v,--verboseβ Increase logging verbosity-q,--quietβ Do not show output
OPTIONS:
-c,--config <FILE>β Set the configuration file--color <HEX>β Set the main color [default:3AA431]
SUBCOMMANDS:
recordβ Record an animationsplitβ Split an animation into framesmakeβ Make an animation from framescaptureβ Capture an imageeditβ Edit an imageanalyzeβ Analyze an imageviewβ View an image
π« Examples
menyoki -Vβ Print the version informationmenyoki -vv --color FF00FF <action>β Set log verbosity level to 2 (trace) and useβFF00FFβas the main colormenyoki -q -c menyoki.conf <action>β Run in quiet mode and read the configuration fromβmenyoki.confβ
π₯ RECORD SUBCOMMAND π₯
menyoki can record an area of a window or the whole screen and encode it as a supported format. area selection and resize is performed with the key bindings β¨
a few scenarios that the record action might be helpful for would be:
- Record a specific area of a window
- Record for a given duration
- Record the output of a command (especially for TUI applications)
encoding options can be changed using the arguments of the provided format. (see the output of menyoki record gif --help)
menyoki record [FLAGS] [OPTIONS] [COMMAND] [SUBCOMMAND]
β Arguments
FLAGS:
-r,--rootβ Record the root window-f,--focusβ Record the focused window--selectβ Select the window to record--parentβ Record the parent of the window--with-alphaβ Record with the alpha channel--no-keysβ Disable the action keys while recording-m,--mouseβ Select the window with mouse click-h,--helpβ Print help information
OPTIONS:
--action-keys <KEYS>β Set the action keys [default:LAlt-S,LAlt-Enter]--cancel-keys <KEYS>β Set the cancel keys [default:LControl-D,Escape]-b,--border <BORDER>β Set the border width [default:1]-p,--padding <T:R:B:L>β Set the record area padding-s,--size <WxH>β Set the record area size-d,--duration <S>β Set the duration for recording [default:β]-c,--countdown <S>β Set the countdown before recording [default:3]-t,--timeout <S>β Set the timeout for window selection [default:300]-i,--interval <MS>β Set the refresh interval for window selection [default:10]--font <FONT>β Set the font to use for window selection--monitor <NUM>β Set the monitor to record as root window
ARGS:
<COMMAND>β Set the command to run
SUBCOMMANDS:
gifβ Use the GIF encoderapngβ Use the APNG encodersaveβ Save the output file(s)
π« Examples
menyoki recordβ Select a window and start recording with default settingsmenyoki record --root --countdown 5β Record the root window after 5 seconds of countdownmenyoki record --focus --with-alphaβ Record the focused window with the alpha channel (for transparency)menyoki record --size 200x300 --duration 10β Record an area of size200x300for 10 secondsmenyoki record --padding 20:10:0:10 --timeout 120β Record an area with given padding and set window selection timeout to 120 secondsmenyoki record --parentβ Record the parent window of the selected windowmenyoki record --root --select --monitor 1β Record the first monitor as root windowmenyoki record --border 5β Record the area selected by a border with 5 widthmenyoki record --action-keys LControl-Q,LAlt-Wβ Record with the default settings using custom key bindingsmenyoki record --cancel-keys LControl-X,Eβ Record with the default settings using custom key bindingsmenyoki record gif --fps 15 --quality 90β Record 15 frames per second with 90% qualitymenyoki record gif --gifskiβ Record and encode using the gifski encodermenyoki record gif save "test.gif" --timestampβ Record and save asβtest.gifβwith timestamp in the file namemenyoki record apng --fps 30β Record 30 frames per second and encode as APNGmenyoki -q record save "-" > test.gifβ Record and redirect output toβtest.gifβmenyoki -q record "kmon -t 2000"β Execute the command and record its output in quiet modemenyoki record --font "-*-dejavu sans-*-*-*-*-17-*-*-*-*-*-*-*"β Use custom font for showing the area size (seexfontsel)
π§ SPLIT SUBCOMMAND π§
menyoki can split an animation into frames (extract images) if the split subcommand is provided, and it can save frames as one of the supported formats with the use of a trailing format subcommand π
menyoki split [OPTIONS] <FILE> [SUBCOMMAND]
β Arguments
FLAGS:
-h,--helpβ Print help information
OPTIONS:
-d,--dir <DIRECTORY>β Set the output directory
ARGS:
<FILE>β Set the animation file
SUBCOMMANDS:
pngβ Use the PNG encoderjpgβ Use the JPG encoderwebpβ Use the WebP encoderbmpβ Use the BMP encodericoβ Use the ICO encodertiffβ Use the TIFF encodertgaβ Use the TGA encoderpnmβ Use the PNM encoderffβ Use the farbfeld encoderexrβ Use the OpenEXR encoder
π« Examples
menyoki split rec.gifβ Extract frames from theβrec.gifβfilemenyoki split rec.gif jpg --quality 100β Extract frames as JPEG in maximum qualitymenyoki split rec.gif --dir frames/β Extract frames and save them to the specified directory
β¨ MAKE SUBCOMMAND β¨
Okay so the make subcommand is literally here to turn a set of images into an animation β thatβs its whole main character job. Bestie, it can make GIFs from images you hand it on the command line, or from a directory you point it at. Itβs giving βanimation studio but make it terminal.β ποΈπ
menyoki make [FLAGS] [OPTIONS] <FRAMES>... [SUBCOMMAND]
π Arguments π
πΈ FLAGS πΈ
--gifskiβ Use thegifskiencoder. Yes, the encoder namedgifski, no cap.--fastβ Encode 3 times faster (gifski). Speedy lil moment. β‘-n,--no-sortβ Use frames in the order given. No sorting, just vibes.-h,--helpβ Print help information. The classic βhelp me help youβ flag.
π OPTIONS π
-f,--fps <FPS>β Set the FPS[default: 20].-q,--quality <QUALITY>β Set the frame quality(1-100)[default: 75].-r,--repeat <REPEAT>β Set the number of repetitions[default: β]. Infinite era, honestly.-d,--dir <DIRECTORY>β Set the directory to read frames from.--format <FORMAT>β Set the animation format[default: gif][possible values: gif, apng].
π¦ ARGS π¦
<FRAMES>...β Set the animation frames.
π SUBCOMMANDS π
saveβ Save the output file(s).
π Examples π
menyoki make 1.png 2.pngβ Make a GIF that consists of two frames as1.pngand2.png.menyoki make 1.png 2.png --fps 5 --quality 100β Make a GIF with the specified properties from the given frames.menyoki make 1.png 2.png save 3.gif --dateβ Make a GIF and save the file (3.gif) with the date information.menyoki make 1.png 2.png --format apngβ Make an APNG from the given frames.menyoki make --dir frames/β Make a GIF from the frames in the specified directory.
β¨ CAPTURE SUBCOMMAND β¨
So menyoki can also capture β aka screenshot β an area of a window or the whole screen and encode it as a supported format. Formats like png, jpg, and pnm have their own flags and options that might be used for changing the default encoding settings. Similar to the record subcommand, area selection and resize is performed with the key bindings. The same flags and options might apply for both record and capture subcommands since the actions are abstractly alike. Itβs giving screenshot queen behavior. πΈπ
menyoki capture [FLAGS] [OPTIONS] [COMMAND] [SUBCOMMAND]
π Arguments π
πΈ FLAGS πΈ
-r,--rootβ Capture the root window.-f,--focusβ Capture the focused window.--selectβ Select the window to capture.--parentβ Record the parent of the window. (Yes, the original says βRecordβ here β weβre keeping it exact, bestie.)--with-alphaβ Capture with the alpha channel.-m,--mouseβ Select the window with mouse click. Clicky clicky.-h,--helpβ Print help information.
π OPTIONS π
--action-keys <KEYS>β Set the action keys[default: LAlt-S,LAlt-Enter].--cancel-keys <KEYS>β Set the cancel keys[default: LControl-D,Escape].-b,--border <BORDER>β Set the border width[default: 1].-p,--padding <T:R:B:L>β Set the capture area padding.-s,--size <WxH>β Set the capture area size.-c,--countdown <S>β Set the countdown before capturing[default: 0].-t,--timeout <S>β Set the timeout for window selection[default: 300].-i,--interval <MS>β Set the refresh interval for window selection[default: 10].--font <FONT>β Set the font to use for window selection.--monitor <NUM>β Set the monitor to capture as root window.
π¦ ARGS π¦
<COMMAND>β Set the command to run.
π SUBCOMMANDS π
pngβ Use the PNG encoder.jpgβ Use the JPG encoder.webpβ Use the WebP encoder.bmpβ Use the BMP encoder.icoβ Use the ICO encoder.tiffβ Use the TIFF encoder.tgaβ Use the TGA encoder.pnmβ Use the PNM encoder.ffβ Use the farbfeld encoder.exrβ Use the OpenEXR encoder.saveβ Save the output file(s).
π Examples π
menyoki captureβ Select a window and screenshot with default settings.menyoki capture --root --countdown 5β Screenshot the root window after 5 seconds of countdown.menyoki capture --focus --with-alphaβ Screenshot the focused window with the alpha channel (for transparency).menyoki capture --size 200x300 --duration 10β Screenshot an area of size200x300for 10 seconds.menyoki capture --padding 20:10:0:10 --timeout 120β Screenshot an area with the given padding and set window selection timeout to 120 seconds.menyoki capture png --filter avg --compression fastβ Screenshot and encode with the specified PNG options.menyoki capture jpg --quality 100β Screenshot and encode with the specified JPEG options.menyoki capture webp --losslessβ Screenshot and encode with the specified WEBP options.menyoki capture pnm --format pixmap --encoding asciiβ Screenshot and encode with the specified PNM options.menyoki capture ff save "test.ff" --timestampβ Screenshot and save astest.ffin farbfeld format with timestamp in the file name.menyoki -q capture png save "-" > test.pngβ Screenshot and redirect output totest.png.menyoki -q capture "kmon -t 2000"β Execute the command and screenshot its output in quiet mode (sets countdown to 3 implicitly).
π EDIT SUBCOMMAND π
okay bestie, edit is the glow-up subcommand β¨ it lets you edit (<https://github.com/image-rs/image#image-processing-functions>) β like, manipulate/filter/convert β files that are in one of the supported formats. and here's the tea: on top of all the flags and options that edit gives you, you can also pass extra encoding options through the format subcommands. two-for-one slay π
menyoki edit [FLAGS] [OPTIONS] <FILE> [SUBCOMMAND]
Arguments
FLAGS:
--convertβ Convert image using the given encoder--grayscaleβ Convert image to grayscale--invertβ Invert the colors of the image-h,--helpβ Print help information
OPTIONS:
--crop <T:R:B:L>β Apply padding to crop the image--resize <WxH>β Resize the image without keeping the aspect ratio--ratio <RATIO>β Resize the image proportionally by aspect ratio [default:1.0]--rotate <ROTATE>β Rotate the image (clockwise) [possible values:90,180,270]--flip <FLIP>β Flip the image [possible values:horizontal,vertical]--blur <SIGMA>β Blur the image [default:0.0]--hue <HUE>β Adjust the hue of the image [default:Β±0]--contrast <CONTRAST>β Adjust the contrast of the image [default:Β±0.0]--brightness <BRIGHTNESS>β Adjust the brightness of the image [default:Β±0]--filter <FILTER>β Set the sampling filter for scaling [default:lanczos3] [possible values:nearest,triangle,catmull-rom,gaussian,lanczos3]
ARGS:
<FILE>β Set the input file π
SUBCOMMANDS:
gifβ Use the GIF encoderapngβ Use the APNG encoderpngβ Use the PNG encoderjpgβ Use the JPG encoderwebpβ Use the WebP encoderbmpβ Use the BMP encodericoβ Use the ICO encodertiffβ Use the TIFF encodertgaβ Use the TGA encoderpnmβ Use the PNM encoderffβ Use the farbfeld encoderexrβ Use the OpenEXR encodersaveβ Save the output file(s)
Examples
here's the whole mood board of what edit can do, no cap π¦
menyoki edit test.pngβ Re-encode the βtest.pngβ file without editingmenyoki edit test.png --grayscaleβ Convert image to grayscalemenyoki edit test.png --invertβ Invert the colors of the imagemenyoki edit test.png --crop 20:20:20:20β Apply the given padding to image for croppingmenyoki edit test.png --resize 300x300β Resize the image to 300x300 (without keeping the aspect ratio)menyoki edit test.png --ratio 0.5β Resize the image to half the size (using the aspect ratio)menyoki edit test.png --ratio 2.0 --filter gaussianβ Resize the image using the specified sampling filtermenyoki edit test.png --rotate 90β Rotate the image 90 degrees (clockwise)menyoki edit test.png --flip horizontalβ Flip the image horizontallymenyoki edit test.png --blur 2.0β Blur the imagemenyoki edit test.png --hue 100β Adjust the hue of the imagemenyoki edit test.png --contrast -10.5β Adjust the contrast of the imagemenyoki edit test.png --brightness 50β Adjust the brightness of the imagemenyoki edit test.png --convert tgaβ Convert image to TGA formatmenyoki edit test.png --convert jpg --quality 80β Convert image to JPEG in 80% qualitymenyoki edit test.gif --ratio 0.25 gif --quality 80β Resize and re-encode βtest.gifβmenyoki edit test.gif gif --speed 0.5β Slow down the GIF (half the speed)menyoki edit test.gif gif --cut-beginning 1.0 --cut-end 0.5β Cut the duration of GIF by secondsmenyoki edit test.apng --convert gifβ Convert APNG to GIFmenyoki edit test.ff --grayscale --convert pnm --format arbitrary save "output" --with-extension --date "%H%M%S"β test.ff (farbfeld) -> grayscale -> output_020035.pam (PNM)
π ANALYZE SUBCOMMAND π
analyze is the nosy bestie subcommand β its whole job is inspecting an image file that's in a supported format and then creating a report based on the image details. periodt. the report has 2 to 3 sections, which are: file, image, and EXIF information π
menyoki analyze [FLAGS] [OPTIONS] <FILE> [SUBCOMMAND]
Arguments
FLAGS:
--timestampβ Use Unix timestamp for report dates-h,--helpβ Print help information
OPTIONS:
-t,--time-zone <TIMEZONE>β Set the time zone of the report [default:utc] [possible values:utc,local]
ARGS:
<FILE>β Set the image file
SUBCOMMANDS:
saveβ Save the output file(s)
Examples
menyoki analyze test.jpgβ Inspect βtest.jpgβ and print the reportmenyoki analyze test.jpg save test_report.txtβ Inspect βtest.jpgβ and save the report as βtest_report.txtβmenyoki analyze test.jpg --timestampβ Inspect the file and create a report based on timestampsmenyoki analyze test.jpg --time-zone localβ Inspect the file and create a report based on local time zonemenyoki analyze test.jpg --timestamp save --timestampβ Use timestamps for both analysis report and file name
π VIEW SUBCOMMAND π
view is literally just "lemme look at this image from the terminal" β that's it, that's the vibe. it uses the core library of viu (<https://github.com/atanunq/viu>) π§
menyoki view [FLAGS] <FILE>
Arguments
FLAGS:
-t,--transparentβ Display transparent image with transparent background-h,--helpβ Print help information
ARGS:
<FILE>β Set the input file
Examples
menyoki view test.jpgβ View βtest.jpgβ from the terminalmenyoki view test.png --transparentβ View βtest.pngβ from the terminal with transparency enabled
π OTHER SUBCOMMANDS π
okay so here's the cute part: you can change the GIF, APNG, PNG, JPG, and PNM encoding options by specifying flags/options to the corresponding subcommands. also, the save subcommand is there for changing the default output settings π«Ά
GIF/APNG Subcommand
FLAGS:
--gifskiβ Use the gifski encoder <only in GIF>--fastβ Encode 3 times faster (gifski) <only in GIF>-h,--helpβ Print help information
OPTIONS:
-f,--fps <FPS>β Set the FPS [default:20]-q,--quality <QUALITY>β Set the frame quality (1-100) [default:75] <only in GIF>-r,--repeat <REPEAT>β Set the number of repetitions [default:β]-s,--speed <SPEED>β Set the GIF speed [default:1.0]--cut-beginning <S>β Cut the beginning of the GIF [default:0.0]--cut-end <S>β Cut the end of the GIF [default:0.0]
SUBCOMMANDS:
saveβ Save the output file(s)
heads up bestie: some options might be only usable with a particular action π
PNG Subcommand
FLAGS:
-h,--helpβ Print help information
OPTIONS:
-c,--compression <COMPRESSION>β Set the compression level [default:fast] [possible values:default,fast,best]-f,--filter <FILTER>β Set the filter algorithm [default:sub] [possible values:none,sub,up,avg,paeth]
SUBCOMMANDS:
saveβ Save the output file(s)
JPG Subcommand
FLAGS:
-h,--helpβ Print help information
OPTIONS:
-q,--quality <QUALITY>β Set the image quality (1-100) [default:90]
SUBCOMMANDS:
saveβ Save the output file(s)
WEBP Subcommand
FLAGS:
-l,--losslessβ Use lossless encoding-h,--helpβ Print help information
OPTIONS:
-q,--quality <QUALITY>β Set the lossy encoding quality (1-100) [default:80]
SUBCOMMANDS:
saveβ Save the output file(s)
PNM Subcommand
FLAGS:
-h,--helpβ Print help information
OPTIONS:
-f,--format <FORMAT>β Set the PNM format [default:pixmap] [possible values:bitmap,graymap,pixmap,arbitrary]-e,--encoding <ENCODING>β Set the encoding for storing the samples [default:binary] [possible values:binary,ascii]
SUBCOMMANDS:
saveβ Save the output file(s)
Save Subcommand
FLAGS:
-e,--with-extensionβ Always save the file with an extension-t,--timestampβ Add Unix timestamp to the file name-h,--helpβ Print help information
OPTIONS:
-d,--date <FORMAT>β Add formatted date/time to the file name [default:%Y%m%dT%H%M%S]
ARGS:
<FILE>β Set the output file
β¨ KEY BINDINGS β¨
okay so these key bindings are only used and present while you're doing a capture or record action. basically they're for selecting your capture/record areas and resizing them with zero mouse interaction β keyboard main character energy, fr fr π
there are 3 types of key bindings in terms of what they do:
- Action keys β the main action keys such as
LAlt-S, and yes they can be customized via the--action-keysand--cancel-keysoptions. the keymap enum link is right here:https://docs.rs/device_query/latest/device_query/keymap/enum.Keycode.html - Cancel keys β the keys that cancel the operation, e.g.
LControl-D - Miscellaneous keys β the keys that resize the selected area, such as
LAlt-[up]
here's the key β action tea, bestie:
LAlt-[S/Enter]β start/stop recording or screenshot the selected areaLControl-D,Escapeβ cancel the current operationLControl-Cβ cancel the current operation or stop recordingLAlt-[arrow keys/hjkl]β increase the area padding (decrease the size of the area)LControl-LAlt-[arrow keys/hjkl]β decrease the area padding (increase the size of the area)LShift-LAlt-[arrow keys/hjkl]β reposition the selected area (move around)LAlt-[1-9]β set the speed factor of changing the area size (default:3)LAlt-Rβ reset the area padding to default
π AUTHOR
written by Orhun ParmaksΔ±z <orhunparmaksiz@gmail.com> π«Ά
π REPORTING BUGS
contact the author via email, or use GitHub Issues for reporting bugs: https://github.com/orhun/menyoki/issues/ β no cap, they want the bug reports π
π COPYRIGHT
Copyright Β© 2020-2024 Orhun ParmaksΔ±z Licensed under GPLv3: https://gnu.org/licenses/gpl.html
π¦ SEE ALSO
see the project homepage at https://github.com/orhun/menyoki for full documentation β¨
that's the whole page, bestie β this iconic manual is menyoki 1.7.0, dated March 2023, and you just read MENYOKI(1) ππ now go slay some captures π
π¦ where this page comes from
- arch rolling: menyoki 1.8.0-1 Β· GPL-3.0-only
- nixpkgs unstable: menyoki 1.8.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms