Git Product home page Git Product logo

glava's Introduction

GLava is an OpenGL audio spectrum visualizer. Its primary use case is for desktop windows or backgrounds. Displayed to the left is the radial shader module, and here is a demonstration video. Development is active, and reporting issues is encouranged.

Compiling (Or use the glava-git AUR package):

$ git clone --recursive https://github.com/wacossusca34/glava
$ cd glava
$ make
$ sudo make install
$ glava

You can pass BUILD=debug to the makefile for debug builds of both glad and glava, and you can manually specify install targets with INSTALL=..., possible arguments are unix for FHS compliant Linux and BSD distros, osx for Mac OSX, and standalone which allows you to run GLava in the build directory.

Requirements:

  • X11
  • PulseAudio
  • GLFW 3.1+ (optional, disable with DISABLE_GLFW=1)
  • Linux or BSD

Additional compile time requirements:

  • glad (included as a submodule)
  • python (required to generate bindings with glad)
  • GCC (this program uses GNU C features)

Ubuntu/Debian users: the following command ensures you have all the needed packages and headers to compile GLava:

sudo apt-get install libpulse0 libpulse-dev libglfw3 libglfw3-dev libxext6 libxext-dev python make gcc 

GLava will start by looking for an entry point in the user configuration folder (~/.config/glava/rc.glsl*), and will fall back to loading from the shader installation folder (/etc/xdg/glava*). The entry point will specify a module to load and should set global configuration variables. Configuration for specific modules can be done in their respective .glsl files, which the module itself will include.

You should start by running glava --copy-config. This will copy over default configuration files and create symlinks to modules in your user config folder. GLava will either load system configuration files or the user provided ones, so it's not advised to copy these files selectively.

To embed GLava in your desktop (for EWMH compliant window managers), use #request setxwintype "desktop" and then position it accordingly with #request setgeometry x y width height. You may want to also use #request setforcegeometry true for some window managers.

* On an XDG compliant Linux or BSD system. OSX will use /Library/glava and ~/Library/Preferences/glava instead.

Desktop window compatibility

GLava aims to be compatible with most EWMH compliant window managers. Below is a list of common window managers and issues specific to them for trying to get GLava to behave as a desktop window or widget:

WM ! Details
Mutter (GNOME, Budgie) - "native" (default) opacity should be used
Openbox (LXDE or standalone) - No issues
Xfwm (XFCE) - Untested, but should work without issues
Fluxbox - Untested, but should work without issues
IceWM - No issues
Bspwm - No issues
Herbstluftwm - hc rule windowtype~'_NET_WM_WINDOW_TYPE_DESKTOP' manage=off can be used to unmanage desktop windows
AwesomeWM - Can still be focused, may require other changes to config depending on layout
kwin (KDE) - Issues with workspaces and stacking, needs further testing
i3 (and i3-gaps) - i3 does not respect the "desktop" window type
EXWM - EXWM does not have a desktop, and forces window decorations
Unity - Needs testing
Enlightenment - Needs testing
Xmonad - Needs testing
Any non EWMH-compliant WM - Window types and hints will not work if the window manager does not support the EWMH standards.

Licensing

GLava is licensed under the terms of the GPLv3. GLava includes some (heavily modified) source code that originated from cava, which was initially provided under the MIT license. The source files that originated from cava are the following:

  • [cava]/input/fifo.c -> [glava]/fifo.c
  • [cava]/input/fifo.h -> [glava]/fifo.h
  • [cava]/input/pulse.c -> [glava]/pulse_input.c
  • [cava]/input/pulse.h -> [glava]/pulse_input.h

The below copyright notice applies for the original versions of these files:

Copyright (c) 2015 Karl Stavestrand <[email protected]>

The modified files are relicensed under the terms of the GPLv3. The MIT license is included for your convience and to satisfy the requirements of the original license, although it (no longer) applies to any code in this repository. You will find the original copyright notice and MIT license in the LICENSE_ORIGINAL file.

The below copyright applies for the modifications to the files listed above, and the remaining sources in the repository:

Copyright (c) 2017 Levi Webb

Porting

GLava was built with GLFW, making the graphics frontend mostly compatible if it were to be ported to Windows, and I have taken all the Xlib-specific code and placed it into xwin.c if anyone decides they wish to attempt at a port.

glava's People

Contributors

jarcode-foss avatar mmhobi7 avatar coderobe avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.