diff options
Diffstat (limited to 'TODO')
-rw-r--r-- | TODO | 161 |
1 files changed, 126 insertions, 35 deletions
@@ -1,12 +1,4 @@ -setcap nice for good performance when opening overlay when game is running below 60 fps. -Maybe grab cursor with xi, as that will prevent games from detecting movement with xi2 api. - -Fullscreen on wayland doesn't render windows behind because it's a compositor optimization, to not draw anything behind (only draw the window directly without compositing). -Fix this by drawing the window smaller, or have two windows (left and right half monitor width). -Maybe change design to have black triangles appear and get larger until they fill the screen, with even spaces being left with no triangles. - Exclude triangles from a diagonal line across the screen. - Have buttons appear slanted in 3D. - All of these things should be done with vertex buffer, for real 3D. +setcap nice for good performance when opening overlay when game is running below 60 fps (on amd). WAYLAND_DISPLAY gamescope-0, DISPLAY=:1 (gamescope xwayland) @@ -20,16 +12,8 @@ Handle events in draw function because the render position of elements is availa Add nvidia overclock option. -Add support for window selection in capture. - -Add option to record the focused monitor. This works on wayland too when using kms capture since we can get cursor position without root and see which monitor (crtc) the cursor is on. Or use create_window_get_center_position. - -Make hotkeys configurable. - Filechooser should have the option to select list view, search bar and common folders/mounted drives on the left side for quick navigation. Also a button to create a new directory. -Support wayland (excluding gnome, or force xwayland on gnome). - Restart replay on system start if monitor resolution changes. Show warning when selecting hevc/av1 on amd because of amd driver/ffmpeg bug. @@ -47,12 +31,10 @@ Add global setting. In that setting there should be an option to enable/disable Add profiles and hotkey to switch between profiles (show notification when switching profile). -Fix first frame being black. +Fix first frame being black when running without a compositor. Add support for systray. -Add option to take screenshot. - Move event callbacks to a global list instead of std::function object in each widget. This reduces the size of widgets, since most widgets wont have the event callback set. This event callback would pass the widget as an argument. @@ -66,41 +48,150 @@ Make save-video-in-game-folder.sh and notify-saved-name.sh run ~/.config/gpu-scr if the profile is called 4chan. Create a directory of such example scripts, including 4chan webm one. -On nvidia check if suspend fix is applied. If not, show a popup asking the user to apply it (and apply it automatically). This is a requirement before this package is made to a flatpak. +On nvidia check if suspend fix is applied. If not, show a popup asking the user to apply it (and apply it automatically). Show warning when using steam deck or when trying to capture hevc/av1 on amd (the same warnings as gpu screen recorder gtk). -Add option to capture application audio. This should show a popup where you can use one of the available applications or a custom one and choose to record that application or all applications except that one. - Add profile option. Convert view to profile, add an option at the bottom that says "Edit profiles..." which should show a popup where you can create/remove profiles. New profiles should always be in advanced view. Verify monitor/audio when starting recording. Give an error if the options are no longer valid. -Get focused window when opening gsr-ui and pass that to the save replay script, to ignore gsr-ui when getting game name. - -gsr ui window has _NET_WM_STATE _NET_WM_STATE_ABOVE, not _NET_WM_STATE_FULLSCREEN +gsr ui window has _NET_WM_STATE _NET_WM_STATE_ABOVE, not _NET_WM_STATE_FULLSCREEN. For replay on fullscreen detect focused fullscreen window by checking if the window size is the same as the monitor size instead of _NET_WM_STATE_FULLSCREEN. -Add audio devices/app refresh button. - Play camera shutter sound when saving recording. When another sound when starting recording. Some games such as "The Finals" crashes/freezes when they lose focus when running them on x11 on a laptop with prime setup and the monitor runs on the iGPU while the game runs on the dGPU. -Try to reproduce this and if it happens try grab cursor and keyboard instead of setting gsr ui focus and make gsr ui click through like gsr notify. This might fix the issue. Run `systemctl status --user gpu-screen-recorder` when starting recording and give a notification warning if it returns 0 (running). Or run pidof gpu-screen-recorder. Add option to select which gpu to record with, or list all monitors and automatically use the gpu associated with the monitor. Do the same in gtk application. -Remove all dependencies from tools/gsr-global-hotkeys and roll our own keyboard events code. +Use global shortcuts desktop portal protocol on wayland when available. + +Support CJK. -Test global hotkeys with azerty instead of qwerty. +Move ui hover code from ::draw to ::on_event, to properly handle widget event stack. -Fix cursor grab not working in owlboy, need to use xigrab. +Save audio devices by name instead of id. This is more robust since audio id can change(?). -Dont allow autostart of replay if capture option is window recording (when window recording is added). +Improve linux global hotkeys startup time by parsing /proc/bus/input/devices instead of ioctl. <- Do this! -Use global shortcuts desktop portal protocol on wayland when available. +We can get the name of the running steam game without x11 by listing processes and finding the one that runs a program called "reaper" with the arguments SteamLaunch AppId=<number>. The binary comes after the -- argument, get the name of the game by parsing out name from that, in the format steamapps/common/<name>/. + +All steam game names by ID are available at https://api.steampowered.com/ISteamApps/GetAppList/v2/. The name of a single game can be retrieved from http://store.steampowered.com/api/appdetails?appids=115800. + +Dont put widget position to int position when scrolling. This makes the UI jitter when it's coming to a halt. + +Show warning if another instance of gpu screen recorder is already running when starting recording? + +Keyboard leds get turned off when stopping gsr-global-hotkeys (for example numlock). The numlock key has to be pressed twice again to make it look correct to match its state. + +Make gsr-ui flatpak systemd work nicely with non-flatpak gsr-ui. Maybe change ExecStart to do flatpak run ... || gsr-ui, but make it run as a shell command first with /bin/sh -c "". + +When enabling X11 global hotkey again only grab lalt, not ralt. + +Show an error that prime run will be disabled when using desktop portal capture option. This can cause issues as the user may have selected a video codec option that isn't available on their iGPU but is available on the prime-run dGPU. + +For keyboards that report supporting mice the keyboard grab will be delayed until any key has been pressed (and then released), see: https://github.com/dec05eba/gpu-screen-recorder-issues/issues/97 + See if there is any way around this. + +Check if "modprobe uinput" is needed on some systems (old fedora?). + +Add recording timer to see duration of recording/streaming. + +Make folder with window name work when using gamescope. Gamescope runs x11 itself so to get the window name inside that we have to connect to the gamescope X11 server (DISPLAY=:1 on x11 and DISPLAY=:2 on wayland, but not always). + Detect if the window is gamescope automatically (WM_CLASS = "gamescope") and get the x11 display automatically and connect to it to get the application its running. + This seems to only be an issue on wayland? the window title of the gamescope/steam bigpicture mode is the title of the game on x11, so it works automatically on x11. + +When clicking on current directory in file manager show a dropdown menu where you can select common directories (HOME, Videos, Downloads and mounted drives) for quick navigation. Maybe even button to search. + +Maybe change gsr-ui startup retry time in the systemd service, from 5 seconds to 2 seconds. + +Make it possible to take a screenshot through a button in the ui instead of having to use hotkey. + +Handle failing to save a replay. gsr should output "failed to save replay, or something like that" to make it possible to detect that. + +Dont allow saving replay while a replay save is in progress. + +Make input work with cjk input systems (such as fcitx). + +System startup option should also support runit and some other init systems, not only soystemd. + +Use x11 shm instead of XGetImage (https://stackoverflow.com/questions/43442675/how-to-use-xshmgetimage-and-xshmputimage). + +Add a hotkey to record/stream/replay region. + +Do xi grab for keys as well. Otherwise the ui cant be used for keyboard input if a program has grabbed the keyboard, and there could possibly be a game that grabs the keyboard as well. + +Make inactive buttons gray (in dropdown boxes and in the front page with save, etc when replay is not running). + +Add option to do screen-direct recording. But make it clear that it should not be used, except for gsync on x11 nvidia. + +Add systray for recording status. + +Add a desktop icon when gsr-ui has a window mode option (which should be the default launch option). + +Verify if cursor tracker monitor name is always correct. It uses the wayland monitor name for recording, but gpu screen recorder uses a custom name created from the drm connector name. + +Notification with the focused monitor (with CursorTrackerWayland) assumes that the x11 monitor name is the same as the drm monitor name. Same for find_monitor_by_name. + +If CursorTrackerWayland fails then fallback to getting focused monitor by window creation trick. Need to take into consideration prime laptop with dGPU that controls external monitors which cant be captured (different /dev/dri/card device). + Maybe automatically switch to recording with the device that controls the monitor. + In that case also add all monitors available to capture in the capture list and automatically choose the gpu that controls the monitor. + +Support cjk font. Use fc-match to find the location of the font. This also works in flatpak, in which case the fonts are in /run/host/..., where it lists system fonts. + +Keyboard layout is incorrect on wayland when using kde plasma keyboard settings to setup multiple keyboards, for example when changing to french. + Text input is correct, but hotkey is incorrect. + Need to use "setxkbmap fr" as well. + This happens only when grabbing keyboard (gsr-global-hotkeys). Same thing is seen with xev. + +Getting focused monitor on wayland doesn't work when vrr is enabled. This is because it uses software cursor instead (at least on kde plasma wayland). + Right now it falls back to create window & getting window position trick if there is no cursor visible (or a software cursor) and one monitor has vrr enabled. + Remove this when linux & wayland supports vrr with hardware cursor plane. + Find out another way to get cursor position on wayland. + This was fixed in linux 6.11 and in kde plasma in this commit: https://invent.kde.org/plasma/kwin/-/merge_requests/7582/diffs. + +Add option to start recording/replay/stream after the notification has disappeared. Show "Starting recording on this monitor in 3 seconds". + See if we can use hardware overlay plane instead somehow. + +When using wayland for mgl try using wlr-layer-shell and set layer to overlay and keyboard interactivity to exclusive. Do something similar for notifications. + +When starting gsr-ui remove any temporary replay disk data that has possibly remained from a crash, by looking for all folders that starts with gsr-replay and end with .gsr, in the replay directory. + +Add restart program button, in global settings. It should do almost the same thing as exit program, execept execv gsr-ui. + +When gpu screen recorder ui can run as a regular window (and supports tray icon and global shortcut portal) remove gpu screen recorder gtk. Then all error checking needs to be moved from that project to this project. + May need support for multi windows, or create a small project to display dialogs. + +Add a bug report page that automatically includes system info (make this clear to the user). + Do this by sending the report to a custom server that stores that data. + The server should limit reports per IP to prevent spam. + +Make it possible to change controller hotkeys. Also read from /dev/input/eventN instead of /dev/input/jsN. This is readable for controllers. + +Add option to copy screenshot to clipboard. Does it work properly on Wayland compositors? Maybe need to wait until the application becomes Wayland native instead of XWayland. + +Show message that replay/streaming has to be restarted if recording settings are changed while replay/streaming is ongoing. + +Support vector graphics. Maybe support svg, rendering it to a texture for better performance. + +Support freetype for text rendering. Maybe load freetype as runtime (with dlopen) and use that when available and fallback to stb_freetype if not available. + +Show .webm container option. It's currently chosen automatically if vp8/vp9 is chosen. The available containers should automatically switch depending on the video codec. + +In settings show audio levels for each audio. Maybe show audio level image beside the audio name in the dropdown box and switch to a different image (have 3-4 different images for each level) depending on the volume. + +Only use fake cursor on wayland if the focused x11 window is fullscreen. + +Create window as a real overlay window, using layer shell protocol, when possible. This will however minimize windows on floating wms. Check if this can be fixed somehow, or only use layer shell in tiling wms. + +Add timeout option for screenshots. + +Add a window that shows a warning for wayland users, that wayland doesn't support this software and if they experience issues then they should use x11 instead. + +Add a window that shows a warning if gpu video encoding isn't supported. -When support for window capture is enabled on x11 then make sure to not save the window except temporary while the program is open.
\ No newline at end of file +Disable system notifications when recording. Does the notification dbus interface support pausing notifications? |