---
# Wired
Wired is light and fully customizable notification daemon that provides you with powerful and extensible layout
tools.
## Features
- **Layout** - position every element how you want it, see [wiki](https://github.com/Toqozz/wired-notify/wiki/Blocks) for more info.
- **Programmable and Interactable Layout Elements** - code your own or use layout elements from wired and contributors (accepting pull requests!).
- Text blocks which scroll.
- Backgrounds which reflect state (paused, active, extended, etc).
- Layout elements can fire events on click (open url, etc).
- More soon.
- **First Class Mouse Actions** - close, pause, and open urls within a notification with a click.
- Open an issue if you have ideas of more actions.
- **Every notification is a different window** - pretty sick of stuff only being able to show one notification at a time honestly.
## Showcase
[Check out what other people have made with Wired!](https://github.com/Toqozz/wired-notify/issues/63)
## Config
See the [Config](https://github.com/Toqozz/wired-notify/wiki/Config) wiki page for configuration settings.
## Wiki
See [the wiki](https://github.com/Toqozz/wired-notify/wiki) for everything else you need to know about using Wired.
## Making your own elements
Making your own layout elements is designed to be as easy as possible.
Anybody who knows basic Rust should be able to make a layout element.
See [the wiki](https://github.com/Toqozz/wired-notify/wiki/Making-Your-Own-Blocks) for a detailed tutorial on making and adding a layout element to Wired.
## Building
### Dependencies
`rust, dbus, cairo, pango, glib2, x11, xss (for idle support)`
### Build and Run
```sh
$ git clone https://github.com/Toqozz/wired-notify.git
$ cd wired-notify
$ cargo build --release
$ ./target/release/wired
```
## Installing
### AUR
Wired is available on the [AUR](https://aur.archlinux.org/packages/wired/)!
```sh
$ yay -S wired
```
There's also a `-git` version which tracks master. Beware! No guarantees are made about stability on the master branch. However, I do appreciate any help finding bugs before they make it to a release:
```sh
$ yay -S wired-git
```
### Nix (Flakes)
Flake support was added to Nix in version 2.4. As of Nix 2.8, you must enable the `nix-command` and `flakes` experimental features.
Wired can be run directly from the repository, using:
```sh
nix run 'github:Toqozz/wired-notify'
```
To install Wired to your user profile:
```sh
# note: the systemd service will not be available if installed with this method
nix profile install 'github:Toqozz/wired-notify'
```
To use it in another flake:
```nix
{
inputs = {
wired.url = "github:Toqozz/wired-notify";
};
}
```
#### Install for all users in NixOS
```nix
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
wired.url = "github:Toqozz/wired-notify";
};
outputs = { self, nixpkgs, wired }: let
std = nixpkgs.lib;
system = "x86_64-linux";
in {
nixosConfigurations.alice = std.nixosSystem {
inherit system;
modules = [
./configuration.nix
{
environment.systemPackages = [ wired.packages.${system}.wired ];
}
];
};
};
}
```
#### Home-Manager
##### Standalone
This flake also provides a module for [home-manager] if you installed it
[standalone](https://nix-community.github.io/home-manager/index.html#sec-install-standalone).
To use it in your configuration:
```nix
{
# ...
outputs = { self, nixpkgs, home-manager, wired, ... }: {
homeConfigurations.alice = let
system = "x86_64-linux";
in home-manager.lib.homeManagerConfiguration {
pkgs = import nixpkgs {
inherit system;
overlays = [ wired.overlays.default ];
};
modules = [
wired.homeManagerModules.default
({ ... }: {
services.wired = {
enable = true;
config = ./wired.ron;
};
})
];
};
};
}
```
##### Home-Manager - NixOS-Module
If you're using [home-manager] as a NixOS-Module, then you simply need to add
the provided overlay and home-manager-module to
[nixpkgs.overlays](https://search.nixos.org/options?channel=23.05&show=nixpkgs.overlays&from=0&size=50&sort=relevance&type=packages&query=nixpkgs.overlays)
and [home-manager.sharedModules](https://nix-community.github.io/home-manager/nixos-options.html#nixos-opt-home-manager.sharedModules):
```nix
nixpkgs.overlays = [
inputs.wired-notify.overlays.default
];
home-manager.sharedModules = [
inputs.wired-notify.homeManagerModules.default
];
```
then you'll have `services.wired` in your home-manager config.
### NetBSD
Wired is available from the official repositories,
```sh
$ pkgin install wired-notify
```
or, if you prefer to build from source
```sh
$ cd /usr/pkgsrc/x11/wired-notify
$ make install
```
### Fedora, CentOs and other RHEL-based distributions
Make sure you have DNF installed, and run the script with sudo permissions, otherwise the necessary dependencies cannot be installed.
```sh
$ cd wired-notify
$ chmod +x installer.sh
$ sudo ./installer.sh
```
## Running
The recommended way to start Wired is just to put the following in your autostart script:
```
/path/to/wired &
```
There is also a `wired.service` file in the root of the repository if you want to use systemd. Just copy it to `/usr/local/lib/systemd/user/wired.service` (or your distro equivalent) and run:
```
$ systemctl enable --now --user wired.service
```
[home-manager]: https://github.com/nix-community/home-manager