Add pinned window indicators

This commit is contained in:
2026-05-08 22:16:38 -07:00
parent d44736aec9
commit ad4b8c267e
7 changed files with 53 additions and 11 deletions

View File

@@ -1478,6 +1478,25 @@ local function float_and_resize_active_window()
dispatch(hl.dsp.window.resize())
end
local function toggle_pinned_active_window()
local window = hl.get_active_window()
local selector = window_selector(window)
if not window or not selector then
return
end
if window.pinned then
dispatch(hl.dsp.window.pin({ action = "disable", window = selector }))
dispatch(hl.dsp.window.float({ action = "disable", window = selector }))
return
end
if not window.floating then
float_active_window_preserving_tiled_geometry()
end
dispatch(hl.dsp.window.pin({ action = "enable", window = selector }))
end
local function schedule_scratchpad_geometry(name, window, target_monitor)
hl.timer(function()
apply_scratchpad_geometry(name, window, target_monitor)
@@ -1762,6 +1781,7 @@ local function show_active_window_info()
"Class: " .. tostring(window.class or ""),
"Title: " .. tostring(window.title or ""),
"Workspace: " .. tostring(workspace),
"Pinned: " .. tostring(window.pinned or false),
"Address: " .. tostring(window.address or ""),
"PID: " .. tostring(window.pid or ""),
}
@@ -1943,10 +1963,10 @@ hl.config({
general = {
gaps_in = 5,
gaps_out = 10,
border_size = 0,
border_size = 2,
col = {
active_border = { colors = { "rgba(edb443ee)", "rgba(33ccffee)" }, angle = 45 },
inactive_border = "rgba(595959aa)",
active_border = { colors = { "rgba(3b82f6ee)", "rgba(33ccffee)" }, angle = 45 },
inactive_border = "rgba(00000000)",
},
layout = columns_layout,
allow_tearing = false,
@@ -2086,6 +2106,12 @@ local function apply_rules()
decorate = false,
no_shadow = true,
})
hl.window_rule({
name = "subtle-pinned-window-border",
match = { pin = true },
border_size = 2,
border_color = "rgba(edb443ff) rgba(ff4d5dcc)",
})
end
bind(main_mod .. " + P", exec(launcher_command))
@@ -2232,6 +2258,7 @@ bind(main_mod .. " + CTRL + Space", gather_workspace_into_tabbed_group)
bind(main_mod .. " + bracketright", monocle_next)
bind(main_mod .. " + bracketleft", monocle_prev)
bind(main_mod .. " + T", hl.dsp.window.float({ action = "disable" }))
bind(main_mod .. " + O", toggle_pinned_active_window)
bind(main_mod .. " + M", minimize_active_window)
bind(main_mod .. " + SHIFT + M", restore_last_minimized)
bind(main_mod .. " + CTRL + SHIFT + M", function()

View File

@@ -127,7 +127,8 @@ workspaceCandidateInfo name =
WorkspaceModel.windowPosition = Nothing,
WorkspaceModel.windowUrgent = False,
WorkspaceModel.windowActive = False,
WorkspaceModel.windowMinimized = False
WorkspaceModel.windowMinimized = False,
WorkspaceModel.windowPinned = False
}
workspaceIconFromCandidate :: Int32 -> Text -> TaffyIO (Maybe Gdk.Pixbuf)

View File

@@ -136,11 +136,11 @@
"xmonad-contrib": "xmonad-contrib"
},
"locked": {
"lastModified": 1778147268,
"narHash": "sha256-q/1DIMXQEU4y95gAFacnrHwqxYbkpqwtpmVGTFmmTMo=",
"lastModified": 1778303085,
"narHash": "sha256-pDFWJ3BJ4jaZOi1hq7SHzRCdnII8PgvBNxcyoFgx4BE=",
"owner": "taffybar",
"repo": "taffybar",
"rev": "e52f00e8d6a0fe903dada5001778808d093eafb6",
"rev": "45b31b789fdfeff7251f0f77e1259ef4d1cc987a",
"type": "github"
},
"original": {

View File

@@ -256,10 +256,22 @@
.workspaces .window-icon-container.active {
background-color: rgba(255, 255, 255, 0.10);
border-color: rgba(255, 255, 255, 0.5);
border-color: rgba(59, 130, 246, 0.76);
border-radius: 7px;
}
.workspaces .window-icon-container.pinned {
border-color: rgba(255, 77, 93, 0.74);
box-shadow: inset 0 -2px 0 rgba(255, 77, 93, 0.72);
}
.workspaces .window-icon-container.pinned.active {
border-color: rgba(237, 180, 67, 0.95);
box-shadow:
inset 0 -2px 0 rgba(237, 180, 67, 0.9),
0 0 0 1px rgba(237, 180, 67, 0.22);
}
.workspaces .active .contents,
.workspaces .visible .contents {
background-color: transparent;

4
nixos/flake.lock generated
View File

@@ -1827,8 +1827,8 @@
]
},
"locked": {
"lastModified": 1778195259,
"narHash": "sha256-exYzNU6vVQg3z1v8ZNDLMjV8+GxbubiEqndT8rFzrm0=",
"lastModified": 1778303132,
"narHash": "sha256-P8W/cn7iiWbvrrkyv4LPENnsVbKbASK6+bLKZbxeIoA=",
"path": "/home/imalison/dotfiles/dotfiles/config/taffybar/taffybar",
"type": "path"
},

View File

@@ -452,6 +452,7 @@
"https://cache.flox.dev"
"https://org-agenda-api.cachix.org"
"https://colonelpanic8-dotfiles.cachix.org"
"https://taffybar.cachix.org"
"https://codex-cli.cachix.org"
"https://claude-code.cachix.org"
];
@@ -473,6 +474,7 @@
"flox-cache-public-1:7F4OyH7ZCnFhcze3fJdfyXYLQw/aV7GEed86nQ7IsOs="
"org-agenda-api.cachix.org-1:liKFemKkOLV/rJt2txDNcpDjRsqLuBneBjkSw/UVXKA="
"colonelpanic8-dotfiles.cachix.org-1:O6GF3nptpeMFapX29okzO92eSWXR36zqW6ZF2C8P0eQ="
"taffybar.cachix.org-1:beZotJ1nVEsAnJxa3lWn0zwzZM7oeXmGh4ADRpHeeIo="
"codex-cli.cachix.org-1:1Br3H1hHoRYG22n//cGKJOk3cQXgYobUel6O8DgSing="
"claude-code.cachix.org-1:YeXf2aNu7UTX8Vwrze0za1WEDS+4DuI2kVeWEE4fsRk="
];