{"id":13625142,"url":"https://github.com/tsoding/boomer","last_synced_at":"2025-04-29T12:19:19.027Z","repository":{"id":35237311,"uuid":"201086078","full_name":"tsoding/boomer","owner":"tsoding","description":"Zoomer application for Linux","archived":false,"fork":false,"pushed_at":"2024-03-24T01:49:35.000Z","size":7077,"stargazers_count":542,"open_issues_count":33,"forks_count":48,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-29T12:19:03.007Z","etag":null,"topics":["hacktoberfest","hacktoberfest2020"],"latest_commit_sha":null,"homepage":"","language":"Nim","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tsoding.png","metadata":{"files":{"readme":"README.md","changelog":null,"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}},"created_at":"2019-08-07T16:20:29.000Z","updated_at":"2025-04-27T17:00:53.000Z","dependencies_parsed_at":"2024-01-14T06:58:18.824Z","dependency_job_id":"745b0195-641d-4a25-b72b-cd4617081fc7","html_url":"https://github.com/tsoding/boomer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsoding%2Fboomer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsoding%2Fboomer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsoding%2Fboomer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsoding%2Fboomer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tsoding","download_url":"https://codeload.github.com/tsoding/boomer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251498963,"owners_count":21598984,"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":["hacktoberfest","hacktoberfest2020"],"created_at":"2024-08-01T21:01:51.294Z","updated_at":"2025-04-29T12:19:18.978Z","avatar_url":"https://github.com/tsoding.png","language":"Nim","funding_links":["https://www.patreon.com/tsoding"],"categories":["Nim"],"sub_categories":[],"readme":"[![Tsoding](https://img.shields.io/badge/twitch.tv-tsoding-purple?logo=twitch\u0026style=for-the-badge)](https://www.twitch.tv/tsoding)\n[![Build Status](https://travis-ci.org/tsoding/boomer.svg?branch=master)](https://travis-ci.org/tsoding/boomer)\n\n# Boomer\n\n![](./demo.gif)\n\nZoomer application for Linux.\n\n- Development is done on https://twitch.tv/tsoding\n- Archive of the streams: https://www.twitch.tv/collections/HlRy-q69uBXmpQ\n\n## Dependencies\n\n### Debian\n\n```console\n$ sudo apt-get install libgl1-mesa-dev libx11-dev libxext-dev libxrandr-dev\n```\n\n## Quick Start\n\n```console\n$ nimble build\n$ ./boomer --help\n$ ./boomer          # to just start using\n```\n\n## Developer Capabilities\n\nFor additional Developer Capabilities compile the application with the following flags:\n\n```console\n$ nimble build -d:developer\n```\n\nThis will enable reloading the shaders with `Ctrl+R`. The shader files (`frag.glsl` and `vert.glsl`) should be located in the same folder as `boomer.nim` for this feature to work. If the shader files not found the program won't even start.\n\n**Keep in mind that the developer build is not suitable for day-to-day usage because it creates the external dependency on the shader files. Compiling the program without `-d:developer` \"bakes\" the shaders into the executable and eliminates the dependency.**\n\n## Controls\n\n| Control                                   | Description                                                   |\n|-------------------------------------------|---------------------------------------------------------------|\n| \u003ckbd\u003e0\u003c/kbd\u003e                              | Reset the application state (position, scale, velocity, etc). |\n| \u003ckbd\u003eq\u003c/kbd\u003e or \u003ckbd\u003eESC\u003c/kbd\u003e            | Quit the application.                                         |\n| \u003ckbd\u003er\u003c/kbd\u003e                              | Reload configuration.                                         |\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003er\u003c/kbd\u003e            | Reload the shaders (only for Developer mode)                  |\n| \u003ckbd\u003ef\u003c/kbd\u003e                              | Toggle flashlight effect.                                     |\n| Drag with left mouse button               | Move the image around.                                        |\n| Scroll wheel or \u003ckbd\u003e=\u003c/kbd\u003e/\u003ckbd\u003e-\u003c/kbd\u003e | Zoom in/out.                                                  |\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e + Scroll wheel            | Change the radious of the flaslight.                          |\n\n## Configuration\n\nConfiguration file is located at `$HOME/.config/boomer/config` and has roughly the following format:\n\n```\n\u003cparam-1\u003e = \u003cvalue-1\u003e\n\u003cparam-2\u003e = \u003cvalue-2\u003e\n# comment\n\u003cparam-3\u003e = \u003cvalue-3\u003e\n```\n\nYou can generate a new config at `$HOME/.config/boomer/config` with `$ boomer --new-config`.\n\nSupported parameters:\n\n| Name           | Description                                        |\n|----------------|----------------------------------------------------|\n| min_scale      | The smallest it can get when zooming out           |\n| scroll_speed   | How quickly you can zoom in/out by scrolling       |\n| drag_friction  | How quickly the movement slows down after dragging |\n| scale_friction | How quickly the zoom slows down after scrolling    |\n\n## Experimental Features Compilation Flags\n\nExperimental or unstable features can be enabled by passing the following flags to `nimble build` command:\n\n| Flag          | Description                                                                                                                    |\n|---------------|--------------------------------------------------------------------------------------------------------------------------------|\n| `-d:live`     | Live image update. See issue [#26].                                                                                            |\n| `-d:mitshm`   | Enables faster Live image update using MIT-SHM X11 extension. Should be used along with `-d:live` to have an effect             |\n| `-d:select`   | Application lets the user to click on te window to \"track\" and it will track that specific window instead of the whole screen. |\n\n## NixOS Overlay\n\n```\n$ git clone git://github.com/tsoding/boomer.git /path/to/boomer\n$ mkdir -p ~/.config/nixpkgs/overlays\n$ cd ~/.config/nixpkgs/overlays\n$ ln -s /path/to/boomer/overlay/ boomer\n$ nix-env -iA nixos.boomer\n```\n\n## References\n\n- https://github.com/nim-lang/x11/blob/bf9dc74dd196a98b7c2a2beea4d92640734f7c60/examples/x11ex.nim\n- http://archive.xfce.org/src/xfce/xfwm4/4.13/\n- https://www.khronos.org/opengl/wiki/Programming_OpenGL_in_Linux:_GLX_and_Xlib\n- https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glXIntro.xml\n- https://stackoverflow.com/questions/24988164/c-fast-screenshots-in-linux-for-use-with-opencv\n- https://github.com/lolilolicon/xrectsel\n- https://github.com/naelstrof/slop\n- https://www.x.org/releases/X11R7.7/doc/xextproto/shm.html\n- http://netpbm.sourceforge.net/doc/ppm.html\n- https://github.com/def-/nim-syscall\n- https://github.com/dreamer/scrot\n\n## Support\n\nYou can support my work via\n\n- Twitch channel: https://www.twitch.tv/subs/tsoding\n- Patreon: https://www.patreon.com/tsoding\n\n[#26]: https://github.com/tsoding/boomer/issues/26\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftsoding%2Fboomer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftsoding%2Fboomer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftsoding%2Fboomer/lists"}