Improved layout

This commit is contained in:
Eduard Urbach 2023-08-18 18:52:40 +02:00
parent f0d559ed64
commit 2452c88fd2
Signed by: akyoto
GPG Key ID: C874F672B1AF20C0
7 changed files with 43 additions and 48 deletions

View File

@ -2,28 +2,30 @@
Dashboard for my terminal.
## Usage
## Examples
- Run your terminal in fullscreen
- Set the terminal opacity to 50%
- Start `dash`
Transparent:
![dash transparent](https://i.imgur.com/hc7tJYT.png)
Opaque:
![dash opaque](https://i.imgur.com/8rxHhDE.png)
## Config
The configuration is a normal text file living in `~/.config/dash/`.
You can use it to take notes or display the output of shell commands via the `{command args}` syntax.
The output can be piped to other commands, e.g. `{pacman -Q | wc -l} packages installed`.
You can use it to take plain old notes or display the output of shell commands via the `{command args}` syntax.
## Terminals
### alacritty
If you're using alacritty you can set the opacity for a single instance via:
You can set the opacity for a single window via:
```sh
alacritty msg config window.opacity=0.5
```
This will make your dashboard transparent but leaves the other windows at full transparency.
This will make your dashboard transparent but leaves the other windows at full opacity.

View File

@ -7,26 +7,20 @@ import (
"github.com/rivo/tview"
)
const (
interval = 1 * time.Second
format = "15:04:05"
)
func New(app *tview.Application) *tview.TextView {
func New(format string, interval time.Duration) *tview.TextView {
view := tview.NewTextView()
view.SetTextAlign(tview.AlignCenter)
view.SetBackgroundColor(tcell.ColorDefault)
view.SetText(time.Now().Format(format))
view.SetBorderPadding(1, 1, 1, 1)
go refresh(app, view)
go refresh(view, format, interval)
return view
}
func refresh(app *tview.Application, view *tview.TextView) {
func refresh(view *tview.TextView, format string, interval time.Duration) {
tick := time.NewTicker(interval)
for range tick.C {
view.SetText(time.Now().Format(format))
app.Draw()
}
}

View File

@ -4,6 +4,8 @@ import (
"os/exec"
"regexp"
"strings"
"github.com/rivo/tview"
)
var (
@ -21,7 +23,7 @@ func Process(source string) string {
return err.Error()
}
return strings.Trim(string(output), "\n")
return tview.TranslateANSI(strings.Trim(string(output), "\n"))
})
return source

View File

@ -16,7 +16,7 @@ type Editor struct {
IsDirty bool
}
func New(app *tview.Application, filePath string) *Editor {
func New(filePath string) *Editor {
e := &Editor{
FilePath: filePath,
}

13
empty/empty.go Normal file
View File

@ -0,0 +1,13 @@
package empty
import (
"github.com/gdamore/tcell/v2"
"github.com/rivo/tview"
)
func New() *tview.Box {
view := tview.NewBox()
view.SetBackgroundColor(tcell.ColorDefault)
view.SetBorderPadding(1, 1, 1, 1)
return view
}

16
main.go
View File

@ -3,11 +3,11 @@ package main
import (
"os"
"path/filepath"
"time"
"git.akyoto.dev/cli/dash/clock"
"git.akyoto.dev/cli/dash/core"
"git.akyoto.dev/cli/dash/editor"
"git.akyoto.dev/cli/dash/osinfo"
"github.com/gdamore/tcell/v2"
"github.com/rivo/tview"
)
@ -28,9 +28,9 @@ func main() {
panic(err)
}
header := clock.New(app)
main := editor.New(app, filepath.Join(dataDir, "main"))
footer := osinfo.New(app)
header := clock.New("15:04:05", time.Second)
main := editor.New(filepath.Join(dataDir, "main"))
footer := clock.New("2006-01-02", time.Hour)
grid.AddItem(header, 0, 0, 1, 3, 0, 0, false)
grid.AddItem(main.Pages, 1, 1, 1, 1, 0, 0, false)
@ -40,6 +40,14 @@ func main() {
app.SetRoot(grid, true)
app.SetFocus(main.Pages)
go func() {
tick := time.NewTicker(time.Second)
for range tick.C {
app.Draw()
}
}()
err = app.Run()
if err != nil {

View File

@ -1,24 +0,0 @@
package osinfo
import (
"os/exec"
"strings"
"github.com/gdamore/tcell/v2"
"github.com/rivo/tview"
)
func New(app *tview.Application) *tview.TextView {
view := tview.NewTextView()
view.SetTextAlign(tview.AlignCenter)
view.SetBackgroundColor(tcell.ColorDefault)
view.SetBorderPadding(1, 1, 1, 1)
out, _ := exec.Command("lsb_release", "-sd").Output()
distro := string(out)
distro = strings.TrimSpace(distro)
distro = strings.Trim(distro, "\"")
view.SetText(distro)
return view
}