This package has been deprecated and may no longer be maintained. We recommend looking for an alternative.
SleekNotify
Replaces Valheim's bulky unlock notification boxes with slim, Skyrim-inspired toast panels that slide in and out in a smooth staggered wave. Fully configurable timing, colours, and sizing via BepInEx config.SleekNotify v1.2.0 — Valheim Notification Overhaul
Replaces Valheim's bulky, queue-blocking unlock and TopLeft notification boxes with compact, Skyrim-inspired toast panels that animate in and out cleanly even when 10+ notifications arrive at once.
Features
| Feature | Details |
|---|---|
| Sleek panels | Dark semi-transparent background, thin parchment-gold border, top shimmer line, left accent stripe |
| Item icon | The piece/item sprite is shown inside the panel (configurable size, or set to 0 to hide) |
| Two-line layout | Topic (bold, brighter) on top; description body below. Falls back to single-line when only one is available |
| Wave animation | Panels cascade in staggered top→bottom on entry, then wave out bottom→top on exit |
| Smooth repositioning | When a panel exits, the ones below glide upward to fill the gap (LateUpdate lerp) |
| Stack-count badge | Duplicate messages within a configurable time window are merged into a single panel with a ×N badge |
| No queue delay | All notifications appear immediately, up to MaxVisible at once; excess waits in a queue |
| Full config | Every timing, size, colour, and behaviour value is exposed in the BepInEx config file |
Installation
r2modman / Thunderstore App (recommended)
- Search for SleekNotify and click Install.
- BepInExPack Valheim is listed as a dependency and installed automatically.
Manual
- Install BepInExPack Valheim.
- Copy
SleekNotify.dlltoBepInEx/plugins/yourname-SleekNotify/. - Launch the game once to generate the config file.
Configuration
Config path: BepInEx/config/yourname.SleekNotify.cfg
Use BepInEx.ConfigurationManager (F1 in-game) or r2modman's Config Editor to change values at runtime without restarting.
[Appearance]
| Key | Default | Description |
|---|---|---|
Width |
300 |
Panel width in pixels |
Height |
56 |
Panel height in pixels |
FontSize |
13 |
Body / description line font size |
TopicFontSize |
14 |
Title / topic line font size |
BackgroundColor |
dark translucent | Panel background (RGBA) |
BorderColor |
parchment gold | Border + accent colour (RGBA) |
BorderThickness |
2 |
Outer border thickness in pixels |
TextColor |
warm white | Description body text colour |
TopicColor |
bright warm | Topic / title text colour |
BadgeBackgroundColor |
amber | Stack-count badge background |
BadgeTextColor |
near-black | Stack-count badge text |
IconSize |
36 |
Sprite icon size (px). Set to 0 to hide icons |
IconPadding |
6 |
Gap between icon and text column (px) |
[Timing]
| Key | Default | Description |
|---|---|---|
DisplayDuration |
3.5 |
Seconds each panel stays fully visible |
SlideInDuration |
0.22 |
Seconds for the slide-in animation |
SlideOutDuration |
0.18 |
Seconds for the slide-out animation |
StaggerDelay |
0.07 |
Extra delay per slot index (wave effect). 0 = all at once; 0.12 = dramatic cascade |
FadeInDuration |
0.14 |
Alpha fade-in duration |
FadeOutDuration |
0.14 |
Alpha fade-out duration |
SlotMoveSpeed |
12 |
Lerp speed for panels sliding into a new slot when one above exits |
Wave feel tuning tips:
StaggerDelay 0.10–0.14+SlideInDuration 0.20gives a satisfying waterfall.StaggerDelay 0.0makes everything arrive in sync — more of a "burst" feel.- Drop
DisplayDurationto2.5if it feels like the screen is cluttered. - For very fast play raise
SlotMoveSpeedto20so columns reorder almost instantly.
[Layout]
| Key | Default | Description |
|---|---|---|
MaxVisible |
10 |
Maximum panels shown at once (excess queued) |
Spacing |
5 |
Vertical gap between panels (px) |
ScreenEdgeMarginX |
16 |
Distance from right screen edge (px) |
ScreenEdgeMarginY |
80 |
Distance from top screen edge (px) |
[Behaviour]
| Key | Default | Description |
|---|---|---|
InterceptTopLeft |
true |
Route TopLeft ShowMessage calls (item pickups, status text) through SleekNotify. Set false to leave them vanilla |
StackDuplicates |
true |
Merge identical messages within StackWindow seconds into one panel with a ×N badge |
StackWindow |
1.5 |
Seconds in which a duplicate is merged rather than spawning a new panel |
Compatibility
- MyLittleUI (shudnal) — compatible. SleekNotify only touches unlock and TopLeft message display. All of MyLittleUI's hover tweaks, map pins, forecasts, etc. continue to work normally.
- Any mod that calls
QueueUnlockMsgorShowMessage(TopLeft, ...)will automatically have its output routed through SleekNotify. - Setting
InterceptTopLeft = falselets another mod handle those messages if you're running something that provides its own TopLeft replacement.
Building from Source
Requirements: .NET SDK 6+ (or Visual Studio 2022), Valheim installed on the machine.
# Edit SleekNotify.csproj, set <ValheimDir> to your install path, then:
dotnet build SleekNotify.csproj -c Release
# Output: bin/Release/net48/SleekNotify.dll
Copy SleekNotify.dll to BepInEx/plugins/yourname-SleekNotify/.
Changelog
v1.1.0
- Added item/piece icon rendering inside each panel
- Added two-line layout (bold topic above, body below) for unlock messages
- Added stack-count badge — duplicate messages merge into ×N instead of spawning clones
- Added
InterceptTopLeftconfig toggle so the feature can be disabled - Added
StackDuplicates+StackWindowconfig entries - Smooth Y-slot repositioning moved to
LateUpdate(no more 1-frame position jump) - Reflection fields cached on first use (no per-frame
GetFieldoverhead) OnLevelWasLoadedcleanup so panels never bleed between scenes- All localisation strings now passed through
Localization.instance.Localize
v1.0.0
- Initial release — slide-in/out with stagger wave, Skyrim-style border, configurable timing/colours
License
MIT — do whatever you like, attribution appreciated.
