mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-16 08:46:08 +03:00
Merge pull request #408 from mitchellh/mrn/gtk-single-instance-flag
gtk: add gtk-single-instance setting to allow disabling of it
This commit is contained in:
@ -328,7 +328,9 @@ than 5 MB on all platforms. The debug version is around 70MB.
|
|||||||
use a [single-instance application](https://developer.gnome.org/documentation/tutorials/application.html).
|
use a [single-instance application](https://developer.gnome.org/documentation/tutorials/application.html).
|
||||||
If you're developing Ghostty from _inside_ a release build and build & launch a
|
If you're developing Ghostty from _inside_ a release build and build & launch a
|
||||||
new one that will not reflect the changes you made, but instead launch a new
|
new one that will not reflect the changes you made, but instead launch a new
|
||||||
window for the existing instance.**
|
window for the existing instance. You can disable this behaviour with the
|
||||||
|
`--gtk-single-instance=false` flag or by adding `gtk-single-instance = false` to
|
||||||
|
the configuration file.**
|
||||||
|
|
||||||
### Mac `.app`
|
### Mac `.app`
|
||||||
|
|
||||||
|
@ -66,11 +66,15 @@ pub const App = struct {
|
|||||||
// Our uniqueness ID is based on whether we're in a debug mode or not.
|
// Our uniqueness ID is based on whether we're in a debug mode or not.
|
||||||
// In debug mode we want to be separate so we can develop Ghostty in
|
// In debug mode we want to be separate so we can develop Ghostty in
|
||||||
// Ghostty.
|
// Ghostty.
|
||||||
const uniqueness_id = "com.mitchellh.ghostty" ++ if (builtin.mode == .Debug) "-debug" else "";
|
const uniqueness_id: ?[*c]const u8 = uniqueness_id: {
|
||||||
|
if (!config.@"gtk-single-instance") break :uniqueness_id null;
|
||||||
|
|
||||||
|
break :uniqueness_id "com.mitchellh.ghostty" ++ if (builtin.mode == .Debug) "-debug" else "";
|
||||||
|
};
|
||||||
|
|
||||||
// Create our GTK Application which encapsulates our process.
|
// Create our GTK Application which encapsulates our process.
|
||||||
const app = @as(?*c.GtkApplication, @ptrCast(c.gtk_application_new(
|
const app = @as(?*c.GtkApplication, @ptrCast(c.gtk_application_new(
|
||||||
uniqueness_id,
|
uniqueness_id orelse null,
|
||||||
|
|
||||||
// GTK >= 2.74
|
// GTK >= 2.74
|
||||||
if (@hasDecl(c, "G_APPLICATION_DEFAULT_FLAGS"))
|
if (@hasDecl(c, "G_APPLICATION_DEFAULT_FLAGS"))
|
||||||
|
@ -314,6 +314,15 @@ pub const Config = struct {
|
|||||||
/// This does not work with GLFW builds.
|
/// This does not work with GLFW builds.
|
||||||
@"macos-option-as-alt": OptionAsAlt = .false,
|
@"macos-option-as-alt": OptionAsAlt = .false,
|
||||||
|
|
||||||
|
/// If true (default), then the Ghostty GTK application will run in
|
||||||
|
/// single-instance mode: each new `ghostty` process launched will result
|
||||||
|
/// in a new window, if there is already a running process.
|
||||||
|
///
|
||||||
|
/// If false, each new ghostty process will launch a separate application.
|
||||||
|
///
|
||||||
|
/// Debug builds of Ghostty have a separate single-instance ID.
|
||||||
|
@"gtk-single-instance": bool = true,
|
||||||
|
|
||||||
/// This is set by the CLI parser for deinit.
|
/// This is set by the CLI parser for deinit.
|
||||||
_arena: ?ArenaAllocator = null,
|
_arena: ?ArenaAllocator = null,
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user