Giter Club home page Giter Club logo

mpv-osc-tethys's Introduction

mpv-osc-tethys

This theme replaces the built in osc.lua shipped with mpv.

Local files can show thumbnail previews (using a patched version of mpv_thumbnail_script).

Picture-In-Picture button to position in the corner, on top of other windows, and on all virtual desktops.

Install

(1) Copy osc_tethys.lua, mpv_thumbnail_script_server.lua and mpv's autoload.lua to

(2) Edit ~/.config/mpv/mpv.conf (%APPDATA%\mpv\mpv.conf on Windows) to disable the default osc.lua and improve the window.

  • osc=no will disable the default osc.lua
  • border=no will remove the window titlebar and frame. You can still drag a window by dragging the video.
  • keep-open=yes will keep the player open after the video has finished.
  • keepaspect-window=no will allow black borders around the video when maximized or half screen.
osc=no
border=no
keep-open=yes
keepaspect-window=no

(3) Edit ~/.config/mpv/input.conf (%APPDATA%\mpv\input.conf on Windows) to rebind LEFT/RIGHT arrows to exactly 5s skips.

# Defaults: https://github.com/mpv-player/mpv/blob/master/etc/input.conf

# Seek by exactly 5s instead of relative+keyframes 10s
RIGHT seek  5 exact            # forward
LEFT  seek -5 exact            # backward
WHEEL_UP      seek  5 exact    # forward
WHEEL_DOWN    seek -5 exact    # backward
# Seek by exactly 30s instead of relative+keyframes 60s
UP    seek  30 exact           # forward
DOWN  seek -30 exact           # backward

(4) Close and reopen MPV to view the new Tethys theme!

Configuration

If you don't like any of the default colors/sizes, you can create a few text files to configure certain settings.

tethys.conf

A complete list of configuration keys can be found at the top of osc_tethys.lua.

  • Windows: %APPDATA%\mpv\script-opts\tethys.conf
  • Linux: ~/.config/mpv/script-opts/tethys.conf
### Config
showPictureInPictureButton=yes
showSpeedButton=yes
# Show name and shortcut of buttons on hover
showShortcutTooltip=yes
# Show chapter above timestamp in seekbar tooltip
showChapterTooltip=yes
# skipback/skipfrwd amount in seconds
skipBy=5
# RightClick skipback/skipfrwd amount in seconds
skipByMore=30
# "exact" (mordenx default) or "relative+keyframes" (mpv default)
skipMode=exact
# PictureInPicture 33% screen width, 10px from bottom right
pipGeometry=33%+-10+-10
# PictureInPicture will show video on all virtual desktops
pipAllWorkspaces=yes

### Sizes
# 16:9 video thumbnail = 256x144
thumbnailSize=256
seekbarHeight=20
controlsHeight=64
buttonTooltipSize=20
windowBarHeight=44
windowButtonSize=44
windowTitleSize=24
cacheTextSize=20
timecodeSize=27
seekbarTimestampSize=30
seekbarTimestampOutline=1
chapterTickSize=6
windowTitleOutline=1

### Colors (uses GGBBRR for some reason)
### Alpha ranges 0 (opaque) .. 255 (transparent)
textColor=FFFFFF
buttonColor=CCCCCC
buttonHoveredColor=FFFFFF
buttonHoveredRectColor=000000
# Easily debug button geometry by setting buttonHoveredRectAlpha to 80
buttonHoveredRectAlpha=255
tooltipColor=CCCCCC
windowBarColor=000000
# windowBarAlpha (80 is mpv default) (255 morden default)
windowBarAlpha=255
windowButtonColor=CCCCCC
closeButtonHoveredColor=1111DD
seekbarHandleColor=FFFFFF
seekbarFgColor=483DD7
seekbarBgColor=929292
seekbarCacheColor=000000
seekbarCacheAlpha=128
chapterTickColor=CCCCCC

osc.conf

A complete list of configuration keys inherited from osc.lua can be found in the source code or its documentation.

Note that tethys ignores a few options in osc.conf that are already covered by tethys.conf.

  • Windows: %APPDATA%\mpv\script-opts\osc.conf
  • Linux: ~/.config/mpv/script-opts/osc.conf
# Timestamp
# Display total time instead of remaining time
timetotal=no
# Display timecodes with milliseconds
timems=no

# Whether to display the chapters/playlist at the OSD when left-clicking the next/previous OSC buttons, respectively.
playlist_osd=yes
chapters_osd=yes

# Duration of fade out in ms, 0 = no fade
fadeduration=200

# Minimum amount of pixels the mouse has to move between ticks to make the OSC show up. Default pre-0.21.0 was 3.
minmousemove=0

# auto=hide/show on mouse move
# Also supports never and always
visibility=auto

# Use a Unicode minus sign instead of an ASCII hyphen when displaying the remaining playback time.
unicodeminus=no

mpv_thumbnail_script.conf

A complete list of configuration keys for mpv_thumbnail_script can be found in the source code or its documentation.

Note that thumbnailSize in tethys.conf overrides thumbnail_width and thumbnail_height. Tethys also forces mpv_no_sub=yes and mpv_no_config=yes to make thumbnails easier to read.

  • Windows: %APPDATA%\mpv\script-opts\mpv_thumbnail_script.conf
  • Linux: ~/.config/mpv/script-opts/mpv_thumbnail_script.conf
# Automatically generate the thumbnails on video load, without a keypress
autogenerate=yes

# 1 hour, Only automatically thumbnail videos shorter than this (seconds)
autogenerate_max_duration=3600

# SHA1-sum filenames over this length
# It's nice to know what files the thumbnails are (hence directory names)
# but long URLs may approach filesystem limits.
hash_filename_length=128

# Use mpv to generate thumbnail even if ffmpeg is found in PATH
# ffmpeg does not handle ordered chapters (MKVs which rely on other MKVs)!
# mpv is a bit slower, but has better support overall (eg. subtitles in the previews)
prefer_mpv=yes

# Disable the built-in keybind ("T") to add your own
disable_keybinds=no

# The thumbnail count target
# (This will result in a thumbnail every ~10 seconds for a 25 minute video)
thumbnail_count=150

# The above target count will be adjusted by the minimum and
# maximum time difference between thumbnails.
# The thumbnail_count will be used to calculate a target separation,
# and min/max_delta will be used to constrict it.

# In other words, thumbnails will be:
#   at least min_delta seconds apart (limiting the amount)
#   at most max_delta seconds apart (raising the amount if needed)
min_delta=5
# 120 seconds aka 2 minutes will add more thumbnails when the video is over 5 hours!
max_delta=90


# Overrides for remote urls (you generally want less thumbnails!)
# Thumbnailing network paths will be done with mpv

# Allow thumbnailing network paths (naive check for "://")
thumbnail_network=no
# Override thumbnail count, min/max delta
remote_thumbnail_count=60
remote_min_delta=15
remote_max_delta=120

# Try to grab the raw stream and disable ytdl for the mpv subcalls
# Much faster than passing the url to ytdl again, but may cause problems with some sites
remote_direct_stream=yes

autoload.lua

  • Windows: %APPDATA%\mpv\script-opts\autoload.conf
  • Linux: ~/.config/mpv/script-opts/autoload.conf
disabled=no
images=yes
videos=yes
audio=yes
ignore_hidden=yes

Notes

Other Themes

I haven't tried these, but have used them as reference.

mpv-osc-tethys's People

Contributors

eylles avatar n-r-k avatar po5 avatar versedwildcat avatar zren avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mpv-osc-tethys's Issues

attempt to index local 'videoDecParams' (a nil value)

[osc_tethys] stack traceback:
[osc_tethys]    ...mework/mpv-x86_64/portable_config/scripts/osc_tethys.lua:2733: in function 'render_elements'
[osc_tethys]    ...mework/mpv-x86_64/portable_config/scripts/osc_tethys.lua:4978: in function 'render'
[osc_tethys]    ...mework/mpv-x86_64/portable_config/scripts/osc_tethys.lua:5148: in function 'cb'
[osc_tethys]    mp.defaults:361: in function 'process_timers'
[osc_tethys]    mp.defaults:530: in function 'dispatch_events'
[osc_tethys]    mp.defaults:503: in function <mp.defaults:502>
[osc_tethys]    [C]: at 0x7ff6a2062850
[osc_tethys]    [C]: at 0x7ff6a2060a10
[osc_tethys] Lua error: ...mework/mpv-x86_64/portable_config/scripts/osc_tethys.lua:1811: attempt to index local 'videoDecParams' (a nil value)

Request: Show Number of Files in a Playlist on the Title Bar

I was thinking if it would be possible to show how many files you are watching on the title bar. So if the directory contains 10 files in the playlist, the title bar would show 1/10. The number 1 would change according to where it is on the playlist (could be 2/10, 3/10, and so on). The number 10 represents the total number of files in the playlist. And If the file you are viewing does not have a playlist then the number would not show.

Clickable Playlist

I've managed to create a new playlist list with the following dimensions. Each entry has 2 lines for the filename.

        local plEntryWidth = 360
        local plEntryFontSize = 24
        local plEntryHeight = plEntryFontSize*2
        local plBox = {
            x = osc_geo.x + osc_geo.w - plEntryWidth,
            y = osc_geo.y - (plEntryHeight * #playlistElements),
            an = 7, -- x,y is top-left
            w = plEntryWidth,
            h = plEntryHeight * #playlistElements
        }

2022-06-03___10-27-18

However since the playlist buttons are more of a "sidebar", they are not inside osc_geo which in the box around the bottom controls. So the mouse events are ignored. In order to handle mouse events we need to create another area (like the window buttons).

layout["tethys"] = function()
        add_area("pl-entries", plBox.x, plBox.y, plBox.x+plBox.w, plBox.y+plBox.h)

...

function render()
    if osc_param.areas["pl-entries"] then
        for _,cords in ipairs(osc_param.areas["pl-entries"]) do
            if state.osc_visible then -- activate only when OSC is actually visible
                set_virt_mouse_area(cords.x1, cords.y1, cords.x2, cords.y2, "pl-entries")
            end
            if state.osc_visible ~= state.input_enabled then
                if state.osc_visible then
                    mp.enable_key_bindings("pl-entries")
                else
                    mp.disable_key_bindings("pl-entries")
                end
                state.input_enabled = state.osc_visible
            end

            if (mouse_hit_coords(cords.x1, cords.y1, cords.x2, cords.y2)) then
                mouse_over_osc = true
            end
        end
    end

...

-- near bottom of file
mp.set_key_bindings({
    {"mbtn_left",           function(e) process_event("mbtn_left", "up") end,
                            function(e) process_event("mbtn_left", "down")  end},
}, "pl-entries", "force")
mp.enable_key_bindings("pl-entries")

...

--  bottom of file
set_virt_mouse_area(0, 0, 0, 0, "pl-entries")

The hardest part so far, is trying to wrap text so both lines are used up properly. The methods I've tried so far:

  • Single Line (not long enough for filenames).
    2022-06-03___10-43-33
  • Two Lines, 2nd line is last 20 characters with an ellipsis. Basically ElideMiddle. Works well.
    2022-06-03___10-40-14
  • Two Lines (or more), attempt to calculate text metrics of a line of text. Wrapping text after a little a certain amount of pixels. I calculated the character width ratio based on the height by opening all the NotoSans characters in FontForge and grabbing the width ~600. I then assumed the character height is 800 + 200 (above) + 200 (below) = 1200. So each character has a roughly 600/1200 width:height ratio. charWidth = fontSize * charWidthRatio.
    2022-06-03___10-27-18

While the text wrapping with TextMetrics was interesting to code, it doesn't work very well even when I try to assume the font is NotoSans-Regular. It'd probably look different on other OSes so it's not viable to merge to master. I'll be going with the ElideMiddle method.

Request: Seekbar Improvements

Option to identify specific chapters easier. For example using colors to identify where they are in the seekbar.

For example, a chapter titled Opening/OP or Ending/ED and so on can have a different colors in the seekbar to identify where it is in the video easier.

For videos that use cache, in the seekbar identify what sections are cached and what sections are uncached. And when hovering over the seekbar it tells the cache range and the remaining seconds till it buffers. As well the part of a video that are uncached.

Еhumbnail preview does not work

After completing all four installation steps, the thumbnail preview still does not work properly.
vp9 files don't show the thumbnail preview window at all.
image

Lag when using tumbnails

Hello, I have a problem.
When watching anything on mpv the tumbnails from osc tethys lag all the interface and even make it freeze.

Could you help me?

Thanks

seek back/forward button Not response

I copied it all according to your configuration. All the previous functions were normal. From these two versions, the fast forward and fast backward buttons did not respond

Disabling chapter text in seek bar.

Hi, I am trying to get rid of the seek bar chapter text so that only the time is displayed when I seek.

From what I could seechapter_fmt=no to disable this.
image

Here is my osc.conf:

image

However the chapter text is still there on the seek bar.

image

What am I missing/doing wrong?

Thumbnailer.state.thumbnail_size can be nil during playlist change

[osc_tethys] Lua error: [string "/home/chris/.config/mpv/scripts/osc_tethys.lua"]:1817: attempt to index local 'thumb_size' (a nil value)
function renderThumbnailTooltip(pos, sliderPos, ass)
...
    local thumb_size = Thumbnailer.state.thumbnail_size
    local thumbGlobalWidth = thumb_size.w
    local thumbGlobalHeight = thumb_size.h

Show Chapter List on Key Bind

Currently, from what I am experiencing, I can only activate the Chapter List OSC when clicking the next and prev keys with my mouse on the Tethys layout. Is there any way to add or change a key bind that will let you see the chapter list with your custom key bind?

For example, say in input.conf I put down "KEYBIND add chapter 1," can it then show the Chapter List on this script.

Issues in PiP mode

I noticed 2 issues in the "Picture-in-Picture" mode:

  1. The window doesn't stay above other windows
  2. The window is not resizable with the mouse, I can only resize it by snapping it into quadrants of my screen.

I'm using the Xfwm (Xfce) window manager and I'm comparing my experience to Firefox's PiP feature which doesn't have those issues.

Regardless, it's a cool feature, thanks for implementing it 😄

Request: Thumbfast support

When using the new thumbnail script, thumbfast.lua it didn't generate any thumbnails, I figured it may be because this script uses mpv_thumbnail_script. I was wondering if it would be possible to either replace mpv_thumbnail_script or add support to thumbfast.lua.

Whitebox beside thumbnail

When I integrated this script with my mpv with thumbnails enabled, I always get a strange white box right next to the thumbnail.
Here is the screenshot:

image

Is anyone else experiencing this issue? Any kind of help is appreciated. TIA

Removing the tooltips for buttons/controls

Personally, I find these tooltips are a bit distracting after you've gotten used to the default OSC over many years. Could there be a simple option added to toggle the button tooltips (or individually) or make them transparent? I know showChapterTooltip=yes exists, which I do enjoy keeping enabled.

Actually, being able to remove the hotkey from the tooltip (like Play SPACE) would be a good solution as well.

`idlescreen` option to disable the logo

I would like to request an option idlescreen that allows to disable the logo and the logo drag and drop text.

In mpv.net there is an option show-logo.

Users then have a choice if they want the mpv.net logo, the osc logo, or no logo.

It not only fixes the mpv.net logo overlap issue, but also overlap issues with many menu scripts:

https://github.com/CogentRedTester/mpv-file-browser

https://github.com/stax76/mpv-scripts/blob/main/osm.lua

Also, various bookmark and recent file menu scripts.

More info:

CogentRedTester/mpv-file-browser#55

mpv-player/mpv#10201

Picture-in-picture only strips the border

By default on my system, the PiP mode doesn't resize/transform the window; it only strips the window border. I even added and played around with pipGeometry=33%+-10+-10 in tethys.conf and it makes no difference.

osc.lua Development Notes

Initially written up in Zren/mpvz#13

Here's the base osc.lua we can copy to ~/.config/mpv/scripts/osc.lua.

Then I added this to ~/.config/mpv/mpv.conf

keep-open=yes
sub-scale-with-window=no
osd-scale-by-window=no
keepaspect-window=no
osc=no
border=no

Layout

I created a new layout section based on bottombar.

local user_opts = {
    ...
    -- layout = "bottombar",
    layout = "tethys",
}

layouts["tethys"] = function()
    local direction = -1
    local seekbarHeight = 20
    local controlsHeight = 64
    ...
end

I basically ended doing the buttons like so:

    ---- Left Section (Added Left-to-Right)
    -- Playback control buttons
    geo = {
        x = leftX + leftSectionWidth + buttonW/2,
        y = line1Y + buttonH/2,
        an = 5, -- x,y is center
        w = buttonW,
        h = buttonH,
    }
    lo = add_layout("playpause")
    lo.geometry = geo
    lo.style = buttonStyle
    setButtonTooltip(lo, "Play (p / Space)")
    leftSectionWidth = leftSectionWidth + geo.w

Icons

Eventually I noticed the mpv icon (and santa hat during December) when mpv is launched with no video is drawn using a path!

local logo_lines = {
    -- White border
    "{\\c&HE5E5E5&\\p6}m 895 10 b 401 10 0 410 0 905 0 1399 401 1800 895 1800 1390 1800 1790 1399 1790 905 1790 410 1390 10 895 10 {\\p0}",
    -- Purple fill
    "{\\c&H682167&\\p6}m 925 42 b 463 42 87 418 87 880 87 1343 463 1718 925 1718 1388 1718 1763 1343 1763 880 1763 418 1388 42 925 42{\\p0}",
    ...
}
...
        local ass = assdraw.ass_new()
        -- mpv logo
        for i, line in ipairs(logo_lines) do
            ass:new_event()
            ass:append(line_prefix .. line)
        end

I tried taking the path in the SVG and placing it there. Unfortunately, the SVG path is a little different. I noticed that mpv used the b command which doesn't appear in the mozilla docs.

However even if we assume the b is the same as a bezier curve, the SVG path uses delta c coordinates instead of absolute C coordinates which is what the b seems to be using.

<path d="m 31.000001,21 c 2.964454,2.052317 2.964454,2.947684 0,5.000001 C 20.963866,32.948092 12,39 9.9999997,39 8,39 8,36 8,23.499999 8,12 8,9 9.9999997,9 12,9 20.963866,14.051906 31.000001,21 Z">
<path d="m 31 21 c 3 2 3 3 0 5 C 21 33 12 39 10 39 8 39 8 36 8 23 8 12 8 9 10 9 12 9 21 14 31 21">

I ended up needing to export the svg as an .html file with Inkscape, then manually convert

ctx.moveTo(31.000001, 21.000000);
ctx.bezierCurveTo(33.964455, 23.052317, 33.964455, 23.947684, 31.000001, 26.000001);
ctx.bezierCurveTo(20.963866, 32.948092, 12.000000, 39.000000, 10.000000, 39.000000);
ctx.bezierCurveTo(8.000000, 39.000000, 8.000000, 36.000000, 8.000000, 23.499999);
ctx.bezierCurveTo(8.000000, 12.000000, 8.000000, 9.000000, 10.000000, 9.000000);
ctx.bezierCurveTo(12.000000, 9.000000, 20.963866, 14.051906, 31.000001, 21.000000);

to the following path:

local tethys_icon_play = {
    "{\\c&HC0C0C0&\\p1}m 31 21   b 34 23 34 24 31 26   b 21 33 12 39 10 39   b 8 39 8 36 8 23.5   b 8 12 8 9 10 9   b 12 9 21 14 31 21{\\p0}",
}

As a final note, it seems the {\\p1} stands for scale. The mpv/santa hat icons use {\\p6} which I assume stands for 1/6th scale since the coordinates given are huge (401 10 0 410 0 905). I needed to change it to 1/1 scale to even see my 44x44 icon.

Edit: I wrote a python3 script icons/svgtohtmltoluapath.py to convert the svg to a html, then scrape the path and print it to the terminal to copy with Ctrl+Shift+C.

Edit: I just figured out that I can add m 0 0 m 44 44 in front of the path to create a "viewbox" around the icon so that the icon retains the whitespace around it when aligned. This is particularly important when dealing with the volume icons as their width changes. Up till now we couldn't use a center alignment for the volume icon, but instead used center-left to keep the "speaker" from as volume went up/down.

More can be found out in the master...iconrefactor branch.

Hover Effect

mpv doesn't have any hover animations, the only hover effect is for the seekbar timestamp.

I Managed to create a hover effect by adding the following to the bottom of render_elements() under the button section.

            local buttonHovered = mouse_hit(element)
            if buttonHovered then
                buttontext = "{\\c&HFFFFFF}" .. buttontext

                local shadow_ass = assdraw.ass_new()
                shadow_ass:merge(style_ass)
                shadow_ass:append("{\\blur5}" .. buttontext .. "{\\blur0}")
                master_ass:merge(shadow_ass)
            end

            elem_ass:append(buttontext)

Tooltips

I added rough tooltips by adding this to render_elements() under the button section.

            elem_ass:append(buttontext)

            -- Tooltip
            local button_lo = element.layout.button
            if buttonHovered and (not (button_lo.tooltip == nil)) then
                -- tooltip label
                local tx = button_lo.tooltip_geo.x -- element.hitbox.x1
                local ty = button_lo.tooltip_geo.y -- element.hitbox.y1
                local tooltipAlpha =  {[1] = 0, [2] = 255, [3] = 88, [4] = 255}
                elem_ass:new_event()
                elem_ass:pos(tx, ty)
                elem_ass:an(button_lo.tooltip_an)
                elem_ass:append(button_lo.tooltip_style)
                ass_append_alpha(elem_ass, tooltipAlpha, 0)
                elem_ass:append(button_lo.tooltip)
            end

and the following setter to adjust the tooltip based on how close to the window edge it is.

    local buttonTooltipStyle = ("{\\blur0\\bord(1)\\1c&HFFFFFF\\3c&H000000\\fs(%d)}"):format(24)

    function setButtonTooltip(button_lo, text)
        button_lo.button.tooltip = text
        button_lo.button.tooltip_style = buttonTooltipStyle
        local hw = button_lo.geometry.w/2
        local ty = osc_geo.y + padY * direction
        local an
        local tx
        local edgeThreshold = 60
        if button_lo.geometry.x - edgeThreshold < osc_geo.x + padX then
            an = 1 -- x,y is bottom-left
            tx = math.max(osc_geo.x + padX, button_lo.geometry.x - hw)
        elseif osc_geo.x + osc_geo.w - padX < button_lo.geometry.x + edgeThreshold then
            an = 3 -- x,y is bottom-right
            tx = math.min(button_lo.geometry.x + hw, osc_geo.x + osc_geo.w - padX)
        else
            an = 2 -- x,y is bottom-center
            tx = button_lo.geometry.x
        end
        button_lo.button.tooltip_an = an
        button_lo.button.tooltip_geo = { x = tx , y = ty }
    end

Right now, the tooltips are very basic. I'll need to work improving them to have a rounded bg and support multiple lines of text since MPV has multiple actions like Left navigating 10s and Shift+Left navigating 1s.

Track Selection

It would be cool to create a merged audio/subtitle button with a popup like Netflix. Might be too complicated to have multiple generated lists of buttons though.

Edit: For now, I still use the mpv icons for tracks since the buttons are beside text. They also look good too.

Playlist

Since mpv has seek fwd/back and chapter next/prev buttons, I've moved the playlist next/prev buttons to the right side like Netflix.

Edit: I tried showing next/prev file thumbnails, but I found that it was more spoilerly than when on a website that takes a few seconds to load so you can move your mouse. Also, the thumbnails were generated on the fly in a blocking manner which made any delay before showing the tooltip feel annoying. I might revisit this if I modify the thumbnail server script to support playlist file thumbnails.

Seekbar Thumbnails

Edit: After first trying to simplify mpv_thumbnail_script so that only one lua script was needed, I eventually gave up and just implemented the awesome mpv_thumbnail_script's Thumbnailer. I'm bundling the server.lua in this repo since the upstream repo has a bug in the last release (It's been fixed but there's no new release).

Usage with betterchapters.lua

Hello
First I want to say that this is (in my opinion) by far the best OSC for MPV out there.
You've done a great job with the customization options and especially the documentation.

Quick question, is there any way I could replace the default chapter button behavior to work like betterchapters.lua,
meaning that before the first chapter it would navigate to to the previous playlist item and after the last chapter to the next playlist item

image

PS: there's a small typo in the README, you have it's documentation instead of its documentation

Missing audio track button

Dude, first of all, thank you very much for the theme, it's what I wanted for so long, but couldn't do because of poor skills and laziness.

So the issue is tethys theme is missing audio track button as stated above, example:
image

And the default OSC:
image

Is there any way to add it, if so how can I do it? Thank you very much in advance!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.