-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
50 lines (49 loc) · 16.3 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<!DOCTYPE html><html lang="en-gb"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>HSite</title><meta name="generator" content="Publii Open-Source CMS for Static Site"><link rel="canonical" href="https://swanux.github.io/"><link rel="alternate" type="application/atom+xml" href="https://swanux.github.io/feed.xml"><link rel="alternate" type="application/json" href="https://swanux.github.io/feed.json"><meta property="og:title" content="HSite"><meta property="og:site_name" content="HSite"><meta property="og:description" content=""><meta property="og:url" content="https://swanux.github.io/"><meta property="og:type" content="website"><meta name="twitter:card" content="summary"><meta name="twitter:site" content="@DKolozsi"><meta name="twitter:title" content="HSite"><meta name="twitter:description" content=""><link rel="shortcut icon" href="https://swanux.github.io/media/website/hsite.png" type="image/png"><link rel="stylesheet" href="https://swanux.github.io/assets/css/style.css?v=16b07cd791401864c796b9a52b20f084"><link rel="stylesheet" href="https://swanux.github.io/assets/css/photoswipe.css?v=357f87f4e9502a5318d89e8e76e0a344"><script type="application/ld+json">{"@context":"http://schema.org","@type":"Organization","name":"HSite","url":"https://swanux.github.io/","sameAs":["https://twitter.com/DKolozsi"]}</script><style>.pswp--svg .pswp__button,
.pswp--svg .pswp__button--arrow--left:before,
.pswp--svg .pswp__button--arrow--right:before {
background-image: url(https://swanux.github.io/assets/svg/gallery-icons-light.svg);
}</style></head><body><div class="site-container"><header class="top" id="js-header"><a class="logo" href="https://swanux.github.io/">HSite</a><nav class="navbar js-navbar"><button class="navbar__toggle js-toggle" aria-label="Menu" aria-haspopup="true" aria-expanded="false"><span class="navbar__toggle-box"><span class="navbar__toggle-inner">Menu</span></span></button><ul class="navbar__menu"><li class="active"><a href="https://swanux.github.io/" target="_self">Home</a></li><li class="has-submenu"><span class="is-separator" aria-haspopup="true">Personal Projects</span><ul class="navbar__submenu level-2" aria-hidden="true"><li><a href="https://swanux.github.io/hbud/" target="_self">HBud</a></li><li><a href="https://swanux.github.io/hsite/" target="_self">HSite</a></li></ul></li><li class="has-submenu"><span class="is-separator" aria-haspopup="true">Other projects</span><ul class="navbar__submenu level-2" aria-hidden="true"><li><a href="https://externos.io" target="_self">eXtern OS</a></li><li><a href="https://swanux.github.io/others/" target="_self">Others</a></li></ul></li><li class="has-submenu"><span class="is-separator" aria-haspopup="true">Archived projects</span><ul class="navbar__submenu level-2" aria-hidden="true"><li><a href="https://swanux.github.io/htidal/" target="_self">HTidal</a></li><li><a href="https://swanux.github.io/t440p/" target="_self">T440p</a></li><li><a href="https://swanux.github.io/hsuite/" target="_self">HSuite</a></li><li><a href="https://swanux.github.io/hrepo/" target="_self">HRepo</a></li></ul></li><li><a href="https://swanux.github.io/authors/swanux/" target="_self">About</a></li></ul></nav></header><main><article class="post"><div class="hero"><header class="hero__content"><div class="wrapper"><h1>HBud</h1></div></header></div><div class="wrapper post__entry"><p>Simple music / video player and karaoke app written in Python and GTK4</p><hr class="separator separator--dots"><h2 id="features">Features</h2><ul><li>Audio and video playback</li><li>Subtitle support</li><li>Karaoke mode (synced lyrics needed in own srt format, see GitHub repo for instructions)</li><li>Static lyric automatically from online sources</li><li>Metadata editor (for audio files)</li><li>Playlists (from folder structure)</li><li>Seamlessly switch back and forth between video and audio playback (remembers where to continue)</li><li>Native, lightweight and simple</li><li>Minimalistic design</li><li>Customizable</li><li>Flatpak package for compatibility and security<br></li></ul><hr class="separator separator--dots"><div class="gallery-wrapper"><div class="gallery" data-columns="3"><figure class="gallery__item"><a href="https://swanux.github.io/media/posts/19/gallery/about-2.png" data-size="482x776"><img loading="lazy" src="https://swanux.github.io/media/posts/19/gallery/about-2-thumbnail.webp" height="776" width="482" alt=""></a><figcaption>About</figcaption></figure><figure class="gallery__item"><a href="https://swanux.github.io/media/posts/19/gallery/met_ed-2.png" data-size="622x643"><img loading="lazy" src="https://swanux.github.io/media/posts/19/gallery/met_ed-2-thumbnail.webp" height="643" width="622" alt=""></a><figcaption>Metadata editor</figcaption></figure><figure class="gallery__item"><a href="https://swanux.github.io/media/posts/19/gallery/minimal-2.png" data-size="357x312"><img loading="lazy" src="https://swanux.github.io/media/posts/19/gallery/minimal-2-thumbnail.webp" height="312" width="357" alt=""></a><figcaption>Minimal mode</figcaption></figure><figure class="gallery__item"><a href="https://swanux.github.io/media/posts/19/gallery/set_0-2.png" data-size="482x776"><img loading="lazy" src="https://swanux.github.io/media/posts/19/gallery/set_0-2-thumbnail.webp" height="776" width="482" alt=""></a><figcaption>Preferences</figcaption></figure><figure class="gallery__item"><a href="https://swanux.github.io/media/posts/19/gallery/set_1-2.png" data-size="482x776"><img loading="lazy" src="https://swanux.github.io/media/posts/19/gallery/set_1-2-thumbnail.webp" height="776" width="482" alt=""></a><figcaption>Preferences</figcaption></figure><figure class="gallery__item"><a href="https://swanux.github.io/media/posts/19/gallery/stat_lyr-2.png" data-size="611x776"><img loading="lazy" src="https://swanux.github.io/media/posts/19/gallery/stat_lyr-2-thumbnail.webp" height="776" width="611" alt=""></a><figcaption>Static lyric</figcaption></figure></div></div><div class="gallery-wrapper gallery-wrapper--wide"><div class="gallery" data-columns="2"><figure class="gallery__item"><a href="https://swanux.github.io/media/posts/19/gallery/audio_more_dark.png" data-size="922x572"><img loading="lazy" src="https://swanux.github.io/media/posts/19/gallery/audio_more_dark-thumbnail.webp" height="447" width="720" alt=""></a><figcaption>Dark</figcaption></figure><figure class="gallery__item"><a href="https://swanux.github.io/media/posts/19/gallery/audio_light.png" data-size="922x572"><img loading="lazy" src="https://swanux.github.io/media/posts/19/gallery/audio_light-thumbnail.webp" height="447" width="720" alt=""></a><figcaption>Light</figcaption></figure><figure class="gallery__item"><a href="https://swanux.github.io/media/posts/19/gallery/syn_lyr.png" data-size="842x482"><img loading="lazy" src="https://swanux.github.io/media/posts/19/gallery/syn_lyr-thumbnail.webp" height="412" width="720" alt=""></a><figcaption>Synced lyric</figcaption></figure><figure class="gallery__item"><a href="https://swanux.github.io/media/posts/19/gallery/vid_with_sub.png" data-size="722x572"><img loading="lazy" src="https://swanux.github.io/media/posts/19/gallery/vid_with_sub-thumbnail.webp" height="570" width="720" alt=""></a><figcaption>Video with subtitle</figcaption></figure></div></div><hr class="separator separator--dots"><div><form action="https://github.com/swanux/hbud"><input type="submit" value="View on GitHub"></form></div></div><footer class="wrapper post__footer"><p class="post__last-updated">This article was updated on February 5, 2023</p><ul class="post__tag"><li><a href="https://swanux.github.io/tags/hbud/">HBud</a></li></ul><div class="post__share"><a href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fswanux.github.io%2Fhbud%2F" class="js-share facebook" rel="nofollow noopener noreferrer"><svg class="icon" aria-hidden="true" focusable="false"><use xlink:href="https://swanux.github.io/assets/svg/svg-map.svg#facebook"/></svg> <span>Facebook</span> </a><a href="https://twitter.com/share?url=https%3A%2F%2Fswanux.github.io%2Fhbud%2F&via=DKolozsi&text=HBud" class="js-share twitter" rel="nofollow noopener noreferrer"><svg class="icon" aria-hidden="true" focusable="false"><use xlink:href="https://swanux.github.io/assets/svg/svg-map.svg#twitter"/></svg> <span>Twitter</span> </a><a href="https://pinterest.com/pin/create/button/?url=https%3A%2F%2Fswanux.github.io%2Fhbud%2F&media=undefined&description=HBud" class="js-share pinterest" rel="nofollow noopener noreferrer"><svg class="icon" aria-hidden="true" focusable="false"><use xlink:href="https://swanux.github.io/assets/svg/svg-map.svg#pinterest"/></svg> <span>Pinterest</span> </a><a href="https://mix.com/add?url=https%3A%2F%2Fswanux.github.io%2Fhbud%2F" class="js-share mix" rel="nofollow noopener noreferrer"><svg class="icon" aria-hidden="true" focusable="false"><use xlink:href="https://swanux.github.io/assets/svg/svg-map.svg#mix"/></svg> <span>Mix</span> </a><a href="https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fswanux.github.io%2Fhbud%2F" class="js-share linkedin" rel="nofollow noopener noreferrer"><svg class="icon" aria-hidden="true" focusable="false"><use xlink:href="https://swanux.github.io/assets/svg/svg-map.svg#linkedin"/></svg> <span>LinkedIn</span> </a><a href="https://buffer.com/add?text=HBud&url=https%3A%2F%2Fswanux.github.io%2Fhbud%2F" class="js-share buffer" rel="nofollow noopener noreferrer"><svg class="icon" aria-hidden="true" focusable="false"><use xlink:href="https://swanux.github.io/assets/svg/svg-map.svg#buffer"/></svg> <span>Buffer</span> </a><a href="https://api.whatsapp.com/send?text=HBud https%3A%2F%2Fswanux.github.io%2Fhbud%2F" class="js-share whatsapp" rel="nofollow noopener noreferrer"><svg class="icon" aria-hidden="true" focusable="false"><use xlink:href="https://swanux.github.io/assets/svg/svg-map.svg#whatsapp"/></svg> <span>WhatsApp</span></a></div></footer></article></main><footer class="footer"><div class="footer__social"><a href="https://twitter.com/DKolozsi" aria-label="Twitter"><svg><use xlink:href="https://swanux.github.io/assets/svg/svg-map.svg#twitter"/></svg></a></div><div class="footer__copyright"><p>Hosted on GitHub</p><p>© 2023 Dániel Kolozsi</p></div><button onclick="backToTopFunction()" id="backToTop" class="footer__bttop" aria-label="Back to top" title="Back to top"><svg><use xlink:href="https://swanux.github.io/assets/svg/svg-map.svg#toparrow"/></svg></button></footer></div><script defer="defer" src="https://swanux.github.io/assets/js/scripts.min.js?v=f47c11534595205f20935f0db2a62a85"></script><script>window.publiiThemeMenuConfig={mobileMenuMode:'overlay',animationSpeed:300,submenuWidth: 'auto',doubleClickTime:500,mobileMenuExpandableSubmenus:true,relatedContainerForOverlayMenuSelector:'.top'};</script><script>var images = document.querySelectorAll('img[loading]');
for (var i = 0; i < images.length; i++) {
if (images[i].complete) {
images[i].classList.add('is-loaded');
} else {
images[i].addEventListener('load', function () {
this.classList.add('is-loaded');
}, false);
}
}</script><script defer="defer" src="https://swanux.github.io/assets/js/photoswipe.min.js?v=017385b552f7e0d979e2e2fe6f324015"></script><script defer="defer" src="https://swanux.github.io/assets/js/photoswipe-ui-default.min.js?v=d067f0883540b1ddda0e2c9ad1b14260"></script><script>var initPhotoSwipeFromDOM=function(gallerySelector){var parseThumbnailElements=function(el){var thumbElements=el.childNodes,numNodes=thumbElements.length,items=[],figureEl,linkEl,size,item;for(var i=0;i<numNodes;i++){figureEl=thumbElements[i];if(figureEl.nodeType!==1){continue;}
linkEl=figureEl.children[0];size=linkEl.getAttribute('data-size').split('x');item={src:linkEl.getAttribute('href'),w:parseInt(size[0],10),h:parseInt(size[1],10)};if(figureEl.children.length>1){item.title=figureEl.children[1].innerHTML;}
if(linkEl.children.length>0){item.msrc=linkEl.children[0].getAttribute('src');}
item.el=figureEl;items.push(item);}
return items;};var closest=function closest(el,fn){return el&&(fn(el)?el:closest(el.parentNode,fn));};var onThumbnailsClick=function(e){e=e||window.event;e.preventDefault?e.preventDefault():e.returnValue=false;var eTarget=e.target||e.srcElement;var clickedListItem=closest(eTarget,function(el){return(el.tagName&&el.tagName.toUpperCase()==='FIGURE');});if(!clickedListItem){return;}
var clickedGallery=clickedListItem.parentNode,childNodes=clickedListItem.parentNode.childNodes,numChildNodes=childNodes.length,nodeIndex=0,index;for(var i=0;i<numChildNodes;i++){if(childNodes[i].nodeType!==1){continue;}
if(childNodes[i]===clickedListItem){index=nodeIndex;break;}
nodeIndex++;}
if(index>=0){openPhotoSwipe(index,clickedGallery);}
return false;};var photoswipeParseHash=function(){var hash=window.location.hash.substring(1),params={};if(hash.length<5){return params;}
var vars=hash.split('&');for(var i=0;i<vars.length;i++){if(!vars[i]){continue;}
var pair=vars[i].split('=');if(pair.length<2){continue;}
params[pair[0]]=pair[1];}
if(params.gid){params.gid=parseInt(params.gid,10);}
return params;};var openPhotoSwipe=function(index,galleryElement,disableAnimation,fromURL){var pswpElement=document.querySelectorAll('.pswp')[0],gallery,options,items;items=parseThumbnailElements(galleryElement);options={galleryUID:galleryElement.getAttribute('data-pswp-uid'),getThumbBoundsFn:function(index){var thumbnail=items[index].el.getElementsByTagName('img')[0],pageYScroll=window.pageYOffset||document.documentElement.scrollTop,rect=thumbnail.getBoundingClientRect();return{x:rect.left,y:rect.top+pageYScroll,w:rect.width};},
mainClass:'pswp--dark',
preload: [1,2],
hideAnimationDuration:200,
showAnimationDuration:0,
bgOpacity: 0.7,
showHideOpacity:true,
closeOnScroll: true,
arrowKeys: true,
closeEl: true,
captionEl: true,
fullscreenEl: true,
zoomEl: true,
shareEl: true,
counterEl: true,
arrowEl: true,
preloaderEl: true
};if(fromURL){if(options.galleryPIDs){for(var j=0;j<items.length;j++){if(items[j].pid==index){options.index=j;break;}}}else{options.index=parseInt(index,10)-1;}}else{options.index=parseInt(index,10);}
if(isNaN(options.index)){return;}
if(disableAnimation){options.showAnimationDuration=0;}
gallery=new PhotoSwipe(pswpElement,PhotoSwipeUI_Default,items,options);gallery.init();gallery.options.escKey=true;};var galleryElements=document.querySelectorAll(gallerySelector);for(var i=0,l=galleryElements.length;i<l;i++){galleryElements[i].setAttribute('data-pswp-uid',i+1);galleryElements[i].onclick=onThumbnailsClick;}
var hashData=photoswipeParseHash();if(hashData.pid&&hashData.gid){openPhotoSwipe(hashData.pid,galleryElements[hashData.gid-1],true,true);}};window.addEventListener('load', function () {initPhotoSwipeFromDOM('.gallery');}, false);</script><div class="pswp" tabindex="-1" role="dialog" aria-hidden="true"><div class="pswp__bg"></div><div class="pswp__scroll-wrap"><div class="pswp__container"><div class="pswp__item"></div><div class="pswp__item"></div><div class="pswp__item"></div></div><div class="pswp__ui pswp__ui--hidden"><div class="pswp__top-bar"><div class="pswp__counter"></div><button class="pswp__button pswp__button--close" title="Close (Esc)"></button><button class="pswp__button pswp__button--share" title="Share"></button><button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button><button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button><div class="pswp__preloader"><div class="pswp__preloader__icn"><div class="pswp__preloader__cut"><div class="pswp__preloader__donut"></div></div></div></div></div><div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap"><div class="pswp__share-tooltip"></div></div><button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)"></button><button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)"></button><div class="pswp__caption"><div class="pswp__caption__center"></div></div></div></div></div></body></html>