Add support for suspending LazyGit with Ctrl+Z on Unix systems #4757
+51
−13
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
✨ Add Ctrl+Z suspend support for LazyGit on Unix-like systems
📝 Summary
This PR adds support for suspending LazyGit when the user presses
Ctrl+Z
, making it behave like common CLI tools (e.g., Vim, less, htop):Ctrl+Z
sends aSIGTSTP
signal to suspend LazyGit.fg
, LazyGit redraws and continues working without hanging.⚙ Implementation details
Added a new
suspendApp
function triggered by aCtrl+Z
keybinding.Inside
suspendApp
, we do a runtime OS check (runtime.GOOS == "windows"
) and return early (effectively no-op) on Windows.This way, the keybinding itself is always defined cross-platform, but the suspend logic only runs on Unix-like systems.
Integrated with the background routine manager:
PauseBackgroundRefreshes(true)
before sending the suspend signal.PauseBackgroundRefreshes(false)
on resume (handled viaSIGCONT
).After resuming, LazyGit keeps running smoothly without hanging.
🧠 Design notes
✅ Motivation
Make LazyGit feel more native on Unix-like systems by supporting standard terminal suspend/resume (Ctrl+Z / fg) behavior.
go generate ./...
)Closes #3906