From c5a38c0fd6754100d99fcfd5b35becc7db72837b Mon Sep 17 00:00:00 2001 From: Trevor Slocum Date: Fri, 24 Jan 2020 07:33:53 -0800 Subject: [PATCH] Add keybind to toggle hidden folder visibility --- CHANGELOG | 5 ++++- CONFIGURATION.md | 3 +++ README.md | 13 ++++++++++++- goreleaser.yml | 2 +- gui_key.go | 3 +++ gui_list.go | 17 +++++++++++++++++ library.go | 8 ++++++-- main.go | 26 ++++++++++++++------------ 8 files changed, 60 insertions(+), 17 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 8cd285e..b0ffbf6 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,9 @@ +0.1.4: +- Add --fd and --restrict-library options +- Add keybind to toggle hidden folder visibility + 0.1.3: - Allow keybindings to be configured -- Add --fd and --restrict-library options 0.1.2: - Allow audio buffer size to be configured diff --git a/CONFIGURATION.md b/CONFIGURATION.md index a3b0c0a..bc9a594 100644 --- a/CONFIGURATION.md +++ b/CONFIGURATION.md @@ -14,6 +14,7 @@ configuration options and their defaults. * **Select** Enter * **Pause** Space * **Refresh** R +* **Toggle hidden folder visibility** . * **Browse parent folder and focus last** Backspace * **Browse items** J/K, Down/Up and PageDown/PageUp * **Previous track** P @@ -31,6 +32,8 @@ input: - 'Space' refresh: - 'r' + hidden-folders: + - '.' browse-parent: - 'Backspace' volume-mute: diff --git a/README.md b/README.md index 650ff73..df34bab 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,12 @@ Audio player [![](https://ditty.rocketnine.space/static/screenshot1.png)](https://ditty.rocketnine.space/static/screenshot1.png) +## Demo + +If you are running Linux with ALSA, you can try ditty without installing: + +```ssh ditty.rocketnine.space -p 20020 2> >(aplay --quiet)``` + ## Install Choose one of the following methods: @@ -25,7 +31,12 @@ go get gitlab.com/tslocum/ditty ## Dependencies -ditty is powered by [beep](https://github.com/faiface/beep). +* [faiface/beep](https://github.com/faiface/beep) +* [hajimehoshi/oto](https://github.com/hajimehoshi/oto) +* [mewkiz/flac](https://github.com/mewkiz/flac) +* [hajimehoshi/go-mp3](https://github.com/hajimehoshi/go-mp3) +* [jfreymuth/oggvorbis](https://github.com/jfreymuth/oggvorbis) +* [tslocum/cview](https://github.com/tslocum/cview) ## Documentation diff --git a/goreleaser.yml b/goreleaser.yml index f73ac47..b780175 100644 --- a/goreleaser.yml +++ b/goreleaser.yml @@ -7,7 +7,7 @@ builds: env: - CGO_ENABLED=1 ldflags: - - -s -w -X gitlab.com/tslocum/ditty/version={{.Version}} + - -s -w -X main.version={{.Version}} goos: - linux - windows diff --git a/gui_key.go b/gui_key.go index 31de74b..504e956 100644 --- a/gui_key.go +++ b/gui_key.go @@ -12,6 +12,7 @@ const ( actionSelect = "select" actionPause = "pause" actionRefresh = "refresh" + actionToggleHidden = "hidden-folders" actionBrowseParent = "browse-parent" actionVolumeMute = "volume-mute" actionVolumeDown = "volume-down" @@ -29,6 +30,7 @@ var actionHandlers = map[string]func(){ actionSelect: listSelect, actionPause: pause, actionRefresh: listRefresh, + actionToggleHidden: listToggleHidden, actionBrowseParent: browseParent, actionVolumeMute: toggleMute, actionVolumeDown: decreaseVolume, @@ -85,6 +87,7 @@ func setDefaultKeyBinds() { actionSelect: {"Enter"}, actionPause: {"Space"}, actionRefresh: {"r"}, + actionToggleHidden: {"."}, actionBrowseParent: {"Backspace"}, actionVolumeMute: {"m"}, actionVolumeDown: {"-"}, diff --git a/gui_list.go b/gui_list.go index 2f134e0..eea20ed 100644 --- a/gui_list.go +++ b/gui_list.go @@ -105,3 +105,20 @@ func listRefresh() { mainBufferDirectory = "" browseFolder(d) } + +func listToggleHidden() { + showHiddenFolders = !showHiddenFolders + + if showHiddenFolders { + statusText = "Hidden folders: show" + } else { + statusText = "Hidden folders: hide" + } + go func() { + time.Sleep(3 * time.Second) + statusText = "" + go app.QueueUpdateDraw(updateMain) + }() + + listRefresh() +} diff --git a/library.go b/library.go index 02b3636..cd88762 100644 --- a/library.go +++ b/library.go @@ -59,10 +59,14 @@ func scanFolder(scanPath string) []*libraryEntry { var entries []*libraryEntry for _, fileInfo := range files { + b := path.Base(fileInfo.Name()) if fileInfo.IsDir() { - entries = append(entries, &libraryEntry{File: fileInfo, Metadata: &metadata{Title: fileInfo.Name()}}) + if b != "" && (b[0] != '.' || showHiddenFolders) { + entries = append(entries, &libraryEntry{File: fileInfo, Metadata: &metadata{Title: fileInfo.Name()}}) + } + continue - } else if !supportedFormat(fileInfo.Name()) { + } else if !supportedFormat(b) { continue } diff --git a/main.go b/main.go index b10764b..b7ee3d4 100644 --- a/main.go +++ b/main.go @@ -18,8 +18,7 @@ import ( const ( volumeBase = 2 - version = "0.0.0" - versionInfo = `ditty - Audio player - v` + version + ` + versionInfo = `ditty - Audio player - v0.0.0 https://gitlab.com/tslocum/ditty The MIT License (MIT) Copyright (c) 2020 Trevor Slocum @@ -27,16 +26,18 @@ Copyright (c) 2020 Trevor Slocum ) var ( - configPath string - printVersionInfo bool - bufferSize time.Duration - debugAddress string - cpuProfile string - streamFdInt int - streamFd *os.File - restrictLibrary string + configPath string + printVersionInfo bool + bufferSize time.Duration + debugAddress string + cpuProfile string + streamFdInt int + streamFd *os.File + restrictLibrary string + showHiddenFolders bool - done = make(chan bool) + version = "0.0.0" + done = make(chan bool) ) func exit() { @@ -52,11 +53,12 @@ func main() { flag.StringVar(&restrictLibrary, "restrict-library", "", "restrict library to path") flag.DurationVar(&bufferSize, "buffer-size", defaultBufferSize, "audio buffer size") flag.StringVar(&debugAddress, "debug-address", "", "address to serve debug info") + flag.BoolVar(&showHiddenFolders, "hidden-folders", false, "show hidden folders") flag.StringVar(&cpuProfile, "cpu-profile", "", "path to save CPU profiling") flag.Parse() if printVersionInfo { - fmt.Print(versionInfo) + fmt.Print(strings.Replace(versionInfo, "0.0.0", version, 1)) return }