{"id":20509317,"url":"https://github.com/raydac/japagoge","last_synced_at":"2025-08-02T11:34:33.530Z","repository":{"id":92138345,"uuid":"401160292","full_name":"raydac/japagoge","owner":"raydac","description":"Simple animated PNG and GIF screen recorder","archived":false,"fork":false,"pushed_at":"2025-01-31T09:31:36.000Z","size":3572,"stargazers_count":17,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-13T22:39:25.562Z","etag":null,"topics":["apng","gif","gif-recorder","java","peek","screen-capture","screencast","screencast-recording"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/raydac.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.txt","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":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-08-29T23:07:10.000Z","updated_at":"2025-01-31T09:31:40.000Z","dependencies_parsed_at":"2024-11-15T20:27:02.272Z","dependency_job_id":"754e4c82-ed39-449c-aee9-1beaee2afb04","html_url":"https://github.com/raydac/japagoge","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/raydac/japagoge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raydac%2Fjapagoge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raydac%2Fjapagoge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raydac%2Fjapagoge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raydac%2Fjapagoge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/raydac","download_url":"https://codeload.github.com/raydac/japagoge/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raydac%2Fjapagoge/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268378977,"owners_count":24240910,"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","status":"online","status_checked_at":"2025-08-02T02:00:12.353Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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","java","peek","screen-capture","screencast","screencast-recording"],"created_at":"2024-11-15T20:24:00.904Z","updated_at":"2025-08-02T11:34:33.505Z","avatar_url":"https://github.com/raydac.png","language":"Java","funding_links":["https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=AHWJHJFBAWGL2"],"categories":[],"sub_categories":[],"readme":"![Banner image](assets/banner.png)\n\n# Japagoge (PNG and GIF screen recorder)\n\n[![License Apache 2.0](https://img.shields.io/badge/license-Apache%20License%202.0-green.svg)](http://www.apache.org/licenses/LICENSE-2.0)\n[![Java 9+](https://img.shields.io/badge/java-9%2b-green.svg)](https://bell-sw.com/pages/downloads/#/java-11-lts)\n[![PayPal donation](https://img.shields.io/badge/donation-PayPal-cyan.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=AHWJHJFBAWGL2)\n[![YooMoney donation](https://img.shields.io/badge/donation-Yoo.money-blue.svg)](https://yoomoney.ru/to/41001158080699)\n\n\u003e **Warning**   \n\u003e In Linux. If you get black screen as grabbing result, then it is\n\u003e bug [JDK-8269245](https://bugs.openjdk.org/browse/JDK-8269245). You can switch your session to X11 (under Ubuntu it is\n\u003e possible through login screen) to get it properly working.\n\n\u003e **Warning**   \n\u003e In MacOS. If you can't manipulate content under grabbing window by mouse, then it is\n\u003e bug [JDK-8013450](https://bugs.openjdk.java.net/browse/JDK-8013450).\n\n## Changelog\n\n- 2.1.7 (SNAPSHOT)\n  - updated embedded JDK to 23+38\n\n- 2.1.6 (01-nov-2023)\n  - updated embedded JDK to 21.0.1+12\n\n- 2.1.5 (20-sep-2022)\n  - native windows launcher moved from i386 to amd64 to prevent antivirus false positive detection\n  - updated embedded JDK to 17.0.4.1+1\n  - updated dependencies\n\n[Full changelog](changelog.txt)\n\n## Pre-word\n\nWhile working on [an article](https://habr.com/ru/post/576012/) for a well-known web resource, I needed to create\nanimated GIFs, and I had planned to use\nthe popular [Peek](https://github.com/phw/peek) utility for this purpose. However, to my surprise, I discovered that\nthis utility does not support\nmulti-display environments. I had to quickly devise a Java-based solution that could capture animations and save them\nto a file. Initially, I opted to record animations as animated PNG files since it was simpler, but later,\nI also implemented the conversion to GIF.\n\n## Pre-built\n\n| OS                                           | Download link                                                                                                                                     | \n|----------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------|\n| ![Windows](assets/icons/win64x64.png)        | __[Archive for Windows x64 (JRE included)](https://github.com/raydac/japagoge/releases/download/2.1.6/japagoge-app-2.1.6-windows-jdk-amd64.zip)__ |\n| ![OSX](assets/icons/macos64x64.png)          | __[Archive for OSX x64 (JRE included)](https://github.com/raydac/japagoge/releases/download/2.1.6/japagoge-app-2.1.6-macos-jdk-amd64.zip)__       |\n| ![OSX Arm64](assets/icons/macosarm64x64.png) | __[Archive for OSX Arm64 (JRE included)](https://github.com/raydac/japagoge/releases/download/2.1.6/japagoge-app-2.1.6-macos-jdk-aarch64.zip)__   |\n| ![Linux](assets/icons/linux64x64.png)        | __[Archive for Linux x64 (JRE included)](https://github.com/raydac/japagoge/releases/download/2.1.6/japagoge-app-2.1.6-linux-jdk-amd64.tar.gz)__  |\n| ![Linux](assets/icons/appimage64x64.png)     | __[Archive for Linux x64 (AppImage)](https://github.com/raydac/japagoge/releases/download/2.1.6/japagoge-app-2.1.6-x86_64.AppImage)__             |\n| ![Java](assets/icons/java64x64.png)          | __[Cross-platform JAR file](https://github.com/raydac/japagoge/releases/download/2.1.5/japagoge-app-2.1.6.jar)__                                  | \n\n## How to use the utility?\n\nYou can download its distributive for your OS from [the releases page](https://github.com/raydac/japagoge/releases). It\nrequires Java 11+ for work but some archives provide bundled JRE. Keep in mind that it is very tricky to grab mouse\npointer appearance under Java so grabbed pointer look may differ from your system one.\n\n### Positioning\n\nJust after start, the window in positioning mode and shown in green color. Supported only mouse, and you can drag the\nwindow and resize it to cover required capture area. During positioning mode, you can see three buttons in top of the\napplication window. The leftmost button is the main one and if click on it, recording will start. The middle button is\nto edit application settings and the rightmost button to close application.   \n![Positioning state](assets/screens/state_positioning.png)\n\n### Recording\n\n__Recording activated by single click by mouse on the leftmost button in the window title area__. In the recording mode\nall auxiliary buttons will be removed and the window changes its color. Only stop record button will be blinking one in\nthe leftmost corner.       \n![Positioning state](assets/screens/state_recording.png)   \n__To stop recording, you should make mouse double-click on the blinking button in the title area.__ After recording\nstop, you will see the save file dialog to save the record file, if you press cancel button then the record will be\nrejected and just deleted. If you choose GIF file type then conversion will be started, it can take some time and\ndepends on power of your computer. You can select different options for saved GIF files in settings, but you have to do\nit before record.\n\n### Settings\n\nYou can tune misc record options. For instance disable show of mouse pointer or limit number of loops in the result\nrecord show. To do it you should click the setting button and the Settings dialog will be opened.   \n![Positioning state](assets/screens/state_preferences.png)\n\n- __Temp folder__ allows define the folder where intermediate files will be saved, if empty then default temp folder in\n  use.\n- __Capture delay (ms)__ delay between shots of the recorded area in milliseconds.\n- __Frame delay (ms)__ delay between frame show in result animation in milliseconds. If different with `Capture delay`\n  then animation will be either faster or slower.\n- __Loops__ is number of ami,ation loops to be played during result animation show, zero means infinity animation.\n- __Show capturing area metrics__ allows turn on information about capturing area coordinates during positioning.\n- __Grab mouse pointer__ allows grab position of mouse pointer and show it in the result animation.\n- __Color filter__ allows make some preprocessing of colors and make it gray or amber for instance. Decreasing result\n  file size.\n- __Palette RGB to GIF__ provides palette to be used during GIF conversion, AUTO means some global auto-palette formed\n  on statistic data.\n- __Better RGB colors to GIF__ allows increase precision of palette color search during GIF conversion but make process\n  much slower.\n- __Dithering GIF__ makes dithering in the result GIF to get better quality with provided palette but makes file much\n  bigger and process much slower.\n- __Force whole frame__ allows turn off optimization of saved frames and save whole frame, sometime can help in\n  dithering GIF conversion if area border artifacts presented.\n\n### Known bugs\n\n#### Under MacOS mouse pointer looks differ from system one\n\nI have not found yet way to grab mouse pointer icon under MacOS..\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraydac%2Fjapagoge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fraydac%2Fjapagoge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraydac%2Fjapagoge/lists"}