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())
|
dispatch(hl.dsp.window.resize())
|
||||||
end
|
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)
|
local function schedule_scratchpad_geometry(name, window, target_monitor)
|
||||||
hl.timer(function()
|
hl.timer(function()
|
||||||
apply_scratchpad_geometry(name, window, target_monitor)
|
apply_scratchpad_geometry(name, window, target_monitor)
|
||||||
@@ -1762,6 +1781,7 @@ local function show_active_window_info()
|
|||||||
"Class: " .. tostring(window.class or ""),
|
"Class: " .. tostring(window.class or ""),
|
||||||
"Title: " .. tostring(window.title or ""),
|
"Title: " .. tostring(window.title or ""),
|
||||||
"Workspace: " .. tostring(workspace),
|
"Workspace: " .. tostring(workspace),
|
||||||
|
"Pinned: " .. tostring(window.pinned or false),
|
||||||
"Address: " .. tostring(window.address or ""),
|
"Address: " .. tostring(window.address or ""),
|
||||||
"PID: " .. tostring(window.pid or ""),
|
"PID: " .. tostring(window.pid or ""),
|
||||||
}
|
}
|
||||||
@@ -1943,10 +1963,10 @@ hl.config({
|
|||||||
general = {
|
general = {
|
||||||
gaps_in = 5,
|
gaps_in = 5,
|
||||||
gaps_out = 10,
|
gaps_out = 10,
|
||||||
border_size = 0,
|
border_size = 2,
|
||||||
col = {
|
col = {
|
||||||
active_border = { colors = { "rgba(edb443ee)", "rgba(33ccffee)" }, angle = 45 },
|
active_border = { colors = { "rgba(3b82f6ee)", "rgba(33ccffee)" }, angle = 45 },
|
||||||
inactive_border = "rgba(595959aa)",
|
inactive_border = "rgba(00000000)",
|
||||||
},
|
},
|
||||||
layout = columns_layout,
|
layout = columns_layout,
|
||||||
allow_tearing = false,
|
allow_tearing = false,
|
||||||
@@ -2086,6 +2106,12 @@ local function apply_rules()
|
|||||||
decorate = false,
|
decorate = false,
|
||||||
no_shadow = true,
|
no_shadow = true,
|
||||||
})
|
})
|
||||||
|
hl.window_rule({
|
||||||
|
name = "subtle-pinned-window-border",
|
||||||
|
match = { pin = true },
|
||||||
|
border_size = 2,
|
||||||
|
border_color = "rgba(edb443ff) rgba(ff4d5dcc)",
|
||||||
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
bind(main_mod .. " + P", exec(launcher_command))
|
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 .. " + bracketright", monocle_next)
|
||||||
bind(main_mod .. " + bracketleft", monocle_prev)
|
bind(main_mod .. " + bracketleft", monocle_prev)
|
||||||
bind(main_mod .. " + T", hl.dsp.window.float({ action = "disable" }))
|
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 .. " + M", minimize_active_window)
|
||||||
bind(main_mod .. " + SHIFT + M", restore_last_minimized)
|
bind(main_mod .. " + SHIFT + M", restore_last_minimized)
|
||||||
bind(main_mod .. " + CTRL + SHIFT + M", function()
|
bind(main_mod .. " + CTRL + SHIFT + M", function()
|
||||||
|
|||||||
@@ -127,7 +127,8 @@ workspaceCandidateInfo name =
|
|||||||
WorkspaceModel.windowPosition = Nothing,
|
WorkspaceModel.windowPosition = Nothing,
|
||||||
WorkspaceModel.windowUrgent = False,
|
WorkspaceModel.windowUrgent = False,
|
||||||
WorkspaceModel.windowActive = False,
|
WorkspaceModel.windowActive = False,
|
||||||
WorkspaceModel.windowMinimized = False
|
WorkspaceModel.windowMinimized = False,
|
||||||
|
WorkspaceModel.windowPinned = False
|
||||||
}
|
}
|
||||||
|
|
||||||
workspaceIconFromCandidate :: Int32 -> Text -> TaffyIO (Maybe Gdk.Pixbuf)
|
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"
|
"xmonad-contrib": "xmonad-contrib"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1778147268,
|
"lastModified": 1778303085,
|
||||||
"narHash": "sha256-q/1DIMXQEU4y95gAFacnrHwqxYbkpqwtpmVGTFmmTMo=",
|
"narHash": "sha256-pDFWJ3BJ4jaZOi1hq7SHzRCdnII8PgvBNxcyoFgx4BE=",
|
||||||
"owner": "taffybar",
|
"owner": "taffybar",
|
||||||
"repo": "taffybar",
|
"repo": "taffybar",
|
||||||
"rev": "e52f00e8d6a0fe903dada5001778808d093eafb6",
|
"rev": "45b31b789fdfeff7251f0f77e1259ef4d1cc987a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
Submodule dotfiles/config/taffybar/taffybar updated: be3aa010f7...45b31b789f
@@ -256,10 +256,22 @@
|
|||||||
|
|
||||||
.workspaces .window-icon-container.active {
|
.workspaces .window-icon-container.active {
|
||||||
background-color: rgba(255, 255, 255, 0.10);
|
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;
|
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 .active .contents,
|
||||||
.workspaces .visible .contents {
|
.workspaces .visible .contents {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
|
|||||||
4
nixos/flake.lock
generated
4
nixos/flake.lock
generated
@@ -1827,8 +1827,8 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1778195259,
|
"lastModified": 1778303132,
|
||||||
"narHash": "sha256-exYzNU6vVQg3z1v8ZNDLMjV8+GxbubiEqndT8rFzrm0=",
|
"narHash": "sha256-P8W/cn7iiWbvrrkyv4LPENnsVbKbASK6+bLKZbxeIoA=",
|
||||||
"path": "/home/imalison/dotfiles/dotfiles/config/taffybar/taffybar",
|
"path": "/home/imalison/dotfiles/dotfiles/config/taffybar/taffybar",
|
||||||
"type": "path"
|
"type": "path"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -452,6 +452,7 @@
|
|||||||
"https://cache.flox.dev"
|
"https://cache.flox.dev"
|
||||||
"https://org-agenda-api.cachix.org"
|
"https://org-agenda-api.cachix.org"
|
||||||
"https://colonelpanic8-dotfiles.cachix.org"
|
"https://colonelpanic8-dotfiles.cachix.org"
|
||||||
|
"https://taffybar.cachix.org"
|
||||||
"https://codex-cli.cachix.org"
|
"https://codex-cli.cachix.org"
|
||||||
"https://claude-code.cachix.org"
|
"https://claude-code.cachix.org"
|
||||||
];
|
];
|
||||||
@@ -473,6 +474,7 @@
|
|||||||
"flox-cache-public-1:7F4OyH7ZCnFhcze3fJdfyXYLQw/aV7GEed86nQ7IsOs="
|
"flox-cache-public-1:7F4OyH7ZCnFhcze3fJdfyXYLQw/aV7GEed86nQ7IsOs="
|
||||||
"org-agenda-api.cachix.org-1:liKFemKkOLV/rJt2txDNcpDjRsqLuBneBjkSw/UVXKA="
|
"org-agenda-api.cachix.org-1:liKFemKkOLV/rJt2txDNcpDjRsqLuBneBjkSw/UVXKA="
|
||||||
"colonelpanic8-dotfiles.cachix.org-1:O6GF3nptpeMFapX29okzO92eSWXR36zqW6ZF2C8P0eQ="
|
"colonelpanic8-dotfiles.cachix.org-1:O6GF3nptpeMFapX29okzO92eSWXR36zqW6ZF2C8P0eQ="
|
||||||
|
"taffybar.cachix.org-1:beZotJ1nVEsAnJxa3lWn0zwzZM7oeXmGh4ADRpHeeIo="
|
||||||
"codex-cli.cachix.org-1:1Br3H1hHoRYG22n//cGKJOk3cQXgYobUel6O8DgSing="
|
"codex-cli.cachix.org-1:1Br3H1hHoRYG22n//cGKJOk3cQXgYobUel6O8DgSing="
|
||||||
"claude-code.cachix.org-1:YeXf2aNu7UTX8Vwrze0za1WEDS+4DuI2kVeWEE4fsRk="
|
"claude-code.cachix.org-1:YeXf2aNu7UTX8Vwrze0za1WEDS+4DuI2kVeWEE4fsRk="
|
||||||
];
|
];
|
||||||
|
|||||||
Reference in New Issue
Block a user