Dary-SleekNotify icon

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-5.4.2202 icon
denikson-BepInExPack_Valheim

BepInEx pack for Valheim. Preconfigured and includes unstripped Unity DLLs.

Preferred version: 5.4.2202

README

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)

  1. Search for SleekNotify and click Install.
  2. BepInExPack Valheim is listed as a dependency and installed automatically.

Manual

  1. Install BepInExPack Valheim.
  2. Copy SleekNotify.dll to BepInEx/plugins/yourname-SleekNotify/.
  3. 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.20 gives a satisfying waterfall.
  • StaggerDelay 0.0 makes everything arrive in sync — more of a "burst" feel.
  • Drop DisplayDuration to 2.5 if it feels like the screen is cluttered.
  • For very fast play raise SlotMoveSpeed to 20 so 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 QueueUnlockMsg or ShowMessage(TopLeft, ...) will automatically have its output routed through SleekNotify.
  • Setting InterceptTopLeft = false lets 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 InterceptTopLeft config toggle so the feature can be disabled
  • Added StackDuplicates + StackWindow config entries
  • Smooth Y-slot repositioning moved to LateUpdate (no more 1-frame position jump)
  • Reflection fields cached on first use (no per-frame GetField overhead)
  • OnLevelWasLoaded cleanup 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.