mirror of
https://github.com/wavetermdev/backup.git
synced 2026-08-05 13:57:07 -07:00
Slash Commands for keybindings (#441)
* first pass of slash commands * added mainview slashcommand * added focus cmd input, added sleep * addressed review comments * addressed feedback * demo idea of changing hide do cmd+m, can remove if we decide we don't like it * added new keybinding for minimize * addressed feedback * added hide label * fix hide (use app.hid(), not window.hide() * fix history keybinding, make mainview command consistent
This commit is contained in:
@@ -171,6 +171,9 @@ func init() {
|
||||
registerCmdFn("reset:cwd", ResetCwdCommand)
|
||||
registerCmdFn("signal", SignalCommand)
|
||||
registerCmdFn("sync", SyncCommand)
|
||||
registerCmdFn("sleep", SleepCommand)
|
||||
|
||||
registerCmdFn("mainview", MainViewCommand)
|
||||
|
||||
registerCmdFn("session", SessionCommand)
|
||||
registerCmdFn("session:open", SessionOpenCommand)
|
||||
@@ -3560,6 +3563,46 @@ func SessionSetCommand(ctx context.Context, pk *scpacket.FeCommandPacketType) (s
|
||||
return update, nil
|
||||
}
|
||||
|
||||
func SleepCommand(ctx context.Context, pk *scpacket.FeCommandPacketType) (scbus.UpdatePacket, error) {
|
||||
sleepTimeLimit := 10000
|
||||
if len(pk.Args) < 1 {
|
||||
return nil, fmt.Errorf("no argument found - usage: /sleep [ms]")
|
||||
}
|
||||
sleepArg := pk.Args[0]
|
||||
sleepArgInt, err := strconv.Atoi(sleepArg)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("couldn't parse sleep arg: %v", err)
|
||||
}
|
||||
if sleepArgInt > sleepTimeLimit {
|
||||
return nil, fmt.Errorf("sleep arg is too long, max value is %v", sleepTimeLimit)
|
||||
}
|
||||
time.Sleep(time.Duration(sleepArgInt) * time.Millisecond)
|
||||
update := scbus.MakeUpdatePacket()
|
||||
return update, nil
|
||||
}
|
||||
|
||||
func MainViewCommand(ctx context.Context, pk *scpacket.FeCommandPacketType) (scbus.UpdatePacket, error) {
|
||||
if len(pk.Args) < 1 {
|
||||
return nil, fmt.Errorf("no argument found - usage: /mainview [view]")
|
||||
}
|
||||
update := scbus.MakeUpdatePacket()
|
||||
mainViewArg := pk.Args[0]
|
||||
if mainViewArg == sstore.MainViewSession {
|
||||
update.AddUpdate(&sstore.MainViewUpdate{MainView: sstore.MainViewSession})
|
||||
} else if mainViewArg == sstore.MainViewConnections {
|
||||
update.AddUpdate(&sstore.MainViewUpdate{MainView: sstore.MainViewConnections})
|
||||
} else if mainViewArg == sstore.MainViewSettings {
|
||||
update.AddUpdate(&sstore.MainViewUpdate{MainView: sstore.MainViewSettings})
|
||||
} else if mainViewArg == sstore.MainViewHistory {
|
||||
return nil, fmt.Errorf("use /history instead")
|
||||
} else if mainViewArg == sstore.MainViewBookmarks {
|
||||
return nil, fmt.Errorf("use /bookmarks instead")
|
||||
} else {
|
||||
return nil, fmt.Errorf("unrecognized main view")
|
||||
}
|
||||
return update, nil
|
||||
}
|
||||
|
||||
func SessionCommand(ctx context.Context, pk *scpacket.FeCommandPacketType) (scbus.UpdatePacket, error) {
|
||||
ids, err := resolveUiIds(ctx, pk, 0)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user