mirror of
https://github.com/ghostty-org/ghostty.git
synced 2026-01-06 05:17:50 +00:00
tweaks to window position
This commit is contained in:
@@ -149,14 +149,10 @@ pub const App = struct {
|
||||
value: apprt.Action.Value(action),
|
||||
) !void {
|
||||
switch (action) {
|
||||
.new_window => {
|
||||
var surface = try self.newSurface(switch (target) {
|
||||
.app => null,
|
||||
.surface => |v| v,
|
||||
});
|
||||
|
||||
try surface.setInitialWindowPosition(self.config.@"window-initial-position-x", self.config.@"window-initial-position-y");
|
||||
},
|
||||
.new_window => _ = try self.newSurface(switch (target) {
|
||||
.app => null,
|
||||
.surface => |v| v,
|
||||
}),
|
||||
|
||||
.new_tab => try self.newTab(switch (target) {
|
||||
.app => null,
|
||||
@@ -514,6 +510,13 @@ pub const Surface = struct {
|
||||
) orelse return glfw.mustGetErrorCode();
|
||||
errdefer win.destroy();
|
||||
|
||||
// Setup our
|
||||
setInitialWindowPosition(
|
||||
win,
|
||||
app.config.@"window-position-x",
|
||||
app.config.@"window-position-y",
|
||||
);
|
||||
|
||||
// Get our physical DPI - debug only because we don't have a use for
|
||||
// this but the logging of it may be useful
|
||||
if (builtin.mode == .Debug) {
|
||||
@@ -670,12 +673,12 @@ pub const Surface = struct {
|
||||
/// Set the initial window position. This is called exactly once at
|
||||
/// surface initialization time. This may be called before "self"
|
||||
/// is fully initialized.
|
||||
fn setInitialWindowPosition(self: *const Surface, x: ?i16, y: ?i16) !void {
|
||||
fn setInitialWindowPosition(win: glfw.Window, x: ?i16, y: ?i16) void {
|
||||
const start_position_x = x orelse return;
|
||||
const start_position_y = y orelse return;
|
||||
|
||||
log.debug("setting initial window position ({},{})", .{ start_position_x, start_position_y });
|
||||
self.window.setPos(.{ .x = start_position_x, .y = start_position_y });
|
||||
win.setPos(.{ .x = start_position_x, .y = start_position_y });
|
||||
}
|
||||
|
||||
/// Set the size limits of the window.
|
||||
|
||||
@@ -1108,7 +1108,7 @@ keybind: Keybinds = .{},
|
||||
@"window-height": u32 = 0,
|
||||
@"window-width": u32 = 0,
|
||||
|
||||
/// The initial window position. This position is in pixels and is relative
|
||||
/// The starting window position. This position is in pixels and is relative
|
||||
/// to the top-left corner of the primary monitor. Both values must be set to take
|
||||
/// effect. If only one value is set, it is ignored.
|
||||
///
|
||||
@@ -1117,10 +1117,22 @@ keybind: Keybinds = .{},
|
||||
/// to be a certain position to fit within the grid. There is nothing Ghostty
|
||||
/// will do about this, but it will make an effort.
|
||||
///
|
||||
/// Important note: Setting this value will only work on macOS and glfw builds
|
||||
/// on Linux. GTK 4.0 does not support setting the window position.
|
||||
@"window-initial-position-x": ?i16 = null,
|
||||
@"window-initial-position-y": ?i16 = null,
|
||||
/// Also note that negative values are also up to the operating system and
|
||||
/// window manager. Some window managers may not allow windows to be placed
|
||||
/// off-screen.
|
||||
///
|
||||
/// Invalid positions are runtime-specific, but generally the positions are
|
||||
/// clamped to the nearest valid position.
|
||||
///
|
||||
/// On macOS, the window position is relative to the top-left corner of
|
||||
/// the visible screen area. This means that if the menu bar is visible, the
|
||||
/// window will be placed below the menu bar.
|
||||
///
|
||||
/// Note: this is only supported on macOS and Linux GLFW builds. The GTK
|
||||
/// runtime does not support setting the window position (this is a limitation
|
||||
/// of GTK 4.0).
|
||||
@"window-position-x": ?i16 = null,
|
||||
@"window-position-y": ?i16 = null,
|
||||
|
||||
/// Whether to enable saving and restoring window state. Window state includes
|
||||
/// their position, size, tabs, splits, etc. Some window state requires shell
|
||||
|
||||
Reference in New Issue
Block a user