Add pinned window indicators
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
6
dotfiles/config/taffybar/flake.lock
generated
6
dotfiles/config/taffybar/flake.lock
generated
@@ -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": {
|
||||
|
||||
Submodule dotfiles/config/taffybar/taffybar updated: be3aa010f7...45b31b789f
@@ -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
4
nixos/flake.lock
generated
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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="
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user