From 154d10a30f6433c8ac8ff8bbf9823d86432260f1 Mon Sep 17 00:00:00 2001 From: Clay Gomera Date: Thu, 28 Mar 2024 17:47:49 -0400 Subject: [PATCH] Added all other files --- README.md | 1 + dmenu/README | 24 +++++++ dwm/README | 48 ++++++++++++++ dwmblocks/LICENSE | 7 ++ dwmblocks/README.md | 15 +++++ herbe/README-tiramisu.md | 68 +++++++++++++++++++ herbe/README.md | 139 +++++++++++++++++++++++++++++++++++++++ 7 files changed, 302 insertions(+) create mode 100644 dmenu/README create mode 100644 dwm/README create mode 100644 dwmblocks/LICENSE create mode 100644 dwmblocks/README.md create mode 100644 herbe/README-tiramisu.md create mode 100644 herbe/README.md diff --git a/README.md b/README.md index 8fc9f1f75..fa1e4505e 100644 --- a/README.md +++ b/README.md @@ -138,6 +138,7 @@ These are the patches I applied to this dwm build (some of them I modified): - dwm and the suckless tools available here are made by the suckless guys at [https://suckless.org](https://suckless.org). - herbe is made by dudik and available [here](https://github.com/dudik/herbe). - tiramisu is made by Sweets and available [here](https://github.com/Sweets/tiramisu). +- dwmblocks is made by torrinfail and available [here](https://github.com/torrinfail/dwmblocks) ## License diff --git a/dmenu/README b/dmenu/README new file mode 100644 index 000000000..a8fcdfe11 --- /dev/null +++ b/dmenu/README @@ -0,0 +1,24 @@ +dmenu - dynamic menu +==================== +dmenu is an efficient dynamic menu for X. + + +Requirements +------------ +In order to build dmenu you need the Xlib header files. + + +Installation +------------ +Edit config.mk to match your local setup (dmenu is installed into +the /usr/local namespace by default). + +Afterwards enter the following command to build and install dmenu +(if necessary as root): + + make clean install + + +Running dmenu +------------- +See the man page for details. diff --git a/dwm/README b/dwm/README new file mode 100644 index 000000000..95d4fd05e --- /dev/null +++ b/dwm/README @@ -0,0 +1,48 @@ +dwm - dynamic window manager +============================ +dwm is an extremely fast, small, and dynamic window manager for X. + + +Requirements +------------ +In order to build dwm you need the Xlib header files. + + +Installation +------------ +Edit config.mk to match your local setup (dwm is installed into +the /usr/local namespace by default). + +Afterwards enter the following command to build and install dwm (if +necessary as root): + + make clean install + + +Running dwm +----------- +Add the following line to your .xinitrc to start dwm using startx: + + exec dwm + +In order to connect dwm to a specific display, make sure that +the DISPLAY environment variable is set correctly, e.g.: + + DISPLAY=foo.bar:1 exec dwm + +(This will start dwm on display :1 of the host foo.bar.) + +In order to display status info in the bar, you can do something +like this in your .xinitrc: + + while xsetroot -name "`date` `uptime | sed 's/.*,//'`" + do + sleep 1 + done & + exec dwm + + +Configuration +------------- +The configuration of dwm is done by creating a custom config.h +and (re)compiling the source code. diff --git a/dwmblocks/LICENSE b/dwmblocks/LICENSE new file mode 100644 index 000000000..3ec26564d --- /dev/null +++ b/dwmblocks/LICENSE @@ -0,0 +1,7 @@ +ISC License (ISC) + +Copyright 2020 torrinfail + +Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/dwmblocks/README.md b/dwmblocks/README.md new file mode 100644 index 000000000..dda2259b5 --- /dev/null +++ b/dwmblocks/README.md @@ -0,0 +1,15 @@ +# dwmblocks +Modular status bar for dwm written in c. +# usage +To use dwmblocks first run 'make' and then install it with 'sudo make install'. +After that you can put dwmblocks in your xinitrc or other startup script to have it start with dwm. +# modifying blocks +The statusbar is made from text output from commandline programs. +Blocks are added and removed by editing the blocks.h header file. +By default the blocks.h header file is created the first time you run make which copies the default config from blocks.def.h. +This is so you can edit your status bar commands and they will not get overwritten in a future update. +# patches +Here are some patches to dwmblocks that add features that I either don't want to merge in, or that require a dwm patch to work. +I do not maintain these but I will take pull requests to update them. +
+dwmblocks-statuscmd-b6b0be4.diff diff --git a/herbe/README-tiramisu.md b/herbe/README-tiramisu.md new file mode 100644 index 000000000..26a4e3931 --- /dev/null +++ b/herbe/README-tiramisu.md @@ -0,0 +1,68 @@ +

+ tiramisu
+ desktop notifications, the UNIX way +

+ +--- + +tiramisu is a notification daemon for \*nix desktops that implement notifications using dbus. + +Unlike other daemons, tiramisu does not have any sort of window or pop-up, but rather sends all notifications to STDOUT. Doing so enables endless customization from the end-user. + +--- + +

+ Crafted with ♡ +

+ +- [anufrievroman/polytiramisu](https://github.com/anufrievroman/polytiramisu) + +--- + +

+ Installation +

+ +Tiramisu depends upon Vala, gio, and glib. + +|Distribution|Repository|Package name| +|-|-|-| +|Arch Linux|AUR|`tiramisu-git`| +|Alpine Linux|v3.15+|`tiramisu`| +|NixOS|stable|`nixos.tiramisu`| + +Don't see your distribution? Check to make sure it wasn't forgotten at [repology](https://repology.org/projects/?search=tiramisu). +Alternatively, build from source. + +```sh +$ git clone https://github.com/Sweets/tiramisu +$ cd ./tiramisu +$ make && make install +``` + +--- + +

+ Usage +

+ +By default, tiramisu outputs all information from a notification to standard output. You can change this with `-o`, or if you wish to use JSON format, `-j`. If you need the output format to be sanitized (quotes to be escaped), you can do so with `-s`. + +Using `-o` will interpolate your desired format. + +Appropriate keys are `#source`, `#icon`, `#id`, `#summary`, `#body`, `#actions`, `#hints`, and `#timeout`. + +Using `-j` implies `-s`. + +Below is an example of the default output of tiramisu with no flags. + +``` +evolution-mail-notification +evolution +0 +New email in Evolution +You have received 4 new messages. +desktop-entry=org.gnome.Evolution|urgency=1 +Show INBOX=default +-1 +``` diff --git a/herbe/README.md b/herbe/README.md new file mode 100644 index 000000000..25eb20c8c --- /dev/null +++ b/herbe/README.md @@ -0,0 +1,139 @@ +# 🌱 herbe +> Daemon-less notifications without D-Bus. Minimal and lightweight. + +

+ +

+ +## Features +* Under 200 lines of code +* Doesn't run in the background, just displays the notification and exits +* No external dependencies except Xlib and Xft +* Configurable through `config.h` or Xresources ([using this patch](https://github.com/dudik/herbe/pull/11)) +* [Actions support](#actions) +* Extensible through [patches](https://github.com/dudik/herbe/pulls?q=is%3Aopen+is%3Apr+label%3Apatch) + +## Table of contents + +* [Usage](#usage) + * [Patches](#patches) + * [Dismiss a notification](#dismiss-a-notification) + * [Actions](#actions) + * [Newlines](#newlines) + * [Multiple notifications](#multiple-notifications) + * [Notifications don't show up](#notifications-dont-show-up) +* [Installation](#installation) + * [Packages](#packages) + * [Dependencies](#dependencies) + * [Build](#build) +* [Configuration](#configuration) +* [Contribute](#contribute) + +## Usage + +### Patches +[List of available patches](https://github.com/dudik/herbe/pulls?q=is%3Aopen+is%3Apr+label%3Apatch) + +To create a new patch you'll have to open a pull request with your changes. Append `.diff` to the pull request URL to get a downloadable diff file. Don't forget to prefix the title with `patch:` and to apply the `patch` label to it. For inspiration, look at [my Xresources patch](https://github.com/dudik/herbe/pull/11). Thank you. + +_Note: This patching method was heavily inspired by [dylan's sowm](https://github.com/dylanaraps/sowm)._ + +### Dismiss a notification +A notification can be dismissed either by clicking on it with `DISMISS_BUTTON` (set in config.h, defaults to left mouse button) or sending a `SIGUSR1` signal to it: +```shell +$ pkill -SIGUSR1 herbe +``` +Dismissed notifications return exit code 2. + +### Actions +Action is a piece of shell code that runs when a notification gets accepted. Accepting a notification is the same as dismissing it, but you have to use either `ACTION_BUTTON` (defaults to right mouse button) or the `SIGUSR2` signal. +An accepted notification always returns exit code 0. To specify an action: +```shell +$ herbe "Notification body" && echo "This is an action" +``` +Where everything after `&&` is the action and will get executed after the notification gets accepted. + +### Newlines +Every command line argument gets printed on a separate line by default e.g.: +```shell +$ herbe "First line" "Second line" "Third line" ... +``` +You can also use `\n` e.g. in `bash`: +```shell +$ herbe $'First line\nSecond line\nThird line' +``` +But by default `herbe` prints `\n` literally: +```shell +$ herbe "First line\nStill the first line" +``` +Output of other programs will get printed correctly, just make sure to escape it (so you don't end up with every word on a separate line): +```shell +$ herbe "$(ps axch -o cmd:15,%cpu --sort=-%cpu | head)" +``` + +### Multiple notifications +Notifications are put in a queue and shown one after another in order of creation (first in, first out). They don't overlap and each one is shown for its entire duration. + +### Notifications don't show up +Most likely a running notification got terminated forcefully (SIGKILL or any uncaught signal) which caused the semaphore not getting unlocked. First, kill any `herbe` instance that is stuck: +```shell +$ pkill -SIGKILL herbe +``` +Then just call `herbe` without any arguments: +```shell +$ herbe +``` +Notifications should now show up as expected. + +Don't ever send any signals to `herbe` except these: +```shell +# same as pkill -SIGTERM herbe, terminates every running herbe process +$ pkill herbe + +$ pkill -SIGUSR1 herbe +$ pkill -SIGUSR2 herbe +``` +And you should be fine. That's all you really need to interact with `herbe`. + +## Installation +### Packages +[![Packaging status](https://repology.org/badge/vertical-allrepos/herbe.svg)](https://repology.org/project/herbe/versions) + +[OpenBSD patch](https://github.com/dudik/herbe/pull/4) + +[FreeBSD patch](https://github.com/dudik/herbe/pull/16) + +[Wayland port](https://github.com/muevoid/Wayherb) by [muevoid](https://github.com/muevoid) + +**Only the [herbe-git AUR package](https://aur.archlinux.org/packages/herbe-git/) is maintained by me.** + +### Dependencies +* X11 (Xlib) +* Xft + +The names of packages are different depending on which distribution you use. +For example, if you use [Void Linux](https://voidlinux.org/) you will have to install these dependencies: +```shell +sudo xbps-install base-devel libX11-devel libXft-devel +``` + +### Build +```shell +git clone https://github.com/dudik/herbe +cd herbe +sudo make install +``` +`make install` requires root privileges because it copies the resulting binary to `/usr/local/bin`. This makes `herbe` accessible globally. + +You can also use `make clean` to remove the binary from the build folder, `sudo make uninstall` to remove the binary from `/usr/local/bin` or just `make` to build the binary locally. + +## Configuration +herbe is configured at compile-time by editing `config.h`. Every option should be self-explanatory. There is no `height` option because height is determined by font size and text padding. + +[Xresources patch](https://github.com/dudik/herbe/pull/11) + +## Contribute +If you want to report a bug or you have a feature request, feel free to [open an issue](https://github.com/dudik/herbe/issues). + +## Projects with herbe integration +- [qutebrowser](https://qutebrowser.org/) supports showing web notifications via herbe, via the `content.notifications.presenter` setting.