https://github.com/laluxx/zoomer
https://github.com/laluxx/zoomer
Last synced: 4 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/laluxx/zoomer
- Owner: laluxx
- License: mit
- Created: 2023-08-25T19:26:06.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2023-08-25T19:38:32.000Z (almost 2 years ago)
- Last Synced: 2025-01-03T04:14:47.971Z (6 months ago)
- Language: Nim
- Size: 6.71 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://travis-ci.org/tsoding/boomer)
# Zoomer

Zoomer application for Linux.
## Dependencies
### Arch
```console
$ Sudo pacman -S nim
```## Quick Start
```console
$ nimble build
$ ./boomer --help
$ ./boomer # to just start using
```## Developer Capabilities
For additional Developer Capabilities compile the application with the following flags:
```console
$ nimble build -d:developer
```This 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.
**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.**
## Controls
| Control | Description |
|-------------------------------------------|---------------------------------------------------------------|
| Middle mouse click or 0 | Reset the application state (position, scale, velocity, etc). |
| q or ESC | Quit the application. |
| r | Reload configuration. |
| Ctrl + r | Reload the shaders (only for Developer mode) |
| f | Toggle flashlight effect. |
| Drag with left mouse button | Move the image around. |
| Scroll wheel or =/- | Zoom in/out. |
| Ctrl + Scroll wheel | Change the radious of the flaslight. |## Configuration
Configuration file is located at `$HOME/.config/boomer/config` and has roughly the following format:
```
=
=
# comment
=
```You can generate a new config at `$HOME/.config/boomer/config` with `$ boomer --new-config`.
Supported parameters:
| Name | Description |
|----------------|----------------------------------------------------|
| min_scale | The smallest it can get when zooming out |
| scroll_speed | How quickly you can zoom in/out by scrolling |
| drag_friction | How quickly the movement slows down after dragging |
| scale_friction | How quickly the zoom slows down after scrolling |## Experimental Features Compilation Flags
Experimental or unstable features can be enabled by passing the following flags to `nimble build` command:
| Flag | Description |
|---------------|--------------------------------------------------------------------------------------------------------------------------------|
| `-d:live` | Live image update. See issue [#26]. |
| `-d:mitshm` | Enables faster Live image update using MIT-SHM X11 extension. Should be used along with `-d:live` to have an effect |
| `-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. |## NixOS Overlay
```
$ git clone git://github.com/laluxx/zoomer.git /path/to/zoomer
$ mkdir -p ~/.config/nixpkgs/overlays
$ cd ~/.config/nixpkgs/overlays
$ ln -s /path/to/zoomer/overlay/ zoomer
$ nix-env -iA nixos.zoomer
```## References
- https://github.com/nim-lang/x11/blob/bf9dc74dd196a98b7c2a2beea4d92640734f7c60/examples/x11ex.nim
- http://archive.xfce.org/src/xfce/xfwm4/4.13/
- https://www.khronos.org/opengl/wiki/Programming_OpenGL_in_Linux:_GLX_and_Xlib
- https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glXIntro.xml
- https://stackoverflow.com/questions/24988164/c-fast-screenshots-in-linux-for-use-with-opencv
- https://github.com/lolilolicon/xrectsel
- https://github.com/naelstrof/slop
- https://www.x.org/releases/X11R7.7/doc/xextproto/shm.html
- http://netpbm.sourceforge.net/doc/ppm.html
- https://github.com/def-/nim-syscall
- https://github.com/dreamer/scrot