A simple App Dock for the Niri compositor, built with gtk-rs.
- Niri, a scrollable-tiling Wayland compositor.
- libadwaita, building blocks for modern GNOME applications.
- Tela icon theme, a flat colorful design icon theme.
Build release binary:
# build release binary to `./target/release/`.
cargo build --releaseRun debug binary:
# build debug binary to `./target/debug/` and run it.
cargo runInstall into ~/.cargo/bin:
# install from crates.io.
cargo install neodock
# install from local repository.
cargo install --path .
# install from GitHub.
cargo install --git https://github.com/lost-melody/neodockNeoDock is configured with a config file instead of GSettings,
typically ~/.config/io.github.lost-melody.NeoDock/config.toml.
I believe that by this way the configuration can be easily managed across devices.
Example (refer to neodock::config::Config):
# whether dock should hide automatically after a delay.
# zone is enabled when `auto_hide` is off.
auto_hide = true
# delay before dock auto hiding in milliseconds.
auto_hide_delay = 800
# whether dock should always display in overview even when auto hide is on.
show_in_overview = true
# in which layer dock window should display.
dock_layer = "top"
# filters windows and apps by whether they are in the
# same output or workspace where the dock window is in.
# valid values:
# - "All"/"all";
# - "SameOutput"/"same_output"/"output";
# - "SameWorkspace"/"same_workspace"/"workspace".
filter_windows = "same_output"
# command to run on launcher button clicked.
launcher_command = [
"qs", "-c", "noctalia-shell", "ipc", "call", "launcher", "toggle",
]
# list of application ids pinned to dock, where app_id is generally filenames
# in `/usr/share/applications/` without a `.desktop` extension.
pinned_apps = [
"firefox",
"kitty",
"org.gnome.Nautilus",
"steam",
]
# application id substitution dictionary.
[app_id_substitution]
Chromium = "chromium"
QQ = "com.qq.QQ"Example Niri layer rule:
layer-rule {
match namespace="^neodock$"
geometry-corner-radius 12
shadow {
on
}
background-effect {
blur true
xray false
}
popups {
geometry-corner-radius 15
background-effect {
blur true
}
}
}Styles can be overridden by configuring user styles,
typically ~/.config/io.github.lost-melody.NeoDock/style.css.
/* variables in the scope of dock window. */
.neodock-window {
--dock-border-color: alpha(var(--headerbar-border-color), 0.25);
--dock-border-radius: 12px;
--dock-peek-border-radius: 4px;
--dock-view-padding: 0.25em;
--dock-view-min-width: 24em;
--dock-icon-margin: 0.25em;
--dock-transition-duration: 0.25s;
--dock-animation-duration: var(--dock-transition-duration);
}
/* popover menu's background. */
popover.menu > contents {
background-color: alpha(var(--view-bg-color), 0.3);
}See style.css.



