Giter Club home page Giter Club logo

flex-launcher's Introduction

Logo

Flex Launcher

Table of Contents
  1. About
  2. Screenshots
  3. Installation
  4. Usage
  5. Development Status
  6. Documentation
  7. Credits

About

Flex Launcher is a customizable application launcher and front end designed with a TV-friendly 10 foot user interface, intending to mimic the look and feel of a streaming box or game console. Flex Launcher allows you to launch applications on your HTPC or couch gaming PC entirely by use of a TV remote or a gamepad. No keyboard or mouse required!

Flex Launcher is compatible with both Windows and Linux (including Raspberry Pi devices).

Screenshots

Screenshot 1

animated_background.mp4

Installation

Executables are available for Windows 64 bit, Linux x86-64, and Raspberry Pi. You can also compile the program yourself using the compilation guide.

Windows

Download the win64 .zip file from the latest release and extract the contents to a directory of your choice. Flex Launcher should be run on an up-to-date Windows 10 system, or Windows 11.

Linux

Binary packages are available on the release page for APT and pacman based distributions. You may use the commands below to install.

APT-based x86-64 Distributions (Debian, Ubuntu, etc.)

This package is compatible with Debian Bullseye and later, Ubuntu 21.04 and later.

wget https://github.com/complexlogic/flex-launcher/releases/download/v2.1/flex-launcher_2.1_amd64.deb
sudo apt install ./flex-launcher_2.1_amd64.deb

Pacman-based x86-64 Distributions (Arch, Manjaro, etc.)

wget https://github.com/complexlogic/flex-launcher/releases/download/v2.1/flex-launcher-2.1-1-x86_64.pkg.tar.zst
sudo pacman -U flex-launcher-2.1-1-x86_64.pkg.tar.zst

Raspberry Pi

This package is compatible with Raspbian Bullseye and later, 64 bit only.

wget https://github.com/complexlogic/flex-launcher/releases/download/v2.1/flex-launcher_2.1_arm64.deb
sudo apt install ./flex-launcher_2.1_arm64.deb

Copying Assets to Home Directory

The Linux packages install a default config file and assets to /usr/share/flex-launcher. It is strongly recommended to not edit this config file directly, as it will be overwritten if you upgrade to a later version of Flex Launcher. Instead, copy these files to your home directory and edit it there.

cp -r /usr/share/flex-launcher ~/.config
sed -i "s|/usr/share/flex-launcher|$HOME/.config/flex-launcher|g" ~/.config/flex-launcher/config.ini

Usage

Flex Launcher uses an INI file to configure the menus and settings. Upon startup, the program will search for a file named config.ini in the following locations in order:

  1. The current working directory
  2. The directory containing the flex-launcher executable
  3. Linux only: ~/.config/flex-launcher
  4. Linux only: /usr/share/flex-launcher

If your config file is in one of the above locations, Flex Launcher can be started simply by double clicking the executable file or adding it to autostart. If your config file is in a non-standard location, you must specify the path via command line argument:

flex-launcher -c /path/to/config.ini

Flex Launcher ships with a default config file which is intended strictly for demonstration purposes. If you try to start one of the applications, it is possible that nothing will happen because the install path is different on your system, or you don't have the application installed at all. See the configuration file documentation for instuctions on how to change the menus and settings.

Controls

The keyboard arrow keys move the highlight cursor left and right. Enter selects the current entry, backspace goes back to the previous menu (if applicable), and Esc quits the program.

TV Remotes

Flex Launcher does not feature built-in decoding of IR or CEC signals. If you plan to use a TV remote to control the device, it is assumed that these signals are decoded by the OS or another program and mapped to keyboard presses, which can then be received by Flex Launcher.

Gamepads

Gamepad controls are built-in to the program, but are disabled by default. To enable them, open your configuration file and, under the "Gamepad" section, change the "Enabled" setting from false to true. After that, the gamepad controls should "Just Work" for most users. If your gamepad is not recognized automatically, or you want to change the default controls, see the gamepad controls documentation.

Debugging

Flex Launcher has a debug mode which may be enabled as follows:

flex-launcher -d

This will output a logfile named flex-launcher.log in the same directory as flex-launcher.exe on Windows, and in ~/.local/share/flex-launcher on Linux.

Development Status

Flex Launcher has reached a mature state, and there are currently no feature releases planned for the future. I've started a new HTPC launcher project which is similar in nature to Flex Launcher, but aims to provide a more advanced, Smart TV-like user interface. My future development effort will be focused on that new project, but I will still maintain Flex Launcher for bugfixes and dependency updates.

Documentation

Here is a list of available documentation:

Credits

Flex Launcher is made possible by the following projects:

The design of Flex Launcher was strongly influenced by the excellent desktop application launcher xlunch.

flex-launcher's People

Contributors

apaugh avatar complexlogic 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

flex-launcher's Issues

Slow to launch in Windows startup--- feature request?

Okay so I'm trying to increase the speed at which the program launches so that it goes immediately to flexlauncher without displaying the desktop for very long. Unfortunately as much as I've tried to lobotomize my startup process and delay tasks with Task Scheduler, I cannot persuade Flex Launcher to start sooner than five seconds.

EXCEPT when I change the windows shell from explorer.exe to Flex Launcher. Doing that causes some weirdness like icons not loading and also a lot of undesirable things behind the scenes. gpedit.msc > Administrative templates > System > Custom User Interface

My feature request is this: Add a config section to auto-run a :fork command whenever you enter a menu. This way, I can launch explorer.exe whenever flex-launcher has started up. It's silly, I know, but I must achieve HTPC perfection!

Onlaunch Quit mode doesn't work

Is there anyway you can add a feature to use :sleep, :restart, :shutdown like a normal command that will quit Onlaunch?
When I sleep using :sleep, after waking pc from sleep, app still shows up instead of quit but If I use a shortcut to a sleep command line, app quit!

Multiple background images and dim

What a simple and elegant launcher. There are only two things it is missing for my purposes:

  1. The ability to periodically switch between background images, like a slideshow. So instead of specifying just one image, I'd like to specify a folder.
  2. Screensaver mode when the launcher has been idle for X amount of time.

Icons for apps like Disney Plus and Netflix not showing

I started using Flex launcher and edited the config to have netflix and disney plus as the options and have pictures in the .\asset\icons folder for each. Both are png images, but they dont show in the launcher, only the names show. Disney plus icon is "download" and netflix is "downloadd"

Heres the code

[Main]
Entry1=Disney+;.\assets\icons\download.png;"C:\Users\Imlop\OneDrive\Desktop\Disney+.lnk"
Entry2=Netflix;.assets\icons\downloadd.png;"C:\Users\Imlop\OneDrive\Desktop\Netflix.lnk"
Entry3=System;.\assets\icons\system.png;:submenu System

Flex Launcher modifies locale environment variables for launched applications

So I have a terminal launched from Flex Launcher for debugging and I kept getting errors from perl on launch about improper locale settings, namely LANG=en

I'm on Arch and it's a fresh install, en_US.UTF-8

>>> cat /etc/locale.conf
LANG=en_US.UTF-8

If I re-source that locale conf or just export LANG=en_US.UTF-8 the problem is resolved for that terminal session.

If I SSH into the machine or launch the terminal using rofi, the LANG environment variable is properly set to en_US.UTF-8

I'm not sure how this issue would present in other applications but figured this was an unintentional bug that should be reported

Unable to Enter/Select Apps

I'm trying to control a HTPC using HASS.Agent, but I'm unable to get Enter or :select to work correctly and start the highlighted app. Up/Down/Left/Right/Back work correctly though.

I've tried sending Enter and mapping a normal key s to :select using hotkeys, but have been unsuccessful.

As a side note sending Enter does work in Kodi.

OS: Windows 10 64-Bit

Some games won't launch via Steam on Xorg when flex-launcher is running

Hi,

I'm running flex launcher on garuda linux with Xorg with an RX 7900 XTX and 5900X CPU.

I've run into an issue with a few games (specifically Blasphemous, Hollow Knight, and Ender Lilies) which won't launch from Steam when flex-launcher is running. They either won't run at all or hang forever just after launch. If Steam is launched without flex-launcher running, the games all work fine.

I was able to track down the problem to line 199 in launcher.c:

setenv("SDL_VIDEODRIVER", "wayland,x11", 0);

If I comment the line out or remove wayland, all the games launch fine.

I'm not sure what the underlying issue is. As I mentioned above, I'm using Xorg and don't even have wayland installed. If I run Ender Lilies from the command line without Steam, it launches fine without any changes to flex-launcher.

All the games use Vulkan, and I have seen some reports of long-standing bugs with Steam, Vulkan, and Wayland (such as this one, but the reports I've seen happen when people are actually using Wayland.

Perhaps the SDL_VIDEODRIVER environment variable shouldn't be passed on to launched programs?

Edit: A couple of more bits of info. Two of those games use the Unity engine, the other uses Unreal. Also, all of them work fine if I force Steam to run the windows version via Proton. It's only the linux-native versions that have this issue.

Adding minimize argument to Command line

Document: "The path to the program executable that you want to launch"

I'm trying to launch a program minimized but I tried all kind of argument to no avail.
Could you provide the worked argument for your launcher that minimize or hide the executable window?

(Example: C:\Game.exe - minimize -hide?)

Thanks!

Lose XBox wireless adapter connection when exiting from application back to Flex Launcher

I'm using Flex Launcher to switch between different retro arcade/mame builds. If I launch a build and am away from the computer for a bit, the Xbox controller will go to sleep. When I come back, the controller reconnects fine to the wireless adapter, but as soon as I exit the app and go back into Flex Launcher, the connection is lost and the only way to get it back is to unplug and plug back in the adapter.

RPM package for Fedora?

Curious if there will ever be a Fedora RPM package for this as it seems super useful, but I would have to set up distrobox to use it on a Fedora system which is a bunch of extra set up I would like to avoid (I plan to use this on 3 or 4 machines so setting up distrobox AND this on each one would take quite a while longer than otherwise needed).

If there aren't any plans for this, I can just use distrobox anyway.

The `:sleep` command not working on win10

I just leave the default config.ini, no changed.

I select System -> Sleep, but the launcher did not respond to this command.

My system is Win10 (Professional Version 21H2).

Could you tell me why?

(I am a Chinese. So Sorry for my bad English...)

Launching a browser doesn't switch to that application

Hey there, I'm loving this launcher. I'm trying to set up a button to launch a browser, and the following command successfully launches Edge, but Flex-Launcher still maintains focus after the browser is launched. Any ideas why this this happening?

Entry1=Browser;.\assets\icons\system.png; "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Edge.lnk"

Occasional issues "waking" the screen with a controller

I'm running Flex Launcher on a media centre PC, set to autostart on boot of my linux distro (Zorin 17). Occasionally after quitting an application to go back to the Flex Launcher, I will be presented with a black screen. This seems to occur after running on an application for a few days before quitting to return to flex launcher. Connecting my Xbox controller and pressing all the buttons doesn't do anything; the only way I can fix it is by using my VNC viewer to log into the machine from my windows PC, and press any button on the keyboard to "wake up" the screen. Once I do that, I can use my controller.

My power settings have been set to never turn off the screen or auto suspend. The screensaver for flex works fine (in my settings, goes to 70% intensity).

Here are the settings I'm using:

[General]
DefaultMenu=Main
VSync=true
#FPSLimit=
OnLaunch=Blank
ResetOnBack=false
MouseSelect=false
InhibitOSScreensaver=true
#StartupCmd=
#QuitCmd=

[Background]
Mode=Color
Color=#101214
#Image=
#SlideshowDirectory=
#SlideshowImageDuration=30
#SlideshowTransitionTime=3
#ChromaKeyColor=#010101
Overlay=false
OverlayColor=#000000
OverlayOpacity=50%

[Layout]
MaxButtons=4
IconSize=256
IconSpacing=5%
VCenter=50%

[Titles]
Enabled=true
Font=/home/aidan/.config/flex-launcher/assets/fonts/OpenSans-Regular.ttf
FontSize=36
Color=#DDDDDD
Opacity=100%
Shadows=false
ShadowColor=#000000
OversizeMode=Shrink
Padding=20

[Highlight]
Enabled=true
FillColor=#FFFFFF
FillOpacity=7%
OutlineSize=0
OutlineColor=#0000FF
OutlineOpacity=100%
CornerRadius=30
VPadding=30
HPadding=30

[Scroll Indicators]
Enabled=true
FillColor=#EEEEEE
OutlineSize=0
OutlineColor=#555555
Opacity=100%

[Clock]
Enabled=true
ShowDate=true
Alignment=Left
Font=/home/aidan/.config/flex-launcher/assets/fonts/SourceSansPro-Regular.ttf
FontSize=40
FontColor=#999999
Shadows=false
ShadowColor=#555555
Margin=5%
Opacity=100%
TimeFormat=Auto
DateFormat=Auto
IncludeWeekday=true

[Screensaver]
Enabled=True
IdleTime=300
Intensity=70%
PauseSlideshow=true

[Hotkeys]
# Esc to quit
Hotkey1=#1B;:quit

[Gamepad]
Enabled=true
DeviceIndex=-1
#ControllerMappingsFile=
LStickX-=:left
LStickX+=:right
#LStickY-=
#LStickY+=
#RStickX-=
#RStickX+=
#RStickY-=
#RStickY+=
#LTrigger=
#RTrigger=
ButtonA=:select
ButtonB=:back
#ButtonX=
#ButtonY=
#ButtonBack=
#ButtonGuide=
#ButtonStart=
#ButtonLeftStick=
#ButtonRightStick=
#ButtonLeftShoulder=
#ButtonRightShoulder=
#ButtonDPadUp=
#ButtonDPadDown=
ButtonDPadLeft=:left
ButtonDPadRight=:right

# Menu configurations
[Main]
Entry1=Jellyfin;/home/aidan/storage/flex-launcher/jellyfin.png;/home/aidan/.local/share/flatpak/exports/share/applications/com.github.iwalton3.jellyfin-media-player.desktop
Entry2=Retroarch;/home/aidan/storage/flex-launcher/retroarch.png;/var/lib/flatpak/exports/share/applications/org.libretro.RetroArch.desktop
Entry3=SteamLink;/home/aidan/storage/flex-launcher/steamlink.png;/var/lib/flatpak/exports/share/applications/com.valvesoftware.SteamLink.desktop
Entry4=System;/home/aidan/.config/flex-launcher/assets/icons/system.png;:submenu System

[System]
Entry1=Shutdown;/home/aidan/.config/flex-launcher/assets/icons/system.png;:shutdown
Entry2=Restart;/home/aidan/.config/flex-launcher/assets/icons/restart.png;:restart

Feature request: Layout row wrap

Hi, this is excellent software. Thank you.

Would you be open to considering an option to allow rows on the layout for the app list to wrap below each other instead of a separate scroll window?

Seg Fault with system-sleep script

I'm on Ubuntu 22.10. I've added a script to send some CEC commands to /usr/lib/systemd/system-sleep/cec-control.sh:

#!/usr/bin/env bash

if [ "${1}" == "pre" ]; then
  /bin/echo "standby '0'" | /usr/bin/cec-client -s
fi

And I also have a hotkey set to :sleep.

When I hit the hotkey, for some reason Flex Launcher crashes with a Segmentation Fault. The script itself runs just fine, and I don't see anything in the Flex Launcher logs. But if I comment out the script, Flex Launcher doesn't crash.

I'm not sure how best to debug more, but please let me know if there's any other information I can provide!

Feature request: Gentoo ebuild

I am building a gentoo based htpc and this is just what I was looking for, simple and powerfull.
Could you add a gentoo ebuild to it?
Many thanks

Raspberry Pi Support - Initial Issues/Notes

Over the last few days I've been working on getting Flex Launcher running on the Raspberry Pi. Below are my findings.

System Overview

Hardware: Raspberry Pi 4 (4GB)
OS: Raspbian Buster
DM/DE: LightDM/LXDE

Compilation

The version of CMake available is 1.16 so below the min required of 1.18. This is easily addressed by compiling CMake 1.22 from source:

get https://github.com/Kitware/CMake/releases/download/v3.22.1/cmake-3.22.1.tar.gz

tar xf cmake-3.22.1.tar.gz
cd cmake-3.22.1/

./bootstrap # Takes about 30 mins
make # Takes about 45 mins
sudo make install

After doing this, compilation completes as expected and Flex Launcher can be run.

Window Display Issues

The main issue observed with using this is two-fold:

  • The minimisation of the Flex Launcher on external command launch
  • The failure to restore the window post-closure of external command

Minimisation of Flex Launcher

Perhaps more of an implementation consideration than a bug, the minimisation of Flex Launcher will display the desktop due to the minimisation.

This can easily be worked around by commenting out line 960 and recompiling.

Failure to Restore Window

This issue is a bit more confusing and, through some trial and error, I think I've managed to narrow down something close to a fix and hopefully some information to make addressing this issue simpler.

After closing an external command from Flex Launcher launched with Flex Launcher an odd thing happens - the window minimizes (this is true even with the minimisation prevention mentioned earlier). It can be restored by clicking the minimised window in the system tray and pressing the left or right arrow keys (to trigger a screen redraw).

I started debugging the window flags (see diff below) to identify what was going wrong and tested various combinations of ShowWindow, RestoreWindow and MaximizeWindow to try and restore the flags to the pre-launch state... Strangely, having all of these would get them close but the window would not reappear and would remain minimized.

Further investigation showed that some event polling may be needed (I'm unfamiliar with C++/SDL/GUI Development so do not understand the reasons behind this right now).

Adding in polling seemed to get the window to restore the flags and get closer to working as expected. Sometimes there is a flash of the desktop on external command closure before the launcher is restored. Other times it ends up in a similar state to having been restored-but-not-redrawn and an arrow press makes the launcher visible again.

I'm not quite sure how to address this but I hope it brings some clarity regarding my issues getting this to run on Raspberry Pi.

Troubleshooting Modifications

Below are the changes I made to get this close to working

diff --git a/src/launcher.c b/src/launcher.c
index 6d70fd8..50550aa 100755
--- a/src/launcher.c
+++ b/src/launcher.c
@@ -86,6 +86,7 @@ highlight_t *highlight = NULL; // Pointer containing highlight texture and coord
 bool updates; // Bool to update the screen at the end of the main loop
 geometry_t geo; // Struct containing screen geometry for the current page of buttons
 bool quit = false;
+void show_flags(int flags);
 
 // A function to initialize SDL
 int init_sdl()
@@ -893,6 +894,25 @@ void validate_settings()
   }
 }
 
+// Translate Window Flags
+void show_flags(int flags) {
+    printf("FLAGS ENABLED: ( %d )\n", flags);
+    if(flags & SDL_WINDOW_FULLSCREEN)         printf("SDL_WINDOW_FULLSCREEN\n");
+    if(flags & SDL_WINDOW_OPENGL)             printf("SDL_WINDOW_OPENGL\n");
+    if(flags & SDL_WINDOW_SHOWN)              printf("SDL_WINDOW_SHOWN\n");
+    if(flags & SDL_WINDOW_HIDDEN)             printf("SDL_WINDOW_HIDDEN\n");
+    if(flags & SDL_WINDOW_BORDERLESS)         printf("SDL_WINDOW_BORDERLESS\n");
+    if(flags & SDL_WINDOW_RESIZABLE)          printf("SDL_WINDOW_RESIZABLE\n");
+    if(flags & SDL_WINDOW_MINIMIZED)          printf("SDL_WINDOW_MINIMIZED\n");
+    if(flags & SDL_WINDOW_MAXIMIZED)          printf("SDL_WINDOW_MAXIMIZED\n");
+    if(flags & SDL_WINDOW_INPUT_GRABBED)      printf("SDL_WINDOW_INPUT_GRABBED\n");
+    if(flags & SDL_WINDOW_INPUT_FOCUS)        printf("SDL_WINDOW_INPUT_FOCUS\n");
+    if(flags & SDL_WINDOW_MOUSE_FOCUS)        printf("SDL_WINDOW_MOUSE_FOCUS\n");
+    if(flags & SDL_WINDOW_FULLSCREEN_DESKTOP) printf("SDL_WINDOW_FULLSCREEN_DESKTOP\n");
+    if(flags & SDL_WINDOW_FOREIGN)            printf("SDL_WINDOW_FOREIGN\n");
+    printf("\n");
+}
+
 // A function to execute the user's command
 void execute_command(char *command)
 {
@@ -957,14 +977,40 @@ void execute_command(char *command)
 
   // Launch external application
   else {
-    SDL_HideWindow(window);
+    //printf("Before hide flags\n");
+    //show_flags(SDL_GetWindowFlags(window));
+    //SDL_HideWindow(window);
+    printf("Before command flags\n");
+    show_flags(SDL_GetWindowFlags(window));
     #ifdef _WIN32
     cmd = convert_cmd(cmd);
     #endif
     system(cmd);
+    SDL_Event events;
+    SDL_PollEvent(&events);
+    //printf("After command flags\n");
+    //show_flags(SDL_GetWindowFlags(window));
+
     SDL_ShowWindow(window);
-    SDL_Delay(50);
+    SDL_PollEvent(&events);
+    printf("After show flags\n");
+    show_flags(SDL_GetWindowFlags(window));
+
+    SDL_MaximizeWindow(window);
+    SDL_PollEvent(&events);
+    printf("After maximize flags\n");
+    show_flags(SDL_GetWindowFlags(window));
+
+    SDL_RestoreWindow(window);
+    SDL_PollEvent(&events);
+    printf("After restore flags\n");
+    show_flags(SDL_GetWindowFlags(window));
+
     draw_screen();
+    SDL_PollEvent(&events);
+    printf("After draw flags\n");
+    show_flags(SDL_GetWindowFlags(window));
+
     updates = false;

Flex Launcher Incompatible With SDL 2.0.22

SDL 2.0.22 introduced a new bug that affects Flex Launcher's ability to display its window after the application finishes. As a workaround, you can change the OnLaunch setting to "None" or "Blank", or downgrade SDL. The issue has been reported upstream here.

This mostly impacts Linux users on rolling release distros. Windows users are unaffected by this issue.

Windows Apps on Close

I have added Windows apps to the launcher (not an easy feat, Windows apps are...special). However, when closing some apps, say Disney+, flex-launcher returns to a black screen.

Environment:
OS: Windows 11 Home 23H2
Test Resource: Disney+ app installed from the Windows app store.

Steps to reproduce:

  1. Press the Windows Key + R to open the run dialog window and execute the following command: shell:AppsFolder
  2. Right click on the Disney+ app, and select Create Shortcut.
  3. Acknowledge the error that a shortcut cannot be placed in this folder, and accept putting the shortcut on the Desktop.
  4. Edit the flex-launcher config.ini to add the Disney app using the previously created shortcut (along with an app icon).
  5. Launch flex-launcher and select the newly created Disney icon.
  6. Close the Disney Windows app.
  7. Result:
    a. Expected result: Disney app closes, flex-launcher appears and is usable to open other apps.
    b. Observed result: Disney app closes, flex-launcher is a black screen and non-interactive (but not reported by Windows as unresponsive) .

The Amazon Prime Video app (found in C:\program files\Applications\ actually uses a .exe file to launch, so that works fine. Netflix and Disney use some kind of special Windows App magic to launch the app, but Netflix allows you to run a batch file with the contents of "run netflix:" which can be loaded into flex-launcher, but the Disney app doesn't offer any such option.

Below is the debug output. The steps here was to launch Netflix using a bat file (described above), close it, then launch the Disney shortcut created using the above procedures. Immediately before the Key Escape entry is where the black screen is shown.

Loading menu 'Main'
Begin program loop
Gained keyboard focus
Key Return (#D) detected
Selected Entry:
Title: Netflix
Icon Path: C:\Users\jocko\OneDrive\Documents\flex-launcher-2.1-win64\CustomShortcuts\icons\netflix.png
Command: "C:\Users\jocko\OneDrive\Documents\flex-launcher-2.1-win64\customShortcuts\startNetflix.bat"
Lost keyboard focus
Application detected
Lost mouse focus
Gained keyboard focus
Application finished
Key Right (#4000004F) detected
Key Right (#4000004F) detected
Key Return (#D) detected
Selected Entry:
Title: Disney+
Icon Path: C:\Users\jocko\OneDrive\Documents\flex-launcher-2.1-win64\CustomShortcuts\icons\disney.png
Command: "C:\Users\jocko\OneDrive\Documents\flex-launcher-2.1-win64\customShortcuts\disney+ - shortcut.lnk"
Lost keyboard focus
Application detected
Lost mouse focus
Gained keyboard focus
Key Escape (#1B) detected
Quitting program

Feature request: OnLaunch=Close

On multimonitor setups where the app may open in a separate window or just non-fullscreen setups, it would be nice to have the launcher close after launching an application. Would you consider this as an option?

Launched apps can't draw on screen on Pi 4 without desktop environment

I can launch apps and they are running, but I think the launcher isn't releasing the screen to allow them to draw. So the launcher screen stays stuck on screen while they run. Is there any way to fix this without a desktop environment?

The apps I'm trying to use are Moonlight-qt and Steamlink. Neither of which require a desktop environment.

For now, I'm working around this by the menu items launch a script that closes flex-launcher, launches the app, and then re-runs flex-launcher when the app closes.

Feature request: Sound options

While this technically isn't an issue, I do believe it would really round out this app to have the option to add sounds for navigating, and launching apps.

Have 4k Display Partially working...

I was able to patch Flex Launcher to support 4k displays. And the images and text are now rendered in HiDPI. However When I launch an emulator, it gets rendered at a non-4K resolution. The child process for instance is 1080p but not 2x the pixel density.

While I have looking great within the Launcher, I don't have the same effect in stuff that is being launched.

Not launching on raspberry pi OS 64 bit

I installed flex-launcher like written in the doc on my raspberry pi 4 8GB with raspberry Pi OS 64 bit.
But no matter what I do I cannot get it to launch.

I put the . desktop in
/.config/autostart

And when I try to launch it from the terminal I get:

Could not initialize SDL
wayland,x11 not available

The config file is in the recommended location.

Thanks for the help.

Kind regards
Philip

Incompatible gamepad because SDL detects it as a Joystick

My gamepad in lsusb:
Bus 003 Device 005: ID 0925:1700 Lakeview Research PS/SS/N64 Joypad
This pad works fine in some games but wasn't being recognized by flex-launcher.

I did some debugging and discovered that SDL raises a SDL_JOYDEVICEADDED event for this gamepad but NOT a SDL_CONTROLLERDEVICEADDED event, so the current code never ends up calling connect_gamepad() about it.

I may be able to hack a fix together for my own use case. But this should probably be fixed for a more general audience too.

Starting flex-launcher on the rpi4 fails to initialize SDL

Hi folks,
I was hoping to get this tool running on my rpi4 (with raspberry pi os). Sadly, as soon as I try to start it, the following error message appears:

$ flex-launcher 
Could not initialize SDL
wayland,x11 not available

This happens no matter if I try to start it from a console in the desktop mode on in a console tty. Using the desktop file works neither.

I hope someone can help. Thanks!

Add feature to navigate from first icon to last icon and vice verse

Is it possible to navigate from first icon to last icon by pressing left and vice verse by pressing right?

For example: when I open Flex, it will auto hightlight the first icon/app, let's say I have total 4 of them, to navigate to the 4th icon, i have to press right 3 times, so is it possible to add a feature to just press left once, I can navigate to 4th icon from 1st icon?

Thanks!

Adding feature for only 1 instance of flex launcher.exe

Hi!

Is it possible to run only 1 instance of the launcher.exe?
For example: if launcher is already opened, double click on the exe, it will refocus on the existing launcher instead of opening the 2nd launcher exe

Thanks!

compiled v2.1 on Raspberry OS x32 bullseye (RPI-2): error on start

Hallo, thenk you for wery nice and usefull job. Im using flex-louncher on my HTPC amd64. But i trying to use it on RPI2 too. I could compile v2.1 on RPI2 without errors, but if i start on terminal, i becomme "flex-launcher" window with "a critical error occured. Check the log file for details" + button "ok" and in terminal i see "Could not initialize SDL / wayland,x11 not available". After i found a older v1.8 x32 deb file for RPI and installed. I can launch v1.8 from desktop menu and from terminal. I compilled v1.8 too and i can launch compilled v1.8. After tahet i try to compile v2.1 again, but i becomme same error. There is all that i have enabled in /boot/config.txt: dtparam=audio=on, camera_auto_detect=1, display_auto_detect=1, dtoverlay=vc4-fkms-v3d, max_framebuffers=2, disable_overscan=1, [cm4] otg_mode=1, [pi4] arm_boost=1. I tried compille v2.1 with dtoverlay=vc4-kms-v3d and with "#" disabled #dtoverlay=vc4-kms-v3d and #dtoverlay=vc4-fkms-v3d, but i have the same error if i run v2.1.
Second Question is: i wich to change clock month and weekday language. I think i could maybe manipilate some file to change days and months names befor i compile v1.8? Can you say me please what can i do
And one suggestion: if date on clock is enabled, could be useful that row with date design (font etc) could be manipilatet too. Best regards.

Request: Option to Support Rows and Columns within a Menu

Just started using Flex-Launcher after finding so many input-key mappers what would work with Gnome's Desktop but then would over ride and interfere with the games that I am launching.

For my use case, I would like to show a grid on a each menu where the user can navigate with the game controller or keyboard and select the game or submenu to choose from. This way, They would not have scroll horizontally if the wanted the columns and rows instead.

Thank you for your time and consideration and where I can send a donation. Thanks!

Trouble getting this to run on Bullseye Lite 64bit.

I wanted to install and use this to act as an app launcher on a lite install of bullseye on my Raspberry Pi 4b 8gb.

When I try to launch it, i get the:

Could not initialize SDL wayland,x11 not available

So I tried the:

SDL_VIDEODRIVER=x11 flex-launcher

Which told me "x11 not available". I guess this is normal because that would be included on the desktop gui version of bullseye and not the lite version. And I did try this on a regular (non lite) bullseye install and it worked but I wanted to get it working on a lite install.

I searched around and thought I had found a possible way to install x11 by using this guide: https://dustinpfister.github.io/2020/03/27/linux-raspbian-lite-xserver-xorg/ but that didn't work.

I also tried just installing the top 3 packages from this site: https://raspberryconnect.com/raspbian-packages/67-raspbian-x11.

But its clear that I, being a linux/raspberry pi novice, have no idea what I'm doing.

How can I get X11 on a lite install of bullseye so I can make this work? Is it possible to just use a different video driver? Steamlink runs just fine with its GUI so whatever that is using must work for this launcher?

Please let me know, as I'd like to have a setup to launch just a few apps and I'd rather do it on the lite version to cut down on extra bloat, like a desktop environment that I don't need.

screensaver help

I'm loving this program, its exactly the solution I envisioned when I started searching. Well done!

I have a question about the screensaver - I'm trying to tune my htpc sleep behaviour.
The dim function is lovely and throws a really classy vibe when combined with the slideshow background, but I'm wondering if I can combine this with the windows screensaver and power saving functions.

Currently these are disabled while flex-launcher runs. I'd like to have these remain enabled if possible to prevent oled icon burn in. Unfortunately the TV's power saving features are non existant and I'm looking for a failsafe.

Google is not really bringing up a solution to enable screensaver and sleep functions in a full screen app, only disable them.

Are you aware of a way I can achieve this behaviour?

Performance hit when gamepad support is enabled and Flex-Launcher is not hidden.

I'm on Ubuntu 22.04, I use Flex-Launcher as a frontend to run emulators and media players. I have a bluetooth connected 8BitDo Lite gamepad to control FL. I noticed this: if in the options I set OnLaunch to "None", the performance of the emulator frontend is reduced, it gets back to normal when I "kill" flex-launcher or if I set OnLaunch to "Hide". It seems it's related to the gamepad support because, with the gamepad turned off, everything runs normal.

Autostart on GNOME 3.38.5 cannot be focused

Thanks for creating this launcher, its exactly what I've been looking for :) .

I'm trying to get flex-launcher to autostart on Ubuntu 21.04 and the app does start however I am unable to switch to the app, it doesn't respond to inputs and it remains at the top of the window stack preventing other programs from showing other than alt+tab or hot corners.

I think its being started but the GNOME window manager or desktop environment is loaded afterwards. This issue seems similar to having to run feh and conky in the right order to get the expected background behaviour working but that's not what I'm trying to achieve here.

Is there something I need to add to the autostart .desktop file to make flex-launcher run in the foreground?

Background
I'm looking for an alternative OS for my HTPC so am considering a simple Ubuntu Server 21.04 install (needed for the libsdl2 version dependency that flex-launcher has that older Ubuntu releases lack) with xorg, flex-launcher and flatpak. Jellyfin and SteamLink are installed via Flatpak and launched via Flex Launcher. GNOME launches without a password and I want Flex Launcher to start and be ready to receive input.

Running without X11 or Wayland

Hello,

I am looking for solution for launching Kodi, Supertuxkarts and some other apps who do not require another graphics layer.
Can flex-launcher run without like Kodi with GBM ?

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.