// Copyright 2017-2025 WIT.COM Inc. All rights reserved. // Use of this source code is governed by the GPL 3.0 package main import ( "os" "go.wit.com/lib/protobuf/argvpb" ) /* this parses the command line arguements using alex flint's go-arg */ var argv args type args struct { Restore string `arg:"--restore" help:"restore terminal windows from a config file"` Save *EmptyCmd `arg:"subcommand:save" help:"save current window geometries to the your config file"` DumpX *EmptyCmd `arg:"subcommand:dumpx" help:"show your current window geometries"` Dump *EmptyCmd `arg:"subcommand:dump" help:"show your current window geometries"` List *EmptyCmd `arg:"subcommand:list" help:"list entries in your config file"` Force bool `arg:"--force" help:"try to strong arm things"` Verbose bool `arg:"--verbose" help:"show more output"` Bash bool `arg:"--bash" help:"generate bash completion"` BashAuto []string `arg:"--auto-complete" help:"todo: move this to go-arg"` } type EmptyCmd struct { } func (a args) Description() string { return ` startxplacment -- run this after 'startx' to restore all your apps will attempt to launch your terminal windows on the right Workspaces and with the right geometries. TODO: restore the bash working paths ` } /* handles shell autocomplete */ func (args) Appname() string { return ARGNAME } func (args) Buildtime() (string, string) { return BUILDTIME, VERSION } func (args) Version() string { return argvpb.StandardVersion(ARGNAME, VERSION, BUILDTIME) } // sends the strings to bash or zsh that will be your options func (a args) SendCompletionStrings(pb *argvpb.Argv) { if pb.Cmd == "" { base := []string{"--restore", "save", "dump", "dumpx", "list", "--version"} pb.SendStrings(base) } else { pb.SubCommand(pb.Goargs...) } os.Exit(0) }