mirror of
https://repo.dec05eba.com/gpu-screen-recorder-ui
synced 2026-03-31 09:17:04 +09:00
Compare commits
19 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2cabdf7089 | ||
|
|
6a12efec50 | ||
|
|
388a3500e2 | ||
|
|
24806ecf31 | ||
|
|
33a1e9e3bd | ||
|
|
4fd05d613b | ||
|
|
b80e864bbb | ||
|
|
33bc121bc8 | ||
|
|
106e7febe5 | ||
|
|
3c6e72350e | ||
|
|
43c16a7865 | ||
|
|
264a838e1f | ||
|
|
b927cb7f21 | ||
|
|
8e35de9e8b | ||
|
|
13984f8636 | ||
|
|
5f3ace0c47 | ||
|
|
651782a3a3 | ||
|
|
4e5a073854 | ||
|
|
1442016a18 |
10
README.md
10
README.md
@@ -10,10 +10,12 @@ If you are running another distro then you can run `sudo ./install.sh`, but you
|
||||
You can also install gpu screen recorder from [flathub](https://flathub.org/apps/details/com.dec05eba.gpu_screen_recorder) which includes this UI.
|
||||
|
||||
# Usage
|
||||
Press `Left Alt+Z` to show/hide the UI. Go into settings (the icon on the right) to view all of the different hotkeys configured.\
|
||||
You can start the overlay UI and make it start automatically on system startup by running `systemctl enable --now --user gpu-screen-recorder-ui`.
|
||||
Alternatively you can run `gsr-ui` and go into settings and enable start on system startup setting.\
|
||||
If you use a non-systemd distro and want to start the UI on system startup then you have to manually add `gsr-ui launch-daemon` to your system startup script.\
|
||||
Start the program by running `gsr-ui` or clicking on `GPU Screen Recorder` on your desktop or in your application launcher.
|
||||
Press `Left Alt+Z` to show/hide the UI. Go into the settings (the icon on the right) to view all of the different hotkeys configured.\
|
||||
If you want the program to start on system startup and have it running in the background where it can be controlled with the hotkeys at any time
|
||||
then open the UI and go into the settings (the icon on the right) and enable "Start program on system startup?".\
|
||||
The application will be added to `~/.config/autostart/gpu-screen-recorder-ui.desktop`. This will be launched automatically when you use a desktop environment,
|
||||
but if you use a minimal window manager then you need to use a XDG autostart program such as `dex`, or launch the program manually from your window manager startup script.\
|
||||
A program called `gsr-ui-cli` is also installed when installing this software. This can be used to remotely control the UI. Run `gsr-ui-cli --help` to list the available commands.
|
||||
|
||||
# Dependencies
|
||||
|
||||
10
TODO
10
TODO
@@ -62,8 +62,6 @@ Play camera shutter sound when saving recording. When another sound when startin
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
Use global shortcuts desktop portal protocol on wayland when available.
|
||||
@@ -82,8 +80,6 @@ All steam game names by ID are available at https://api.steampowered.com/ISteamA
|
||||
|
||||
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?
|
||||
|
||||
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.
|
||||
@@ -194,8 +190,6 @@ Disable hotkeys if virtual keyboard is found (either at startup or after running
|
||||
But wont keyboard remapping software grab the keyboard first if they detect it quickly?
|
||||
If we fail to grab it because some other software did then dont grab any keyboards nor gsr-ui virtual keyboards, just listen to them.
|
||||
|
||||
Support localization.
|
||||
|
||||
Add option to not capture cursor in screenshot when doing region/window capture.
|
||||
|
||||
Window selection doesn't work when a window is fullscreen on x11.
|
||||
@@ -242,8 +236,6 @@ Remove all mgl::Clock usage in Overlay. We only need to get the time once per up
|
||||
|
||||
Handle stopping replay/stream when recording is running (show notification that the video is saved and move the video to folder with game name).
|
||||
|
||||
Support translations.
|
||||
|
||||
Sometimes when opening gpu screen recorder ui gsr-global-hotkeys incorrectly detects that keyboard input is locked.
|
||||
|
||||
When running replay for a long time and then stopping it it takes a while. Improve this.
|
||||
@@ -263,3 +255,5 @@ Add option to set preset on nvidia. Use -ffmpeg-video-opts for that.
|
||||
Webcam resolution list is too long for some people. Fix it by separating resolution and framerate. Sort resolution and framerate from highest to lowest. Add scrollbar for dropdown list. POOP. Add --filesystem=xdg-run/hypr and run the gsr-hyprland-helper directly instead of flatpak spawn or use wlr foreign top level window protocol. Nvidia webcam yuyv capture doesn't seem to work on x11?
|
||||
|
||||
Allow settings page to select input capture option/audio, to make sure it doesn't blindly select the default option when the sources aren't temporary available when opening the settings.
|
||||
|
||||
Add simple video cutting in the ui.
|
||||
@@ -2,9 +2,12 @@
|
||||
Type=Application
|
||||
Name=GPU Screen Recorder
|
||||
GenericName=Screen recorder
|
||||
GenericName[hu]=Képernyőrögzítő
|
||||
Comment=A ShadowPlay-like screen recorder for Linux
|
||||
Comment[hu]=ShadowPlay-szerű képernyőrögzítő Linuxra
|
||||
Icon=gpu-screen-recorder
|
||||
Exec=gsr-ui launch-hide-announce
|
||||
Terminal=false
|
||||
Keywords=gpu-screen-recorder;gsr-ui;screen recorder;streaming;twitch;replay;shadowplay;
|
||||
Keywords[hu]=gpu-screen-recorder;gsr-ui;képernyőrögzítő;streamelés;közvetítés;twitch;visszajátszás;shadowplay;
|
||||
Categories=AudioVideo;Recorder;
|
||||
|
||||
@@ -36,4 +36,15 @@ namespace gsr {
|
||||
// Returns the path to the parent directory (ignoring trailing /)
|
||||
// of "." if there is no parent directory and the directory path is relative
|
||||
std::string get_parent_directory(std::string_view directory);
|
||||
|
||||
// XDG Autostart helpers — toggle ~/.config/autostart/gpu-screen-recorder-ui.desktop
|
||||
bool is_xdg_autostart_enabled();
|
||||
// Returns 0 on success
|
||||
int set_xdg_autostart(bool enable);
|
||||
void replace_xdg_autostart_with_current_gsr_type();
|
||||
|
||||
// Systemd user service helpers
|
||||
bool wait_until_systemd_user_service_available();
|
||||
bool is_systemd_service_enabled(const char *service_name);
|
||||
bool disable_systemd_service(const char *service_name);
|
||||
}
|
||||
@@ -4,10 +4,12 @@
|
||||
#include <sys/wait.h>
|
||||
#include <unistd.h>
|
||||
#include <thread>
|
||||
#include <mutex>
|
||||
|
||||
namespace gsr {
|
||||
static ActiveHyprlandWindow active_hyprland_window;
|
||||
static bool hyprland_listener_thread_started = false;
|
||||
static std::mutex active_window_mutex;
|
||||
|
||||
static bool get_hyprland_socket_path(char *path, int path_len) {
|
||||
const char* xdg_runtime_dir = getenv("XDG_RUNTIME_DIR");
|
||||
@@ -83,6 +85,7 @@ namespace gsr {
|
||||
|
||||
size_t pos = line.find(prefix);
|
||||
if (pos != std::string::npos) {
|
||||
std::lock_guard<std::mutex> lock(active_window_mutex);
|
||||
active_hyprland_window.title = line.substr(pos + prefix.length());
|
||||
}
|
||||
}
|
||||
@@ -105,6 +108,7 @@ namespace gsr {
|
||||
}
|
||||
|
||||
std::string get_current_hyprland_window_title() {
|
||||
std::lock_guard<std::mutex> lock(active_window_mutex);
|
||||
return active_hyprland_window.title;
|
||||
}
|
||||
|
||||
|
||||
@@ -5,15 +5,12 @@
|
||||
#include <string>
|
||||
#include <sys/types.h>
|
||||
#include <thread>
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <unistd.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/un.h>
|
||||
#include <mutex>
|
||||
|
||||
namespace gsr {
|
||||
static ActiveKwinWindow active_kwin_window;
|
||||
static bool kwin_helper_thread_started = false;
|
||||
static std::mutex active_window_mutex;
|
||||
|
||||
void kwin_script_thread() {
|
||||
FILE* pipe = popen("gsr-kwin-helper", "r");
|
||||
@@ -37,6 +34,7 @@ namespace gsr {
|
||||
line.pop_back();
|
||||
}
|
||||
|
||||
std::lock_guard<std::mutex> lock(active_window_mutex);
|
||||
size_t pos = std::string::npos;
|
||||
if ((pos = line.find(prefix_title)) != std::string::npos) {
|
||||
std::string title = line.substr(pos + prefix_title.length());
|
||||
@@ -54,14 +52,17 @@ namespace gsr {
|
||||
}
|
||||
|
||||
std::string get_current_kwin_window_title() {
|
||||
std::lock_guard<std::mutex> lock(active_window_mutex);
|
||||
return active_kwin_window.title;
|
||||
}
|
||||
|
||||
bool get_current_kwin_window_fullscreen() {
|
||||
std::lock_guard<std::mutex> lock(active_window_mutex);
|
||||
return active_kwin_window.fullscreen;
|
||||
}
|
||||
|
||||
std::string get_current_kwin_window_monitor_name() {
|
||||
std::lock_guard<std::mutex> lock(active_window_mutex);
|
||||
return active_kwin_window.monitorName;
|
||||
}
|
||||
|
||||
|
||||
@@ -536,17 +536,6 @@ namespace gsr {
|
||||
save_config(config);
|
||||
show_notification(TR("Wayland doesn't support GPU Screen Recorder UI properly,\nthings may not work as expected. Use X11 if you experience issues."), notification_error_timeout_seconds, mgl::Color(255, 255, 255), mgl::Color(255, 0, 0), NotificationType::NOTICE, nullptr, NotificationLevel::ERROR);
|
||||
}
|
||||
|
||||
const std::string wm_name = get_window_manager_name(x11_dpy);
|
||||
|
||||
if (wm_name.find("Hyprland") != std::string::npos) {
|
||||
start_hyprland_listener_thread();
|
||||
supports_window_title = true;
|
||||
} else if (wm_name == "KWin") {
|
||||
start_kwin_helper_thread();
|
||||
supports_window_title = true;
|
||||
supports_window_fullscreen_state = true;
|
||||
}
|
||||
}
|
||||
|
||||
update_led_indicator_after_settings_change();
|
||||
@@ -1352,15 +1341,25 @@ namespace gsr {
|
||||
if(exit_status == 0)
|
||||
return;
|
||||
|
||||
if(exit_status == 127) {
|
||||
if(enable)
|
||||
show_notification(TR("Failed to add GPU Screen Recorder to system startup.\nThis option only works on systems that use systemd.\nYou have to manually add \"gsr-ui\" to system startup on systems that uses another init system."), 7.0, mgl::Color(255, 255, 255), mgl::Color(255, 0, 0), NotificationType::NOTICE, nullptr, NotificationLevel::ERROR);
|
||||
} else {
|
||||
if(enable)
|
||||
show_notification(TR("Failed to add GPU Screen Recorder to system startup"), notification_timeout_seconds, mgl::Color(255, 255, 255), mgl::Color(255, 0, 0), NotificationType::NOTICE, nullptr, NotificationLevel::ERROR);
|
||||
else
|
||||
show_notification(TR("Failed to remove GPU Screen Recorder from system startup"), notification_timeout_seconds, mgl::Color(255, 255, 255), mgl::Color(255, 0, 0), NotificationType::NOTICE, nullptr, NotificationLevel::ERROR);
|
||||
if(exit_status == 67) {
|
||||
const bool is_flatpak = getenv("FLATPAK_ID") != nullptr;
|
||||
const char *startup_command = is_flatpak ? "flatpak run com.dec05eba.gpu_screen_recorder gsr-ui" : "gsr-ui launch-daemon";
|
||||
show_notification(
|
||||
TRF("To enable autorun: install and configure 'dex' (recommended), or manually add '%s' to your desktop autostart entries.", startup_command).c_str(),
|
||||
10.0,
|
||||
mgl::Color(255, 255, 255),
|
||||
mgl::Color(255, 0, 0),
|
||||
NotificationType::NOTICE,
|
||||
nullptr,
|
||||
NotificationLevel::ERROR
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
if(enable)
|
||||
show_notification(TR("Failed to add GPU Screen Recorder to system startup"), notification_timeout_seconds, mgl::Color(255, 255, 255), mgl::Color(255, 0, 0), NotificationType::NOTICE, nullptr, NotificationLevel::ERROR);
|
||||
else
|
||||
show_notification(TR("Failed to remove GPU Screen Recorder from system startup"), notification_timeout_seconds, mgl::Color(255, 255, 255), mgl::Color(255, 0, 0), NotificationType::NOTICE, nullptr, NotificationLevel::ERROR);
|
||||
};
|
||||
|
||||
settings_page->on_click_exit_program_button = [this](const char *reason) {
|
||||
@@ -1856,10 +1855,6 @@ namespace gsr {
|
||||
exit_reason = "back-to-old-ui";
|
||||
else
|
||||
exit_reason = "exit";
|
||||
|
||||
const char *args[] = { "systemctl", "disable", "--user", "gpu-screen-recorder-ui", nullptr };
|
||||
std::string stdout_str;
|
||||
exec_program_on_host_get_stdout(args, stdout_str);
|
||||
exit();
|
||||
}
|
||||
|
||||
@@ -2007,23 +2002,12 @@ namespace gsr {
|
||||
mgl_context *context = mgl_get_context();
|
||||
Display *display = (Display*)context->connection;
|
||||
const std::string video_filename = filepath_get_filename(video_filepath.c_str());
|
||||
|
||||
const std::string wm_name = get_window_manager_name(display);
|
||||
const bool is_hyprland = wm_name.find("Hyprland") != std::string::npos;
|
||||
const bool is_kwin_wayland = wm_name == "KWin" && gsr_info.system_info.display_server == DisplayServer::WAYLAND;
|
||||
|
||||
std::string focused_window_name;
|
||||
if (is_hyprland) {
|
||||
focused_window_name = get_current_hyprland_window_title();
|
||||
} else if (is_kwin_wayland) {
|
||||
focused_window_name = get_current_kwin_window_title();
|
||||
} else {
|
||||
const Window gsr_ui_window = window ? (Window)window->get_system_handle() : None;
|
||||
focused_window_name = get_window_name_at_cursor_position(display, gsr_ui_window);
|
||||
const Window gsr_ui_window = window ? (Window)window->get_system_handle() : None;
|
||||
std::string focused_window_name = get_window_name_at_cursor_position(display, gsr_ui_window);
|
||||
|
||||
if(focused_window_name.empty())
|
||||
focused_window_name = get_focused_window_name(display, WindowCaptureType::FOCUSED, false);
|
||||
}
|
||||
if(focused_window_name.empty())
|
||||
focused_window_name = get_focused_window_name(display, WindowCaptureType::FOCUSED, false);
|
||||
|
||||
if(focused_window_name.empty())
|
||||
focused_window_name = "Game";
|
||||
@@ -2355,33 +2339,22 @@ namespace gsr {
|
||||
mgl_context *context = mgl_get_context();
|
||||
Display *display = (Display*)context->connection;
|
||||
|
||||
const std::string wm_name = get_window_manager_name(display);
|
||||
const bool is_kwin_wayland = wm_name == "KWin" && gsr_info.system_info.display_server == DisplayServer::WAYLAND;
|
||||
|
||||
const bool prev_focused_window_is_fullscreen = focused_window_is_fullscreen;
|
||||
Window focused_window = None;
|
||||
|
||||
if (is_kwin_wayland) {
|
||||
focused_window_is_fullscreen = get_current_kwin_window_fullscreen();
|
||||
} else {
|
||||
focused_window = get_focused_window(display, WindowCaptureType::FOCUSED, false);
|
||||
if(window && focused_window == (Window)window->get_system_handle())
|
||||
return;
|
||||
focused_window = get_focused_window(display, WindowCaptureType::FOCUSED, false);
|
||||
if(window && focused_window == (Window)window->get_system_handle())
|
||||
return;
|
||||
|
||||
focused_window_is_fullscreen = focused_window != 0 && window_is_fullscreen(display, focused_window);
|
||||
}
|
||||
focused_window_is_fullscreen = focused_window != 0 && window_is_fullscreen(display, focused_window);
|
||||
|
||||
if(focused_window_is_fullscreen != prev_focused_window_is_fullscreen) {
|
||||
std::string fullscreen_window_monitor;
|
||||
if(is_kwin_wayland) {
|
||||
fullscreen_window_monitor = get_current_kwin_window_monitor_name();
|
||||
} else {
|
||||
auto window_monitor = get_monitor_by_window_center(display, focused_window);
|
||||
if(window_monitor.has_value())
|
||||
fullscreen_window_monitor = std::move(window_monitor->name);
|
||||
else
|
||||
fullscreen_window_monitor.clear();
|
||||
}
|
||||
auto window_monitor = get_monitor_by_window_center(display, focused_window);
|
||||
if(window_monitor.has_value())
|
||||
fullscreen_window_monitor = std::move(window_monitor->name);
|
||||
else
|
||||
fullscreen_window_monitor.clear();
|
||||
|
||||
if(recording_status == RecordingStatus::NONE && focused_window_is_fullscreen) {
|
||||
if(are_all_audio_tracks_available_to_capture(config.replay_config.record_options.audio_tracks_list) && is_webcam_available_to_capture(config.replay_config.record_options))
|
||||
|
||||
@@ -60,8 +60,9 @@ namespace gsr {
|
||||
bool Translation::load_language(const char* lang) {
|
||||
translations.clear();
|
||||
|
||||
if(lang[0] == '\0')
|
||||
lang = "en";
|
||||
const std::string system_language = get_system_language();
|
||||
if(!lang || lang[0] == '\0')
|
||||
lang = system_language.c_str();
|
||||
|
||||
if (!is_language_supported(lang)) {
|
||||
fprintf(stderr, "Warning: language '%s' is not supported\n", lang);
|
||||
@@ -119,7 +120,7 @@ namespace gsr {
|
||||
|
||||
this->translations_directory = translations_directory;
|
||||
|
||||
load_language(initial_language == nullptr ? get_system_language().c_str() : initial_language);
|
||||
load_language(initial_language == nullptr ? "" : initial_language);
|
||||
}
|
||||
|
||||
bool Translation::plural_numbers_are_complex() {
|
||||
|
||||
134
src/Utils.cpp
134
src/Utils.cpp
@@ -1,13 +1,74 @@
|
||||
#include "../include/Utils.hpp"
|
||||
#include "../include/Process.hpp"
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <optional>
|
||||
#include <unistd.h>
|
||||
#include <pwd.h>
|
||||
#include <limits.h>
|
||||
#include <string.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/wait.h>
|
||||
extern "C" {
|
||||
#include <mgl/system/clock.h>
|
||||
}
|
||||
|
||||
namespace gsr {
|
||||
static std::optional<std::string> get_xdg_autostart_content() {
|
||||
const char *args[] = {
|
||||
"/bin/sh", "-c",
|
||||
"cat \"${XDG_CONFIG_HOME:-$HOME/.config}/autostart/gpu-screen-recorder-ui.desktop\"",
|
||||
nullptr
|
||||
};
|
||||
std::string output;
|
||||
if(exec_program_on_host_get_stdout(args, output, false) != 0)
|
||||
return std::nullopt;
|
||||
return output;
|
||||
}
|
||||
|
||||
// Returns the exit status or -1 on timeout
|
||||
static int run_command_timeout(const char **args, double sleep_time_sec, double timeout_sec) {
|
||||
mgl_clock clock;
|
||||
mgl_clock_init(&clock);
|
||||
|
||||
do {
|
||||
int read_fd = 0;
|
||||
const pid_t process_id = exec_program(args, &read_fd, false);
|
||||
if(process_id <= 0)
|
||||
continue;
|
||||
|
||||
const double time_elapsed_sleep_start = mgl_clock_get_elapsed_time_seconds(&clock);
|
||||
pid_t waitpid_result = 0;
|
||||
do {
|
||||
int status = 0;
|
||||
waitpid_result = waitpid(process_id, &status, WNOHANG);
|
||||
if(waitpid_result > 0)
|
||||
break;
|
||||
|
||||
usleep(30 * 1000); // 30ms
|
||||
} while(mgl_clock_get_elapsed_time_seconds(&clock) - time_elapsed_sleep_start < sleep_time_sec);
|
||||
|
||||
int status = 0;
|
||||
if(waitpid_result > 0) {
|
||||
int exit_status = -0;
|
||||
if(WIFEXITED(status))
|
||||
exit_status = -1;
|
||||
|
||||
if(exit_status == 0)
|
||||
exit_status = WEXITSTATUS(status);
|
||||
|
||||
close(read_fd);
|
||||
return exit_status;
|
||||
} else {
|
||||
kill(process_id, SIGKILL);
|
||||
waitpid(process_id, &status, 0);
|
||||
close(read_fd);
|
||||
}
|
||||
} while(mgl_clock_get_elapsed_time_seconds(&clock) < timeout_sec);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
void string_split_char(std::string_view str, char delimiter, StringSplitCallback callback_func) {
|
||||
size_t index = 0;
|
||||
while(index < str.size()) {
|
||||
@@ -238,4 +299,77 @@ namespace gsr {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
bool is_xdg_autostart_enabled() {
|
||||
const std::optional<std::string> output = get_xdg_autostart_content();
|
||||
return output.has_value() && output.value().find("Hidden=true") == std::string::npos;
|
||||
}
|
||||
|
||||
int set_xdg_autostart(bool enable) {
|
||||
const char *xdg_current_desktop = getenv("XDG_CURRENT_DESKTOP");
|
||||
if(!xdg_current_desktop || strlen(xdg_current_desktop) == 0) {
|
||||
std::string output;
|
||||
const char *check_dex_args[] = { "/bin/sh", "-c", "command -v dex", nullptr };
|
||||
if(exec_program_on_host_get_stdout(check_dex_args, output, true) != 0)
|
||||
return 67;
|
||||
}
|
||||
|
||||
const bool is_flatpak = getenv("FLATPAK_ID") != nullptr;
|
||||
const char *exec_line = is_flatpak
|
||||
? "Exec=flatpak run com.dec05eba.gpu_screen_recorder gsr-ui"
|
||||
: "Exec=gsr-ui launch-daemon";
|
||||
|
||||
std::string content =
|
||||
"[Desktop Entry]\n"
|
||||
"Type=Application\n"
|
||||
"Name=GPU Screen Recorder\n"
|
||||
"GenericName=Screen recorder\n"
|
||||
"Comment=A ShadowPlay-like screen recorder for Linux\n"
|
||||
"Icon=gpu-screen-recorder\n" +
|
||||
std::string(exec_line) + "\n" +
|
||||
"Terminal=false\n" +
|
||||
"Hidden=" + (enable ? "false" : "true") + "\n";
|
||||
|
||||
std::string shell_cmd =
|
||||
"p=\"${XDG_CONFIG_HOME:-$HOME/.config}/autostart/gpu-screen-recorder-ui.desktop\" && "
|
||||
"mkdir -p \"$(dirname \"$p\")\" && "
|
||||
"printf '" + content + "' > \"$p\"";
|
||||
|
||||
const char *args[] = { "/bin/sh", "-c", shell_cmd.c_str(), nullptr };
|
||||
std::string dummy;
|
||||
return exec_program_on_host_get_stdout(args, dummy, true);
|
||||
}
|
||||
|
||||
void replace_xdg_autostart_with_current_gsr_type() {
|
||||
const std::optional<std::string> output = get_xdg_autostart_content();
|
||||
if(!output.has_value())
|
||||
return;
|
||||
|
||||
const bool is_flatpak = getenv("FLATPAK_ID") != nullptr;
|
||||
const bool is_exec_flatpak = output.value().find("flatpak run") != std::string::npos;
|
||||
if(is_flatpak != is_exec_flatpak) {
|
||||
const bool is_autostart_enabled = output.value().find("Hidden=true") == std::string::npos;
|
||||
set_xdg_autostart(is_autostart_enabled);
|
||||
}
|
||||
}
|
||||
|
||||
bool wait_until_systemd_user_service_available() {
|
||||
const char *args[] = { "systemctl", "--user", "-q", "is-enabled", "gpu-screen-recorder-ui.service", nullptr };
|
||||
const char *flatpak_args[] = { "flatpak-spawn", "--host", "--", "systemctl", "--user", "-q", "is-enabled", "gpu-screen-recorder-ui.service", nullptr };
|
||||
const bool is_flatpak = getenv("FLATPAK_ID") != nullptr;
|
||||
return run_command_timeout(is_flatpak ? flatpak_args : args, 1.0, 5.0) >= 0;
|
||||
}
|
||||
|
||||
bool is_systemd_service_enabled(const char *service_name) {
|
||||
const char *args[] = { "systemctl", "--user", "is-enabled", service_name, nullptr };
|
||||
std::string output;
|
||||
return exec_program_on_host_get_stdout(args, output, false) == 0;
|
||||
}
|
||||
|
||||
bool disable_systemd_service(const char *service_name) {
|
||||
const char *args[] = { "systemctl", "--user", "disable", service_name, nullptr };
|
||||
std::string output;
|
||||
return exec_program_on_host_get_stdout(args, output, false) == 0;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -3,6 +3,7 @@
|
||||
#include "../../include/Overlay.hpp"
|
||||
#include "../../include/Theme.hpp"
|
||||
#include "../../include/Process.hpp"
|
||||
#include "../../include/Utils.hpp"
|
||||
#include "../../include/Translation.hpp"
|
||||
#include "../../include/gui/GsrPage.hpp"
|
||||
#include "../../include/gui/PageStack.hpp"
|
||||
@@ -180,9 +181,7 @@ namespace gsr {
|
||||
else
|
||||
return false;
|
||||
|
||||
const char *args[] = { "systemctl", enable ? "enable" : "disable", "--user", "gpu-screen-recorder-ui", nullptr };
|
||||
std::string stdout_str;
|
||||
const int exit_status = exec_program_on_host_get_stdout(args, stdout_str);
|
||||
const int exit_status = set_xdg_autostart(enable);
|
||||
if(on_startup_changed)
|
||||
on_startup_changed(enable, exit_status);
|
||||
return exit_status == 0;
|
||||
@@ -530,6 +529,7 @@ namespace gsr {
|
||||
combo_box->add_item("English", "en");
|
||||
combo_box->add_item("Español", "es");
|
||||
combo_box->add_item("Français", "fr");
|
||||
combo_box->add_item("Magyar", "hu");
|
||||
combo_box->add_item("Русский", "ru");
|
||||
combo_box->add_item("Українська", "uk");
|
||||
combo_box->on_selection_changed = [](const std::string&, const std::string &id) {
|
||||
@@ -633,10 +633,7 @@ namespace gsr {
|
||||
else
|
||||
tint_color_radio_button_ptr->set_selected_item(config.main_config.tint_color);
|
||||
|
||||
const char *args[] = { "systemctl", "is-enabled", "--quiet", "--user", "gpu-screen-recorder-ui", nullptr };
|
||||
std::string stdout_str;
|
||||
const int exit_status = exec_program_on_host_get_stdout(args, stdout_str);
|
||||
startup_radio_button_ptr->set_selected_item(exit_status == 0 ? "start_on_system_startup" : "dont_start_on_system_startup", false, false);
|
||||
startup_radio_button_ptr->set_selected_item(is_xdg_autostart_enabled() ? "start_on_system_startup" : "dont_start_on_system_startup", false, false);
|
||||
|
||||
enable_keyboard_hotkeys_radio_button_ptr->set_selected_item(config.main_config.hotkeys_enable_option, false, false);
|
||||
enable_joystick_hotkeys_radio_button_ptr->set_selected_item(config.main_config.joystick_hotkeys_enable_option, false, false);
|
||||
|
||||
81
src/main.cpp
81
src/main.cpp
@@ -1,5 +1,6 @@
|
||||
#include "../include/GsrInfo.hpp"
|
||||
#include "../include/Overlay.hpp"
|
||||
#include "../include/Utils.hpp"
|
||||
#include "../include/gui/Utils.hpp"
|
||||
#include "../include/Process.hpp"
|
||||
#include "../include/Rpc.hpp"
|
||||
@@ -117,47 +118,6 @@ static void rpc_add_commands(gsr::Rpc *rpc, gsr::Overlay *overlay) {
|
||||
});
|
||||
}
|
||||
|
||||
static void install_flatpak_systemd_service() {
|
||||
const bool systemd_service_exists = system(
|
||||
"data_home=$(flatpak-spawn --host -- /bin/sh -c 'echo \"${XDG_DATA_HOME:-$HOME/.local/share}\"') && "
|
||||
"flatpak-spawn --host -- ls \"$data_home/systemd/user/gpu-screen-recorder-ui.service\"") == 0;
|
||||
if(systemd_service_exists)
|
||||
return;
|
||||
|
||||
bool service_install_successful = (system(
|
||||
"data_home=$(flatpak-spawn --host -- /bin/sh -c 'echo \"${XDG_DATA_HOME:-$HOME/.local/share}\"') && "
|
||||
"flatpak-spawn --host -- install -Dm644 /var/lib/flatpak/app/com.dec05eba.gpu_screen_recorder/current/active/files/share/gpu-screen-recorder/gpu-screen-recorder-ui.service \"$data_home/systemd/user/gpu-screen-recorder-ui.service\"") == 0);
|
||||
service_install_successful &= (system("flatpak-spawn --host -- systemctl --user daemon-reload") == 0);
|
||||
if(service_install_successful)
|
||||
fprintf(stderr, "Info: the systemd service file was missing. It has now been installed\n");
|
||||
else
|
||||
fprintf(stderr, "Error: the systemd service file is missing and failed to install it again\n");
|
||||
}
|
||||
|
||||
static void remove_flatpak_systemd_service() {
|
||||
char systemd_service_path[PATH_MAX];
|
||||
const char *xdg_data_home = getenv("XDG_DATA_HOME");
|
||||
const char *home = getenv("HOME");
|
||||
if(xdg_data_home) {
|
||||
snprintf(systemd_service_path, sizeof(systemd_service_path), "%s/systemd/user/gpu-screen-recorder-ui.service", xdg_data_home);
|
||||
} else if(home) {
|
||||
snprintf(systemd_service_path, sizeof(systemd_service_path), "%s/.local/share/systemd/user/gpu-screen-recorder-ui.service", home);
|
||||
} else {
|
||||
fprintf(stderr, "Error: failed to get user home directory\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if(access(systemd_service_path, F_OK) != 0)
|
||||
return;
|
||||
|
||||
remove(systemd_service_path);
|
||||
system("systemctl --user daemon-reload");
|
||||
fprintf(stderr, "Info: conflicting flatpak version of the systemd service for gsr-ui was found at \"%s\", it has now been removed\n", systemd_service_path);
|
||||
}
|
||||
|
||||
static bool is_flatpak() {
|
||||
return getenv("FLATPAK_ID") != nullptr;
|
||||
}
|
||||
|
||||
static void set_display_server_environment_variables() {
|
||||
// Some users dont have properly setup environments (no display manager that does systemctl --user import-environment DISPLAY WAYLAND_DISPLAY)
|
||||
@@ -189,7 +149,8 @@ enum class LaunchAction {
|
||||
LAUNCH_SHOW,
|
||||
LAUNCH_HIDE,
|
||||
LAUNCH_HIDE_ANNOUNCE,
|
||||
LAUNCH_DAEMON
|
||||
LAUNCH_DAEMON,
|
||||
INSTALL_STARTUP
|
||||
};
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
@@ -230,6 +191,8 @@ int main(int argc, char **argv) {
|
||||
launch_action = LaunchAction::LAUNCH_HIDE_ANNOUNCE;
|
||||
} else if(strcmp(launch_action_opt, "launch-daemon") == 0) {
|
||||
launch_action = LaunchAction::LAUNCH_DAEMON;
|
||||
} else if(strcmp(launch_action_opt, "install-startup") == 0) {
|
||||
launch_action = LaunchAction::INSTALL_STARTUP;
|
||||
} else {
|
||||
printf("error: invalid action \"%s\", expected \"launch-show\", \"launch-hide\", \"launch-hide-announce\" or \"launch-daemon\".\n", launch_action_opt);
|
||||
usage();
|
||||
@@ -238,6 +201,9 @@ int main(int argc, char **argv) {
|
||||
usage();
|
||||
}
|
||||
|
||||
if(launch_action == LaunchAction::INSTALL_STARTUP)
|
||||
return gsr::set_xdg_autostart(true);
|
||||
|
||||
set_display_server_environment_variables();
|
||||
|
||||
const std::string gsr_icon_path = resources_path + "images/gpu_screen_recorder_logo.png";
|
||||
@@ -278,11 +244,6 @@ int main(int argc, char **argv) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(is_flatpak())
|
||||
install_flatpak_systemd_service();
|
||||
else
|
||||
remove_flatpak_systemd_service();
|
||||
|
||||
// Stop nvidia driver from buffering frames
|
||||
setenv("__GL_MaxFramesAllowed", "1", true);
|
||||
// If this is set to 1 then cuGraphicsGLRegisterImage will fail for egl context with error: invalid OpenGL or DirectX context,
|
||||
@@ -346,6 +307,31 @@ int main(int argc, char **argv) {
|
||||
|
||||
rpc_add_commands(rpc.get(), overlay.get());
|
||||
|
||||
// Evacuating from lennart's botnet to XDG (a.k.a. 'the spec that nobody actually follows').
|
||||
// TODO: Remove all this garbage related to systemd in 1-2 months and remove the systemd service file as well.
|
||||
// This garbage shit is needed because the systemd user daemon isn't always available at xdg autostart o algo
|
||||
const bool systemd_service_ready = gsr::wait_until_systemd_user_service_available();
|
||||
constexpr const char *deprecated_systemd_service_name = "gpu-screen-recorder-ui.service";
|
||||
if(systemd_service_ready && gsr::is_systemd_service_enabled(deprecated_systemd_service_name)) {
|
||||
const int autostart_result = gsr::set_xdg_autostart(true);
|
||||
if(autostart_result == 67) {
|
||||
const bool is_flatpak = getenv("FLATPAK_ID") != nullptr;
|
||||
const char *startup_command = is_flatpak ? "flatpak run com.dec05eba.gpu_screen_recorder gsr-ui" : "gsr-ui launch-daemon";
|
||||
overlay->show_notification(
|
||||
TRF("GPU Screen Recorder UI autostart via systemd is deprecated.\nTo migrate: install and configure 'dex' (recommended),\nor manually add '%s' to your desktop autostart entries.", startup_command).c_str(),
|
||||
10.0, mgl::Color(255, 255, 255), mgl::Color(255, 0, 0),
|
||||
gsr::NotificationType::NOTICE, nullptr, gsr::NotificationLevel::ERROR);
|
||||
} else {
|
||||
gsr::disable_systemd_service(deprecated_systemd_service_name);
|
||||
overlay->show_notification(
|
||||
TR("GPU Screen Recorder UI startup has been switched from systemd service to XDG autostart."),
|
||||
8.0, mgl::Color(255, 255, 255), gsr::get_color_theme().tint_color,
|
||||
gsr::NotificationType::NOTICE, nullptr, gsr::NotificationLevel::INFO);
|
||||
}
|
||||
}
|
||||
|
||||
gsr::replace_xdg_autostart_with_current_gsr_type();
|
||||
|
||||
// TODO: Add hotkeys in Overlay when using x11 global hotkeys. The hotkeys in Overlay should duplicate each key that is used for x11 global hotkeys.
|
||||
|
||||
std::string exit_reason;
|
||||
@@ -371,6 +357,7 @@ int main(int argc, char **argv) {
|
||||
mgl_deinit();
|
||||
|
||||
if(exit_reason == "back-to-old-ui") {
|
||||
gsr::set_xdg_autostart(false);
|
||||
const char *args[] = { "gpu-screen-recorder-gtk", "use-old-ui", nullptr };
|
||||
execvp(args[0], (char* const*)args);
|
||||
return 0;
|
||||
|
||||
@@ -98,7 +98,9 @@ Failed to launch gpu-screen-recorder to take a screenshot=Fallo al lanzar gpu-sc
|
||||
# System startup notifications
|
||||
Failed to add GPU Screen Recorder to system startup=Fallo al añadir GPU Screen Recorder al inicio del sistema
|
||||
Failed to remove GPU Screen Recorder from system startup=Fallo al eliminar GPU Screen Recorder del inicio del sistema
|
||||
Failed to add GPU Screen Recorder to system startup.\nThis option only works on systems that use systemd.\nYou have to manually add "gsr-ui" to system startup on systems that uses another init system.=Fallo al añadir GPU Screen Recorder al inicio del sistema.\nEsta opción solo funciona en sistemas que usan systemd.\nTienes que añadir "gsr-ui" manualmente al inicio del sistema en aquellos que usen otro sistema de arranque.
|
||||
To enable autorun: install and configure 'dex' (recommended), or manually add '%s' to your desktop autostart entries.=Para activar el inicio automático: instala y configura 'dex' (recomendado) o añade manualmente '%s' a las entradas de inicio automático del escritorio.
|
||||
GPU Screen Recorder UI startup has been switched from systemd service to XDG autostart.=El inicio de GPU Screen Recorder UI ha cambiado del servicio systemd al inicio automático XDG.
|
||||
GPU Screen Recorder UI autostart via systemd is deprecated.\nTo migrate: install and configure 'dex' (recommended),\nor manually add '%s' to your desktop autostart entries.=El inicio automático de GPU Screen Recorder UI mediante systemd está obsoleto.\nPara migrar: instala y configura 'dex' (recomendado)\no añade manualmente '%s' a las entradas de inicio automático del escritorio.
|
||||
|
||||
# Wayland warning
|
||||
Wayland doesn't support GPU Screen Recorder UI properly,\nthings may not work as expected. Use X11 if you experience issues.=Wayland no ofrece soporte adecuado para GPU Screen Recorder UI;\nes posible que el funcionamiento no sea el esperado. Si experimentas problemas, utiliza X11.
|
||||
|
||||
@@ -101,7 +101,9 @@ Failed to launch gpu-screen-recorder to take a screenshot=Échec du lancement de
|
||||
# System startup notifications
|
||||
Failed to add GPU Screen Recorder to system startup=Échec de l’ajout de GPU Screen Recorder au démarrage du système
|
||||
Failed to remove GPU Screen Recorder from system startup=Échec de la suppression de GPU Screen Recorder du démarrage du système
|
||||
Failed to add GPU Screen Recorder to system startup.\nThis option only works on systems that use systemd.\nYou have to manually add "gsr-ui" to system startup on systems that uses another init system.=Échec de l’ajout de GPU Screen Recorder au démarrage.\nCette option fonctionne uniquement sur les systèmes utilisant systemd.\nVous devez ajouter manuellement "gsr-ui" au démarrage sur les autres systèmes.
|
||||
To enable autorun: install and configure 'dex' (recommended), or manually add '%s' to your desktop autostart entries.=Pour activer le démarrage automatique : installez et configurez 'dex' (recommandé) ou ajoutez manuellement '%s' aux entrées de démarrage automatique du bureau.
|
||||
GPU Screen Recorder UI startup has been switched from systemd service to XDG autostart.=Le démarrage de GPU Screen Recorder UI a été basculé du service systemd vers le démarrage automatique XDG.
|
||||
GPU Screen Recorder UI autostart via systemd is deprecated.\nTo migrate: install and configure 'dex' (recommended),\nor manually add '%s' to your desktop autostart entries.=Le démarrage automatique de GPU Screen Recorder UI via systemd est obsolète.\nPour migrer : installez et configurez 'dex' (recommandé)\nou ajoutez manuellement '%s' aux entrées de démarrage automatique du bureau.
|
||||
|
||||
# Wayland warning
|
||||
Wayland doesn't support GPU Screen Recorder UI properly,\nthings may not work as expected. Use X11 if you experience issues.=Wayland ne supporte pas correctement l’UI de GPU Screen Recorder,\ncertains éléments peuvent mal fonctionner. Utilisez X11 si vous rencontrez des problèmes.
|
||||
|
||||
419
translations/hu.txt
Normal file
419
translations/hu.txt
Normal file
@@ -0,0 +1,419 @@
|
||||
# GPU Screen Recorder UI - Hungarian translation
|
||||
|
||||
# Important warning: we f'ed up a little bit and used %s for both strings and numbers in some places, such as time durations (they're fixed by the moment).
|
||||
# When translating, be careful to use the %d format specifier for numbers in those places.
|
||||
# Note that all translation strings should be on one line in these translation files. Some translations need to be on multiple lines and the newline character
|
||||
# should be replaced with \n.
|
||||
|
||||
# General UI
|
||||
Record=Felvétel
|
||||
Instant Replay=Azonnali visszajátszás
|
||||
Livestream=Élő közvetítés
|
||||
Settings=Beállítások
|
||||
|
||||
# Status messages
|
||||
Off=Kikapcsolva
|
||||
On=Bekapcsolva
|
||||
Not recording=Nincs felvétel
|
||||
Recording=Felvétel folyamatban
|
||||
Not streaming=Nincs közvetítés
|
||||
Streaming=Közvetítés folyamatban
|
||||
Paused=Szüneteltetve
|
||||
|
||||
# Button labels
|
||||
Start=Indítás
|
||||
Stop=Leállítás
|
||||
Stop and save=Leállítás és mentés
|
||||
Pause=Szüneteltetés
|
||||
Unpause=Folytatás
|
||||
Save=Mentés
|
||||
Save 1 min=1 perc mentése
|
||||
Save 10 min=10 perc mentése
|
||||
Turn on=Bekapcsolás
|
||||
Turn off=Kikapcsolás
|
||||
|
||||
# Notifications - Recording
|
||||
Recording has been paused=A felvétel szüneteltetve lett
|
||||
Recording has been unpaused=A felvétel folytatva lett
|
||||
Started recording %s=Felvétel elindítva: %s
|
||||
Saved a %s recording of %s\nto "%s"=%s hosszú felvétel mentve erről: %s\nide: "%s"
|
||||
Saved a %s recording of %s=%s hosszú felvétel mentve erről: %s
|
||||
Failed to start/save recording=Nem sikerült elindítani vagy menteni a felvételt
|
||||
|
||||
# Notifications - Replay
|
||||
Replay stopped=A visszajátszás leállt
|
||||
Started replaying %s=Visszajátszás elindítva: %s
|
||||
Saving replay, this might take some time=Visszajátszás mentése, ez eltarthat egy ideig
|
||||
Saved a %s replay of %s\nto "%s"=%s hosszúságú visszajátszás mentve erről: %s\nide: "%s"
|
||||
Saved a %s replay of %s=%s hosszúságú visszajátszás mentve erről: %s
|
||||
Replay stopped because of an error=A visszajátszás hiba miatt leállt
|
||||
Replay settings have been modified.\nYou may need to restart replay to apply the changes.=A visszajátszás beállításai módosultak.\nA változtatások alkalmazásához újra kell indítani a visszajátszást
|
||||
|
||||
# Notifications - Streaming
|
||||
Streaming has stopped=A közvetítés leállt
|
||||
Started streaming %s=Közvetítés elindítva: %s
|
||||
Streaming stopped because of an error=A közvetítés hiba miatt leállt
|
||||
Streaming settings have been modified.\nYou may need to restart streaming to apply the changes.=A közvetítés beállításai módosultak.\nA változtatások alkalmazásához újra kell indítani a közvetítést
|
||||
|
||||
# Notifications - Screenshot
|
||||
Saved a screenshot of %s\nto "%s"=Képernyőkép mentve (%s)\nide: "%s"
|
||||
Saved a screenshot of %s=Képernyőkép mentve (%s)
|
||||
Failed to take a screenshot=Nem sikerült a képernyőkép elkészítése
|
||||
|
||||
# Error messages
|
||||
Another instance of GPU Screen Recorder UI is already running.\nPress Alt+Z to open the UI.=A GPU Screen Recorder UI már fut.\nNyomd meg az Alt+Z-t a felület megnyitásához.
|
||||
GPU Screen Recorder is already running in another process.\nPlease close it before using GPU Screen Recorder UI.=A GPU Screen Recorder már fut egy másik folyamatban.\nZárd be, mielőtt használod a felületet.
|
||||
Failed to start replay, capture target "%s" is invalid.\nPlease change capture target in settings=Nem sikerült elindítani a visszajátszást, a rögzítési cél "%s" érvénytelen.\nMódosítsd a rögzítési célt a beállításokban.
|
||||
Failed to start recording, capture target "%s" is invalid.\nPlease change capture target in settings=Nem sikerült elindítani a felvételt, a rögzítési cél "%s" érvénytelen.\nMódosítsd a rögzítési célt a beállításokban.
|
||||
Failed to start streaming, capture target "%s" is invalid.\nPlease change capture target in settings=Nem sikerült elindítani a közvetítést, a rögzítési cél "%s" érvénytelen.\nMódosítsd a rögzítési célt a beállításokban.
|
||||
Failed to take a screenshot, capture target "%s" is invalid.\nPlease change capture target in settings=Nem sikerült a képernyőkép elkészítése, a rögzítési cél "%s" érvénytelen.\nMódosítsd a rögzítési célt a beállításokban.
|
||||
|
||||
Unable to start recording when replay is turned on.\nTurn off replay before starting recording.=Nem lehet felvételt indítani, ha a visszajátszás be van kapcsolva.\nA felvétel előtt kapcsold ki a visszajátszást.
|
||||
Unable to start streaming when replay is turned on.\nTurn off replay before starting streaming.=Nem lehet közvetítést indítani, ha a visszajátszás be van kapcsolva.\nA közvetítés előtt kapcsold ki a visszajátszást.
|
||||
Unable to start streaming when recording.\nStop recording before starting streaming.=Nem lehet közvetítést indítani felvétel közben.\nÁllítsd le a felvételt a közvetítéshez.
|
||||
Unable to start recording when streaming.\nStop streaming before starting recording.=Nem lehet felvételt indítani közvetítés közben.\nÁllítsd le a közvetítést a felvételhez.
|
||||
Unable to start replay when recording.\nStop recording before starting replay.=Nem lehet visszajátszást indítani felvétel közben.\nÁllítsd le a felvételt a visszajátszáshoz.
|
||||
Unable to start replay when streaming.\nStop streaming before starting replay.=Nem lehet visszajátszást indítani közvetítés közben.\nÁllítsd le a közvetítést a visszajátszáshoz.
|
||||
|
||||
Started recording in the replay session=Felvétel indítva visszajátszás közben
|
||||
Started recording in the streaming session=Felvétel indítva közvetítés közben
|
||||
|
||||
Failed to start region capture=Nem sikerült a terület rögzítése
|
||||
Failed to start window capture=Nem sikerült az ablak rögzítése
|
||||
No window selected=Nincs kiválasztott ablak
|
||||
|
||||
Streaming stopped because of an error. Verify if settings are correct=A közvetítés hiba miatt leállt. Ellenőrizd a beállításokat
|
||||
%s. Verify if settings are correct=%s. Ellenőrizd a beállításokat
|
||||
|
||||
# GPU Screen Recorder errors
|
||||
Desktop portal capture failed.\nEither you canceled the desktop portal or your Wayland compositor doesn't support desktop portal capture\nor it's incorrectly setup on your system.=Az asztali portál rögzítése sikertelen.\nLehet, hogy megszakítottad, vagy a Wayland nem támogatja,\nvagy nincs megfelelően beállítva.
|
||||
Monitor capture failed.\nThe monitor you are trying to capture is invalid.\nPlease validate your capture settings.=A monitor rögzítése sikertelen.\nA kiválasztott monitor érvénytelen.\nEllenőrizd a beállításokat.
|
||||
Capture failed. Neither H264, HEVC nor AV1 video codecs are supported\non your system or you are trying to capture at a resolution higher than your\nsystem supports for each video codec.=A rögzítés sikertelen. A H264, HEVC és AV1 kodekek nem támogatottak\nvagy túl nagy felbontást választottál.
|
||||
Capture failed. Your system doesn't support the resolution you are trying to\nrecord at with the video codec you have chosen.\nChange capture resolution or video codec and try again.\nNote: AV1 supports the highest resolution, then HEVC and then H264.=A rögzítés sikertelen. A rendszer nem támogatja a választott felbontást.\nVálts felbontást vagy kodeket.\nMegjegyzés: A nagyobb felbontásokat leginkább az AV1 támogatja, ezt követi a HEVC, majd a H264.
|
||||
Capture failed. Your system doesn't support the video codec you have chosen.\nChange video codec and try again.=A rögzítés sikertelen. A választott kodek nem támogatott.\nVálassz másikat.
|
||||
Stopped capture because the user canceled the desktop portal=A rögzítés leállt, mert a felhasználó megszakította a portált
|
||||
Failed to take a screenshot. Verify if settings are correct=Nem sikerült a képernyőkép elkészítése. Ellenőrizd a beállításokat
|
||||
|
||||
# Launch errors
|
||||
Failed to launch gpu-screen-recorder to start replay=Nem sikerült elindítani a gpu-screen-recorder-t a visszajátszáshoz
|
||||
Failed to launch gpu-screen-recorder to start recording=Nem sikerült elindítani a gpu-screen-recorder-t a felvételhez
|
||||
Failed to launch gpu-screen-recorder to start streaming=Nem sikerült elindítani a gpu-screen-recorder-t a közvetítéshez
|
||||
Failed to launch gpu-screen-recorder to take a screenshot=Nem sikerült elindítani a gpu-screen-recorder-t képernyőképhez
|
||||
|
||||
# System startup notifications
|
||||
Failed to add GPU Screen Recorder to system startup=Nem sikerült hozzáadni a GPU Screen Recordert az automatikus indításhoz
|
||||
Failed to remove GPU Screen Recorder from system startup=Nem sikerült eltávolítani a GPU Screen Recorder-t az automatikus indításból
|
||||
To enable autorun: install and configure 'dex' (recommended), or manually add '%s' to your desktop autostart entries.=Automatikus indításhoz: telepítsd és konfiguráld a 'dex'-et (ajánlott), vagy add hozzá manuálisan: '%s'
|
||||
GPU Screen Recorder UI startup has been switched from systemd service to XDG autostart.=Az automatikus indítás systemd-ről XDG autostartra váltott át
|
||||
GPU Screen Recorder UI autostart via systemd is deprecated.\nTo migrate: install and configure 'dex' (recommended),\nor manually add '%s' to your desktop autostart entries.=A GPU Screen Recorder systemd-alapú automatikus indítása elavult.\nAz átköltöztetéshez telepítsd és konfiguráld a 'dex'-et, vagy add hozzá manuálisan: '%s'
|
||||
|
||||
# Wayland warning
|
||||
Wayland doesn't support GPU Screen Recorder UI properly,\nthings may not work as expected. Use X11 if you experience issues.=A Wayland nem támogatja megfelelően a GPU Screen Recordert.\nHasználj X11-et, ha problémát észlelsz.
|
||||
|
||||
# Hotkey conflicts
|
||||
Some keyboard remapping software conflicts with GPU Screen Recorder on your system.\nKeyboards have been ungrabbed, applications will now receive the hotkeys you press.=Egyes billentyűzet-átkötő programok ütköznek a GPU Screen Recorderrel.\nA billentyűzet lefoglalása megszűnt, a gyorsbillentyűket mostantól az alkalmazások fogják megkapni.
|
||||
|
||||
# Capture targets
|
||||
this monitor=Jelenlegi monitor
|
||||
window=Ablak
|
||||
window "%s"="%s" ablak
|
||||
window %s=%s ablak
|
||||
focused=Fókuszált ablak
|
||||
region=Kijelölt terület
|
||||
portal=Asztali portál
|
||||
|
||||
# if your language has simple plural forms, you can just use:
|
||||
%d second=%d másodperc
|
||||
%d minute=%d perc
|
||||
%d hour=%d óra
|
||||
%d seconds=%d másodperc
|
||||
%d minutes=%d perc
|
||||
%d hours=%d óra
|
||||
|
||||
|
||||
# Global Settings Page UI elements
|
||||
Accent color=Kiemelőszín
|
||||
Red=Piros
|
||||
Green=Zöld
|
||||
Blue=Kék
|
||||
|
||||
Start program on system startup?=Program indítása rendszerindításkor?
|
||||
Yes=Igen
|
||||
No=Nem
|
||||
|
||||
Enable keyboard hotkeys?=Gyorsbillentyűk engedélyezése?
|
||||
Yes, but only grab virtual devices (supports some input remapping software)=Igen, de csak virtuális eszközök kezelése (egyes bemenet-átirányító szoftvereket támogat)
|
||||
Yes, but don't grab devices (supports all input remapping software)=Igen, eszközök lefoglalása nélkül (minden bemenet-átirányító szoftvert támogat)
|
||||
|
||||
Show/hide UI:=Felület megjelenítése/elrejtése:
|
||||
Turn replay on/off:=Visszajátszás be/ki:
|
||||
Save replay:=Visszajátszás mentése:
|
||||
Save 1 minute replay:=1 perces visszajátszás mentése:
|
||||
Save 10 minute replay:=10 perces visszajátszás mentése:
|
||||
Start/stop recording:=Felvétel indítása/leállítása:
|
||||
Pause/unpause recording:=Felvétel szüneteltetése/folytatása:
|
||||
Start/stop recording a region:=Kijelölt terület felvételének indítása/leállítása:
|
||||
Start/stop streaming:=Közvetítés indítása/leállítása:
|
||||
Take a screenshot:=Képernyőkép készítése:
|
||||
Take a screenshot of a region:=Képernyőkép készítése kijelölt területről:
|
||||
Start/stop recording with desktop portal:=Felvétel indítása/leállítása asztali portállal:
|
||||
Take a screenshot with desktop portal:=Képernyőkép készítése asztali portállal:
|
||||
Start/stop recording a window:=Ablak felvételének indítása/leállítása:
|
||||
Take a screenshot of a window:=Képernyőkép készítése ablakról:
|
||||
|
||||
Clear hotkeys=Gyorsbillentyűk törlése
|
||||
Reset hotkeys to default=Gyorsbillentyűk visszaállítása alapértelmezettre
|
||||
|
||||
Enable controller hotkeys?=Kontrolleres gyorsbillentyűk engedélyezése?
|
||||
Press=Nyomd meg
|
||||
and=és
|
||||
|
||||
Notification speed=Értesítések sebessége
|
||||
Normal=Normál
|
||||
Fast=Gyors
|
||||
|
||||
Language=Nyelv
|
||||
System language=Rendszer nyelve
|
||||
|
||||
Exit program=Kilépés
|
||||
Go back to the old UI=Visszatérés a régi felülethez
|
||||
|
||||
If you would like to donate you can do so by donating at https://buymeacoffee.com/dec05eba:=Ha szeretnél támogatni, megteheted itt: https://buymeacoffee.com/dec05eba
|
||||
Donate=Adományozás
|
||||
All donations go toward developing software (including GPU Screen Recorder)\nand buying hardware to test the software.=Minden adomány a szoftverek fejlesztésére (beleértve a GPU Screen Recordert)\nés a teszteléshez szükséges hardverek beszerzésére fordítódik.
|
||||
|
||||
# Subsection headers
|
||||
Global=Általános
|
||||
Back=Vissza
|
||||
|
||||
Appearance=Megjelenés
|
||||
Startup=Indítás
|
||||
Keyboard hotkeys=Gyorsbillentyűk
|
||||
Controller hotkeys=Kontrolleres gyorsbillentyűk
|
||||
Application options=Alkalmazás beállításai
|
||||
Application info=Alkalmazásinformációk
|
||||
Donate=Adományozás
|
||||
|
||||
# Version info strings
|
||||
GSR version: %s=GSR verzió: %s
|
||||
GSR-UI version: %s=GSR-UI verzió: %s
|
||||
Flatpak version: %s=Flatpak verzió: %s
|
||||
GPU vendor: %s=GPU-gyártó: %s
|
||||
|
||||
# Hotkey configuration dialog
|
||||
Press a key combination to use for the hotkey: "%s"=Nyomj meg egy billentyűkombinációt a következőhöz: „%s”
|
||||
Alpha-numerical keys can't be used alone in hotkeys, they have to be used one or more of these keys: Alt, Ctrl, Shift and Super.\nPress Esc to cancel or Backspace to remove the hotkey.=Az alfanumerikus billentyűk önmagukban nem használhatók gyorsbillentyűként, csak az alábbiakkal együtt: Alt, Ctrl, Shift vagy Super.\nNyomd meg az Esc-et a megszakításhoz vagy a Backspace-t a törléshez.
|
||||
|
||||
# Hotkey action names (without colons - these appear in the dialog)
|
||||
Show/hide UI=Felület megjelenítése/elrejtése
|
||||
Turn replay on/off=Visszajátszás be/ki
|
||||
Save replay=Visszajátszás mentése
|
||||
Save 1 minute replay=1 perces visszajátszás mentése
|
||||
Save 10 minute replay=10 perces visszajátszás mentése
|
||||
Start/stop recording=Felvétel indítása/leállítása
|
||||
Pause/unpause recording=Felvétel szüneteltetése/folytatása
|
||||
Start/stop recording a region=Kijelölt terület felvételének indítása/leállítása
|
||||
Start/stop recording a window=Ablak felvételének indítása/leállítása
|
||||
Start/stop recording with desktop portal=Felvétel indítása/leállítása asztali portállal
|
||||
Start/stop streaming=Közvetítés indítása/leállítása
|
||||
Take a screenshot=Képernyőkép készítése
|
||||
Take a screenshot of a region=Képernyőkép készítése kijelölt területről
|
||||
Take a screenshot of a window=Képernyőkép készítése ablakról
|
||||
Take a screenshot with desktop portal=Képernyőkép készítése asztali portállal
|
||||
|
||||
# Controller hotkey descriptions
|
||||
to show/hide the UI=a felület megjelenítéséhez/elrejtéséhez
|
||||
to take a screenshot=képernyőkép készítéséhez
|
||||
to save a replay=visszajátszás mentéséhez
|
||||
to start/stop recording=felvétel indításához/leállításához
|
||||
to turn replay on/off=visszajátszás be-/kikapcsolásához
|
||||
to save a 1 minute replay=1 perces visszajátszás mentéséhez
|
||||
to save a 10 minute replay=10 perces visszajátszás mentéséhez
|
||||
|
||||
# Error message for duplicate hotkey
|
||||
The hotkey %s is already used for something else=A(z) %s gyorsbillentyű már használatban van más művelethez
|
||||
|
||||
|
||||
# Screenshot settings page
|
||||
Screenshot=Képernyőkép
|
||||
Capture=Rögzítés
|
||||
Image=Kép
|
||||
File info=Fájlinformációk
|
||||
General=Általános
|
||||
Screenshot indicator=Képernyőkép-jelző
|
||||
Script=Parancsfájl
|
||||
File=Fájl
|
||||
|
||||
Back=Vissza
|
||||
Save=Mentés
|
||||
Cancel=Mégse
|
||||
|
||||
Capture source:=Rögzítési forrás:
|
||||
Window=Ablak
|
||||
Region=Kijelölt terület
|
||||
Desktop portal=Asztali portál
|
||||
Monitor %s (%dx%d)=%s monitor (%dx%d)
|
||||
Screen=Képernyő
|
||||
|
||||
Image resolution limit:=Képfelbontás korlát:
|
||||
Change image resolution=Képfelbontás módosítása
|
||||
Restore portal session=Portál munkamenet visszaállítása
|
||||
|
||||
Image quality:=Képminőség:
|
||||
Medium=Közepes
|
||||
High=Magas
|
||||
Very high (Recommended)=Nagyon magas (ajánlott)
|
||||
Ultra=Ultra
|
||||
|
||||
Record cursor=Egérmutató felvétele
|
||||
|
||||
Directory to save screenshots:=Képernyőképek mentési mappája:
|
||||
Image format:=Képformátum:
|
||||
|
||||
Save screenshot in a folder based on the games name=Képernyőkép mentése a játék neve szerinti mappába
|
||||
|
||||
Save screenshot to clipboard=Képernyőkép mentése vágólapra
|
||||
Save screenshot to clipboard (Not supported properly by Wayland)=Képernyőkép mentése vágólapra (Wayland alatt nem teljesen támogatott)
|
||||
Save screenshot to disk=Képernyőkép mentése lemezre
|
||||
|
||||
Show screenshot notifications=Képernyőkép értesítések megjelenítése
|
||||
Blink scroll lock led when taking a screenshot=Scroll Lock LED villogtatása képernyőkép készítésekor
|
||||
|
||||
Command to open the screenshot with:=Parancs a képernyőkép megnyitásához:
|
||||
|
||||
|
||||
# Settings Page UI elements - дополнения
|
||||
|
||||
# View modes
|
||||
Simple view=Egyszerű nézet
|
||||
Advanced view=Speciális nézet
|
||||
|
||||
# Capture settings
|
||||
Follow focused window=Fókuszált ablak követése
|
||||
Focused monitor=Fókuszált monitor
|
||||
|
||||
Area size:=Terület mérete:
|
||||
Video resolution limit:=Videófelbontás korlát:
|
||||
Change video resolution=Videófelbontás módosítása
|
||||
Restore portal session=Portál munkamenet visszaállítása
|
||||
|
||||
# Webcam settings
|
||||
Webcam=Webkamera
|
||||
Webcam source:=Webkamera forrása:
|
||||
None=Nincs
|
||||
Video format:=Videóformátum:
|
||||
Auto (recommended)=Automatikus (ajánlott)
|
||||
YUYV=YUYV
|
||||
Motion-JPEG=Motion-JPEG
|
||||
Video setup:=Videóbeállítás
|
||||
* Right click in the bottom right corner to resize the webcam=* Jobb kattintás a jobb alsó sarokban a webkamera átméretezéséhez
|
||||
Flip camera horizontally=Kamera tükrözése vízszintesen
|
||||
|
||||
# Audio settings
|
||||
Audio=Hang
|
||||
Audio codec:=Hangkodek:
|
||||
Opus (Recommended)=Opus (ajánlott)
|
||||
AAC=AAC
|
||||
|
||||
Directory to save videos:=Videók mentési mappája:
|
||||
Output device:=Kimeneti eszköz:
|
||||
Input device: =Bemeneti eszköz:
|
||||
# yes, these spaces are intentional
|
||||
Application: =Alkalmazás:
|
||||
Custom...=Egyéni...
|
||||
|
||||
Save video in a folder based on the games name%s=Videó mentése a játék neve szerinti mappába%s
|
||||
(X11 applications only)= (csak X11 alkalmazásoknál)
|
||||
|
||||
Add audio track=Hangsáv hozzáadása
|
||||
Add input device=Bemeneti eszköz hozzáadása
|
||||
Add output device=Kimeneti eszköz hozzáadása
|
||||
Add application audio=Alkalmazáshang hozzáadása
|
||||
Record audio from all applications except the selected ones=Hang rögzítése minden alkalmazásból a kiválasztottak kivételével
|
||||
Recording output devices and application audio may record all output audio, which is likely\nnot what you want to do. Remove the output devices.=A kimeneti eszközök és az alkalmazáshang rögzítése minden kimeneti hangot felvehet, ami valószínűleg\nnem kívánt. Távolítsd el a kimeneti eszközöket.
|
||||
|
||||
Video=Videó
|
||||
|
||||
# Video codec settings
|
||||
Video codec:=Videókodek:
|
||||
H264=H264
|
||||
HEVC=HEVC
|
||||
HEVC (10 bit, reduces banding)=HEVC (10 bit, csökkenti a sávosodást)
|
||||
HEVC (HDR)=HEVC (HDR)
|
||||
AV1=AV1
|
||||
AV1 (10 bit, reduces banding)=AV1 (10 bit, csökkenti a sávosodást)
|
||||
AV1 (HDR)=AV1 (HDR)
|
||||
VP8=VP8
|
||||
VP9=VP9
|
||||
H264 Software Encoder (Slow, not recommended)=H264 szoftveres kódoló (lassú, nem ajánlott)
|
||||
|
||||
# Video quality and bitrate
|
||||
Video quality:=Videóminőség:
|
||||
Very high=Nagyon magas
|
||||
Video bitrate (Kbps):=Videó bitráta (Kbps):
|
||||
Constant bitrate=Állandó bitráta
|
||||
Constant bitrate (Recommended)=Állandó bitráta (ajánlott)
|
||||
|
||||
# Frame rate settings
|
||||
Frame rate:=Képkockasebesség:
|
||||
Frame rate mode:=Képkockasebesség mód:
|
||||
Auto (Recommended)=Automatikus (ajánlott)
|
||||
Constant=Állandó
|
||||
Variable=Változó
|
||||
Sync to content=Tartalomhoz igazítás
|
||||
Sync to content (Only X11 or desktop portal capture)=Tartalomhoz igazítás (csak X11 vagy asztali portál rögzítésnél)
|
||||
|
||||
# Color range
|
||||
Color range:=Színtartomány:
|
||||
Limited=Korlátozott
|
||||
Full=Teljes
|
||||
|
||||
# Container format
|
||||
Container:=Konténer:
|
||||
|
||||
# Recording settings
|
||||
Record in low-power mode=Felvétel energiatakarékos módban
|
||||
Record cursor=Egérmutató felvétele
|
||||
|
||||
Do not force the GPU to go into high performance mode when recording.\nMay affect recording performance, especially when playing a video at the same time.\nIf enabled then it's recommended to use sync to content frame rate mode to reduce power usage when idle.=Ne kényszerítse a GPU-t nagy teljesítményű módba felvétel közben.\nEz befolyásolhatja a felvétel teljesítményét, különösen videólejátszás közben.\nHa engedélyezve van, ajánlott a tartalomhoz igazított képkockasebesség mód használata az energiafogyasztás csökkentésére üresjáratban.
|
||||
|
||||
Show %s notifications=%s értesítések megjelenítése
|
||||
Show %s status with scroll lock LED=%s állapot jelzése Scroll Lock LED-del
|
||||
Recording indicator=Felvétel-jelző
|
||||
recording=felvétel
|
||||
|
||||
Simple=Egyszerű
|
||||
Audio track #%d=Hangsáv #%d
|
||||
Output device=Kimeneti eszköz
|
||||
Input device: =Bemeneti eszköz:
|
||||
Estimated video file size per minute (excluding audio): %.2fMB=Várható videófájl-méret percenként (hang nélkül): %.2fMB
|
||||
|
||||
# Replay settings
|
||||
Directory to save replays:=Visszajátszások mentési mappája:
|
||||
Replay indicator=Visszajátszás-jelző
|
||||
replay=visszajátszás
|
||||
Turn on replay when starting a fullscreen application%s=Visszajátszás bekapcsolása teljes képernyős alkalmazás indításakor%s
|
||||
Autostart=Automatikus indítás
|
||||
in RAM=RAM-ban
|
||||
Replay duration in seconds:=Visszajátszás hossza másodpercben:
|
||||
Where should temporary replay data be stored?=Hol legyenek tárolva az ideiglenes visszajátszási adatok?
|
||||
RAM=RAM
|
||||
Disk (Not recommended on SSDs)=Lemez (SSD-n nem ajánlott)
|
||||
Turn on replay when this program starts=Visszajátszás bekapcsolása a program indításakor
|
||||
Turn on replay when power supply is connected=Visszajátszás bekapcsolása tápellátás csatlakoztatásakor
|
||||
Don't turn on replay automatically=Ne kapcsolja be automatikusan a visszajátszást
|
||||
Restart replay on save=Visszajátszás újraindítása mentéskor
|
||||
Estimated video max file size %s: %.2fMB.\nChange video bitrate or replay duration to change file size.=Becsült maximális videófájl-méret %s: %.2fMB.\nA fájlméret módosításához változtasd meg a bitrátát vagy a visszajátszás hosszát.
|
||||
|
||||
# Streaming settings
|
||||
Stream service:=Közvetítési szolgáltatás:
|
||||
Twitch=Twitch
|
||||
YouTube=YouTube
|
||||
Kick=Kick
|
||||
Rumble=Rumble
|
||||
Custom=Egyéni
|
||||
Stream URL:=Közvetítési URL:
|
||||
Stream key:=Közvetítési kulcs:
|
||||
Streaming info=Közvetítési információk
|
||||
Streaming indicator=Közvetítés-jelző
|
||||
streaming=közvetítés
|
||||
@@ -98,7 +98,9 @@ Failed to launch gpu-screen-recorder to take a screenshot=Не удалось з
|
||||
# System startup notifications
|
||||
Failed to add GPU Screen Recorder to system startup=Не удалось добавить GPU Screen Recorder в автозагрузку системы
|
||||
Failed to remove GPU Screen Recorder from system startup=Не удалось удалить GPU Screen Recorder из автозагрузки системы
|
||||
Failed to add GPU Screen Recorder to system startup.\nThis option only works on systems that use systemd.\nYou have to manually add "gsr-ui" to system startup on systems that uses another init system.=Не удалось добавить GPU Screen Recorder в автозагрузку системы.\nЭта опция работает только на системах, использующих systemd.\nВы должны вручную добавить "gsr-ui" в автозагрузку на системах с другой init-системой.
|
||||
To enable autorun: install and configure 'dex' (recommended), or manually add '%s' to your desktop autostart entries.=Для включения автозапуска: установите и настройте 'dex' (рекомендуется) или вручную добавьте '%s' в записи автозапуска рабочего стола.
|
||||
GPU Screen Recorder UI startup has been switched from systemd service to XDG autostart.=Автозапуск GPU Screen Recorder UI переключён с сервиса systemd на XDG-автозапуск.
|
||||
GPU Screen Recorder UI autostart via systemd is deprecated.\nTo migrate: install and configure 'dex' (recommended),\nor manually add '%s' to your desktop autostart entries.=Автозапуск GPU Screen Recorder UI через systemd устарел.\nДля миграции: установите и настройте 'dex' (рекомендуется)\nили вручную добавьте '%s' в записи автозапуска рабочего стола.
|
||||
|
||||
# Wayland warning
|
||||
Wayland doesn't support GPU Screen Recorder UI properly,\nthings may not work as expected. Use X11 if you experience issues.=Wayland не поддерживает интерфейс GPU Screen Recorder должным образом,\nнекоторые функции могут не работать. Используйте X11, если возникнут проблемы.
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
# Important warning: we f'ed up a little bit and used %s for both strings and numbers in some places, such as time durations (they're fixed by the moment).
|
||||
# When translating, be careful to use the %d format specifier for numbers in those places.
|
||||
# Note that all translation strings should be on one line in these translation files. Some translations need to be on multiple lines and the newline character
|
||||
# should be replaced with \n.
|
||||
|
||||
# General UI
|
||||
Record=
|
||||
@@ -101,7 +103,9 @@ Failed to launch gpu-screen-recorder to take a screenshot=
|
||||
# System startup notifications
|
||||
Failed to add GPU Screen Recorder to system startup=
|
||||
Failed to remove GPU Screen Recorder from system startup=
|
||||
Failed to add GPU Screen Recorder to system startup.\nThis option only works on systems that use systemd.\nYou have to manually add "gsr-ui" to system startup on systems that uses another init system.=
|
||||
To enable autorun: install and configure 'dex' (recommended), or manually add '%s' to your desktop autostart entries.=
|
||||
GPU Screen Recorder UI startup has been switched from systemd service to XDG autostart.=
|
||||
GPU Screen Recorder UI autostart via systemd is deprecated.\nTo migrate: install and configure 'dex' (recommended),\nor manually add '%s' to your desktop autostart entries.=
|
||||
|
||||
# Wayland warning
|
||||
Wayland doesn't support GPU Screen Recorder UI properly,\nthings may not work as expected. Use X11 if you experience issues.=
|
||||
|
||||
@@ -98,7 +98,9 @@ Failed to launch gpu-screen-recorder to take a screenshot=Не вдалося з
|
||||
# System startup notifications
|
||||
Failed to add GPU Screen Recorder to system startup=Не вдалося додати GPU Screen Recorder до автозавантаження системи
|
||||
Failed to remove GPU Screen Recorder from system startup=Не вдалося видалити GPU Screen Recorder з автозавантаження системи
|
||||
Failed to add GPU Screen Recorder to system startup.\nThis option only works on systems that use systemd.\nYou have to manually add "gsr-ui" to system startup on systems that uses another init system.=Не вдалося додати GPU Screen Recorder до автозавантаження системи.\nЦя опція працює лише на системах, що використовують systemd.\nВи маєте вручну додати "gsr-ui" до автозавантаження на системах з іншою init-системою.
|
||||
To enable autorun: install and configure 'dex' (recommended), or manually add '%s' to your desktop autostart entries.=Для увімкнення автозапуску: встановіть та налаштуйте 'dex' (рекомендовано) або вручну додайте '%s' до записів автозапуску робочого столу.
|
||||
GPU Screen Recorder UI startup has been switched from systemd service to XDG autostart.=Автозапуск GPU Screen Recorder UI переключено зі служби systemd на XDG-автозапуск.
|
||||
GPU Screen Recorder UI autostart via systemd is deprecated.\nTo migrate: install and configure 'dex' (recommended),\nor manually add '%s' to your desktop autostart entries.=Автозапуск GPU Screen Recorder UI через systemd застарів.\nДля міграції: встановіть та налаштуйте 'dex' (рекомендовано)\nабо вручну додайте '%s' до записів автозапуску робочого столу.
|
||||
|
||||
# Wayland warning
|
||||
Wayland doesn't support GPU Screen Recorder UI properly,\nthings may not work as expected. Use X11 if you experience issues.=Wayland не підтримує інтерфейс GPU Screen Recorder належним чином,\nдеякі функції можуть не працювати. Використовуйте X11, якщо виникнуть проблеми.
|
||||
|
||||
Reference in New Issue
Block a user