{"id":13440806,"url":"https://github.com/phw/peek","last_synced_at":"2025-05-14T21:00:23.543Z","repository":{"id":37924461,"uuid":"48430079","full_name":"phw/peek","owner":"phw","description":"Simple animated GIF screen recorder with an easy to use interface","archived":false,"fork":false,"pushed_at":"2025-02-21T19:01:56.000Z","size":10377,"stargazers_count":10445,"open_issues_count":734,"forks_count":326,"subscribers_count":72,"default_branch":"main","last_synced_at":"2025-05-07T20:28:55.311Z","etag":null,"topics":["apng","gif","gif-recorder","gnome","gtk3","linux","screencast","vala","wayland","webm"],"latest_commit_sha":null,"homepage":"","language":"Vala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/phw.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["phw"],"liberapay":"phw"}},"created_at":"2015-12-22T12:12:02.000Z","updated_at":"2025-05-07T18:39:23.000Z","dependencies_parsed_at":"2024-02-11T20:53:50.788Z","dependency_job_id":"0fc32c2e-a729-40f5-b9c4-6e2222e62df2","html_url":"https://github.com/phw/peek","commit_stats":{"total_commits":1318,"total_committers":161,"mean_commits":8.186335403726709,"dds":0.5766312594840668,"last_synced_commit":"caf7676439e7e4f29c40b79d94e2b5bef8540a31"},"previous_names":[],"tags_count":26,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phw%2Fpeek","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phw%2Fpeek/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phw%2Fpeek/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phw%2Fpeek/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/phw","download_url":"https://codeload.github.com/phw/peek/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254227603,"owners_count":22035667,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apng","gif","gif-recorder","gnome","gtk3","linux","screencast","vala","wayland","webm"],"created_at":"2024-07-31T03:01:26.459Z","updated_at":"2025-05-14T21:00:23.520Z","avatar_url":"https://github.com/phw.png","language":"Vala","readme":"# Peek - an animated GIF recorder\n[![GitHub release](https://img.shields.io/github/release/phw/peek.svg)](https://github.com/phw/peek/releases)\n[![License: GPL v3+](https://img.shields.io/badge/license-GPL%20v3%2B-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n[![Packaging status](https://repology.org/badge/tiny-repos/peek.svg)](https://repology.org/metapackage/peek/packages)\n[![Translation Status](https://hosted.weblate.org/widgets/peek/-/svg-badge.svg)](https://hosted.weblate.org/engage/peek/?utm_source=widget)\n\n\u003e [!IMPORTANT]\n\u003e The Peek project has been declared deprecated, please read [the announcement](https://github.com/phw/peek/issues/1191).\n\u003e No new features will be developed and issue reporting will be closed soon.\n\n![Peek recording itself](https://raw.githubusercontent.com/phw/peek/master/data/screenshots/peek-recording-itself.gif)\n\nSimple screen recorder with an easy to use interface\n\n\u003c!-- START doctoc generated TOC please keep comment here to allow auto update --\u003e\n\u003c!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --\u003e\n## Contents\n\n- [About](#about)\n- [Requirements](#requirements)\n  - [Runtime](#runtime)\n  - [Development](#development)\n- [Installation](#installation)\n  - [Official distribution packages](#official-distribution-packages)\n  - [Flatpak](#flatpak)\n  - [Snappy](#snappy)\n  - [AppImage](#appimage)\n  - [Ubuntu](#ubuntu)\n  - [ElementaryOS](#elementaryos)\n  - [Debian](#debian)\n  - [Fedora](#fedora)\n  - [Solus](#solus)\n  - [Arch Linux](#arch-linux)\n  - [Other distributions](#other-distributions)\n  - [From source](#from-source)\n- [Frequently Asked Questions](#frequently-asked-questions)\n  - [How can I capture mouse clicks and/or keystrokes?](#how-can-i-capture-mouse-clicks-andor-keystrokes)\n  - [How can I improve the quality of recorded GIF files](#how-can-i-improve-the-quality-of-recorded-gif-files)\n  - [Why are the GIF files so big?](#why-are-the-gif-files-so-big)\n  - [If GIF is so bad why use it at all?](#if-gif-is-so-bad-why-use-it-at-all)\n  - [What about WebM or MP4? Those are well supported on the web.](#what-about-webm-or-mp4-those-are-well-supported-on-the-web)\n  - [What is the cause for \"Could not start GNOME Shell recorder\" errors?](#what-is-the-cause-for-could-not-start-gnome-shell-recorder-errors)\n  - [Why can't I interact with the UI elements inside the recording area?](#why-cant-i-interact-with-the-ui-elements-inside-the-recording-area)\n  - [My recorded GIFs flicker, what is wrong?](#my-recorded-gifs-flicker-what-is-wrong)\n  - [On i3 the recording area is all black, how can I record anything?](#on-i3-the-recording-area-is-all-black-how-can-i-record-anything)\n  - [Why no native Wayland support?](#why-no-native-wayland-support)\n- [Contribute](#contribute)\n  - [Development](#development-1)\n  - [Translations](#translations)\n- [License](#license)\n\n\u003c!-- END doctoc generated TOC please keep comment here to allow auto update --\u003e\n\n## About\nPeek makes it easy to create short screencasts of a screen area. It was built\nfor the specific use case of recording screen areas, e.g. for easily showing UI\nfeatures of your own apps or for showing a bug in bug reports. With Peek, you\nsimply place the Peek window over the area you want to record and press\n\"Record\". Peek is optimized for generating animated GIFs, but you can also\ndirectly record to WebM if you prefer.\n\nPeek is not a general purpose screencast app with extended features but\nrather focuses on the single task of creating small, silent screencasts of\nan area of the screen for creating GIF animations or silent WebM videos.\n\nPeek runs on X11 or inside a GNOME Shell Wayland session using XWayland.\nSupport for more Wayland desktops might be added in the future (see FAQs below).\n\n\n## Requirements\n### Runtime\n\n- GTK+ \u003e= 3.20\n- GLib \u003e= 2.38\n- [libkeybinder3](https://github.com/kupferlauncher/keybinder)\n- FFmpeg \u003e= 3\n- GStreamer 'Good' plugins (for recording on GNOME Shell)\n- [gifski](https://gif.ski/) (optional but recommended for improved GIF quality)\n\n### Development\n\n- Vala compiler \u003e= 0.22\n- Meson \u003e= 0.47.0\n- Gettext (\u003e= 0.19 for localized .desktop entry)\n- txt2man (optional for building man page)\n\n\n## Installation\n### Official distribution packages\nPeek is available in official package repositories for the following\ndistributions:\n\n- [Alpine Linux](https://pkgs.alpinelinux.org/packages?name=peek)\n- [Arch Linux](https://www.archlinux.org/packages/community/x86_64/peek/)\n- [Debian](https://tracker.debian.org/pkg/peek)\n- [Fedora](https://koji.fedoraproject.org/koji/packageinfo?packageID=28880)\n- [Gentoo](https://packages.gentoo.org/packages/media-video/peek)\n- [NixOS](https://search.nixos.org/packages?channel=unstable\u0026query=peek)\n- [OpenSUSE Tumbleweed](https://software.opensuse.org/package/peek)\n- [Parabola](https://www.parabola.nu/packages/?q=peek)\n- [Solus](https://dev.getsol.us/source/peek/)\n\n### Flatpak\nPeek can be installed on all distributions supporting [Flatpak](https://flatpak.org) from [Flathub](https://flathub.org/apps/details/com.uploadedlobster.peek).\nTo install, either download\n[com.uploadedlobster.peek.flatpakref](https://flathub.org/repo/appstream/com.uploadedlobster.peek.flatpakref)\nand open it with GNOME Software or install via command line (first time flatpak\nusers need to follow the [flatpak/flathub setup instructions](https://flatpak.org/setup/) first):\n\n    flatpak install flathub com.uploadedlobster.peek\n\nFor full functionality you should also install\n[xdg-desktop-portal-gtk](https://github.com/flatpak/xdg-desktop-portal-gtk).\nIt is available for most current distributions. Once installed, you can run Peek\nvia its application icon in your desktop environment or from the command line:\n\n    flatpak run com.uploadedlobster.peek\n\nTo update to the latest version run:\n\n    flatpak update --user com.uploadedlobster.peek\n\nTo test the latest development version you can install\n[peek-master.flatpakref](http://flatpak.uploadedlobster.com/peek-master.flatpakref)\n\n### Snappy\nPeek no longer has officially supported Snap packages, see\n[the announcement](https://www.reddit.com/r/Ubuntu/comments/870bcn/snap_support_for_peek_screen_recorder_discontinued/).\nPlease consider using the Flatpak or AppImage versions or use the Ubuntu PPA\nif you are using Ubuntu.\n\n### AppImage\nPeek [AppImage](https://appimage.org/) packages are available on the\n[release page](https://github.com/phw/peek/releases). To run download the\n`.AppImage` file and set it executable, then just run it. You can name the file\nhowever you want, e.g. you can name it just `peek` and place it in `$HOME/bin`\nfor easy access. See the [AppImage wiki](https://github.com/AppImage/AppImageKit/wiki)\nfor more information on how to use AppImages and integrate them with your system.\n\n### Ubuntu\nYou can install the latest versions of Peek from the\n[Ubuntu PPA](https://code.launchpad.net/~peek-developers/+archive/ubuntu/stable).\n\n    sudo add-apt-repository ppa:peek-developers/stable\n    sudo apt update\n    sudo apt install peek\n\nIf you want to use the latest development version there is also a\n[PPA with daily builds](https://code.launchpad.net/~peek-developers/+archive/ubuntu/daily)\navailable. Use the repository `ppa:peek-developers/daily` in the above commands.\n\n### ElementaryOS\nAdding PPA repositories requires the package `software-properties-common`\n\n    sudo apt install software-properties-common\n    sudo add-apt-repository ppa:peek-developers/stable\n    sudo apt update\n    sudo apt install peek\n\nIf you want to use the latest development version there is also a\n[PPA with daily builds](https://code.launchpad.net/~peek-developers/+archive/ubuntu/daily)\navailable. Use the repository `ppa:peek-developers/daily` in the above commands.\n\n### Debian\nThere are official Debian packages for Debian 11 (\"Bullseye\") and Debian 10 (\"Buster\") via\nmain repository and packages for Debian 9 (\"Stretch\") via\n[`stretch-backports`](https://packages.debian.org/stretch-backports/peek)\nrepository. Please refer to [Debian Backports Website](https://backports.debian.org/)\nfor detailed usage of `stretch-backports` repository.\n\nAfter enabling `stretch-backports` for Debian 9 (Debian 10 or Debian 11 or `Sid` don't need\nany tweaks at all), installation can be done by simply typing:\n\n    sudo apt install peek\n\n### Fedora\n**Note: Fedora by default does not provide the required `ffmpeg` package in its\nrepositories. For this reason it is recommended for Fedora users to install Peek\nwith Flatpak, see above. If you prefer to install Peek from the repositories\nyou should install `ffmpeg` separately as described below.**\n\nPeek is available in the default repositories (Fedora 29 and later):\n\n    sudo dnf install peek\n\nTo install the required `ffmpeg` package you can use the RPM Fusion free\nrepository, see the\n[setup instructions for RPM Fusion](https://rpmfusion.org/Configuration).\nOnce the repository is enabled install FFmpeg with:\n\n    sudo dnf install ffmpeg\n\n### Solus\nSolus users can simply install with:\n\n    sudo eopkg it peek\n\n### Arch Linux\nArch Linux users can simply install with:\n\n    sudo pacman -S peek\n\nFor GNOME Shell recording there are some optional packages you can choose from:\n\n    gst-plugins-good: Recording under Gnome Shell\n    gifski: High quality GIF animations with thousands of colors\n\nIf you have a package manager for AUR (or fetch from AUR manually) the git\nversion is available [here](https://aur.archlinux.org/packages/peek-git)\n\n\n### Other distributions\nSee the [Repology package list](https://repology.org/metapackage/peek/packages)\nfor a list of Peek packages for various distributions.\n\n### From source\nYou can build and install Peek using Meson with Ninja:\n\n    git clone https://github.com/phw/peek.git\n    cd peek\n    meson --prefix=/usr/local builddir\n    cd builddir\n    ninja\n\n    # Run directly from source\n    ./src/peek\n\n    # Install system-wide\n    sudo ninja install\n\n*Note: `ninja` might be called `ninja-build` on some distributions.*\n\n## Frequently Asked Questions\n### How can I capture mouse clicks and/or keystrokes?\nPeek does not support this natively. But you could install an external tool\nlike [key-mon](https://github.com/critiqjo/key-mon) which is usually included\nin most distributions, so you can easily install with your package manager.\nThen start key-mon with `key-mon --visible_click`. The `--visible_click` option\nis for drawing small circles around mouse clicks.\n\n### How can I improve the quality of recorded GIF files\nTo get the best possible quality you should install the [gifski](https://gif.ski/)\nGIF encoder. If available Peek will automatically use gifski and will provide\na quality slider in the preferences dialog. The default value will give a\nbalanced result between quality and file size. Set the quality to maximum if you\nwant to get the highest possible quality even with thousands of colors. The file\nsize will increase significantly, though (see below).\n\n### Why are the GIF files so big?\nThe GIF format is highly inefficient and not well suited for doing large\nanimations with a lot of changes and colors. Peek tries its best to reduce the\nfile size by using FFmpeg or [gifski](https://gif.ski/) to generate optimized\nGIF files. For best results:\n\n- Use a lower frame rate. 10fps is the default and works well, but in many\n  cases you can even get good results with lower framerates.\n- If you have [gifski](https://gif.ski/) installed you can adjust the GIF\n  quality in the preferences. A lower quality gives a smaller file size at the\n  expense of visual quality (see above).\n- Avoid too much change. If there is heavy animation the frames will differ\n  a lot.\n- Record small areas or use the downsample option to scale the image. The GIF\n  file format is not well suited for high resolution or full-screen recording.\n- Avoid too many colors, since GIF is limited to a 256 color palette per frame.\n  This one is not so much about file size but more about visual quality.\n- If the above suggestions are not suitable for your use case, consider using\n  WebM format (see below).\n\n### If GIF is so bad why use it at all?\nWhile GIF is a very old format, it has seen some rise in usage again in recent\nyears. One reason is its easy usage in the Web. GIF files are supported nearly\neverywhere, which means you can add animations easily to everywhere where you\ncan upload images. With real video files you are still more limited. Typical use\ncases for Peek are recording small user interactions for showing UI features\nof an app you developed, for making short tutorials or for reporting bugs.\n\n### What about WebM or MP4? Those are well supported on the web.\nPeek allows you to record in WebM format, just choose your preferred output\nformat in the preferences. WebM is well supported by modern browsers, even\nthough they are still not as universally supported by tools and online services\nas GIFs.\n\n\u003e [!NOTE]\n\u003e Support for MP4 was available till version 1.5.1 but was removed\n\u003e from later versions.\n\n### What is the cause for \"Could not start GNOME Shell recorder\" errors?\n\nThis usually indicates an error while starting the built-in GNOME shell\nrecorder. Unfortunately Peek does not receive any error details, to find out\nmore about this issues look at the GNOME Shell log output in `journalctl`.\n\nA common cause for this is that the GNOME Shell recorder is already running,\neither because it was started via the GNOME Shell keyboard shortcut or by\nanother application.\n\nIf this error is shown when trying to record MP4 a common cause is that you are\nmissing the [GStreamer ugly](https://gstreamer.freedesktop.org/modules/gst-plugins-ugly.html)\nplugins, which provide MP4 encoding. Please refer to the documentation of your\ndistribution on how to install these.\nDo note that you have to logout and login for Peek to recognize the new\ninstalled libraries if you are running the Wayland display server.\n\nSee also issue [#287](https://github.com/phw/peek/issues/287) for related discussion.\n\n### Why can't I interact with the UI elements inside the recording area?\nYou absolutely should be able to click the UI elements inside the area you are\nrecording. If you use i3 you should stack Peek with the window you intend to\nrecord or make sure all windows are floating and uncheck \"Always on top\" from\nthe Peek settings. If you want to be able to control the area when recording\nin i3 you can move Peek to the Scratchpad it will keep recording the area once\nyou hide the window. If this does not work for you on any other window manager\nplease open an [issue on GitHub](https://github.com/phw/peek/issues).\n\n### My recorded GIFs flicker, what is wrong?\nSome users have experienced recorded windows flicker or other strange visual\nartifacts only visible in the recorded GIF. This is most likely a video driver\nissue. If you are using Intel video drivers switching between the SNA and UXA\nacceleration methods can help. For NVIDIA drivers changing the \"Allow Flipping\"\nsetting in the NVIDIA control panel\n[was reported to help](https://github.com/phw/peek/issues/86).\n\n### On i3 the recording area is all black, how can I record anything?\ni3 does not support the X shape extension. In order to get a transparent\nrecording area, you have to run a compositor such as Compton.\n\n### Why no native Wayland support?\nWayland has two restrictions that make it hard for Peek to support Wayland\nnatively:\n\n1. The Wayland protocol does not define a standard way for applications to\n   obtain a screenshot. That is intentional, as taking an arbitrary screenshot\n   essentially means any application can read the contents of the whole display,\n   and Wayland strives to offer improved security by isolating applications. It\n   is up to the compositors to provide screenshot capability, and most do. GNOME\n   Shell also provides a public interface for applications to use which Peek\n   does support.\n\n2. The Wayland protocol does not provide absolute screen coordinates to the\n   applications. There is not even a coordinate system for windows at all. Again\n   this is intentional, as they are not needed in many cases and you do not need\n   to follow restrictions imposed by the traditional assumption that the screen\n   is a rectangular area (e.g. you can have circular screens or [layout windows\n   in 3D space](https://www.youtube.com/watch?v=_FjuPn7MXMs)).\n\nUnfortunately, the whole concept of the Peek UI is that the window position\nitself is used to obtain the recording coordinates. That means, for now, there\ncannot be any fully native Wayland support without special support for this\nuse case by the compositor.\n\nHowever, it is possible to use Peek in a GNOME Shell Wayland session using\nXWayland by launching Peek with the X11 backend:\n\n    GDK_BACKEND=x11 peek\n\nSupport for compositors other than GNOME Shell can be added if a suitable\nscreencasting interface is provided.\n\n\n## Contribute\nIf you want to help make Peek better the easiest thing you can do is to\n[report issues and feature requests](https://github.com/phw/peek/issues).\nOr you can help in development and translation.\n\n### Development\nYou are welcome to contribute code and provide pull requests for Peek. The\neasiest way to start is looking at the open issues tagged with\n[good first issue](https://github.com/phw/peek/labels/good%20first%20issue).\nThose are open issues which are not too difficult to solve and can be started\nwithout too much knowledge about the code.\n\nAnother good starting point are issues tagged with\n[help wanted](https://github.com/phw/peek/labels/help%20wanted). Those issues are\nprobably harder to solve, but for some reason I cannot work on it for now and\nwould love to see somebody jump in.\n\nIn any case, just leave a note on the issue itself that you are working on it,\nto avoid multiple people working on the same issue.\n\n\n### Translations\nYou can help translate Peek into your language. Peek is using\n[Weblate](https://weblate.org/) for translation management.\n\nGo to the [Peek localization project](https://hosted.weblate.org/projects/peek/translations/)\nto start translating. If the language you want to translate into is not already\navailable, you [can add it here](https://hosted.weblate.org/projects/peek/translations/#newlang).\n\nIf you want to be credited for your translation, please add your name to the\n[translator-credits](https://hosted.weblate.org/search/peek/translations/?q=translator-credits\u0026search=exact\u0026source=on\u0026type=all\u0026ignored=False)\nfor your language. The translator credits are shown in Peek's About dialog.\n\n\n## License\nPeek Copyright © 2015-2024 by Philipp Wolfer \u003cph.wolfer@gmail.com\u003e\n\nPeek is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nPeek is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with Peek.  If not, see \u003chttps://www.gnu.org/licenses/\u003e.\n","funding_links":["https://github.com/sponsors/phw","https://liberapay.com/phw"],"categories":["HarmonyOS","Vala","Creating GIFs","Applications","Screenshot \u0026 Video Recording","Cross-Platform","Screencasting","Screencast","linux","Apps","General Tools","Uncategorized","Operating Systems","🐧 Linux","截图","GIF creation","⚡ Productivity","my-ubuntu","Screenshot \u0026 Screencast","Linux","Recording"],"sub_categories":["Windows Manager","Graphics","GIF Recording","JavaScript","System Tools","Multimedia","Uncategorized","Linux","Utilities","simulations","Useful Linux Tools","Other"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphw%2Fpeek","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphw%2Fpeek","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphw%2Fpeek/lists"}