Is there an existing issue for this?
Behavior
So, on most Chromium browsers, there's a title bar (usally hidden in Chromium browsers), and in Whim, this does not update for example, a new tab opens and you are on that new tab, it retains the previous title bar already there
Current implementation
Opens new tab, retains old title, I have to move the window to update it
Expected implementation
Opens new tab, updates title
How to implement this (rough explnation):
Listen for any Win32 title bar changes every 10-25 seconds
C# Config
#nullable enable
#r "C:\Users\Admin\AppData\Local\Programs\Whim\whim.dll"
#r "C:\Users\Admin\AppData\Local\Programs\Whim\plugins\Whim.Bar\Whim.Bar.dll"
#r "C:\Users\Admin\AppData\Local\Programs\Whim\plugins\Whim.CommandPalette\Whim.CommandPalette.dll"
#r "C:\Users\Admin\AppData\Local\Programs\Whim\plugins\Whim.FloatingWindow\Whim.FloatingWindow.dll"
#r "C:\Users\Admin\AppData\Local\Programs\Whim\plugins\Whim.FocusIndicator\Whim.FocusIndicator.dll"
#r "C:\Users\Admin\AppData\Local\Programs\Whim\plugins\Whim.Gaps\Whim.Gaps.dll"
#r "C:\Users\Admin\AppData\Local\Programs\Whim\plugins\Whim.LayoutPreview\Whim.LayoutPreview.dll"
#r "C:\Users\Admin\AppData\Local\Programs\Whim\plugins\Whim.SliceLayout\Whim.SliceLayout.dll"
#r "C:\Users\Admin\AppData\Local\Programs\Whim\plugins\Whim.TreeLayout\Whim.TreeLayout.dll"
#r "C:\Users\Admin\AppData\Local\Programs\Whim\plugins\Whim.TreeLayout.Bar\Whim.TreeLayout.Bar.dll"
#r "C:\Users\Admin\AppData\Local\Programs\Whim\plugins\Whim.TreeLayout.CommandPalette\Whim.TreeLayout.CommandPalette.dll"
#r "C:\Users\Admin\AppData\Local\Programs\Whim\plugins\Whim.Updater\Whim.Updater.dll"
#r "C:\Users\Admin\AppData\Local\Programs\Whim\plugins\Whim.Yaml\Whim.Yaml.dll"
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Microsoft.UI;
using Microsoft.UI.Xaml.Markup;
using Microsoft.UI.Xaml.Media;
using Whim;
using Whim.Bar;
using Whim.CommandPalette;
using Whim.FloatingWindow;
using Whim.FocusIndicator;
using Whim.Gaps;
using Whim.LayoutPreview;
using Whim.SliceLayout;
using Whim.TreeLayout;
using Whim.TreeLayout.Bar;
using Whim.TreeLayout.CommandPalette;
using Whim.Updater;
using Whim.Yaml;
using Windows.Win32.UI.Input.KeyboardAndMouse;
/// <summary>
/// This is what's called when Whim is loaded.
/// </summary>
/// <param name="context"></param>
void DoConfig(IContext context)
{
context.Logger.Config = new LoggerConfig();
// YAML config. It's best to load this first so that you can use it in your C# config.
YamlLoader.Load(context);
// Customize your config in C# here.
// For more, see https://dalyisaac.github.io/Whim/script/scripting.html
// ...
}
// We return doConfig here so that Whim can call it when it loads.
return DoConfig;
YAML Config
workspaces:
entries:
- name: Workspace 1
- name: Workspace 2
- name: Workspace 3
- name: Workspace 4
layout_engines:
entries:
- type: tree
initial_direction: right
- type: slice
variant:
type: row
- type: slice
variant:
type: column
- type: slice
variant:
type: primary_stack
- type: slice
variant:
type: secondary_primary_stack
- type: slice
variant:
type: multi_column_stack
columns:
- 2
- 1
- 0
- type: slice
variant:
type: secondary_primary_stack
primary_capacity: 1
secondary_capacity: 2
- type: focus
maximize: false
- type: floating
keybinds:
entries:
- command: whim.core.focus_next_monitor
keybind: LCtrl+LShift+LAlt+K
- command: whim.core.focus_previous_monitor
keybind: LCtrl+LShift+LAlt+J
unify_key_modifiers: true
filters:
entries: []
routers:
routing_behavior: route_to_launched_workspace
plugins:
bar:
left_components:
entries:
- type: battery_widget
center_components:
entries:
- type: focused_window_widget
shorten_title: false
right_components:
entries:
- type: date_time_widget
format: HH:mm:ss, dd MMMM yyyy
focus_indicator:
is_enabled: true
border_size: 3
is_fade_enabled: true
fade_timeout: 2
color: green
gaps:
is_enabled: true
outer_gap: 10
inner_gap: 10
default_outer_delta: 2
default_inner_delta: 2
layout_preview:
is_enabled: true
command_palette:
is_enabled: true
max_height_percent: 40
max_width_pixels: 800
y_position_percent: 20
Environment
- Windows: Windows 11 IoT Enterprise 2024
- Architecture: amd64/x86_64
- Whim: x64-0.8.6-alpha+37e06e85.37e06e851d6c6a38ae0b1f3a47e135bed6612266
Steps To Reproduce
- If you don't have Windows 11 IoT Enterprise 2024, please download it
- In the config, go to any app that changes window title bars
- when the title bar updates, it's not updated in the Whim Bar
Anything else?
log:
2026-05-07 07:20:56.931 +05:30 [ERR] WindowExtensions:57 [SetIsShownInSwitchers] IsShownInSwitchers isn't implemented, ignoring attempt to set it to: False
2026-05-07 07:20:57.238 +05:30 [INF] MutableRootSector:24 [Initialize] Initializing MutableRootSector
2026-05-07 07:20:57.239 +05:30 [INF] MonitorSector:24 [Initialize] Initializing MonitorSector
2026-05-07 07:20:57.260 +05:30 [INF] MonitorEventListener:14 [Initialize] Initializing MonitorEventListener
2026-05-07 07:20:57.261 +05:30 [INF] WindowSector:34 [Initialize] Initializing WindowSector
2026-05-07 07:20:57.263 +05:30 [INF] WindowEventListener:32 [Initialize] Initializing WindowEventListener
2026-05-07 07:20:57.266 +05:30 [INF] WorkspaceSector:56 [Initialize] Initializing WorkspaceSector
2026-05-07 07:20:57.705 +05:30 [ERR] WindowExtensions:57 [SetIsShownInSwitchers] IsShownInSwitchers isn't implemented, ignoring attempt to set it to: False
2026-05-07 07:20:57.920 +05:30 [ERR] WindowExtensions:57 [SetIsShownInSwitchers] IsShownInSwitchers isn't implemented, ignoring attempt to set it to: False
2026-05-07 07:20:57.940 +05:30 [ERR] WindowExtensions:57 [SetIsShownInSwitchers] IsShownInSwitchers isn't implemented, ignoring attempt to set it to: False
2026-05-07 07:20:58.128 +05:30 [ERR] WindowExtensions:57 [SetIsShownInSwitchers] IsShownInSwitchers isn't implemented, ignoring attempt to set it to: False
2026-05-07 07:24:30.379 +05:30 [ERR] NativeManager:157 [DwmGetWindowRectangle] Could not get the extended frame rect for 0x000200D2
2026-05-07 07:24:30.380 +05:30 [ERR] FocusIndicatorPlugin:146 [Show] Could not find window rectangle for window 0x000200D2
2026-05-07 07:24:30.421 +05:30 [ERR] NativeManager:157 [DwmGetWindowRectangle] Could not get the extended frame rect for 0x000200D2
2026-05-07 07:24:30.421 +05:30 [ERR] FocusIndicatorPlugin:146 [Show] Could not find window rectangle for window 0x000200D2
2026-05-07 07:27:14.560 +05:30 [ERR] WindowExtensions:57 [SetIsShownInSwitchers] IsShownInSwitchers isn't implemented, ignoring attempt to set it to: False
2026-05-07 07:27:14.894 +05:30 [INF] MutableRootSector:24 [Initialize] Initializing MutableRootSector
2026-05-07 07:27:14.895 +05:30 [INF] MonitorSector:24 [Initialize] Initializing MonitorSector
2026-05-07 07:27:14.918 +05:30 [INF] MonitorEventListener:14 [Initialize] Initializing MonitorEventListener
2026-05-07 07:27:14.919 +05:30 [INF] WindowSector:34 [Initialize] Initializing WindowSector
2026-05-07 07:27:14.921 +05:30 [INF] WindowEventListener:32 [Initialize] Initializing WindowEventListener
2026-05-07 07:27:14.924 +05:30 [INF] WorkspaceSector:56 [Initialize] Initializing WorkspaceSector
2026-05-07 07:27:15.700 +05:30 [ERR] WindowExtensions:57 [SetIsShownInSwitchers] IsShownInSwitchers isn't implemented, ignoring attempt to set it to: False
2026-05-07 07:27:16.035 +05:30 [ERR] WindowExtensions:57 [SetIsShownInSwitchers] IsShownInSwitchers isn't implemented, ignoring attempt to set it to: False
2026-05-07 07:27:16.066 +05:30 [ERR] WindowExtensions:57 [SetIsShownInSwitchers] IsShownInSwitchers isn't implemented, ignoring attempt to set it to: False
2026-05-07 07:27:16.475 +05:30 [ERR] WindowExtensions:57 [SetIsShownInSwitchers] IsShownInSwitchers isn't implemented, ignoring attempt to set it to: False
2026-05-07 07:27:17.472 +05:30 [ERR] NativeManager:157 [DwmGetWindowRectangle] Could not get the extended frame rect for 0x000200E2
2026-05-07 07:27:17.473 +05:30 [ERR] FocusIndicatorPlugin:146 [Show] Could not find window rectangle for window 0x000200E2
2026-05-07 07:27:17.499 +05:30 [ERR] NativeManager:157 [DwmGetWindowRectangle] Could not get the extended frame rect for 0x000200E2
2026-05-07 07:27:17.499 +05:30 [ERR] FocusIndicatorPlugin:146 [Show] Could not find window rectangle for window 0x000200E2
2026-05-07 07:27:17.522 +05:30 [ERR] NativeManager:157 [DwmGetWindowRectangle] Could not get the extended frame rect for 0x000200E2
2026-05-07 07:27:17.522 +05:30 [ERR] FocusIndicatorPlugin:146 [Show] Could not find window rectangle for window 0x000200E2
2026-05-07 07:29:52.232 +05:30 [ERR] WindowExtensions:57 [SetIsShownInSwitchers] IsShownInSwitchers isn't implemented, ignoring attempt to set it to: False
Is there an existing issue for this?
Behavior
So, on most Chromium browsers, there's a title bar (usally hidden in Chromium browsers), and in Whim, this does not update for example, a new tab opens and you are on that new tab, it retains the previous title bar already there
Current implementation
Opens new tab, retains old title, I have to move the window to update it
Expected implementation
Opens new tab, updates title
How to implement this (rough explnation):
Listen for any Win32 title bar changes every 10-25 seconds
C# Config
YAML Config
Environment
Steps To Reproduce
Anything else?
log:
2026-05-07 07:20:56.931 +05:30 [ERR] WindowExtensions:57 [SetIsShownInSwitchers] IsShownInSwitchers isn't implemented, ignoring attempt to set it to: False
2026-05-07 07:20:57.238 +05:30 [INF] MutableRootSector:24 [Initialize] Initializing MutableRootSector
2026-05-07 07:20:57.239 +05:30 [INF] MonitorSector:24 [Initialize] Initializing MonitorSector
2026-05-07 07:20:57.260 +05:30 [INF] MonitorEventListener:14 [Initialize] Initializing MonitorEventListener
2026-05-07 07:20:57.261 +05:30 [INF] WindowSector:34 [Initialize] Initializing WindowSector
2026-05-07 07:20:57.263 +05:30 [INF] WindowEventListener:32 [Initialize] Initializing WindowEventListener
2026-05-07 07:20:57.266 +05:30 [INF] WorkspaceSector:56 [Initialize] Initializing WorkspaceSector
2026-05-07 07:20:57.705 +05:30 [ERR] WindowExtensions:57 [SetIsShownInSwitchers] IsShownInSwitchers isn't implemented, ignoring attempt to set it to: False
2026-05-07 07:20:57.920 +05:30 [ERR] WindowExtensions:57 [SetIsShownInSwitchers] IsShownInSwitchers isn't implemented, ignoring attempt to set it to: False
2026-05-07 07:20:57.940 +05:30 [ERR] WindowExtensions:57 [SetIsShownInSwitchers] IsShownInSwitchers isn't implemented, ignoring attempt to set it to: False
2026-05-07 07:20:58.128 +05:30 [ERR] WindowExtensions:57 [SetIsShownInSwitchers] IsShownInSwitchers isn't implemented, ignoring attempt to set it to: False
2026-05-07 07:24:30.379 +05:30 [ERR] NativeManager:157 [DwmGetWindowRectangle] Could not get the extended frame rect for 0x000200D2
2026-05-07 07:24:30.380 +05:30 [ERR] FocusIndicatorPlugin:146 [Show] Could not find window rectangle for window 0x000200D2
2026-05-07 07:24:30.421 +05:30 [ERR] NativeManager:157 [DwmGetWindowRectangle] Could not get the extended frame rect for 0x000200D2
2026-05-07 07:24:30.421 +05:30 [ERR] FocusIndicatorPlugin:146 [Show] Could not find window rectangle for window 0x000200D2
2026-05-07 07:27:14.560 +05:30 [ERR] WindowExtensions:57 [SetIsShownInSwitchers] IsShownInSwitchers isn't implemented, ignoring attempt to set it to: False
2026-05-07 07:27:14.894 +05:30 [INF] MutableRootSector:24 [Initialize] Initializing MutableRootSector
2026-05-07 07:27:14.895 +05:30 [INF] MonitorSector:24 [Initialize] Initializing MonitorSector
2026-05-07 07:27:14.918 +05:30 [INF] MonitorEventListener:14 [Initialize] Initializing MonitorEventListener
2026-05-07 07:27:14.919 +05:30 [INF] WindowSector:34 [Initialize] Initializing WindowSector
2026-05-07 07:27:14.921 +05:30 [INF] WindowEventListener:32 [Initialize] Initializing WindowEventListener
2026-05-07 07:27:14.924 +05:30 [INF] WorkspaceSector:56 [Initialize] Initializing WorkspaceSector
2026-05-07 07:27:15.700 +05:30 [ERR] WindowExtensions:57 [SetIsShownInSwitchers] IsShownInSwitchers isn't implemented, ignoring attempt to set it to: False
2026-05-07 07:27:16.035 +05:30 [ERR] WindowExtensions:57 [SetIsShownInSwitchers] IsShownInSwitchers isn't implemented, ignoring attempt to set it to: False
2026-05-07 07:27:16.066 +05:30 [ERR] WindowExtensions:57 [SetIsShownInSwitchers] IsShownInSwitchers isn't implemented, ignoring attempt to set it to: False
2026-05-07 07:27:16.475 +05:30 [ERR] WindowExtensions:57 [SetIsShownInSwitchers] IsShownInSwitchers isn't implemented, ignoring attempt to set it to: False
2026-05-07 07:27:17.472 +05:30 [ERR] NativeManager:157 [DwmGetWindowRectangle] Could not get the extended frame rect for 0x000200E2
2026-05-07 07:27:17.473 +05:30 [ERR] FocusIndicatorPlugin:146 [Show] Could not find window rectangle for window 0x000200E2
2026-05-07 07:27:17.499 +05:30 [ERR] NativeManager:157 [DwmGetWindowRectangle] Could not get the extended frame rect for 0x000200E2
2026-05-07 07:27:17.499 +05:30 [ERR] FocusIndicatorPlugin:146 [Show] Could not find window rectangle for window 0x000200E2
2026-05-07 07:27:17.522 +05:30 [ERR] NativeManager:157 [DwmGetWindowRectangle] Could not get the extended frame rect for 0x000200E2
2026-05-07 07:27:17.522 +05:30 [ERR] FocusIndicatorPlugin:146 [Show] Could not find window rectangle for window 0x000200E2
2026-05-07 07:29:52.232 +05:30 [ERR] WindowExtensions:57 [SetIsShownInSwitchers] IsShownInSwitchers isn't implemented, ignoring attempt to set it to: False