For the reasons listed in the last section of this README, the project is abandoned in favor of its successor, dama-rs.
This program aims to be a hackable, easy to use menu that can be paired to lightweight window managers in order to change settings on the fly.
The program itself is a very thin wrapper around YAD
, and does nothing but provide
a way to launch some dialogs tied together in a tabbed window.
The individual dialogs are not necessarily a part of DAMA
, although a few ship with it.
only yad
is needed, but the example provided uses xbacklight
as a backend.
if you are on an Arch-based distribuition:
sudo pacman -S yad
if you are on a Debian-based distribution:
sudo apt install yad
To install DAMA
, simply run in a terminal:
$ ./setup.sh
$ sudo make install
The first command will copy the default menu items to your dama
folder,
which will be $XDG_CONFIG_HOME/dama
if that environment variable is set,
or simply $HOME/.config/dama
if it is not.
You can skip this part if you do not want to use the default menus and want to provide your own.
The second command will install the script as an executable and provide a desktop entry.
The appearance of the program is determined by the theme and how yad
handles it, here's how it looks
with the adwaita theme.
Any executable file in the root of your dama
folder will be interpreted as a page to
be added to the menu. Such an executable must pass over the first argument it takes to the
--plug
argument of the yad instance it spawns, and the second to the --tabnum
argument.
The name of the corresponding tab will be equal to the executable's name, minus the extension
(for example $DAMA_CONFIG_DIR/brightness.sh
results in a tabname of brightness
).
Your script may call other executables in the dama
directory, but these cannot be in the top
level to avoid being called by the main executable.
Unfortunately, I have discovered a few limitations that will not allow the project to reach the target I had set for it, and they mostly have to do with how yad handles the notebook dialogs.
As it stands, YAD relies on the xembed protocol to achieve multiple dialogs in a single window, meaning that good wayland support is not to be taken for granted. Since one of the main aims of this project is to be as independent of the desktop as possible, yad is definitely not the best foundation to build it on.
Additionally, I have noticed that nesting panes and tabs also creates segfaults.
I have decided to rebuild the project in rust, partly as a learning experience. the new repo is available here.