Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
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.
By Dary
| Last updated | 2 months ago |
| Total downloads | 93 |
| Total rating | 0 |
| Categories | Tweaks AI Generated |
| Dependency string | Dary-SleekNotify-1.1.0 |
| Dependants | 0 other packages depend on this package |
This mod requires the following mods to function
denikson-BepInExPack_Valheim
BepInEx pack for Valheim. Preconfigured and includes unstripped Unity DLLs.
Preferred version: 5.4.2202README
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.