Personal MangoWM dotfiles for Gentoo GNU/Linux.
git clone https://github.com/fxmfxmfx/mango-dotfiles.git
cd mango-dotfiles
./scripts/check-deps.sh
./scripts/install.sh --dry-run
# If your primary output is not DP-1, apply the sed example in docs/customize.md.
# Edit .config/mango/conf.d/00-monitors.conf if your monitor layout differs.
./scripts/install.shThis repo mirrors $HOME for dot directories such as .config and .local.
The installer backs up overwritten files by default and asks whether to install
the Graphite GTK theme and Goldy icon theme. The dry run shows what would be
copied and whether optional theme/icon installs would use local sources or clone
their upstream repositories.
Run Mango from a TTY with:
~/.local/bin/start-mango.shThe setup is intentionally not distro-neutral. It assumes MangoWM, GNU userland,
Wayland tooling and fish as the interactive shell.
.config/mango- MangoWM session, monitor rules, key binds and autostart.config/yambar- top bar with Mango workspace and keyboard-layout scripts.config/foot,.config/fuzzel,.config/dunst- terminal, launcher and notifications.config/nvim- Neovim config using lazy.nvim and pinned plugin lockfile.config/fish- shell aliases and colors.local/bin- helper scripts for screenshots, clipboard, layout, portals, wallpaper and emoji pickerWallpaper- wallpapers used by the wallpaper pickerdocs- package list and customization notes for forksscreenshots- some screenshots
- Monitor config is machine-specific:
DP-1at1920x1080@170andHDMI-A-1at1920x1080@60. Edit.config/mango/conf.d/00-monitors.confbefore using this on another machine. See Mango's monitor docs: mangowm.github.io/docs/configuration/monitors. - Yambar is pinned to
DP-1in.config/yambar/config.yml. The workspace script can readYAMBAR_MANGO_OUTPUT, but the bar config and click actions still need edits if your output has another name. layout.shdefaults toDP-1; override withMANGO_OUTPUT=...if needed.- Wallpaper picker reads images from
~/Wallpaperby default. Override withWALLPAPER_DIR=/path/to/wallpapers. - Portal autostart uses
.local/bin/start-portals.sh, which starts the main, GTK and wlr portal binaries after checking normal$PATHlookup and common backend locations. - Neovim bootstraps lazy.nvim from GitHub on first launch and Treesitter parsers may need a C toolchain.
- Fish aliases and functions assume the shell-experience tools listed below
(
eza,bat,rg,fd,dust,btop,fastfetch,doas,tty-clock, etc.). Install them first or edit.config/fish/config.fishand.config/fish/functionsbefore using this setup. - See
docs/customize.mdfor the files that usually need local edits.
Run the checker first:
./scripts/check-deps.shIt is the source of truth for this setup. If it reports everything you need as
ok, you usually do not need to audit this list by hand. The list below is here
mainly so missing tools have links and are easier to install.
Portal checks are split on purpose:
- Gentoo: portal binaries commonly live under
/usr/libexec, so the checker reports those paths separately. - Most other distros: portal binaries are usually found through
$PATHor under/usr/lib.
The important part is that each portal has at least one ok line. notfound for
a Gentoo-only path is fine on a non-Gentoo system, and the reverse is fine on
Gentoo.
mangodbusdbus-run-sessionpipewirepipewire-pulsewireplumberxdg-desktop-portalxdg-desktop-portal-wlrxdg-desktop-portal-gtkfootfuzzelawwwyambardunstxsettingsd
These are mostly command-line tools used by helper scripts. Prefer
./scripts/check-deps.sh over manually reading this section.
bash- GNU
coreutils findutilsgawkor compatibleawkgrepsedheadprocps/psmisctools such aspgrepandkillallwl-clipboardcliphistwayfreezegrimslurpswappy
mpvimvthunarlibrewolfpavucontrol
fishfisherneovimgitmakegccor another C compiler for Treesitter parserspythonbtopfastfetchripgrepfdezabatdustdoastty-clockneo
For a more readable package list, see docs/packages.md.
Super+Return- terminalSuper+Esc- launcherSuper+W- browserSuper+E- file managerSuper+V- clipboard historySuper+X- wallpaper pickerSuper+/- emoji pickerPrint- monitor screenshot to clipboardCtrl+Print- full screenshot to clipboardSuper+Shift+S- area screenshot to clipboardSuper+Shift+D- area screenshot through Swappy
