Git Product home page Git Product logo

fxradio's Introduction

FXRadio

Build

Visit the website of the project

Internet radio directory desktop app written in tornadofx framework.

Play thousands of radio stations from all around the world.

The app is using VLCLib, so we recommend installing VLC player for the best experience. If the VLC Player is not installed, the app will use humble-video library to play the audio. However, some stations might sound broken or not play at all with this player.

The app is using http://radio-browser.info API

Download and run the app

Download the latest release from Releases page in this repository.

Windows

Download fxradio_windows.msi, run it and proceed with installation. In case your antivirus flags the installer or application exe file as malicious, please add it to exceptions. App is currently not correctly signed, so it might trigger some false positives.

macOS

Download DMG archive fxradio_macOS.dmg. After downloading, follow those steps:

  1. Double click to open the downloaded file and move the FXRadio icon into "Applications" folder
  2. Open the Applications folder in Finder and launch the app

⚠️ macOS will refuse to run the app with the warning that the app is unsafe and should be moved to trash. This is because builds are not correctly signed. If the alert is shown, go to

System Preferences -> Security & Privacy 

Allow changes by clicking on Lock icon and click on Open anyway button.

If the option to open the app is not present, try to run the following command in the Terminal:

sudo xattr -r -d com.apple.quarantine /Applications/FXRadio.app/

Build

App requires JDK 21 and JavaFX 21 to build and run.

To build the app yourself:

  • Clone the repository
  • Run ./gradlew jfxNative command from the root project directory

Build output is present in build/jfx/ directory.


macOS install disk background designed by xb100 / Freepik

Voice chat icons created by Rizki Ahmad Fauzi - Flaticon

fxradio's People

Contributors

dependabot[bot] avatar joseph5610 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

joeyboli

fxradio's Issues

Build error in ArchLinux

Describe the bug
When I build the program from source,I got errors:

$ ./gradlew jfxNative

> Configure project :
Project : => no module-info.java found

> Task :jfxNative FAILED
        Using packager io.github.fvarrui.javapackager.packagers.LinuxPackager
        Creating app ...
            Initializing packager ...
                PackagerSettings [outputDirectory=$HOME/.cache/paru/clone/fxradio-0.16.0/build/jfx/native, licenseFile=null, iconFile=null, generateInstaller=true, forceInstaller=false, mainClass=online.hudacek.fxradio.FxRadioKt, name=FXRadio, displayName=FXRadio, version=0.16.0, description=Internet Radio Directory, url=https://hudacek.online/fxradio, administratorRequired=false, organizationName=FXRadio, organizationUrl=https://hudacek.online/fxradio, [email protected], bundleJre=true, customizedJre=false, jrePath=null, jdkPath=/usr/lib/jvm/java-20-openjdk, additionalResources=[], modules=[], additionalModules=[], platform=linux, envPath=null, vmArgs=[-Xms256m, -Xmx2048m, -XX:+UnlockExperimentalVMOptions, -XX:+UseG1GC], runnableJar=null, copyDependencies=true, jreDirectoryName=jre, winConfig=null, linuxConfig=LinuxConfig [categories=[Utility], generateDeb=true, generateRpm=true, generateAppImage=true, pngFile=null, wrapJar=true], macConfig=null, createTarball=false, createZipball=true, extra={}, useResourcesAsWorkingDir=true, assetsDir=$HOME/.cache/paru/clone/fxradio-0.16.0/src/main/deploy/package, classpath=null, jreMinVersion=null, manifest=Manifest [additionalEntries={Implementation-Version=0.16.0}, sections=[]], additionalModulePaths=[], fileAssociations=null, packagingJdk=$HOME/.gradle/jdks/azul_systems__inc_-19-amd64-linux/zulu19.32.15-ca-fx-jdk19.0.2-linux_x64, scripts=Scripts [bootstrap=null, preInstall=null, postInstall=null], arch=x64]
            Packager initialized!
            
            Creating app structure ...
                Removing folder [$HOME/.cache/paru/clone/fxradio-0.16.0/build/jfx/native/FXRadio]
                Old app folder removed $HOME/.cache/paru/clone/fxradio-0.16.0/build/jfx/native/FXRadio
                App folder created: $HOME/.cache/paru/clone/fxradio-0.16.0/build/jfx/native/FXRadio
                Assets folder created: $HOME/.cache/paru/clone/fxradio-0.16.0/build/jfx/native/assets
            App structure created!
            
            Resolving resources ...
                License file found: $HOME/.cache/paru/clone/fxradio-0.16.0/LICENSE
                Copying resource [/linux/default-icon.png] to file [$HOME/.cache/paru/clone/fxradio-0.16.0/build/jfx/native/assets/FXRadio.png]
                Icon file resolved: $HOME/.cache/paru/clone/fxradio-0.16.0/build/jfx/native/assets/FXRadio.png
                Effective additional resources [$HOME/.cache/paru/clone/fxradio-0.16.0/LICENSE, $HOME/.cache/paru/clone/fxradio-0.16.0/build/jfx/native/assets/FXRadio.png]
            Resources resolved!
            
            Copying additional resources
                Copying file [$HOME/.cache/paru/clone/fxradio-0.16.0/LICENSE] to folder [$HOME/.cache/paru/clone/fxradio-0.16.0/build/jfx/native/FXRadio]
                Executing command: /bin/sh -c cd '$HOME/.gradle/daemon/8.1/.' && 'cp' $HOME/.cache/paru/clone/fxradio-0.16.0/LICENSE $HOME/.cache/paru/clone/fxradio-0.16.0/build/jfx/native/FXRadio/LICENSE
                Copying file [$HOME/.cache/paru/clone/fxradio-0.16.0/build/jfx/native/assets/FXRadio.png] to folder [$HOME/.cache/paru/clone/fxradio-0.16.0/build/jfx/native/FXRadio]
                Executing command: /bin/sh -c cd '$HOME/.gradle/daemon/8.1/.' && 'cp' $HOME/.cache/paru/clone/fxradio-0.16.0/build/jfx/native/assets/FXRadio.png $HOME/.cache/paru/clone/fxradio-0.16.0/build/jfx/native/FXRadio/FXRadio.png
            All additional resources copied!
            
            Copying all dependencies ...
            Dependencies copied to $HOME/.cache/paru/clone/fxradio-0.16.0/build/jfx/native/FXRadio/libs!
            
            Creating runnable JAR...
            Runnable jar created in $HOME/.cache/paru/clone/fxradio-0.16.0/build/jfx/native/FXRadio-0.16.0-runnable.jar!
            
            Bundling JRE ... with $HOME/.gradle/jdks/azul_systems__inc_-19-amd64-linux/zulu19.32.15-ca-fx-jdk19.0.2-linux_x64
                Creating customized JRE ...
                Getting required modules ... 
                    It was not possible to determine the necessary modules. All modules will be included
                Required modules found: [ALL-MODULE-PATH]
                
                Creating JRE with next modules included: ALL-MODULE-PATH
                Using /usr/lib/jvm/java-20-openjdk/jmods modules directory
                Executing command: /bin/sh -c cd '$HOME/.gradle/daemon/8.1/.' && '$HOME/.gradle/jdks/azul_systems__inc_-19-amd64-linux/zulu19.32.15-ca-fx-jdk19.0.2-linux_x64/bin/jlink' --module-path /usr/lib/jvm/java-20-openjdk/jmods --add-modules ALL-MODULE-PATH --output $HOME/.cache/paru/clone/fxradio-0.16.0/build/jfx/native/FXRadio/jre --no-header-files --no-man-pages --strip-debug --compress=2
                错误: Error reading module: /usr/lib/jvm/java-20-openjdk/jmods/java.base.jmod
                java.lang.module.FindException: Error reading module: /usr/lib/jvm/java-20-openjdk/jmods/java.base.jmod
                        at java.base/jdk.internal.module.ModulePath.readModule(ModulePath.java:350)
                        at java.base/jdk.internal.module.ModulePath.scanDirectory(ModulePath.java:284)
                        at java.base/jdk.internal.module.ModulePath.scan(ModulePath.java:232)
                        at java.base/jdk.internal.module.ModulePath.scanNextEntry(ModulePath.java:190)
                        at java.base/jdk.internal.module.ModulePath.find(ModulePath.java:154)
                        at jdk.jlink/jdk.tools.jlink.internal.JlinkTask.newModuleFinder(JlinkTask.java:468)
                        at jdk.jlink/jdk.tools.jlink.internal.JlinkTask.initJlinkConfig(JlinkTask.java:387)
                        at jdk.jlink/jdk.tools.jlink.internal.JlinkTask.run(JlinkTask.java:271)
                        at jdk.jlink/jdk.tools.jlink.internal.Main.run(Main.java:56)
                        at jdk.jlink/jdk.tools.jlink.internal.Main.main(Main.java:34)
                Caused by: java.lang.module.InvalidModuleDescriptorException: Unsupported major.minor version 64.0
                        at java.base/jdk.internal.module.ModuleInfo.invalidModuleDescriptor(ModuleInfo.java:1212)
                        at java.base/jdk.internal.module.ModuleInfo.doRead(ModuleInfo.java:193)
                        at java.base/jdk.internal.module.ModuleInfo.read(ModuleInfo.java:129)
                        at java.base/jdk.internal.module.ModulePath.readJMod(ModulePath.java:395)
                        at java.base/jdk.internal.module.ModulePath.readModule(ModulePath.java:343)
                        ... 9 more

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':jfxNative'.
> org.codehaus.plexus.util.cli.CommandLineException: Command execution failed: $HOME/.gradle/jdks/azul_systems__inc_-19-amd64-linux/zulu19.32.15-ca-fx-jdk19.0.2-linux_x64/bin/jlink --module-path /usr/lib/jvm/java-20-openjdk/jmods [Ljava.lang.String;@6cd602ca --add-modules ALL-MODULE-PATH --output $HOME/.cache/paru/clone/fxradio-0.16.0/build/jfx/native/FXRadio/jre --no-header-files --no-man-pages --strip-debug --compress=2

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 1s
6 actionable tasks: 1 executed, 5 up-to-date

Desktop (please complete the following information):

  • OS: EndeavourOS x86_64 6.1.33-1-lts
  • openjdk version "20.0.1" 2023-04-18
  • OpenJDK Runtime Environment (build 20.0.1+9)
  • OpenJDK 64-Bit Server VM (build 20.0.1+9, mixed mode, sharing)
  • java-openjfx 20.0.1.u1-1

Fix image loading

Current implementation of image loading / image cache is primitive and causes multiple issues:

  • Sometimes there is white space instead of image even if the url of image is correct and javafx should be able to show the image. fixed in latest develop
  • sometimes image is shown only after refresh of datagrid (opening other library item and going back)
  • sometimes image fails to render on the first time and only some part of image is rendered and other part is gray color

Dark mode support

Finish dark mode layout, enable automatic and manual darkmode switch in the UI

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.