@@ -6,12 +6,14 @@ import (
6
6
"fmt"
7
7
"io"
8
8
"os"
9
+ "os/signal"
9
10
"path/filepath"
10
11
"reflect"
11
12
"regexp"
12
13
"sort"
13
14
"strings"
14
15
"sync"
16
+ "syscall"
15
17
16
18
"github.com/jesseduffield/gocui"
17
19
"github.com/jesseduffield/lazycore/pkg/boxlayout"
@@ -418,6 +420,28 @@ func (gui *Gui) getPerRepoConfigFiles() []*config.ConfigFile {
418
420
return repoConfigFiles
419
421
}
420
422
423
+ func (gui * Gui ) suspendApp (g * gocui.Gui , v * gocui.View ) error {
424
+ if err := g .Suspend (); err != nil {
425
+ return err
426
+ }
427
+
428
+ p , err := os .FindProcess (os .Getpid ())
429
+ if err != nil {
430
+ return err
431
+ }
432
+ return p .Signal (syscall .SIGTSTP )
433
+ }
434
+
435
+ func (gui * Gui ) handleResume (g * gocui.Gui ) {
436
+ go func () {
437
+ sigs := make (chan os.Signal , 1 )
438
+ signal .Notify (sigs , syscall .SIGCONT )
439
+ for range sigs {
440
+ g .Resume ()
441
+ }
442
+ }()
443
+ }
444
+
421
445
func (gui * Gui ) onUserConfigLoaded () error {
422
446
userConfig := gui .Config .GetUserConfig ()
423
447
gui .Common .SetUserConfig (userConfig )
@@ -819,6 +843,8 @@ func (gui *Gui) Run(startArgs appTypes.StartArgs) error {
819
843
gui .g = g
820
844
defer gui .g .Close ()
821
845
846
+ gui .handleResume (gui .g )
847
+
822
848
g .ErrorHandler = gui .PopupHandler .ErrorHandler
823
849
824
850
// if the deadlock package wants to report a deadlock, we first need to
@@ -844,6 +870,10 @@ func (gui *Gui) Run(startArgs appTypes.StartArgs) error {
844
870
return err
845
871
}
846
872
873
+ if err := gui .g .SetKeybinding ("" , gocui .KeyCtrlA , gocui .ModNone , gui .suspendApp ); err != nil {
874
+ return err
875
+ }
876
+
847
877
gui .waitForIntro .Add (1 )
848
878
849
879
gui .BackgroundRoutineMgr .startBackgroundRoutines ()
0 commit comments