diff --git a/pkg/app/entry_point.go b/pkg/app/entry_point.go index d23519a981a..8906971e345 100644 --- a/pkg/app/entry_point.go +++ b/pkg/app/entry_point.go @@ -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 { @@ -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 { @@ -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" { @@ -229,6 +233,7 @@ func parseCliArgsAndEnvVars() *cliArgs { WorkTree: workTree, GitDir: gitDir, CustomConfigFile: customConfigFile, + ScreenMode: screenMode, } } diff --git a/pkg/app/types/types.go b/pkg/app/types/types.go index 00211108760..49a20b5e835 100644 --- a/pkg/app/types/types.go +++ b/pkg/app/types/types.go @@ -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 @@ -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, } } diff --git a/pkg/gui/gui.go b/pkg/gui/gui.go index 1faeb85e4c0..72d3b9c31db 100644 --- a/pkg/gui/gui.go +++ b/pkg/gui/gui.go @@ -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 } }