{"id":13605208,"url":"https://github.com/nikp123/xava","last_synced_at":"2025-04-12T02:32:57.630Z","repository":{"id":54645614,"uuid":"71626748","full_name":"nikp123/xava","owner":"nikp123","description":"X11 Audio Visualizer for ALSA","archived":false,"fork":false,"pushed_at":"2025-04-11T15:25:21.000Z","size":2351,"stargazers_count":137,"open_issues_count":5,"forks_count":15,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-11T16:43:50.449Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://nikp123.github.io/xava","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nikp123.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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":"2016-10-22T08:28:53.000Z","updated_at":"2025-04-11T15:25:25.000Z","dependencies_parsed_at":"2023-11-16T14:52:15.093Z","dependency_job_id":"a9f55312-701e-4817-8516-7b92b8642293","html_url":"https://github.com/nikp123/xava","commit_stats":null,"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikp123%2Fxava","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikp123%2Fxava/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikp123%2Fxava/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikp123%2Fxava/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nikp123","download_url":"https://codeload.github.com/nikp123/xava/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248506933,"owners_count":21115510,"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":[],"created_at":"2024-08-01T19:00:55.811Z","updated_at":"2025-04-12T02:32:57.304Z","avatar_url":"https://github.com/nikp123.png","language":"C","funding_links":[],"categories":["C","Packages"],"sub_categories":["CLI Tools"],"readme":"X.A.V.A.\n====================\n\n[![Build status](https://github.com/nikp123/xava/actions/workflows/main.yaml/badge.svg)](https://github.com/nikp123/xava/actions/workflows/main.yaml)\n\n**X**11 **A**udio **V**isualizer for **A**LSA\n\nalso supports audio input from WASAPI (Windows), PortAudio, Pulseaudio, SHMEM, FIFO (MPD) and sndio.\n\n[![Demo video](https://i.imgur.com/9fvqV2N.png)](http://www.youtube.com/watch?v=OkYrHAqu3fc)\n\na fork of [Karl Stavestrand's](mailto:karl@stavestrand.no) [C.A.V.A.](https://github.com/karlstav/cava) by [Nikola Pavlica](mailto:pavlica.nikola@gmail.com)\n\n- [What it is](#what-it-is)\n- [Getting started](#getting-started)\n  - [Windows](#windows)\n  - [macOS](#macos)\n  - [Linux](#linux)\n  - [Nix](#nix)\n  - [Installing manually](#installing-manually)\n- [Updating](#updating)\n- [Usage](#usage)\n  - [Controls](#controls)\n- [Troubleshooting](#troubleshooting)\n  - [Latency notes](#latency-notes)\n  - [The visualizer isn't opening](#the-visualizer-isnt-opening)\n  - [The visualizer does nothing](#the-visualizer-does-nothing)\n  - [How do I start the visualizer on system startup](#how-do-i-start-the-visualizer-on-system-startup)\n- [Configuration](#configuration)\n  - [Equalizer](#equalizer)\n  - [Capturing audio](#capturing-audio)\n    - [From WASAPI (Windows)](#from-wasapi-windows-only-super-easy)\n    - [From Pulseaudio monitor source](#from-pulseaudio-monitor-source-easy-as-well-unsupported-on-macos-and-windows)\n    - [From PortAudio](#from-portaudio)\n    - [From ALSA-loopback device (Tricky)](#from-alsa-loopback-device-tricky-unsupported-on-macos-and-windows)\n    - [From mpd's fifo output](#from-mpds-fifo-output)\n    - [sndio](#sndio)\n    - [squeezelite](#squeezelite)\n  - [Output modes](#output-modes)\n  - [Configuring OpenGL](#configuring-opengl)\n    - [Programming OpenGL shaders](#programming-opengl-shaders)\n  - [Configuring Cairo](#configuring-cairo)\n  - [Basic window options](#basic-window-options)\n  - [Window position](#window-position)\n  - [Advanced window options](#advanced-window-options)\n    - [Transparency](#transparency)\n    - [Advanced window behaviour](#advanced-window-behaviour)\n    - [Fullscreening the visualizer without changing the viewport](#fullscreening-the-visualizer-without-changing-the-viewport)\n  - [Vsync](#vsync)\n  - [Bars](#bars)\n  - [Colors and gradients](#colors-and-gradients)\n  - [Accent colors](#accent-colors)\n  - [Additional options](#additional-options)\n- [Contribution](#contribution)\n  - [Reporting issues](#reporting-issues)\n\n\n\nWhat it is\n----------\n\nX.A.V.A. is a bar spectrum audio visualizer in a graphical window\n (X11, Wayland (wlroots and xdg shell), Windows, SDL2).\n\nThis program is not intended for scientific use. It's written\n to look responsive and aesthetic when used to visualize music. \n\n\nGetting started\n---------------\n\n### Windows\n\nThere should be an installer in the Releases page of this repository. Just\n download, install and run it. Non-release builds are unstable, so expect\n breakage.\n\nYou can get them at the [Releases](https://github.com/nikp123/xava/releases)\npage (labeled as \"Development build\").\n\nThe configuration file is located in ``%appdata%\\xava\\config.cfg``\n\nTechnical notes:\n\n\u003e It is NOT possible to compile under Windows nor do I recommend doing it.\n\n\u003e Windows version lacks features compared to Linux version as that's my target.\nIf you want the \"full\" experience, consider using this on a Linux machine.\n\n### macOS\n\n\u003e VERY likely that it's broken. I don't recommend trying this unless you are\ncompletely sure that you know what you're doing.\n\nYou have to compile this yourself, get the dependencies installed via brew (look\n below) and compile it using the method described above.\n\nOnce you've done that, install [Background Music](https://github.com/kyleneideck/BackgroundMusic)\n and get it running on your Mac machine. Then, install the latest\n [XQuartz](https://www.xquartz.org/releases/index.html) build.\n Now what you need to do is add the following into the ``[input]``\n section of the config file:\n```\nmethod = portaudio\nsource = \"Background Music\"\n```\nAnd now, within \"Background Music\" change the audio source of\n XAVA to the speaker output that you want recorded.\n\nYou are free to use either ``ncurses`` or ``x11_cairo`` output methods.\n\nNo OpenGL, because Apple likes to be Apple.\n\n\n### Linux\n\nI recommend grabbing the AppImage, as it deals with all dependency issues upfront\nand all you **really** need to to is just download and run it.\n\nYou can get it at the [Releases](https://github.com/nikp123/xava/releases)\npage (labeled as \"Development build\").\n\n\n### Nix\n\nNo build cache at the moment, but you're able to build and run this using one command:\n```nix\nnix run git+https://github.com/nikp123/xava?submodules=1\n```\n(Be sure to put the flakeref in quotes if you're using the fish shell).\n\n(No, the ``github:`` flakeref type doesn't work due to some bugs on nixpkgs)\n\n\n### Installing manually\n\nNOTE: I **strongly** advise you use the AppImage as it'll sort out everything.\nBut if you want to build this, you're going to be on your own when it comes to\nbuild errors and messages.\n\nHowever, issues related to AUR packages are to be forwarded here (since I\nmaintain them).\n\nAfter grabbing your basic build tools such as CMake, GCC and others you're\nsupposed to follow this sequence of commands:\n```\ngit clone https://github.com/nikp123/xava\ncd xava\nmkdir build\ncd build\ncmake .. -DCMAKE_INSTALL_PREFIX=/usr\nmake\nsudo make install\n```\n\nAnd uninstalling with:\n```\ncat install_manifest.txt | xargs sudo rm -\n```\n\nUpdating\n--------\n\nIf you happen to be updating this program, just keep in mind that breaking\nchanges DO occur sometimes. \n\nIn most cases, errors that show up might look like\n[issue #43](https://github.com/nikp123/xava/issues/43)\nwhich (likely) can be fixed with a simple config reset.\n\nIn order to fix it I recommend just resetting your config by deleting:\n\n* ``%APPDATA%\\xava`` on Windows\n* ``$HOME/.config/xava`` on Linux\n\nYou will lose your modifications if you do this, so I'd recommend making a\nbackup first.\n\nUsage\n-----\n\nAfter you've installed it, to use this visualizer you'll have to be playing\nsomething on your system (be it a movie, voice chat or song, doesn't matter) and\nlaunch it. If everything succeeded, you'll see an audio visualization of whatever\naudio is going through your system. If not, please refer to [Capturing audio](#capturing-audio)\nsection of this README.\n\nIn order to launch the application (in most cases), you'll be able to start it\nvia a start menu entry or a desktop shortcut. If not, you can still choose to\nstart it as a command-line executable:\n\n\tUsage : xava [options]\n\tVisualize audio input in terminal. \n\n\tOptions:\n\t\t-p\tpath to config file\n\t\t-v\tprint version\n\nExit by pressing Q, ESC or by closing the window ;)\n\n### Controls\n\n| Key | Description |\n| --- | ----------- |\n| \u003ckbd\u003eup\u003c/kbd\u003e / \u003ckbd\u003edown\u003c/kbd\u003e| increase/decrease sensitivity |\n| \u003ckbd\u003eleft\u003c/kbd\u003e / \u003ckbd\u003eright\u003c/kbd\u003e| increase/decrease bar width |\n| \u003ckbd\u003ea\u003c/kbd\u003e / \u003ckbd\u003es\u003c/kbd\u003e | increase/decrease bar spacing |\n| \u003ckbd\u003ef\u003c/kbd\u003e | toggle fullscreen |\n| \u003ckbd\u003ec\u003c/kbd\u003e / \u003ckbd\u003eb\u003c/kbd\u003e| change forground/background color |\n| \u003ckbd\u003er\u003c/kbd\u003e | restart visualizer |\n| \u003ckbd\u003eq\u003c/kbd\u003e or \u003ckbd\u003eESC\u003c/kbd\u003e| quit the program |\n\n\nTroubleshooting\n---------------\n\n### Latency notes\n\nIf you see latency issues, ie. visualizer not reacting on time,\n try turning off demanding graphical effects and/or shrinking the window,\n or just lower the ``fft_size`` and ``size`` (within ``[input]``), as\n increasing capture time creates a delay.\n\nIf your audio device has a huge buffer, you might experience that xava\n is actually ahead than the audio you hear. This reduces the experience\n of the visualization. To fix this, try decreasing the buffer settings\n in your audio playing software. Or in case of MPD, just quickly pause\n and resume playback (yes, this is a bug with MPD's pulse implementation).\n\n### The visualizer isn't opening\n\nThere's something seriously wrong with the visualizers configuration, please\ncheck that the configuration is okay first and then file a bug if it's still not\nworking.\n\n### The visualizer does nothing\n\nThe audio configuration might be incorrect, please refer to the [Capturing audio](#capturing-audio)\nsection of this README.\n\n### How do I start the visualizer on system startup\n\nOn Windows create a shortcut of the ``xava.exe`` \n(which is in the install directory) and copy it to\n``C:\\Users\\you\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\``\n\nTo-do Linux instructions: But basically just make sure that the ``xava``\nexecutable or the AppImage one runs at startup.\n\n\nConfiguration\n-------------\n\n\u003cb\u003e\nImportant note:\n\nStarting from 0.7.0.0, the configuration layout has been SIGNIFICANTLY CHANGED.\nPlease check ``examples_files/config`` before filing a bug. This has been done\nto ease further development.\n\u003c/b\u003e\n\nIf you're running Windows and you used the installer, you'll find a\n``Configure XAVA`` shortcut in your Start Menu. Use it to open the XAVA\nconfiguration.\n\nBy default a configuration file is located in `$XDG_CONFIG_HOME/xava/config`, \n`$HOME/.config/xava/config` or on Windows `%APPDATA%\\xava\\config`\n\nThe configurations are seperated into different categories such as ``[general]``\nor ``[window]`` which are used to configure how certain parts of the visualizer\nshould function. \n\nFor example: ``[filter]`` refers to options that control the behavior of the\naudio **filtering**/conversion to bars system, whilst ``[output]`` controls how\nthe output result should be drawn.\n\nBy default the configurations are commented by a semi-colon ``;`` in front of\nthe option. You'll need to remove this semi-colon for the configuration changes\nto be effective. \n\n\n### Equalizer\n\nTo change the amplitude of certain frequency ranges, XAVA features an equalizer\nin the ``[eq]`` section of the config file to do so.\n\nThe equalizer works by setting an amplitude value to a incremental\nwhich refers to the part of the frequency spectrum.\n\n**Examples on how the equalizer works:**\n\n    [eq]\n    1=0\n    2=1\n    3=0\n    4=1\n    5=0\n\n![3_138](https://cloud.githubusercontent.com/assets/6376571/8670183/a54a851e-29e8-11e5-9eff-346bf6ed91e0.png)\n\nIn this example the frequency spectrum is divided in 5 parts. \nYou may be able to see that the 1st, 3rd and 5th parts have been totally disabled and\nyou can see the result of it on the screenshot above.\n\n    [eq]\n    1=2\n    2=2\n    3=1\n    4=1\n    5=0.5\n\n![3_139](https://cloud.githubusercontent.com/assets/6376571/8670181/9db0ef50-29e8-11e5-81bc-3e2bb9892da0.png)\n\nAnd in this example you can see that the lower parts (1 and 2) \nhave been amplified while 5 is being lowered.\n\n\n### Capturing audio\n\nThe idea is that on most systems this should \"just work\" out of the box. If not,\nkeep reading.\n\nThe ``[input]`` section of the config file controls where and how XAVA captures\nit's \"audio input\".\n\nThe ``method`` option describes which system should be used to capture the audio\nsamples for the visualizer to process and ``source`` tells that \"capture source\"\nwhere to capture that audio information from. FXP. your microphone or seperate\naudio input source.\n\n#### From WASAPI (Windows only, super easy)\n\nIf you are on Windows, just use this.\n Don't even bother dealing with other options. \n\nIt's enabled by default if it detects compilation for Windows and if it's\n disabled go and set ``method`` to ``wasapi`` in the ``[input]``section of the\n config file.\n\nIf you want to record loopback audio (that is \"what you hear\")\n (default) set ``source = loopback`` in the ``[input]`` section\n of the config file. Otherwise you can set anything else for\n it to record from the default microphone.\n\n#### From Pulseaudio monitor source (Easy as well, unsupported on macOS and Windows)\n\nFirst make sure you have installed pulseaudio dev files and\n that xava has been built with pulseaudio support (it should\n be automatically if the dev files are found).\n\nIf you're lucky all you have to do is to set this line in the\n config file under the ``[input]`` section ``method = pulseaudio``.\n \nIf nothing happens you might have to use a different source\n than the default. The default might also be your microphone.\n Look at the config file for help. \n\n#### From portaudio\n\nFirst make sure you have portaudio dev files and that xava was\n built with portaudio support. Since portaudio combines the\n functionality of all audio systems, it should be the most compatible.\nHowever, it is NOT \"out of the box\" because it requires some configuring.\n\n1. To enable just set ``method`` to  ``portaudio`` in the ``[input]`` section of\n your config. Afterwards change the portaudio input device, by setting ``source``\n to ``list`` temporarily and by running xava again.\n\n* It should list all of the available audio devices on your system\n (even that aren't input devices, watch out for that).\n\n2. Once you find the device you want to record from,\n take it's number and set ``soruce`` to equal that number.\n\n#### From ALSA-loopback device (Tricky, unsupported on macOS and Windows)\n\nSet ``method`` to ``alsa`` in ``[output]`` section the config file.\n\nALSA can be difficult because there is no native way to grab audio\n from an output. If you want to capture audio straight fom the output\n (not just mic or line-in), you must create an ALSA loopback interface,\n then output the audio simultaneously to both the loopback and your\n normal interface.\n\nTo create a loopback interface simply run:\n\n`sudo modprobe snd_aloop`\n\nHopefully your `aplay -l` should now contain a loopback interface.\n\nTo make it presistent across boot add the line `snd-aloop` to\n \"/etc/modules\". To keep it form beeing loaded as the first\n soundcard add the line `options snd-aloop index=1`to\n \"/etc/modprobe.d/alsa-base.conf\", this will load it at '1'.\n You can replace '1' with whatever makes most sense in your audio setup.\n\nPlaying the audio through your Loopback interface makes it\n possible for xava to to capture it, but there will be no sound\n in your speakers. In order to play audio on the loopback interface\n and your actual interface you must make use of the ALSA multi channel.\n\nLook at the included example file `example_files/etc/asound.conf`\n on how to use  the multi channel. I was able to make this work\n on my laptop (an Asus UX31 running Ubuntu), but I had no luck\n with the ALSA method on my Rasberry PI (Rasbian) with an USB DAC.\n The PulseAudio method however works perfectly on my PI. \n\nRead more about the ALSA method [here](http://stackoverflow.com/questions/12984089/capture-playback-on-play-only-sound-card-with-alsa).\n\nIf you are having problems with the alsa method on Rasberry PI,\n try enabling `mmap` by adding the following line to `/boot/config.txt` and reboot:\n\n```\ndtoverlay=i2s-mmap\n```\n\n#### From mpd's fifo output\n\nAdd these lines in mpd:\n\n    audio_output {\n        type                    \"fifo\"\n        name                    \"my_fifo\"\n        path                    \"/tmp/mpd.fifo\"\n        format                  \"44100:16:2\"\n    }\n\nUncomment and change input method to `fifo` in the config file.\n\nThe path of the fifo can be specified with the `source` parameter.\n\nI had some trouble with sync (the visualizer was ahead of the sound).\n Reducing the ALSA buffer in mpd fixed it:\n\n    audio_output {\n            type            \"alsa\"\n            name            \"My ALSA\"\n            buffer_time     \"50000\"   # (50ms); default is 500000 microseconds (0.5s)\n    }\n\n#### sndio\n\nsndio is the audio framework used on OpenBSD, but it's also available on\n FreeBSD and Linux. So far this is only tested on FreeBSD.\n\nTo test it\n```bash\n# Start sndiod with a monitor sub-device\n$ sndiod -dd -s default -m mon -s monitor\n\n# Set the AUDIODEVICE environment variable to override the default\n# sndio device and run xava\n$ AUDIODEVICE=snd/0.monitor xava\n```\n\n#### squeezelite\n\n[squeezelite](https://en.wikipedia.org/wiki/Squeezelite) is one of several\n software clients available for the Logitech Media Server. Squeezelite can\n export it's audio data as shared memory, which is what this input module uses.\nConfigure XAVA with the `-DSHMEM=ON` (cmake) option, then adapt your config:\n```\nmethod = shmem\nsource = /squeezelite-AA:BB:CC:DD:EE:FF\n```\nwhere `AA:BB:CC:DD:EE:FF` is squeezelite's MAC address (check the LMS\n Web GUI (Settings\u003eInformation) if unsure).\n\nNote: squeezelite must be started with the `-v` flag to enable visualizer support.\n\n\n### Output modes\n\nSince 0.7.1.1 the output methods have been sorted into three categories:\n * OpenGL output methods\n * Cairo output methods\n * Unsupported output methods (basically those that don't have **good** support)\n\nIn the ``[output]`` section of the config there's an parameter named ``method``.\nThis \"method\" determines what drawing system you will like XAVA to use for it's\nvisualizations. That can be either ``cairo`` or ``opengl``.\n\n * ``opengl`` uses your GPU for accelerated graphics (but can be demanding on\n the system)\n * ``cairo`` doesn't use your GPU, but can be CPU-heavy if too many options/effects are used\n\nSelecting any of those would automatically load the appropriate window backend\nfor you. But in case you don't like that, you can specify the backend manually:\n\nFor example:\n * Windows uses ``win``\n * Linux uses either ``x11`` or ``wayland``\n * Any other operating system is going to use ``sdl2``\n * And unsupported modes such as ``ncurses`` (which is a terminal display)\n\nTo select whether you'd use ``opengl`` or ``cairo`` with any of the\naforementioned window backends, you just type ``_thing``  after the backend\nname. Like so: ``win_cairo`` or ``x11_opengl``\n\nBoth Cairo and OpenGL use what I call \"modules\" that you can mix and match to\ndisplay whatever you want in the visualizer. These can be adjusted by going into\ntheir respective categories within the config file:\n * For OpenGL there's the ``[gl]`` category\n * For Cairo there's the ``[cairo]`` category\n\n### Configuring OpenGL\n\nSame as Cairo, you could set up OpenGL so that it uses \"modules\" which are just\nseperate plugins that allow further customization. They are enabled by adding\noptions from module_1 to module_(however many you need) and are drawn in that\norder. That means that the module_1's pixels could get overwritten by module_2.\n\nModules currently included in XAVA are:\n * ``bars`` (default) - draws the usual horizontal bar layout\n * ``stars`` - a pre-2016 Monstercat inspired star effect\n * ``bars_circle`` - same as ``bars`` but drawn in a circle\n\nEach of these modules has it's seperate config file which can be found under:\nxava config directory \u003e gl \u003e module \u003e *module's name* \u003e config.ini\n\nIf it's not there, it's most that configuration is likely NOT supported by said\nmodule.\n\nAdditionally, you can (optionally) apply a *single* post-processing shader effect\nto the entire screen via the ``post_shader`` option. Currently, packed-in shaders\nare:\n * ``default`` - does nothing special basically\n * ``shadow`` - adds simple 2D shadows\n * ``kinetic`` - changes background opacity based on the intensity of music\n\n#### Programming OpenGL shaders\n\nYou are free to add more if you'd like, though it requires programming knowledge.\nThe files are located in your config's directory \u003e gl \u003e shaders \u003e the shader's\nname. There you must add three files:\n * ``config.ini`` - This configures the engine properties about which resources\n it should generate for said shader. For users, no touchy this part (it **will**\n be bad).\n * ``fragment.glsl``\n * ``vertex.glsl``\n\nAnd optionally:\n * ``geometry.glsl``\n\nNOTE: Variables are non-standard, so you'll HAVE to look into the code itself to\nfigure those out (am sorry about this).\n\n### Configuring Cairo\n\nCairo, as opposed to OpenGL, is much simpler, but that comes with graphical\neffects limitations (and sometimes) bad performance. But unlike OpenGL, it is\n*more* flexible. One example of its flexibility is its ability to add as many\nmodules as you'd like in any order that you'd like.\n\nBy going into the ``[cairo]`` section of the config you can add modules by\nappending (or changing) the line/option:\n``module_$indexnumber = module's name``\nWhere ``$indexnumber`` represents the order at which something is drawn and\nit **must** start from 1 and increment accordingly ``2, 3`` and so forth.\n\nCurrently, there are 4 available modules you can choose from:\n * ``bars`` - draws horizontal bars as it regularely would\n * ``stars`` - draws stars on the screen that move based on the intensity of\n music\n * ``kinetic`` - changes the background opacity based on the intensity of must,\n be absolutely sure that it's at the lowest \"layer\" (aka 0) otherwise it WILL\n overwrite everything on the screen\n * ``media_info`` (Linux-only) - Displays song artist, title and artwork in the\n top left part of the screen.\n\nMix and match these for optimum effect, however, be sure to not do too much as\nyou can easily overwhelm your system by using this since it's CPU-based graphics.\n\nIf you want the lightest possible setup, I recommend just sticking with the default\n``bars`` module.\n\n### Basic window options\n\nYou can find these in the ``[window]`` section of the configuration file:\n\nWindow size:\n\n\twidth = *number of pixels*\n\theight = *number of pixels*\n\nToggle full-screen:\n\n\tfullscreen = *true or false*\n\nToggle window border:\n\n\tborder = *true or false*\n\n\n### Window position\n\nMove the window on startup to a specific part of the screen:\n\n\talignment = 'top_left', 'top', 'top_right'. 'left', 'center', 'right', 'bottom_left', 'bottom', 'bottom_right' and by default 'none'\n\nIn addition to window aligment you can adjust the window position further with:\n\n\tx_padding = *specify offset in pixels*\n\n\ty_padding = *specify offset in pixels*\n\n\n### Advanced window options\n\nThe following features enable options that come with recent OSes\nand may introduce problems on older software/hardware (fxp. Windows XP),\n but in return they may look really nice if you configure them properly.\n\n#### Transparency\n\nYou can enable transparent windows:\n     \n\ttransparency = *true or false*\n\nAnd with transparency comes the ability to change the opacity of the background and the bars:\n\n\tforeground_opacity = *range from 0.0 to 1.0*\n\tbackground_opacity = *range from 0.0 to 1.0*\n\n#### Advanced window behaviour\n\nForce the window to be behind any window (may not work):\n    \n\tkeep_below = *true or false*\n\nSet window properties (useful for scripts relying on window class information):\n\n\tset_win_props = *true or false*\n\nThis changes the X11 window type so that the compositor doesn't\napply shadows and blur onto the window. However, this is not\nguaranteed to work, plus additional breakage may occur. \n\nMake the window not react on mouse input (it just lets the click\n go through the window):\n    \n\tinteractable = 0\n\nPro-tip: You can still gain control of the window by clicking\n it's taskbar icon or by alt-tabbing into it.\n\n#### Fullscreening the visualizer without changing the viewport\n\nIn case you want to make the visualizer window fullscreen, but not the visualizer\nwith it, you can do so by enabling the ``hold_size`` option in the ``[window]``\nsection of the configuration and enabling ``fullscreen``. Then use the same\noptions from [window position](#window-position) to change how the visualizer is\nplaces within the window.\n\n\n### VSync\n\nVSync is enabled by default on XAVA and works ONLY if you use OpenGL.\n\nYou can change its behavior or just outright disable it.\n\nTo do that open the configuration file and in the ``[general]`` section you will\nfind:\n\n\tvsync = 1 (1 means its enabled)\n\tvsync = -1 (enable variable refresh rate)\n\tvsync = 0 (disable Vsync)\n\tvsync = 2 (custom framerate, the number is a divisor of the refresh rate of your display)\n\n\n### Bars\n\nIn XAVA you can customize the look of the visualizer.\n\nIn the ``[general]`` section you'll find two options that let  you change the\nsize of the bars and the space between them:\n\n\tbar_width = *width in pixels*\n\tbar_spacing = *width in pixels*\n\nTo limit the number of bars displayed on the window, set the following in the\n``[general]`` category:\n\n\tbars = *insert number here*\n\n\n### Colors and gradients\n\nIn the ``color`` section of the config file you can find:\n\n\tbackground = *by name or by hex value*\n\tforeground = *same as above*\n\nAdditionally, you can specify ``default`` if you want to use your system accent\nor Xresources color instead. Supported in ``win`` and ``x11`` output modes only.\n\nBut if you want to have gradients on the bars instead of static colors, you can\nenable them by changing:\n\n\tgradient_count = *number of colors higher than 1*\n\t\n\tgradient_color_1 = *same rule as colors*\n\tgradient_color_2 = *same rule as colors*\n\t...\n\n\n### Additional options\n\nXAVA still has plenty to offer, just look up all of the options in the config\nfile. The config file also serves as documentation, so that you won't get stuck\nin configuration.\n\n\nContribution\n------------\n\nPlease read CONTRIBUTING.md before opening a pull request.\n\nThanks to:\n* [karlstav](https://github.com/karlstav)\n* [CelestialWalrus](https://github.com/CelestialWalrus)\n* [anko](https://github.com/anko)\n* [livibetter](https://github.com/livibetter)\n* [dpayne](https://github.com/dpayne)\n\nfor major contributions in the early development of this project.\n\n### Reporting issues\n\nBecause XAVA has a pretty outdated design paradigm, its error messages may appear\nout of place and convoluting. If that's the case you may file an issue where you\nexplain your confusion and I will try fixing said issue.\n\nOtherwise, if the issue is of how the program itself performs, (i.e. an actual\nbug) be SURE that you attach the full log by running XAVA **with** \n``XAVA_SCREAM=1`` set in your environment.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnikp123%2Fxava","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnikp123%2Fxava","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnikp123%2Fxava/lists"}