91 lines
2.7 KiB
Rust
91 lines
2.7 KiB
Rust
use clap::{Parser, ValueEnum};
|
|
|
|
#[derive(Parser)]
|
|
#[command(author, version, long_about = None, about = "\
|
|
Set a different wallpaper for the background of each Sway workspace
|
|
|
|
$ multibg-sway <WALLPAPER_DIR>
|
|
|
|
Wallpapers should be arranged in the following directory structure:
|
|
|
|
wallpaper_dir/output/workspace_name.{jpg|png|...}
|
|
|
|
Eg.
|
|
|
|
~/my_wallpapers/HDMI-A-1/1.jpg
|
|
|
|
In more detail:
|
|
|
|
- wallpaper_dir: A directory, this will be the argument
|
|
for the multibg-sway command
|
|
|
|
- output: A directory with the same name as a sway output
|
|
eg. eDP-1, HDMI-A-1
|
|
|
|
- If one has multiple outputs with the same resolution this
|
|
can be a symlink to the directory of the other output
|
|
|
|
- To get the name of current outputs from sway one may run:
|
|
|
|
$ swaymsg -t get_outputs
|
|
|
|
- workspace_name: The name of the sway workspace,
|
|
by sway defaults: 1, 2, 3, ..., 10
|
|
|
|
- Can be a manually defined workspace name (eg. in sway config),
|
|
but renaming workspaces while multibg-sway is running
|
|
is not supported currently
|
|
|
|
- Can define a fallback wallpaper with the special name: _default
|
|
|
|
- Can be a symlink to use a wallpaper image for multiple workspaces
|
|
|
|
Wallpaper images are now automatically resized at startup to fill the output.
|
|
Still it is better to have wallpaper images the same resolution as the output,
|
|
which automatically avoids resizing operations and decreases startup time.
|
|
|
|
Example:
|
|
|
|
For one having a laptop with a built-in display eDP-1
|
|
and an external monitor HDMI-A-1, wallpapers can be arranged such as:
|
|
|
|
~/my_wallpapers
|
|
├─ eDP-1
|
|
│ ├─ _default.jpg
|
|
│ ├─ 1.jpg
|
|
│ ├─ 2.png
|
|
│ └─ browser.jpg
|
|
└─ HDMI-A-1
|
|
├─ 1.jpg
|
|
└─ 3.png
|
|
|
|
Then start multibg_sway:
|
|
|
|
$ multibg-sway ~/my_wallpapers
|
|
|
|
It is recommended to edit the wallpaper images in a dedicated image editor.
|
|
Nevertheless the contrast and brightness might be adjusted here:
|
|
|
|
$ multibg-sway --contrast=-25 --brightness=-60 ~/my_wallpapers
|
|
|
|
In case of errors multibg-sway logs to stderr and tries to continue.
|
|
One may wish to redirect stderr if multibg-sway is being run as a daemon.")]
|
|
pub struct Cli {
|
|
/// adjust contrast, eg. -c=-25 (default: 0)
|
|
#[arg(short, long)]
|
|
pub contrast: Option<f32>,
|
|
/// adjust brightness, eg. -b=-60 (default: 0)
|
|
#[arg(short, long)]
|
|
pub brightness: Option<i32>,
|
|
/// wl_buffer pixel format (default: auto)
|
|
#[arg(long)]
|
|
pub pixelformat: Option<PixelFormat>,
|
|
/// directory with: wallpaper_dir/output/workspace_name.{jpg|png|...}
|
|
pub wallpaper_dir: String,
|
|
}
|
|
|
|
#[derive(Copy, Clone, PartialEq, Eq, ValueEnum)]
|
|
pub enum PixelFormat {
|
|
Auto,
|
|
Baseline,
|
|
}
|