mikeplayer 1.3.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dc4762ff6cf9ce9e9cbbd87c1d46a92629faab94444a79423a9797ce257fc284
4
- data.tar.gz: d629eb95a5a352242dc03b41a1565bf71089ef2bc8986519131f020db73a69fc
3
+ metadata.gz: b1834e8d8cb1fad633b10c27790ba3bf4fb39c55f78cd3eabd772f6bfda7e1f1
4
+ data.tar.gz: 33684c8449ff729057767d320bbb562fac4f1e849f6c201374267ae4c5c817a5
5
5
  SHA512:
6
- metadata.gz: b73c5011fea15ef7c33866d7abd727132a7f23b737c8985bbbf223e724517dcc8de6d17b592a83e9eb2f11035d585504fe499f2ca755fd0c457e9be83b4b0ecc
7
- data.tar.gz: 80cad1d3712f04b2886a1dca59fa850aa9fb6c8b3497759e9e61fed8048389465e198c0e20e58c6fd3e65a69f5bb681c3d4e47a0c864ab40775faba7c0698aa1
6
+ metadata.gz: 9d3d763eb65a94c25d05cc23ffa711a3dc25c178f0fb91d5f8eba471797296281fe71ab9f58ea80d2b68f41c0b82209d8e218cb82e71589c4f0c05d44af6e55b
7
+ data.tar.gz: 4b985da8d1283c6803d26a311510a811dfb707f39ae4ccf60a54ca73edf2b29f0b36f4da4f2f1e18dd84c142c125fdd7affac49a1befb175264d9b84fd232280
@@ -22,6 +22,12 @@ module MikePlayer
22
22
  ENTER_ALT_SCREEN = "\e[?1049h\e[2J\e[H\e[?25l".freeze
23
23
  EXIT_ALT_SCREEN = "\e[?25h\e[?1049l".freeze
24
24
 
25
+ PUSH_TITLE = "\e[22;0t".freeze
26
+ POP_TITLE = "\e[23;0t".freeze
27
+
28
+ PLAY_GLYPH = '▶'.freeze
29
+ PAUSE_GLYPH = '⏸'.freeze
30
+
25
31
  def self.colorize(text, color)
26
32
  return text unless $stdout.tty?
27
33
 
@@ -38,6 +44,27 @@ module MikePlayer
38
44
  $stdout.flush
39
45
  end
40
46
 
47
+ def self.set_title(text)
48
+ return unless $stdout.tty?
49
+
50
+ print("\e]0;#{text}\a")
51
+ $stdout.flush
52
+ end
53
+
54
+ def self.push_title
55
+ return unless $stdout.tty?
56
+
57
+ print(PUSH_TITLE)
58
+ $stdout.flush
59
+ end
60
+
61
+ def self.pop_title
62
+ return unless $stdout.tty?
63
+
64
+ print(POP_TITLE)
65
+ $stdout.flush
66
+ end
67
+
41
68
  def initialize(fullscreen: false)
42
69
  @width = 0
43
70
  @indicator = ''
@@ -47,12 +74,15 @@ module MikePlayer
47
74
  @fullscreen = fullscreen
48
75
  @elapsed_seconds = 0
49
76
  @length = 0
77
+ @last_title = nil
50
78
  end
51
79
 
52
80
  def song_info=(v)
53
81
  @position = v[:position].freeze
54
82
  @title = v[:title].freeze
55
83
  @length = v[:length].to_f
84
+
85
+ update_terminal_title
56
86
  end
57
87
 
58
88
  def elapsed=(v)
@@ -60,6 +90,8 @@ module MikePlayer
60
90
  @indicator = "#{'>' * (v % INDICATOR_SIZE)}".ljust(INDICATOR_SIZE)
61
91
  @paused = false
62
92
  @changed = true
93
+
94
+ update_terminal_title
63
95
  end
64
96
 
65
97
  def paused
@@ -67,6 +99,8 @@ module MikePlayer
67
99
  @indicator = PAUSE_INDICATOR.ljust(INDICATOR_SIZE)
68
100
  @paused = true
69
101
  @changed = true
102
+
103
+ update_terminal_title
70
104
  end
71
105
  end
72
106
 
@@ -127,6 +161,19 @@ module MikePlayer
127
161
  $stdout.flush
128
162
  end
129
163
 
164
+ def update_terminal_title
165
+ return if @title.nil?
166
+
167
+ glyph = @paused ? PAUSE_GLYPH : PLAY_GLYPH
168
+ title = "#{glyph} #{@title} #{@position}"
169
+
170
+ return if title == @last_title
171
+
172
+ @last_title = title
173
+
174
+ Display.set_title(title)
175
+ end
176
+
130
177
  def move_to(row)
131
178
  print("\e[#{row};1H\e[2K")
132
179
  end
@@ -1,3 +1,3 @@
1
1
  module MikePlayer
2
- VERSION = '1.3.0'.freeze
2
+ VERSION = '1.4.0'.freeze
3
3
  end
data/lib/mikeplayer.rb CHANGED
@@ -49,6 +49,9 @@ module MikePlayer
49
49
  def play
50
50
  @playlist.shuffle! if @settings.shuffle?
51
51
 
52
+ Display.push_title
53
+ at_exit { Display.pop_title }
54
+
52
55
  if @settings.fullscreen?
53
56
  Display.enter_fullscreen
54
57
  at_exit { Display.exit_fullscreen }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mikeplayer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Crockett