Skip to content

Commit b69a697

Browse files
authored
Merge pull request #350 from pinnacle-comp/focus-border
Add focus borders
2 parents a9c603f + 22699b4 commit b69a697

34 files changed

Lines changed: 1440 additions & 172 deletions

api/lua/examples/default/default_config.lua

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -348,10 +348,19 @@ Pinnacle.setup(function()
348348
-- Other stuff --
349349
-----------------------
350350

351-
-- There are no server-side decorations yet, so request all clients use client-side decorations.
352-
Window.add_window_rule(function(window)
353-
window:set_decoration_mode("client_side")
354-
end)
351+
-- Enable focus borders
352+
if Snowcap then
353+
-- Add borders to already existing windows
354+
for _, win in ipairs(Window.get_all()) do
355+
Snowcap.integration.focus_border_with_titlebar(win):decorate()
356+
end
357+
358+
-- Add borders to new windows
359+
Window.add_window_rule(function(window)
360+
window:set_decoration_mode("server_side")
361+
Snowcap.integration.focus_border_with_titlebar(window):decorate()
362+
end)
363+
end
355364

356365
-- Enable sloppy focus
357366
Window.connect_signal({

api/lua/pinnacle/grpc/defs.lua

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1097,6 +1097,13 @@ local pinnacle_window_v1_DecorationMode = {
10971097
---@class pinnacle.signal.v1.WindowFocusedResponse
10981098
---@field window_id integer?
10991099

1100+
---@class pinnacle.signal.v1.WindowTitleChangedRequest
1101+
---@field control pinnacle.signal.v1.StreamControl?
1102+
1103+
---@class pinnacle.signal.v1.WindowTitleChangedResponse
1104+
---@field window_id integer?
1105+
---@field title string?
1106+
11001107
---@class pinnacle.signal.v1.TagActiveRequest
11011108
---@field control pinnacle.signal.v1.StreamControl?
11021109

@@ -1463,6 +1470,8 @@ pinnacle.signal.v1.WindowPointerLeaveRequest = {}
14631470
pinnacle.signal.v1.WindowPointerLeaveResponse = {}
14641471
pinnacle.signal.v1.WindowFocusedRequest = {}
14651472
pinnacle.signal.v1.WindowFocusedResponse = {}
1473+
pinnacle.signal.v1.WindowTitleChangedRequest = {}
1474+
pinnacle.signal.v1.WindowTitleChangedResponse = {}
14661475
pinnacle.signal.v1.TagActiveRequest = {}
14671476
pinnacle.signal.v1.TagActiveResponse = {}
14681477
pinnacle.signal.v1.InputDeviceAddedRequest = {}
@@ -2653,6 +2662,27 @@ pinnacle.signal.v1.SignalService.WindowFocused.response = ".pinnacle.signal.v1.W
26532662
function Client:pinnacle_signal_v1_SignalService_WindowFocused(callback)
26542663
return self:bidirectional_streaming_request(pinnacle.signal.v1.SignalService.WindowFocused, callback)
26552664
end
2665+
pinnacle.signal.v1.SignalService.WindowTitleChanged = {}
2666+
pinnacle.signal.v1.SignalService.WindowTitleChanged.service = "pinnacle.signal.v1.SignalService"
2667+
pinnacle.signal.v1.SignalService.WindowTitleChanged.method = "WindowTitleChanged"
2668+
pinnacle.signal.v1.SignalService.WindowTitleChanged.request = ".pinnacle.signal.v1.WindowTitleChangedRequest"
2669+
pinnacle.signal.v1.SignalService.WindowTitleChanged.response = ".pinnacle.signal.v1.WindowTitleChangedResponse"
2670+
2671+
---Performs a bidirectional-streaming request.
2672+
---
2673+
---`callback` will be called with every streamed response.
2674+
---
2675+
---The raw client-to-server stream is returned to allow you to send encoded messages.
2676+
---
2677+
---@nodiscard
2678+
---
2679+
---@param callback fun(response: pinnacle.signal.v1.WindowTitleChangedResponse, stream: grpc_client.h2.Stream)
2680+
---
2681+
---@return grpc_client.h2.Stream | nil
2682+
---@return string | nil An error string, if any
2683+
function Client:pinnacle_signal_v1_SignalService_WindowTitleChanged(callback)
2684+
return self:bidirectional_streaming_request(pinnacle.signal.v1.SignalService.WindowTitleChanged, callback)
2685+
end
26562686
pinnacle.signal.v1.SignalService.TagActive = {}
26572687
pinnacle.signal.v1.SignalService.TagActive.service = "pinnacle.signal.v1.SignalService"
26582688
pinnacle.signal.v1.SignalService.TagActive.method = "TagActive"

api/lua/pinnacle/input.lua

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -722,13 +722,11 @@ local signal_name_to_SignalName = {
722722
---@see pinnacle.signal.SignalHandles.disconnect_all - To disconnect from these signals
723723
function input.connect_signal(signals)
724724
---@diagnostic disable-next-line: invisible
725-
local handles = require("pinnacle.signal").handles.new({})
725+
local handles = require("pinnacle.signal").handles.new()
726726

727727
for signal, callback in pairs(signals) do
728-
require("pinnacle.signal").add_callback(signal_name_to_SignalName[signal], callback)
729728
local handle =
730-
---@diagnostic disable-next-line: invisible
731-
require("pinnacle.signal").handle.new(signal_name_to_SignalName[signal], callback)
729+
require("pinnacle.signal").add_callback(signal_name_to_SignalName[signal], callback)
732730
handles[signal] = handle
733731
end
734732

api/lua/pinnacle/output.lua

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -180,13 +180,11 @@ local signal_name_to_SignalName = {
180180
---@see pinnacle.signal.SignalHandles.disconnect_all - To disconnect from these signals
181181
function output.connect_signal(signals)
182182
---@diagnostic disable-next-line: invisible
183-
local handles = require("pinnacle.signal").handles.new({})
183+
local handles = require("pinnacle.signal").handles.new()
184184

185185
for signal, callback in pairs(signals) do
186-
require("pinnacle.signal").add_callback(signal_name_to_SignalName[signal], callback)
187186
local handle =
188-
---@diagnostic disable-next-line: invisible
189-
require("pinnacle.signal").handle.new(signal_name_to_SignalName[signal], callback)
187+
require("pinnacle.signal").add_callback(signal_name_to_SignalName[signal], callback)
190188
handles[signal] = handle
191189
end
192190

0 commit comments

Comments
 (0)