Fish configuration snippets stored in fish/:
- Base shell settings
- Catppuccin-inspired colors
- Custom key bindings
- App helper functions
- Starship prompt setup
- Volta PATH setup
Copy the configs to /etc/fish/conf.d:
sudo wget -O /etc/fish/conf.d/config.fish https://raw.githubusercontent.com/ExposedCat/dotfiles/main/fish/config.fish
sudo wget -O /etc/fish/conf.d/colors.fish https://raw.githubusercontent.com/ExposedCat/dotfiles/main/fish/colors.fish
sudo wget -O /etc/fish/conf.d/keys.fish https://raw.githubusercontent.com/ExposedCat/dotfiles/main/fish/keys.fish
sudo wget -O /etc/fish/conf.d/apps.fish https://raw.githubusercontent.com/ExposedCat/dotfiles/main/fish/apps.fish
sudo wget -O /etc/fish/conf.d/starship.fish https://raw.githubusercontent.com/ExposedCat/dotfiles/main/fish/starship.fish
sudo wget -O /etc/fish/conf.d/volta.fish https://raw.githubusercontent.com/ExposedCat/dotfiles/main/fish/volta.fishFastfetch is a CLI tool to display PC info. This repo includes:
config.jsoncwith the main module layoutbongo.txtASCII art logo
- Create config directory if needed:
mkdir -p ~/.config/fastfetch- Download config:
wget -O ~/.config/fastfetch/config.jsonc https://raw.githubusercontent.com/ExposedCat/dotfiles/main/fastfetch/config.jsonc
wget -O ~/.config/fastfetch/bongo.txt https://raw.githubusercontent.com/ExposedCat/dotfiles/main/fastfetch/bongo.txtLogiops is a driver for Logitech mice configuration. Config includes:
- SmartShift
- HiRes scroll
- Volume control on gesture up/down
- Brightness control on gesture left/right
- Play/Pause on gesture click
- Workspace switching on side forward/backward buttons
Superbutton emulation on DPI button click
Copy the config file to /etc:
sudo wget -O /etc/logid.cfg https://raw.githubusercontent.com/ExposedCat/dotfiles/main/logiops/logid.cfgCopy the resume fix script to /etc/systemd/system-sleep/after-resume:
sudo wget -O /etc/systemd/system-sleep/after-resume https://raw.githubusercontent.com/ExposedCat/dotfiles/main/logiops/resume-fix
sudo chmod +x /etc/systemd/system-sleep/after-resumeservices/sleep/ restricts normal systemd suspend to deep (S3) sleep using
SuspendState=mem and MemorySleepMode=deep. If that attempt fails, systemd
stops instead of trying the freeze / s2idle fallback. Requires systemd 256+
and hardware with deep sleep support; this is the configuration for the
TUF GAMING B650-PLUS desktop with AMD graphics.
On October 6, 2026, a pending wake event interrupted deep sleep. Both GPUs
recovered from that attempt, but the immediate s2idle fallback was rejected
by the integrated GPU and left the dedicated Radeon wedged. The original wake
device was not recorded. This configuration removes that fallback; it does not
guarantee recovery from every possible GPU or firmware fault.
The suspend service also enables kernel power-management debug messages and
records wake IRQ information, wake-source counters, suspend statistics, interrupt
mapping, and USB / ACPI wake settings before and after each attempt. Diagnostics
are saved in the system journal, time-limited to five seconds per hook, and
cannot block sleep on failure. Kernel PM debug messages remain enabled until
reboot (or until /sys/power/pm_debug_messages is set back to 0).
From the repository root:
./services/sleep/manage installThe helper installs the two configuration files under /etc/systemd/ and the
executable under /usr/local/sbin/, restores SELinux labels when available, and
reloads systemd. It takes effect on the next sleep attempt without rebooting.
When run from Distrobox, it executes on the host and requests administrator
authentication there. Installation does not trigger sleep.
_scripts/load includes this installation. _scripts/dump calls
./services/sleep/manage dump to save the installed host files back to the repo.
After the next sleep attempt, inspect these logs on the host (use -b -1
instead of -b if you have rebooted since the attempt):
journalctl -b -u systemd-suspend.service
journalctl -b -k -g 'PM:|Wakeup|wakeup|amdgpu'To remove this configuration, run on the host:
sudo rm /etc/systemd/sleep.conf.d/90-deep-only.conf \
/etc/systemd/system/systemd-suspend.service.d/90-wake-diagnostics.conf \
/usr/local/sbin/sleep-wake-diagnostics
sudo systemctl daemon-reload
echo 0 | sudo tee /sys/power/pm_debug_messagesCustom ALSA profiles keep HDMI / DisplayPort 5 on the OMEN monitor as the only output on the Navi GPU and make the RØDE PodMic USB input-only. The PodMic microphone remains available. Alternate GPU outputs, PodMic playback ports, and the Pro Audio profiles for these two devices are hidden.
The rule targets GPU alsa_card.pci-0000_03_00.1 and PodMic
alsa_card.usb-R__DE_R__DE_PodMic_USB_973F4E9B-00. On another machine, adjust
the device matches and HDMI mapping using wpctl status and wpctl inspect.
These ALSA rules leave other audio devices unaffected. This uses WirePlumber 0.5 configuration
and PipeWire's user ALSA profile directory (verified with PipeWire 1.6.9).
52-bluetooth-headphones-only.conf separately limits Bluetooth audio to A2DP
roles and disables the HFP/HSP backend and automatic headset switching. Bluetooth
headphones retain music playback, while hands-free/headset profiles and their
microphones are unavailable. This applies to all Bluetooth headsets, including
the WH-1000XM5; LE Audio (BAP) roles are also excluded. The USB PodMic remains
available for calls.
From the repository root, install both profiles before the rules, then reload:
mkdir -p ~/.config/alsa-card-profile/mixer/profile-sets ~/.config/wireplumber/wireplumber.conf.d
cp ./alsa-card-profile/mixer/profile-sets/{omen-hdmi5-only,podmic-input-only}.conf ~/.config/alsa-card-profile/mixer/profile-sets/ &&
cp ./wireplumber/wireplumber.conf.d/{51-audio-output-cleanup,52-bluetooth-headphones-only}.conf ~/.config/wireplumber/wireplumber.conf.d/ &&
systemctl --user restart wireplumberThe profile filenames resolve from ~/.config/alsa-card-profile/mixer/profile-sets/,
so the rule contains no username or absolute home path. _scripts/load installs
these files; _scripts/dump saves them and normalizes any absolute profile paths.
To restore the available output choices:
rm ~/.config/wireplumber/wireplumber.conf.d/51-audio-output-cleanup.conf
systemctl --user restart wireplumberTo re-enable Bluetooth headset modes separately:
rm ~/.config/wireplumber/wireplumber.conf.d/52-bluetooth-headphones-only.conf
systemctl --user restart wireplumberVisual Studio Code user settings for editor, terminal profiles, formatting, and Git behavior.
- Create settings directory if needed:
mkdir -p ~/.config/Code/User- Download config:
wget -O ~/.config/Code/User/settings.json https://raw.githubusercontent.com/ExposedCat/dotfiles/main/vscode/settings.jsonRuns ~/.startup.bash on system startup. Script in repo includes:
- Permissions for ASUS ScreenPad brightness controls
- Setting ScreenPad brightness to maximum
- Limiting battery charge to 80%
- Copy service to
/etc/systemd/system:
sudo wget -O /etc/systemd/system/startup.service https://raw.githubusercontent.com/ExposedCat/dotfiles/main/services/startup/startup.service- Replace all
$USERvalues in/etc/systemd/system/startup.servicewith your username - Copy script to your home directory:
wget -O ~/.startup.bash https://raw.githubusercontent.com/ExposedCat/dotfiles/main/services/startup/.startup.bash- Enable the service:
sudo systemctl daemon-reload
sudo systemctl enable --now startupFedora-based dev container setup with:
- Fish shell
- Starship prompt
- Node.js
- Fastfetch
- Visual Studio Code
- Codex CLI
- Deno
- Godot Steam editor
Build and create the distrobox:
./containers/dev/createFedora distrobox for GNOME Shell development with:
systemdgnome-shellmutter-develgettextdbus-daemongnome-extensions-app
Create the distrobox:
./containers/gnome-dev/createLocal ramalama inference service with:
- Podman Compose setup
- Vulkan backend
- Model/image overrides through
.env - Persistent model storage volume
- Move into the container directory:
cd containers/ramalama- Start the service:
podman compose up -d- Adjust
containers/ramalama/.envif you want a different model or image