Skip to content

Commit

Permalink
Ability to change Shell
Browse files Browse the repository at this point in the history
  • Loading branch information
fr05t1k committed Oct 25, 2018
1 parent 967a87a commit a26fc91
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 7 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ Option | Description
-s | select initial container sort field
-scale-cpu | show cpu as % of system total
-v | output version information and exit
-shell | specify shell (default: sh)

### Keybindings

Expand All @@ -84,6 +85,7 @@ s | Select container sort field
r | Reverse container sort order
o | Open single view
l | View container logs (`t` to toggle timestamp when open)
e | Exec Shell
S | Save current configuration to file
q | Quit ctop

Expand Down
5 changes: 5 additions & 0 deletions config/param.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ var params = []*Param{
Val: "state",
Label: "Container Sort Field",
},
&Param{
Key: "shell",
Val: "sh",
Label: "Shell",
},
}

type Param struct {
Expand Down
2 changes: 1 addition & 1 deletion grid.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ func Display() bool {
ui.StopLoop()
})
ui.Handle("/sys/kbd/e", func(ui.Event) {
menu = ExecSh
menu = ExecShell
ui.StopLoop()
})
ui.Handle("/sys/kbd/o", func(ui.Event) {
Expand Down
5 changes: 5 additions & 0 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ func main() {
invertFlag = flag.Bool("i", false, "invert default colors")
scaleCpu = flag.Bool("scale-cpu", false, "show cpu as % of system total")
connectorFlag = flag.String("connector", "docker", "container connector to use")
defaultShell = flag.String("shell", "", "default shell")
)
flag.Parse()

Expand Down Expand Up @@ -87,6 +88,10 @@ func main() {
config.Toggle("scaleCpu")
}

if *defaultShell != "" {
config.Update("shell", *defaultShell)
}

// init ui
if *invertFlag {
InvertColorMap()
Expand Down
15 changes: 9 additions & 6 deletions menus.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ var helpDialog = []menu.Item{
{"[r] - reverse container sort order", ""},
{"[o] - open single view", ""},
{"[l] - view container logs ([t] to toggle timestamp when open)", ""},
{"[e] - exec sh", ""},
{"[e] - exec shell", ""},
{"[S] - save current configuration to file", ""},
{"[q] - exit ctop", ""},
}
Expand Down Expand Up @@ -135,7 +135,7 @@ func ContainerMenu() MenuFn {
items = append(items, menu.Item{Val: "stop", Label: "stop"})
items = append(items, menu.Item{Val: "pause", Label: "pause"})
items = append(items, menu.Item{Val: "restart", Label: "restart"})
items = append(items, menu.Item{Val: "exec sh", Label: "exec sh"})
items = append(items, menu.Item{Val: "exec shell", Label: "exec shell"})
}
if c.Meta["state"] == "exited" || c.Meta["state"] == "created" {
items = append(items, menu.Item{Val: "start", Label: "start"})
Expand All @@ -158,8 +158,8 @@ func ContainerMenu() MenuFn {
nextMenu = SingleView
case "logs":
nextMenu = LogMenu
case "exec sh":
nextMenu = ExecSh
case "exec shell":
nextMenu = ExecShell
case "start":
nextMenu = Confirm(confirmTxt("start", c.GetMeta("name")), c.Start)
case "stop":
Expand Down Expand Up @@ -211,7 +211,7 @@ func LogMenu() MenuFn {
return nil
}

func ExecSh() MenuFn {
func ExecShell() MenuFn {
c := cursor.Selected()

if c == nil {
Expand All @@ -223,7 +223,10 @@ func ExecSh() MenuFn {
ui.StopLoop()
defer ui.Loop()

c.Exec([]string{"sh", "-c", "echo '\033[0m' && clear && sh"})
shell := config.Get("shell")
if err := c.Exec([]string{shell.Val, "-c", "echo '\033[0m' && clear && " + shell.Val}); err != nil {
log.Fatal(err)
}

return nil
}
Expand Down

0 comments on commit a26fc91

Please sign in to comment.