mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-15 00:06:09 +03:00
@ -236,7 +236,7 @@ const DerivedConfig = struct {
|
|||||||
clipboard_paste_protection: bool,
|
clipboard_paste_protection: bool,
|
||||||
clipboard_paste_bracketed_safe: bool,
|
clipboard_paste_bracketed_safe: bool,
|
||||||
copy_on_select: configpkg.CopyOnSelect,
|
copy_on_select: configpkg.CopyOnSelect,
|
||||||
confirm_close_surface: bool,
|
confirm_close_surface: configpkg.ConfirmCloseSurface,
|
||||||
cursor_click_to_move: bool,
|
cursor_click_to_move: bool,
|
||||||
desktop_notifications: bool,
|
desktop_notifications: bool,
|
||||||
font: font.SharedGridSet.DerivedConfig,
|
font: font.SharedGridSet.DerivedConfig,
|
||||||
@ -784,18 +784,20 @@ pub fn deactivateInspector(self: *Surface) void {
|
|||||||
/// True if the surface requires confirmation to quit. This should be called
|
/// True if the surface requires confirmation to quit. This should be called
|
||||||
/// by apprt to determine if the surface should confirm before quitting.
|
/// by apprt to determine if the surface should confirm before quitting.
|
||||||
pub fn needsConfirmQuit(self: *Surface) bool {
|
pub fn needsConfirmQuit(self: *Surface) bool {
|
||||||
// If the child has exited then our process is certainly not alive.
|
// If the child has exited, then our process is certainly not alive.
|
||||||
// We check this first to avoid the locking overhead below.
|
// We check this first to avoid the locking overhead below.
|
||||||
if (self.child_exited) return false;
|
if (self.child_exited) return false;
|
||||||
|
|
||||||
// If we are configured to not hold open surfaces explicitly, just
|
// Check the configuration for confirming close behavior.
|
||||||
// always say there is nothing alive.
|
return switch (self.config.confirm_close_surface) {
|
||||||
if (!self.config.confirm_close_surface) return false;
|
.always => true,
|
||||||
|
.false => false,
|
||||||
// We have to talk to the terminal.
|
.true => true: {
|
||||||
self.renderer_state.mutex.lock();
|
self.renderer_state.mutex.lock();
|
||||||
defer self.renderer_state.mutex.unlock();
|
defer self.renderer_state.mutex.unlock();
|
||||||
return !self.io.terminal.cursorIsAtPrompt();
|
break :true !self.io.terminal.cursorIsAtPrompt();
|
||||||
|
},
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Called from the app thread to handle mailbox messages to our specific
|
/// Called from the app thread to handle mailbox messages to our specific
|
||||||
|
@ -14,6 +14,7 @@ pub const formatEntry = formatter.formatEntry;
|
|||||||
|
|
||||||
// Field types
|
// Field types
|
||||||
pub const ClipboardAccess = Config.ClipboardAccess;
|
pub const ClipboardAccess = Config.ClipboardAccess;
|
||||||
|
pub const ConfirmCloseSurface = Config.ConfirmCloseSurface;
|
||||||
pub const CopyOnSelect = Config.CopyOnSelect;
|
pub const CopyOnSelect = Config.CopyOnSelect;
|
||||||
pub const CustomShaderAnimation = Config.CustomShaderAnimation;
|
pub const CustomShaderAnimation = Config.CustomShaderAnimation;
|
||||||
pub const FontSyntheticStyle = Config.FontSyntheticStyle;
|
pub const FontSyntheticStyle = Config.FontSyntheticStyle;
|
||||||
|
@ -1323,9 +1323,13 @@ keybind: Keybinds = .{},
|
|||||||
/// This configuration can only be set via CLI arguments.
|
/// This configuration can only be set via CLI arguments.
|
||||||
@"config-default-files": bool = true,
|
@"config-default-files": bool = true,
|
||||||
|
|
||||||
/// Confirms that a surface should be closed before closing it. This defaults to
|
/// Confirms that a surface should be closed before closing it.
|
||||||
/// true. If set to false, surfaces will close without any confirmation.
|
///
|
||||||
@"confirm-close-surface": bool = true,
|
/// This defaults to `true`. If set to `false`, surfaces will close without
|
||||||
|
/// any confirmation. This can also be set to `always`, which will always
|
||||||
|
/// confirm closing a surface, even if shell integration says a process isn't
|
||||||
|
/// running.
|
||||||
|
@"confirm-close-surface": ConfirmCloseSurface = .true,
|
||||||
|
|
||||||
/// Whether or not to quit after the last surface is closed.
|
/// Whether or not to quit after the last surface is closed.
|
||||||
///
|
///
|
||||||
@ -3663,6 +3667,15 @@ const Replay = struct {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// Valid values for confirm-close-surface
|
||||||
|
/// c_int because it needs to be extern compatible
|
||||||
|
/// If this is changed, you must also update ghostty.h
|
||||||
|
pub const ConfirmCloseSurface = enum(c_int) {
|
||||||
|
false,
|
||||||
|
true,
|
||||||
|
always,
|
||||||
|
};
|
||||||
|
|
||||||
/// Valid values for custom-shader-animation
|
/// Valid values for custom-shader-animation
|
||||||
/// c_int because it needs to be extern compatible
|
/// c_int because it needs to be extern compatible
|
||||||
/// If this is changed, you must also update ghostty.h
|
/// If this is changed, you must also update ghostty.h
|
||||||
|
Reference in New Issue
Block a user