Skip to content

Commit

Permalink
Add screen-mode command line argument
Browse files Browse the repository at this point in the history
Introduce a new "screen-mode" command line argument that allows a user
to specify which screen mode (normal, half or full) Lazygit should use
when it runs.

This argument will take precedence over a default Window Size specified
in user config.
  • Loading branch information
alewis001 committed Dec 6, 2024
1 parent f3a5c18 commit a16b800
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 18 deletions.
15 changes: 10 additions & 5 deletions pkg/app/entry_point.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,16 +29,17 @@ type cliArgs struct {
RepoPath string
FilterPath string
GitArg string
UseConfigDir string
WorkTree string
GitDir string
CustomConfigFile string
ScreenMode string
PrintVersionInfo bool
Debug bool
TailLogs bool
Profile bool
PrintDefaultConfig bool
PrintConfigDir bool
UseConfigDir string
WorkTree string
GitDir string
CustomConfigFile string
}

type BuildInfo struct {
Expand Down Expand Up @@ -164,7 +165,7 @@ func Start(buildInfo *BuildInfo, integrationTest integrationTypes.IntegrationTes

parsedGitArg := parseGitArg(cliArgs.GitArg)

Run(appConfig, common, appTypes.NewStartArgs(cliArgs.FilterPath, parsedGitArg, integrationTest))
Run(appConfig, common, appTypes.NewStartArgs(cliArgs.FilterPath, parsedGitArg, cliArgs.ScreenMode, integrationTest))
}

func parseCliArgsAndEnvVars() *cliArgs {
Expand Down Expand Up @@ -209,6 +210,9 @@ func parseCliArgsAndEnvVars() *cliArgs {
customConfigFile := ""
flaggy.String(&customConfigFile, "ucf", "use-config-file", "Comma separated list to custom config file(s)")

screenMode := ""
flaggy.String(&screenMode, "sm", "screen-mode", "The initial screen-mode (normal/half/full) for lazygit")

flaggy.Parse()

if os.Getenv("DEBUG") == "TRUE" {
Expand All @@ -229,6 +233,7 @@ func parseCliArgsAndEnvVars() *cliArgs {
WorkTree: workTree,
GitDir: gitDir,
CustomConfigFile: customConfigFile,
ScreenMode: screenMode,
}
}

Expand Down
9 changes: 6 additions & 3 deletions pkg/app/types/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,14 @@ import (

// StartArgs is the struct that represents some things we want to do on program start
type StartArgs struct {
// FilterPath determines which path we're going to filter on so that we only see commits from that file.
FilterPath string
// GitArg determines what context we open in
GitArg GitArg
// integration test (only relevant when invoking lazygit in the context of an integration test)
IntegrationTest integrationTypes.IntegrationTest
// FilterPath determines which path we're going to filter on so that we only see commits from that file.
FilterPath string
// ScreenMode determines the Screen Mode (normal, half or full) for lazygit to use
ScreenMode string
}

type GitArg string
Expand All @@ -24,10 +26,11 @@ const (
GitArgStash GitArg = "stash"
)

func NewStartArgs(filterPath string, gitArg GitArg, test integrationTypes.IntegrationTest) StartArgs {
func NewStartArgs(filterPath string, gitArg GitArg, screenMode string, test integrationTypes.IntegrationTest) StartArgs {
return StartArgs{
FilterPath: filterPath,
GitArg: gitArg,
ScreenMode: screenMode,
IntegrationTest: test,
}
}
24 changes: 14 additions & 10 deletions pkg/gui/gui.go
Original file line number Diff line number Diff line change
Expand Up @@ -580,19 +580,23 @@ func initialWindowViewNameMap(contextTree *context.ContextTree) *utils.ThreadSaf
}

func initialScreenMode(startArgs appTypes.StartArgs, config config.AppConfigurer) types.WindowMaximisation {
if startArgs.FilterPath != "" || startArgs.GitArg != appTypes.GitArgNone {
if startArgs.ScreenMode != "" {
return getWindowMaximisation(startArgs.ScreenMode)
} else if startArgs.FilterPath != "" || startArgs.GitArg != appTypes.GitArgNone {
return types.SCREEN_FULL
} else {
defaultWindowSize := config.GetUserConfig().Gui.WindowSize
return getWindowMaximisation(config.GetUserConfig().Gui.WindowSize)
}
}

switch defaultWindowSize {
case "half":
return types.SCREEN_HALF
case "full":
return types.SCREEN_FULL
default:
return types.SCREEN_NORMAL
}
func getWindowMaximisation(modeString string) types.WindowMaximisation {
switch modeString {
case "half":
return types.SCREEN_HALF
case "full":
return types.SCREEN_FULL
default:
return types.SCREEN_NORMAL
}
}

Expand Down

0 comments on commit a16b800

Please sign in to comment.