From 4592a7fcdde92fcb5d2f5b911eaa0c4f1dd61f49 Mon Sep 17 00:00:00 2001 From: Moritz Poldrack Date: Fri, 13 Jun 2025 00:43:47 +0200 Subject: [PATCH 1/2] drives: increase resolution of usage bars --- go.mod | 1 + go.sum | 2 ++ render/drive_model.go | 27 ++++++++++++++++++++------- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index 1e87b77..5f4d9aa 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,7 @@ module github.com/crumbyte/noxdir go 1.24 require ( + git.sr.ht/~mpldr/go-indicators v1.3.0 github.com/charmbracelet/bubbles v0.21.0 github.com/charmbracelet/bubbletea v1.3.4 github.com/charmbracelet/lipgloss v1.1.0 diff --git a/go.sum b/go.sum index 47c7992..fce689c 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,5 @@ +git.sr.ht/~mpldr/go-indicators v1.3.0 h1:GYa520SxyVMh3dRgOhxHJOjPuekfCN84J+azoO+/iag= +git.sr.ht/~mpldr/go-indicators v1.3.0/go.mod h1:LmE7FfIbTqLOyYpVyS6GzmgDcsuLg0GebU1fKhUMBKw= github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4= github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI= github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= diff --git a/render/drive_model.go b/render/drive_model.go index 30c2cc9..be32e89 100644 --- a/render/drive_model.go +++ b/render/drive_model.go @@ -6,6 +6,7 @@ import ( "github.com/crumbyte/noxdir/drive" + "git.sr.ht/~mpldr/go-indicators/progress" "github.com/charmbracelet/bubbles/table" tea "github.com/charmbracelet/bubbletea" "github.com/charmbracelet/lipgloss" @@ -136,13 +137,16 @@ func (dm *DriveModel) updateTableData(key drive.SortKey, sortDesc bool) { dm.drivesTable.SetColumns(columns) dm.drivesTable.SetCursor(0) - diskFillProgress := NewProgressBar(progressWidth, '🟥', '🟩') + progBar.Width = progressWidth - 2 + if progBar.Width < 0 { + progBar.Width = 0 + } allDrives := dm.nav.DrivesList().Sort(key, sortDesc) rows := make([]table.Row, 0, len(allDrives)) for _, d := range allDrives { - pgBar := diskFillProgress.ViewAs(d.UsedPercent / 100) + pgBar := progBar.GetBar(d.UsedPercent, 100.0) rows = append(rows, table.Row{ "⛃", d.Path, @@ -152,11 +156,7 @@ func (dm *DriveModel) updateTableData(key drive.SortKey, sortDesc bool) { fmtSize(d.UsedBytes, true), fmtSize(d.FreeBytes, true), strconv.FormatFloat(d.UsedPercent, 'f', 2, 64) + " %", - lipgloss.JoinHorizontal( - lipgloss.Top, - strings.Repeat(" ", progressWidth-lipgloss.Width(pgBar)), - pgBar, - ), + "▕" + pgBar + "▏", }) } @@ -203,3 +203,16 @@ func (dm *DriveModel) sortDrives(sortKey drive.SortKey) { func (dm *DriveModel) resetSort() { dm.sortState = SortState{Key: drive.TotalUsedP, Desc: false} } + +var ( + progBar = &progress.Progress{ + Width: 0, + } + barStyle = lipgloss.NewStyle(). + Foreground(lipgloss.ANSIColor(9)). + Background(lipgloss.ANSIColor(10)) +) + +func init() { + progBar.SetStyle("block") +} From a4972d6bdccd5b6a885d85642053c9e919a49eda Mon Sep 17 00:00:00 2001 From: Moritz Poldrack Date: Fri, 13 Jun 2025 00:57:41 +0200 Subject: [PATCH 2/2] dir: increase resolution of usage bars --- render/dir_model.go | 6 +++--- render/render.go | 17 ----------------- 2 files changed, 3 insertions(+), 20 deletions(-) diff --git a/render/dir_model.go b/render/dir_model.go index 8368f8c..ad254dd 100644 --- a/render/dir_model.go +++ b/render/dir_model.go @@ -308,7 +308,7 @@ func (dm *DirModel) updateTableData() { dm.dirsTable.SetColumns(columns) dm.dirsTable.SetCursor(0) - fillProgress := NewProgressBar(progressWidth, '🟥', ' ') + progBar.Width = progressWidth-1 rows := make([]table.Row, 0, len(dm.nav.Entry().Child)) dm.nav.Entry().SortChild() @@ -326,7 +326,7 @@ func (dm *DirModel) updateTableData() { } parentUsage := float64(child.Size) / float64(dm.nav.ParentSize()) - pgBar := fillProgress.ViewAs(parentUsage) + pgBar := progBar.GetBar(parentUsage, 1) rows = append( rows, @@ -339,7 +339,7 @@ func (dm *DirModel) updateTableData() { totalFiles, time.Unix(child.ModTime, 0).Format("2006-01-02 15:04"), strconv.FormatFloat(parentUsage*100, 'f', 2, 64) + " %", - pgBar, + "▕"+pgBar, }, ) } diff --git a/render/render.go b/render/render.go index 5593503..917edb8 100644 --- a/render/render.go +++ b/render/render.go @@ -8,12 +8,9 @@ import ( "github.com/crumbyte/noxdir/structure" "github.com/charmbracelet/bubbles/help" - "github.com/charmbracelet/bubbles/progress" "github.com/charmbracelet/bubbles/table" tea "github.com/charmbracelet/bubbletea" "github.com/charmbracelet/lipgloss" - - "github.com/muesli/termenv" ) const Version = "v0.1.2" @@ -188,20 +185,6 @@ func (vm *ViewModel) refresh() { }() } -func NewProgressBar(width int, full, empty rune) progress.Model { - maxCharLen := max( - lipgloss.Width(string(full)), - lipgloss.Width(string(empty)), - ) - - return progress.New( - progress.WithColorProfile(termenv.Ascii), - progress.WithWidth(width/maxCharLen), - progress.WithFillCharacters(full, empty), - progress.WithoutPercentage(), - ) -} - func SetTeaProgram(tp *tea.Program) { teaProg = tp }