{"id":18675543,"url":"https://github.com/bithatch/snake","last_synced_at":"2025-10-17T06:25:22.622Z","repository":{"id":90788518,"uuid":"304826752","full_name":"bithatch/snake","owner":"bithatch","description":"A stylised graphical tool for configuring and controlling Razer devices on Linux","archived":false,"fork":false,"pushed_at":"2021-10-09T19:26:18.000Z","size":21493,"stargazers_count":72,"open_issues_count":16,"forks_count":6,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-04-12T02:11:43.209Z","etag":null,"topics":["java","javafx","keyboard","linux","macros","mouse","mousemat","openrazer","razer","rgb"],"latest_commit_sha":null,"homepage":"http://www.bithatch.co.uk","language":"Java","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/bithatch.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":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-10-17T07:55:01.000Z","updated_at":"2025-03-17T19:19:58.000Z","dependencies_parsed_at":null,"dependency_job_id":"a750d921-ec4f-4080-983a-4175da63b148","html_url":"https://github.com/bithatch/snake","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bithatch%2Fsnake","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bithatch%2Fsnake/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bithatch%2Fsnake/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bithatch%2Fsnake/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bithatch","download_url":"https://codeload.github.com/bithatch/snake/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248505928,"owners_count":21115354,"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":["java","javafx","keyboard","linux","macros","mouse","mousemat","openrazer","razer","rgb"],"created_at":"2024-11-07T09:25:21.692Z","updated_at":"2025-10-17T06:25:17.575Z","avatar_url":"https://github.com/bithatch.png","language":"Java","readme":"# Snake\n\n![Snake Overview](images/overview.png  \"Overview\")\n\nSnake is application to control and configure your Razer devices on Linux. Making use of the awesome OpenRazer drivers, *Snake* provides access to most features the drivers provides and lots of extra stuff you won't find in other clients.\n\n * Stylised user interface with animations and effects\n * Simple installation, and self updating.\n * Provides basic support from all devices supported by OpenRazer.\n * Layouts feature. Design and use labelled diagrams of your device showing lighting areas, keys and individual LEDs. If a device has a layout, it is used for controls, macros and custom effects instead of the basic generated user interface.\n * Supports multiple concurrent devices.\n * Set and configure Razer effects such as Breath, Wave, Static and more.\n * Create custom effects using the timeline based editor. Configurable with different interpolations types, FPS and speed.\n * Battery status.\n * Audio analysis lighting effects. Monitors a channel PulseAudio and makes your lighting react in different ways.\n   Requires a device that has Matrix support.\n * Integrated System Tray icon (or indicator)\n * Global brightness controls the brightness of all devices at once.\n * Macro support. *(work in progress, 3 competing systems!)*\n * Themes\n  \n![A device with a layout](images/device-using-layout.png  \"Device With Layout\")\n\n## Compatibility\n\nSnake tries to be completely compatible with whatever OpenRazer supports. However, there are some features OpenRazer does not yet provide itself, snake such as detailed lighting and key layouts.\n\nSnake includes a very small set of built in layouts, only for hardware I have access to. If you create a high quality layout for your device, please submit it to the project and I will add it as a default.\n\n| Device                      | Macros  | Layouts           | \n| --------------------------- | --------| ----------------- |\n| *Keyboards*                      |   |            | \n| Other OpenRazer Keyboards | 1,2   | None            |\n| *Mice*                      |   |            |\n|  \u003cimg src=\"https://assets.razerzone.com/eeimages/support/products/1390/1390_mamba_elite.png\" width=\"64\" /\u003eMamba Elite                 | 3   | MATRIX, TOP       |\n| Other OpenRazer Mice |  | None            | None            | \n| *Accessories*                      |   |            |\n| \u003cimg src=\"https://assets.razerzone.com/eeimages/support/products/1255/1255_tartarus_v2.png\" width=\"64\" /\u003e Tartarus V2\t\t\t\t  | 3   | MATRIX,TOP        | 26              |\n| \u003cimg src=\"https://assets2.razerzone.com/images/pnx.assets/132a2c378c62416d4d0634306f04bf01/connectivity-nommo-pro.jpg\" width=\"64\" /\u003e Nommo Chroma                | 3   | MATRIX, THREE_D_1 | 2               |\n| Other OpenRazer Accessories |   | None            | None            | \n\n1. OpenRazer default macro/key binding system. Only supports keyboards. Works at X11 / device driver levels. Works without a layout.\n2. Chabad360's OpenRazer macro/key binding improvements  [https://github.com/chabad360/openrazer/tree/keybinding](branch). Currently only supports keyboards. Requires UInput permissions. Works without a layout.\n3. Snakes own key binding system. Supports all device types. Requires UInput permissions. Requires a layout.\n \n## Install\n\nThere are several different ways to run Snake. In all cases, the first time the app runs you will be asked if you want to create a desktop shortcut (i.e. menu entry).\n\n ![Snake Installer](images/install.png  \"Snake Installer\")\n\n**All binary versions of Snake are built for 64 bit x86 only. For 32 bit, or other architectures, please use one of the \"No-Runtime\" packages below.**\n\n### Self Extracting Installer\n\nThe self extracting installer is the easiest to use. You will be asked for a location to install Snake. It will then update to the latest version and start up.\n\n#### From The Command Line\n\n```\nwget -O snake-installer-amd64.sh \\\n https://github.com/bithatch/snake/releases/download/v1.0-SNAPSHOT-204/snake-installer-amd64.sh \u0026\u0026 \\\n sh snake-installer-amd64.sh\n```\n\n#### From Your Desktop\n\n *  Download [snake-amd64-installer.sh](https://github.com/bithatch/snake/releases/download/v1.0-SNAPSHOT-204/snake-installer-amd64.sh).\n *  Add Execute permission to the downloaded *snake-installer.sh* in your file manager.\n *  Use the Open action in your file manager to start the installer.\n\n### Application Archive\n\nAnother option is to download the archived version of the app, extract it to where you want to install, and just run it.\n\n#### From The Command Line\n\n```\nwget -O snake-amd64.tar.gz \\\n https://github.com/bithatch/snake/releases/download/v1.0-SNAPSHOT-204/snake-amd64.tar.gz\ntar xzf snake-amd64-tar.gz\ncd snake\nbin/snake \u0026\n```\n\n#### From Your Desktop\n\n *  Download [snake-amd64.tar.gz](https://github.com/bithatch/snake/releases/download/v1.0-SNAPSHOT-204/snake-amd64.tar.gz)\n *  Use the Open action in your file manager to locate and start `bin/snake` in the extracted folder.\n \n### No-Runtime Packages\n\nThe above packages all include a stripped down amd64 Java runtime so you do not need to install your own. If you  have another architecture such as X86 or Arm, or just want a smaller download, you can use your own runtime. It just needs to be at least [Java 15](https://adoptopenjdk.net/). \n\n * [Installer](https://github.com/bithatch/snake/releases/download/v1.0-SNAPSHOT-204/snake-installer-noruntime.sh)\n * [Tar Archive](https://github.com/bithatch/snake/releases/download/v1.0-SNAPSHOT-204/snake-noruntime.tar.gz)\n \nAll these packages include the `bin/snake` launcher script. You may need to edit this if you want to use a runtime other than the system default.\n \n### OS Packages\n\nNot currently available.\n\n## Updating\n\nAll installations of Snake are self updating, unless you are using our own OS specific packages. Those provided by a 3rd party repository may provide updates.\n\nUpdate options may be found may be found in the ** Options** screen.\n\n### Automatic Updates\n\nBy default, Snake will update automatically and you should never need to touch it. If you prefer though, you can turn this off and you will be notified when updates are available. The update may then be installed on demand. \n\n### Beta Updates\n\nYou can optionally accept beta updates. While I will strive to keep the beta channel stable, these may contain as-yet untested features, and some behaviour may be unexpected. You can at any time revert to the release  channel.\n\nWhen changing this option, *Snake* will restart after 2 seconds and download appropriate version.\n \n## Build From Source\n\nTo build Snake from source you need :-\n\n * Git\n * Java 15+\n * Apache Maven\n\nOther dependencies are downloaded by Maven during the build process.\n\nFurther dependencies may be needed for building deployable packages.\n\n### Build\n\n```\ngit clone https://github.com/bithatch/snake.git\ncd snake\nmvn clean install\n```\n\nIf the build completes OK, you can then run or install Snake.\n\n### Run\n\nOnce build, you can run directly.\n\n```\ncd snake-app-linux\nmvn javafx:run\n```\n\n### Install\n\nOr you can install what you have built.\n\n```\nsnake-dist/target/snake-installer-amd64.sh\n```\n\n## Options\n\nConfiguration is very simple. The backend should take care of the devices, Snake just has a few options for appearance and behaviour.\n\n ![Snake Options](images/options.png  \"Snake Options\")\n\nTo access options, click the cog icon, ** Options**.\n\n### Appearance\n\nVarious options for configuration how Snake looks.\n\n**Theme** - Allows the look of Snake to be changed. A selection of themes that are colour variations of the default are provided, with more to come. Creating your own will be documented soon, but the adventurous can try by copying any existing theme module and adjusting the contents accordingly.\n\n![Themes](images/themes.png  \"Themes\")\n\n**Use Window Manager Decorations** - By default, Snake uses \"Client Side Decorations\", and draws it's own window title bar and window management buttons (close, min, max). Turn this option off to use window manager decorations instead. In this mode, Options and About are both insteads accessed from icons at the bottom right of the overview screen.\n\n**Transparency** - If you are using client side decorations, then window transparency is possible. This slider sets how transparent the window should be.\n\n![Snake Desktop](images/desktop.png  \"Snake Desktop\")\n\n### Updates\n\n**Check for updates** - Whether to check for updates at all. When deselected, neither automatic or manual updating is possible.\n\n **Update automatically** - When selected, Snake will update itself automatically on startup if required. \n \n **Install beta updates as well** - When selected, you will be able to receive beta updates  that may contain fixes or features that you wish to try out before full release.\n\n### Tray\n\n**Icon  Style** - Different options for how the tray icon appears, if at all.\n\n**Show Battery** - If you have at least one device that has a battery, then the option is given to show the battery status on the system tray instead of the razer logo.\n\n  **When low** - When selected the battery status will only be showing if the overall battery status is *Low*.\n  \n**Start on login** - If the tray icon is enabled, you probably want to start it when you login. The option allows you to do so. When turned off, the tray icon will appear when you manually start Snake.\n\n## System Tray\n\nThe system tray icon runs in the background and provides quick access to common functions of your devices.\n\n ![Snake Tray](images/tray.png  \"Snake Tray\")\n \n It can also show a summary of the battery status (when configuration).\n\n## Device Overview\n\nDevice Overview is the first screen you see when opening Snake. It lists all of the supported Razer devices that the driver has discovered. \n\nIf an expected device is not listed, please check if it works with other OpenRazer clients. If it does not, it is likely you want to direct any feature requests to the OpenRazer project.\n\nIf you have lots of devices, you can use the search and filter options to narrow down what is shown, although this is most useful when testing Snake with lots of 'Fake Drivers' that OpenRazer can supply.\n\nEither double click anywhere on the row or click the Slider icon on the far right of each row to see the details for that device.\n\n## Device Details\n\nDouble clicking on a device in the over page will show the configuration screen for that device.\n\nIt will show all of the supported *Controls*, depending on what device is in use.\n\n ![Device Details](images/device.png  \"Device Details\")\n\nFor example, controls are provided for :-\n\n * Brightness. Will allow configuration of both overall brightness, and per region brightness.\n * Effects. Choose and configure various standard Razer effects.\n * Poll Rate. Low level setting for mice.\n * DPI. Dots per inch setting, changes the accuracy of your mouse movements.\n * Battery. Shows battery status and allows configuration of low-battery thresholds.\n * Game Mode.  Turn game mode on or off. When on, the Windows key will be disabled.\n \n At any time, clicking on the *Back* icon at the top right of the screen will return you to the *Device Overview* screen.\n \n### Brightness\n\nControls the intensity of  all lights in a region, or overall on the device. If the device only supports a single lighting region, only a single slider will be shown.\n\n ![Brightness](images/brightness.png  \"Brightness\")\n \n### Poll Rate\n\nA low level setting that determines the speed at which your computer communicates with this device.\n\n ![Poll Rate](images/pollrate.png  \"Poll Rate\")\n \n### DPI\n\nDots per inch setting, changes the accuracy of your mouse movements.\n\nThe maximum setting here can differ between devices. The higher the number, the faster the mouse pointer will move across the screen as you physically move the house. A lower number means the mouse pointer will move slower across the screen with more accuracy.\n\nA value of 1000 to 2000 is probably comfortable for daily usage.\n\n ![DPI](images/dpi.png  \"DPI\")\n \n### Effects\n \nMany devices are capable of multiple effects. Some of those effects have their own configuration, and often it is possible to configure different effects for each region.\n \n#### None\n \n This effect type simply turns off all lighting. There is no further configuration.\n \n#### Static\n\nThe simplest effect,  just sets a fixed colour either on the whole device or individual regions. \n\n ![Static Effect](images/static.png  \"Static\")\n \n#### Wave\n\nThe region or device will show a multi-colours moving wave, in one of two directions. \n\n ![Wave Effect](images/wave.png  \"Wave\")\n \n#### Spectrum\n\nThe region or device will cycle at a fixed speed through all colours. \n\n#### Reactive\n\nThe region or device will light up on key or button clicks or mouse wheel movement.\n\nConfiguration allows changing of the colour and sensitivity of these reactions.\n\n ![Reactive Effect](images/reactive.png  \"Reactive\")\n\n#### Breath\n\nThe region or device will gently pulsate different colours.\n\nConfiguration allows changing of the colours and a special random mode.\n\n ![Breath](images/breath.png  \"Breath\")\n\n#### Ripple\n\nThe region or device will light a ripple effect moving outwards from the centre of the device, with either a random colour or a fixed single colour.\n\n ![Ripple](images/ripple.png  \"Ripple\")\n\n#### Pulsate\n\nThe region or device will gently pulsate a single fixed colour.\n\n#### Starlight\n\nThe region or device will twinkle lights on and off using  either a random colour or a fixed single colour to mimick a night sky.\n\n ![Starlight](images/starlight.png  \"Starlight\")\n \n#### Matrix\n\nThe Matrix effect may only be set on the whole device, and allows each LED to be individually configured.\n\nThe exact layout of the screen will depend on the device. If it is a keyboard, a virtual keyboard will be shown, otherwise just a row of numbered LED lights will be seen.\n\n ![Matrix](images/matrix.png  \"Matrix\")\n\n## Macros\n\nThe Macro UI is available, but due to coming changes in OpenRazer this is likely to radically change, so I won't go into any detail here.\n\n ![Macros](images/macros.png  \"Macros\")\n\n### Recording Macros\n\n** Note, Recording functionality is not complete, but will be before final release. You can manually edit macros though.  **\n\n ![Record](images/record.png  \"Record\")\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbithatch%2Fsnake","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbithatch%2Fsnake","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbithatch%2Fsnake/lists"}