Merge pull request 'develop' (#27) from develop into master

Reviewed-on: YanTheKaller/ubl-settings-video#27
pull/28/head
commit 79da38df5c

4
.gitignore vendored

@ -5,4 +5,6 @@ ubl-settings-video.glade~
compile/ compile/
ubl-settings-video_ru.po~ ubl-settings-video_ru.po~
ubl-settings-video-n.pot ubl-settings-video-n.pot
vgcore.* vgcore.*
build/
source/ubl-settings-video-cm.h

@ -8,13 +8,10 @@ MAKEFILE_PATH := $(dir $(MAKEFILE_FILEPATH))
CMAKE_COMMAND = cmake CMAKE_COMMAND = cmake
CMAKE_SOURCE_DIR = $(MAKEFILE_PATH)source CMAKE_SOURCE_DIR = $(MAKEFILE_PATH)source
CMAKE_BUILD_DIR = $(MAKEFILE_PATH)compile CMAKE_BUILD_DIR = $(MAKEFILE_PATH)compile
#CMAKE_SOURCE_DIR = ./source
#CMAKE_BUILD_DIR = ./compile
FILE_VERSION = VERSION.md FILE_VERSION = VERSION.md
DEPENDS = /bin/cmake DEPENDS = /bin/cmake
PREFIX ?= /usr PREFIX ?= /usr
PKGNAME = $(MAKEFILE_DIR) PKGNAME = $(MAKEFILE_DIR)
#PKGNAME = ubl-settings-manager
default_target: all default_target: all
@ -24,7 +21,7 @@ all: init build
init: init:
@echo "Initialize ..."; \ @echo "Initialize ..."; \
sed -r "s/(version_application = ).*/\1\"$$(grep 'VERSION' ${FILE_VERSION} | cut -d" " -f2)\";/" -i source/ubl-settings-video.h; \ sed -r "s/(version_application).*/\1 = \"$$(grep 'VERSION' ${FILE_VERSION} | cut -d" " -f2)\";/" -i source/ubl-settings-video.h; \
echo "-- Build path: ${CMAKE_BUILD_DIR}" echo "-- Build path: ${CMAKE_BUILD_DIR}"
depend: depend:
@ -35,8 +32,8 @@ depend:
exit 1; \ exit 1; \
fi; \ fi; \
done; \ done; \
$(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B${CMAKE_BUILD_DIR} --check-build-system CMakeFiles/Makefile.cmake 1 || exit 1; \
echo "Check depends: OK" echo "Check depends: OK"
# $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
debug: debug:
@echo "Debug ..." @echo "Debug ..."
@ -84,10 +81,16 @@ uninstall:
done; \ done; \
done done
@$(RM) "${DESTDIR}${PREFIX}/bin/${PKGNAME}" @$(RM) "${DESTDIR}${PREFIX}/bin/${PKGNAME}"
@$(RM) "${DESTDIR}/etc/xdg/${PKGNAME}/${PKGNAME}.conf"
@$(RM) "${DESTDIR}${PREFIX}/share/applications/${PKGNAME}.desktop" @$(RM) "${DESTDIR}${PREFIX}/share/applications/${PKGNAME}.desktop"
@$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/com.ublinux.${PKGNAME}.svg" @$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/com.ublinux.${PKGNAME}.svg"
@$(RM) -rd "${DESTDIR}${PREFIX}/share/${PKGNAME}/images" @$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/devices/com.ublinux.${PKGNAME}.display.svg"
@$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/devices/com.ublinux.${PKGNAME}.video-card.svg"
@$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/emblems/com.ublinux.${PKGNAME}.nvidia-logo.svg"
@$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/emblems/com.ublinux.${PKGNAME}.intel-logo.svg"
@$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/emblems/com.ublinux.${PKGNAME}.amd-logo.svg"
@$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/status/com.ublinux.${PKGNAME}.checked.svg"
@$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/status/com.ublinux.${PKGNAME}.warning.svg"
@$(RM) "${DESTDIR}${PREFIX}/share/polkit-1/actions/com.ublinux.${PKGNAME}.policy"
@$(RM) -rd "${DESTDIR}${PREFIX}/share/${PKGNAME}" @$(RM) -rd "${DESTDIR}${PREFIX}/share/${PKGNAME}"
@if [ -z ${DESTDIR} ]; then \ @if [ -z ${DESTDIR} ]; then \
[ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \ [ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \
@ -98,6 +101,7 @@ uninstall:
install: check uninstall install: check uninstall
@echo "Install ..." @echo "Install ..."
@gcc source/ubl-settings-video-cm.h source/ubl-settings-video.c source/ubl-settings-video.h source/ubl-settings-video-strings.h source/ubl-utils.c source/ubl-utils.h -o ubl-settings-video `pkg-config --cflags --libs gtk+-3.0 vte-2.91 webkit2gtk-4.0 webkit2gtk-web-extension-4.0` -g
@for FILE_PO in $(wildcard *.po); do \ @for FILE_PO in $(wildcard *.po); do \
LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \ LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \
install -dm755 "${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES"; \ install -dm755 "${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES"; \
@ -120,14 +124,13 @@ install: check uninstall
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.checked.svg" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.checked.svg"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.warning.svg" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.warning.svg"
@install -dm755 "${DESTDIR}${PREFIX}/share/polkit-1/actions" @install -dm755 "${DESTDIR}${PREFIX}/share/polkit-1/actions"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/polkit-1/actions/" "com.ublinux.pkexec.${PKGNAME}.exec.policy" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/polkit-1/actions/" "com.ublinux.${PKGNAME}.policy"
@install -Dm655 -t "${DESTDIR}${PREFIX}/bin/" "${CMAKE_BUILD_DIR}/${PKGNAME}" @install -Dm755 -t "${DESTDIR}${PREFIX}/bin/" "${CMAKE_BUILD_DIR}/${PKGNAME}"
@install -dm755 "${DESTDIR}${PREFIX}/share/applications" @install -dm755 "${DESTDIR}${PREFIX}/share/applications"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop"
@install -dm655 "${DESTDIR}${PREFIX}/share/${PKGNAME}"/{ui,css,images} @install -dm755 "${DESTDIR}${PREFIX}/share/${PKGNAME}"/{ui,css,images,csv}
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/ui/" "${PKGNAME}.glade" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/ui/" "${PKGNAME}.glade"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/css/" "${PKGNAME}.css" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/css/" "${PKGNAME}.css"
@install -dm655 "${DESTDIR}${PREFIX}/share/${PKGNAME}/images"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/images/" "${PKGNAME}-banner.png" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/images/" "${PKGNAME}-banner.png"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/csv/" "resolutions.csv" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/csv/" "resolutions.csv"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/csv/" "video-drivers.csv" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/csv/" "video-drivers.csv"

@ -1,5 +1,11 @@
# ubl-settings-video # ubl-settings-video
# Настройки видеоадаптера и дисплея # Настройка видеоадаптера и дисплея
[RU] Утилита для настройки видеоадаптера и дисплея
Utility for configuring the video adapter and display
![alt text](screenshot/screenshot.png)
# Build # Build
In order to build ubl-settings-video you will need: In order to build ubl-settings-video you will need:
@ -7,23 +13,42 @@ In order to build ubl-settings-video you will need:
- C compiler - C compiler
- GTK+ 3 & dependencies - GTK+ 3 & dependencies
- vte-2.91 - vte-2.91
- webkit2gtk
Options for compiling:
`--nowebkit2gtk` - Compiling without webkit2gtk
Once you have all the necessary dependencies, you can use: Once you have all the necessary dependencies, you can use:
```sh ```bash
$ make $ make
``` ```
# Installation # Installation
After a successful build, just use: After a successful build, just use:
```sh ```bash
$ sudo make install clean $ sudo make install clean
``` ```
# Uninstallation # Uninstallation
After a successful build, just use: After a successful build, just use:
```sh ```bash
$ sudo make uninstall $ sudo make uninstall
``` ```
![alt text](desc/ubl-settings-video-screenshot.png) # Usage
```bash
$ ubl-settings-video --help
Configuring the video adapter and display for UBLinux
Usage: ubl-settings-video [OPTIONS...]
Options:
-h, --help Show this help
-V, --version Show package version
--lock-save Lock saving local and global configuration
--lock-save-local Lock save global configuration
--lock-save-global Lock load global configuration
--lock-load-global Lock load global configuration
$ ubl-settings-video --version
ubl-settings-video version: x.xx
```

@ -1 +1 @@
VERSION 1.0 VERSION 2.1

@ -7,11 +7,11 @@
<vendor>UBLinux</vendor> <vendor>UBLinux</vendor>
<vendor_url>https://ublinux.ru</vendor_url> <vendor_url>https://ublinux.ru</vendor_url>
<action id="org.freedesktop.policykit.ubl-settings-video.pkexec.policy.run"> <action id="com.ublinux.ubl-settings-video.run">
<description>Run "ubl-settings-video" as root</description> <description>Run ubl-settings-video as root</description>
<description xml:lang="ru">Запуск утилиты "ubl-settings-video" с правами root</description> <description xml:lang="ru">Запуск утилиты ubl-settings-video с правами root</description>
<message>Authentication is required to run "ubl-settings-video"</message> <message>Authentication is required to run ubl-settings-video</message>
<message xml:lang="ru">Требуется авторизация для запуска утилиты "ubl-settings-video" с правами root</message> <message xml:lang="ru">Требуется авторизация для запуска утилиты ubl-settings-video с правами root</message>
<defaults> <defaults>
<allow_any>auth_admin</allow_any> <allow_any>auth_admin</allow_any>
<allow_inactive>auth_admin</allow_inactive> <allow_inactive>auth_admin</allow_inactive>

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 78 KiB

@ -1,17 +1,21 @@
cmake_minimum_required(VERSION 3.7) cmake_minimum_required(VERSION 3.23)
project(ubl-settings-video) project(ubl-settings-video)
find_package(PkgConfig REQUIRED) find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK REQUIRED gtk+-3.0) pkg_check_modules(GTK3 REQUIRED gtk+-3.0)
include_directories(${GTK_INCLUDE_DIRS}) include_directories(${GTK3_INCLUDE_DIRS})
link_directories(${GTK_LIBRARY_DIRS}) link_directories(${GTK3_LIBRARY_DIRS})
add_definitions(${GTK_CFLAGS_OTHER}) add_definitions(${GTK3_CFLAGS_OTHER})
option(WEBKIT_FOUND "No" OFF) pkg_check_modules(VTE291 REQUIRED vte-2.91)
include_directories(${VTE291_INCLUDE_DIRS})
link_directories(${VTE291_LIBRARY_DIRS})
add_definitions(${VTE291_CFLAGS_OTHER})
find_library(WEBKIT_LIBRARIES_FOUND webkit2gtk-4.0 webkit2gtk-web-extension-4.0) find_library(WEBKIT_LIBRARIES_FOUND webkit2gtk-4.0 webkit2gtk-web-extension-4.0)
option(WEBKIT_FOUND "No" OFF)
if(WEBKIT_LIBRARIES_FOUND) if(WEBKIT_LIBRARIES_FOUND)
option(WEBKIT_FOUND "Yes" ON) option(WEBKIT_FOUND "Yes" ON)
PKG_CHECK_MODULES(WEBKIT REQUIRED webkit2gtk-4.0 webkit2gtk-web-extension-4.0) PKG_CHECK_MODULES(WEBKIT REQUIRED webkit2gtk-4.0 webkit2gtk-web-extension-4.0)
@ -35,15 +39,12 @@ set(SOURCE_FILES
ubl-settings-video-cm.h) ubl-settings-video-cm.h)
set(LIBRARIES set(LIBRARIES
${GTK_LIBRARIES} ${GTK3_LIBRARIES}
pthread ${WEBKIT_LIBRARIES}
vte-2.91) ${VTE291_LIBRARIES}
pthread)
add_executable(ubl-settings-video ${SOURCE_FILES}) add_executable(${PROJECT_NAME} ${SOURCE_FILES})
target_link_libraries(ubl-settings-video PUBLIC ${WEBKIT_LIBRARIES} ${LIBRARIES}) target_link_libraries(${PROJECT_NAME} PUBLIC ${LIBRARIES})
target_include_directories(ubl-settings-video PUBLIC target_include_directories(${PROJECT_NAME} PUBLIC ${PROJECT_BINARY_DIR})
"${PROJECT_BINARY_DIR}" install(TARGETS ${PROJECT_NAME} DESTINATION bin)
${WEBKIT_INCLUDE_DIRS}
)
install(TARGETS ubl-settings-video DESTINATION bin)

@ -42,6 +42,7 @@
#define SAVE_LABEL _("Save") #define SAVE_LABEL _("Save")
#define ON_LABEL _("On") #define ON_LABEL _("On")
#define OFF_LABEL _("Off") #define OFF_LABEL _("Off")
#define SWITCHED_OFF_LABEL _("Switched off")
#define FBDEV_LABEL _("fbdev") #define FBDEV_LABEL _("fbdev")
#define AUTO_CHOOSE_DRIVERS_LABEL _("Automatically choose and use driver") #define AUTO_CHOOSE_DRIVERS_LABEL _("Automatically choose and use driver")
#define LAUNCH_OPTIRUN_LABEL _("Launch programms through optirun (nVidia): ") #define LAUNCH_OPTIRUN_LABEL _("Launch programms through optirun (nVidia): ")
@ -55,6 +56,7 @@
#define DOCUMENTATION_LABEL _("Documentation") #define DOCUMENTATION_LABEL _("Documentation")
#define ABOUT_LABEL _("About") #define ABOUT_LABEL _("About")
#define INSTALLED_LABEL _("Installed") #define INSTALLED_LABEL _("Installed")
#define INSTALLED_LOW_LABEL _("installed")
#define PACKAGE_LABEL _("Package") #define PACKAGE_LABEL _("Package")
#define SUPPORTED_LABEL _("Supported Devices") #define SUPPORTED_LABEL _("Supported Devices")
#define CANCEL_LABEL _("Cancel") #define CANCEL_LABEL _("Cancel")
@ -67,9 +69,14 @@
#define PROPRIETARY_OPETAION_DONE_LABEL _("Driver operation is done.") #define PROPRIETARY_OPETAION_DONE_LABEL _("Driver operation is done.")
#define PROPRIETARY_NOTHING_SELECTED_LABEL _("Nothing was selected.") #define PROPRIETARY_NOTHING_SELECTED_LABEL _("Nothing was selected.")
#define PROPRIETARY_USE_LOCAL_LABEL _("Failed to load available drivers for your system... Installed driver list is shown.") #define PROPRIETARY_USE_LOCAL_LABEL _("Failed to load available drivers for your system... Installed driver list is shown.")
#define CONFIGURE_LABEL _("Configure monitor")
#define DELETE_LABEL _("Delete monitor configuration")
#define ADD_LABEL _("Add monitor configuration")
#define SWITCH_LABEL _("Switch monitor")
#define MORE_LABEL _("More")
#define HELP_TITLE_LABEL _("Would you like to read documentation in the Web?") #define HELP_TITLE_LABEL _("Would you like to read documentation in the Web?")
#define HELP_INFO_LABEL _("You will be redirected to documentation website where documentation is translated and supported by community.") #define HELP_INFO_LABEL _("You will be redirected to documentation website where documentation is\ntranslated and supported by community.")
#define HELP_ALWAYS_OPEN_LABEL _("Always redirect to online documentation") #define HELP_ALWAYS_OPEN_LABEL _("Always redirect to online documentation")
#define INFORMATION_LABEL _("Information") #define INFORMATION_LABEL _("Information")
#define DRIVERS_LABEL _("Drivers") #define DRIVERS_LABEL _("Drivers")

@ -2,19 +2,31 @@
config videoconfig; config videoconfig;
void yon_on_plug_added(GtkSocket *self, gpointer user_data) // void on_apps_chooser_open(GtkWidget *self){
{ // int size=0;
} // config_str categories=yon_char_parsed_new(NULL,&size,"GTK",NULL);
// config_str names=yon_char_parsed_new(NULL,&size,"XFCE",NULL);
// config_str icons=yon_char_parsed_new(NULL,&size,"org.xfce.panel.Launcher",NULL);
// yon_app_chooser_show(categories,names,icons,size);
// }
void yon_on_plug_removed(GtkSocket *self, gpointer user_data)
{
}
void on_subwindow_close(GtkWidget *self) void on_subwindow_close(GtkWidget *self)
{ {
gtk_widget_destroy(gtk_widget_get_toplevel(self)); gtk_widget_destroy(gtk_widget_get_toplevel(self));
} }
void on_resized(GtkWidget *window, GdkEventConfigure *event){
float time_passed = (float)clock()/(float)CLOCKS_PER_SEC;
if (time_passed>2){
int width = gdk_window_get_width(gtk_widget_get_window(videoconfig.pack_box));
int children_width = 138*g_list_length(gtk_container_get_children(GTK_CONTAINER((GtkWidget*)videoconfig.monitor_output_layers->first->data)));
if (width<children_width||width>children_width+150)
yon_monitor_view_draw_all();
}
}
void on_monitor_config_save(GtkWidget *self, monitor_edit_window *window){ void on_monitor_config_save(GtkWidget *self, monitor_edit_window *window){
monitorconfig *config = yon_dictionary_get_data(window->config,monitorconfig*); monitorconfig *config = yon_dictionary_get_data(window->config,monitorconfig*);
if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->templateMonitorConfigurationPortCombo))==0){ if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->templateMonitorConfigurationPortCombo))==0){
@ -118,6 +130,7 @@ void yon_terminal_start(widgets_dict *widgets, char *usr_command){
widgets->TerminalInfoLabel = yon_gtk_builder_get_widget(builder, "TerminalInfoLabel"); widgets->TerminalInfoLabel = yon_gtk_builder_get_widget(builder, "TerminalInfoLabel");
GtkWidget *terminal = yon_gtk_builder_get_widget(builder, "TerminalTerminal"); GtkWidget *terminal = yon_gtk_builder_get_widget(builder, "TerminalTerminal");
gtk_button_set_label(GTK_BUTTON(widgets->TerminalMoreButton),MORE_LABEL);
vte_terminal_set_size(VTE_TERMINAL(terminal),10,15); vte_terminal_set_size(VTE_TERMINAL(terminal),10,15);
gtk_widget_set_app_paintable(terminal,1); gtk_widget_set_app_paintable(terminal,1);
gtk_style_context_add_class(gtk_widget_get_style_context(terminal),"opacited"); gtk_style_context_add_class(gtk_widget_get_style_context(terminal),"opacited");
@ -202,6 +215,43 @@ void on_driver_pack_delete(GtkWidget *self,widgets_dict *widgets){
} }
} }
void on_driver_pack_selection_change(GtkWidget *self, widgets_dict *widgets){
GtkTreeIter iter;
char *name;
GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list);
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->proprietaryTreeView));
if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){
int installed=0;
gtk_tree_model_get(gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->proprietaryTreeView)),&iter,0,&installed,-1);
if (installed==1){
gtk_widget_set_sensitive(widgets->proprietaryInstallButton,0);
gtk_widget_set_sensitive(widgets->proprietaryDeleteButton,1);
} else {
gtk_widget_set_sensitive(widgets->proprietaryInstallButton,1);
gtk_widget_set_sensitive(widgets->proprietaryDeleteButton,0);
}
}
}
void on_driver_selection_change(GtkWidget *self, widgets_dict *widgets){
GtkTreeIter iter;
char *name;
GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list);
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->driversTreeView));
if (gtk_tree_selection_get_selected(selection,&list_s,&iter)){
int installed=0;
gtk_tree_model_get(gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->driversTreeView)),&iter,0,&installed,-1);
if (installed==1){
gtk_widget_set_sensitive(widgets->driversInstallButton,0);
gtk_widget_set_sensitive(widgets->driversDeleteButton,1);
} else {
gtk_widget_set_sensitive(widgets->driversInstallButton,1);
gtk_widget_set_sensitive(widgets->driversDeleteButton,0);
}
}
}
void on_driver_delete(GtkWidget *self,widgets_dict *widgets){ void on_driver_delete(GtkWidget *self,widgets_dict *widgets){
yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_DELETING_IN_PROGRESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_DELETING_IN_PROGRESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
GtkTreeIter iter; GtkTreeIter iter;
@ -251,34 +301,43 @@ void on_driver_info(GtkWidget *self,widgets_dict *widgets){
} }
void on_port_chosen_changed(GtkWidget *self, monitor_edit_window *window){ void on_port_chosen_changed(GtkWidget *self, monitor_edit_window *window){
monitorconfig* config = yon_dictionary_get_data(window->config,monitorconfig*); if (yon_dictionary_get_data(window->config,monitorconfig*)->show_usupported==0){
dictionary *dict=NULL; monitorconfig* config = yon_dictionary_get_data(window->config,monitorconfig*);
gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationResolutionCombo)); dictionary *dict=NULL;
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationResolutionCombo),PARAMETER_DEFAULT_LABEL); for (int i=0;i<window->resolutionssize;i++){
gtk_combo_box_set_active(GTK_COMBO_BOX(window->templateMonitorConfigurationResolutionCombo),0); free(window->resolutions);
char *combo_text=yon_char_new((char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationPortCombo))); }
char *resolution = yon_char_divide_search(combo_text," ",-1); window->resolutions=NULL;
if (combo_text) window->resolutionssize=0;
if (strcmp(combo_text,MONITOR_CHOOSE_PORT_LABEL)!=0){ int portid=gtk_combo_box_get_active(GTK_COMBO_BOX(window->templateMonitorConfigurationPortCombo));
dict=yon_dictionary_find(&videoconfig.supported_resolutions,resolution); if (portid!=0)
if (dict){ window->curport=videoconfig.ports[portid-1];
resolution_supported *res = yon_dictionary_get_data(dict,resolution_supported*); gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationResolutionCombo));
int found_size=0; gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationResolutionCombo),PARAMETER_DEFAULT_LABEL);
for (int i=0;i<res->size;i++){ gtk_combo_box_set_active(GTK_COMBO_BOX(window->templateMonitorConfigurationResolutionCombo),0);
char *check_line;
for (int j=0;j<videoconfig.resolutionssize;j++){ if (window->curport){
check_line=yon_char_new(videoconfig.resolutions[j]); gtk_window_set_title(GTK_WINDOW(gtk_widget_get_toplevel(window->mainMonitorConfigurationBox)),window->curport);
check_line=yon_char_divide_search(check_line," ",-1); dict=yon_dictionary_find(&videoconfig.supported_resolutions,window->curport);
if (strstr(videoconfig.resolutions[j],res->line[i])){ if (dict){
found_size++; resolution_supported *res = yon_dictionary_get_data(dict,resolution_supported*);
if(!config->resolutionCapabilities) config->resolutionCapabilities=new(char*); int found_size=0;
else config->resolutionCapabilities=realloc(config->resolutionCapabilities,sizeof(char*)*found_size); for (int i=0;i<res->size;i++){
config->resolutionCapabilities[found_size-1]=videoconfig.resolutions[j]; char *check_line;
config->resolution_size=found_size; for (int j=0;j<videoconfig.resolutionssize;j++){
check_line=yon_char_new(videoconfig.resolutions[j]);
check_line=yon_char_divide_search(check_line," ",-1);
if (strstr(videoconfig.resolutions[j],res->line[i])){
found_size++;
if(!config->resolutionCapabilities) config->resolutionCapabilities=new(char*);
else config->resolutionCapabilities=realloc(config->resolutionCapabilities,sizeof(char*)*found_size);
config->resolutionCapabilities[found_size-1]=videoconfig.resolutions[j];
config->resolution_size=found_size;
}
} }
} }
yon_gtk_combo_box_fill(window->templateMonitorConfigurationResolutionCombo,config->resolutionCapabilities, config->resolution_size);
} }
yon_gtk_combo_box_fill(window->templateMonitorConfigurationResolutionCombo,config->resolutionCapabilities, config->resolution_size);
} }
} }
} }
@ -387,10 +446,6 @@ void on_configuration_save_local(GtkWidget *self, widgets_dict *widgets)
char *str=NULL; char *str=NULL;
char *delstr=NULL; char *delstr=NULL;
str=yon_configuration_get_save_command(save_drivers_local_command); str=yon_configuration_get_save_command(save_drivers_local_command);
// delstr=yon_configuration_get_remove_command(remove_drivers_local_command);
// if (delstr){
// yon_config_save(delstr);
// }
if (str){ if (str){
yon_config_save(str); yon_config_save(str);
yon_ubl_status_box_render(videoconfig.status_render,LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); yon_ubl_status_box_render(videoconfig.status_render,LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE);
@ -421,10 +476,6 @@ void on_configuration_save_global(GtkWidget *self, widgets_dict *widgets)
char *str=NULL; char *str=NULL;
char *delstr=NULL; char *delstr=NULL;
str=yon_configuration_get_save_command(save_drivers_global_command); str=yon_configuration_get_save_command(save_drivers_global_command);
// delstr=yon_configuration_get_remove_command(remove_drivers_global_command);
// if (delstr){
// yon_config_save(delstr);
// }
if (str){ if (str){
yon_config_save(str); yon_config_save(str);
yon_ubl_status_box_render(videoconfig.status_render,LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); yon_ubl_status_box_render(videoconfig.status_render,LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE);
@ -436,6 +487,7 @@ void yon_update_config(widgets_dict *widgets)
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->mainExtraLaunchOptirunCheck))==1) if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->mainExtraLaunchOptirunCheck))==1)
videoconfig.optirun = yon_char_new( (char *)gtk_entry_get_text(GTK_ENTRY(widgets->mainExtraLaunchOptirunEntry))); videoconfig.optirun = yon_char_new( (char *)gtk_entry_get_text(GTK_ENTRY(widgets->mainExtraLaunchOptirunEntry)));
else videoconfig.optirun = NULL; else videoconfig.optirun = NULL;
videoconfig.descreteOnly=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->mainHybridGraphicsDiscreteCheck));
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->mainExtraLaunchPrismusunCheck))==1) if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->mainExtraLaunchPrismusunCheck))==1)
videoconfig.primusrun = yon_char_new( (char *)gtk_entry_get_text(GTK_ENTRY(widgets->mainExtraLaunchPrismusunEntry))); videoconfig.primusrun = yon_char_new( (char *)gtk_entry_get_text(GTK_ENTRY(widgets->mainExtraLaunchPrismusunEntry)));
else videoconfig.primusrun = NULL; else videoconfig.primusrun = NULL;
@ -448,6 +500,7 @@ void on_configuration_load_local(GtkWidget *self, widgets_dict *widgets)
yon_setup_config(load_drivers_local_command); yon_setup_config(load_drivers_local_command);
on_config_fill_interface(widgets); on_config_fill_interface(widgets);
yon_monitor_view_setup(widgets->mainMonitorVisualConfigurationBox); yon_monitor_view_setup(widgets->mainMonitorVisualConfigurationBox);
yon_ubl_status_box_render(videoconfig.status_render,LOCAL_LOAD_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE);
} }
void on_configuration_load_global(GtkWidget *self, widgets_dict *widgets) void on_configuration_load_global(GtkWidget *self, widgets_dict *widgets)
@ -456,6 +509,7 @@ void on_configuration_load_global(GtkWidget *self, widgets_dict *widgets)
yon_setup_config(load_drivers_global_command); yon_setup_config(load_drivers_global_command);
on_config_fill_interface(widgets); on_config_fill_interface(widgets);
yon_monitor_view_setup(widgets->mainMonitorVisualConfigurationBox); yon_monitor_view_setup(widgets->mainMonitorVisualConfigurationBox);
yon_ubl_status_box_render(videoconfig.status_render,GLOBAL_LOAD_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE);
} }
/**void on_monitor_delete(GtkWidget *self,monitor_view windowd) /**void on_monitor_delete(GtkWidget *self,monitor_view windowd)
@ -495,7 +549,7 @@ void on_monitor_add(GtkWidget *self,monitor_window *window){
} }
void on_proprietary_get(GtkWidget *notebook, GtkWidget *page, int pagen, gpointer data){ void on_proprietary_get(GtkWidget *notebook, GtkWidget *page, int pagen, gpointer data){
if (pagen==1){ if (pagen==1&&videoconfig.dblock==0){
GtkTreeIter iter; GtkTreeIter iter;
if(!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(videoconfig.list),&iter)){ if(!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(videoconfig.list),&iter)){
pthread_t tid; pthread_t tid;
@ -566,6 +620,7 @@ void on_monitor_configure(GtkWidget *self,monitor_window *window){
gtk_button_set_label(GTK_BUTTON(monitors->templateMonitorConfigurationSaveButton),MONITOR_SAVE_LABEL); gtk_button_set_label(GTK_BUTTON(monitors->templateMonitorConfigurationSaveButton),MONITOR_SAVE_LABEL);
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(monitors->templateMonitorConfigurationPortCombo),MONITOR_CHOOSE_PORT_LABEL); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(monitors->templateMonitorConfigurationPortCombo),MONITOR_CHOOSE_PORT_LABEL);
monitors->curport=NULL;
dictionary *dict=NULL; dictionary *dict=NULL;
for (int i=0;i<videoconfig.portssize;i++){ for (int i=0;i<videoconfig.portssize;i++){
dictionary *check_if_exists = yon_dictionary_find(&videoconfig.monitors,videoconfig.ports[i]); dictionary *check_if_exists = yon_dictionary_find(&videoconfig.monitors,videoconfig.ports[i]);
@ -591,7 +646,8 @@ void on_monitor_configure(GtkWidget *self,monitor_window *window){
gtk_combo_box_set_active(GTK_COMBO_BOX(monitors->templateMonitorConfigurationPositionPosCombo),0); gtk_combo_box_set_active(GTK_COMBO_BOX(monitors->templateMonitorConfigurationPositionPosCombo),0);
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(monitors->templateMonitorConfigurationPositionPortCombo),PARAMETER_DEFAULT_LABEL); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(monitors->templateMonitorConfigurationPositionPortCombo),PARAMETER_DEFAULT_LABEL);
for (int i=0;i<videoconfig.portssize;i++){ for (int i=0;i<videoconfig.portssize;i++){
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(monitors->templateMonitorConfigurationPositionPortCombo),videoconfig.ports[i]); if (videoconfig.ports[i]!=monitors->config->key)
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(monitors->templateMonitorConfigurationPositionPortCombo),videoconfig.ports[i]);
} }
gtk_combo_box_set_active(GTK_COMBO_BOX(monitors->templateMonitorConfigurationPositionPortCombo),0); gtk_combo_box_set_active(GTK_COMBO_BOX(monitors->templateMonitorConfigurationPositionPortCombo),0);
@ -602,7 +658,7 @@ void on_monitor_configure(GtkWidget *self,monitor_window *window){
} }
void on_read_documentation(GtkWidget *self,gpointer user_data){ void on_read_documentation(GtkWidget *self,gpointer user_data){
yon_ubl_browser_window_open(UBLINUX_WIKI_LINK,WEB_VIEW_TITLE_LABEL); yon_ubl_browser_window_open(user_data,WEB_VIEW_TITLE_LABEL);
} }
@ -614,6 +670,8 @@ void on_link(GtkWidget *self, char* link, gpointer user_data){
if (GTK_IS_ABOUT_DIALOG(self)){ if (GTK_IS_ABOUT_DIALOG(self)){
gtk_widget_destroy(self); gtk_widget_destroy(self);
} }
if (!link)
link=UBLINUX_WIKI_LINK;
if (videoconfig.alwaysredirect==0){ if (videoconfig.alwaysredirect==0){
GtkBuilder *builder=gtk_builder_new_from_file(glade_path); GtkBuilder *builder=gtk_builder_new_from_file(glade_path);
GtkWidget *sureWindow=yon_gtk_builder_get_widget(builder,"HelpSureWindow"); GtkWidget *sureWindow=yon_gtk_builder_get_widget(builder,"HelpSureWindow");
@ -624,7 +682,7 @@ void on_link(GtkWidget *self, char* link, gpointer user_data){
GtkWidget *textLabel=yon_gtk_builder_get_widget(builder,"helpText"); GtkWidget *textLabel=yon_gtk_builder_get_widget(builder,"helpText");
GtkWidget *alwaysOpenCheck=yon_gtk_builder_get_widget(builder,"AlwaysOpenHelpCheckbox"); GtkWidget *alwaysOpenCheck=yon_gtk_builder_get_widget(builder,"AlwaysOpenHelpCheckbox");
g_signal_connect(G_OBJECT(readButton),"clicked",G_CALLBACK(on_read_documentation),NULL); g_signal_connect(G_OBJECT(readButton),"clicked",G_CALLBACK(on_read_documentation),yon_char_new(link));
g_signal_connect(G_OBJECT(readButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); g_signal_connect(G_OBJECT(readButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_signal_connect(G_OBJECT(cancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); g_signal_connect(G_OBJECT(cancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_signal_connect(G_OBJECT(alwaysOpenCheck),"toggled",G_CALLBACK(on_toggle),&videoconfig.alwaysredirect); g_signal_connect(G_OBJECT(alwaysOpenCheck),"toggled",G_CALLBACK(on_toggle),&videoconfig.alwaysredirect);
@ -638,7 +696,7 @@ void on_link(GtkWidget *self, char* link, gpointer user_data){
gtk_widget_show(sureWindow); gtk_widget_show(sureWindow);
}else { }else {
on_read_documentation(NULL,NULL); on_read_documentation(NULL,link);
} }
} }
@ -661,10 +719,22 @@ void on_about()
void yon_monitor_window_update(monitor_edit_window *window){ void yon_monitor_window_update(monitor_edit_window *window){
if (window){ if (window){
int found = yon_gtk_combo_box_text_find(window->templateMonitorConfigurationPortCombo, window->config->key); int found = yon_char_parsed_check_exist(videoconfig.ports,videoconfig.portssize, window->config->key);
if (found==-1) if (found==-1)
found=0; found=0;
else
found++;
gtk_combo_box_set_active(GTK_COMBO_BOX(window->templateMonitorConfigurationPortCombo),found); gtk_combo_box_set_active(GTK_COMBO_BOX(window->templateMonitorConfigurationPortCombo),found);
on_resolutions_unsupported_show(window->templateMonitorConfigurationShowUnsupportedCheck,window);
if (((monitorconfig*)window->config->data)->resolutionCapabilities){
// printf("%s\n",((monitorconfig*)window->config->data)->resolution);
found = yon_gtk_combo_box_text_find(window->templateMonitorConfigurationResolutionCombo, ((monitorconfig*)window->config->data)->resolution);
}else{
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->templateMonitorConfigurationShowUnsupportedCheck),1);
found = yon_gtk_combo_box_text_find(window->templateMonitorConfigurationResolutionCombo, ((monitorconfig*)window->config->data)->resolution);
}
if (found==-1)
found=0;
gtk_combo_box_set_active(GTK_COMBO_BOX(window->templateMonitorConfigurationResolutionCombo),found); gtk_combo_box_set_active(GTK_COMBO_BOX(window->templateMonitorConfigurationResolutionCombo),found);
gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationFrequencyCombo)); gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationFrequencyCombo));
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationFrequencyCombo),PARAMETER_DEFAULT_LABEL); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationFrequencyCombo),PARAMETER_DEFAULT_LABEL);
@ -689,33 +759,62 @@ void yon_monitor_window_update(monitor_edit_window *window){
} }
/**void yon_monitor_view_draw_all(GtkWidget *cnt) /**void yon_monitor_view_draw_all(GtkWidget *cnt)
* [EN] * [EN]
*/ */
void yon_monitor_view_draw_all(GtkWidget *cnt){ void yon_monitor_view_draw_all(){
monitor_view dict=NULL; monitor_view dict=NULL;
GtkWidget *container=NULL; GtkWidget *container=NULL;
if(!container&&cnt) container=cnt;
if(videoconfig.monitor_visuals){ if(videoconfig.monitor_visuals){
for_dictionaries(dict,videoconfig.monitor_visuals){ for_dictionaries(dict,videoconfig.monitor_visuals){
monitor_window *window = yon_dictionary_get_data(dict,monitor_window*); monitor_window *window = yon_dictionary_get_data(dict,monitor_window*);
if (!container) container = gtk_widget_get_parent(window->templateMonitorscreenOverlay); container = gtk_widget_get_parent(window->templateMonitorscreenOverlay);
if(container){ if(container){
g_object_ref(G_OBJECT(window->templateMonitorscreenOverlay)); g_object_ref(G_OBJECT(window->templateMonitorscreenOverlay));
gtk_container_remove(GTK_CONTAINER(container),window->templateMonitorscreenOverlay); gtk_container_remove(GTK_CONTAINER(container),window->templateMonitorscreenOverlay);
} }
} }
if (container) dictionary *boxes=NULL;
if (videoconfig.monitor_output_layers)
for_dictionaries(boxes,videoconfig.monitor_output_layers){
gtk_widget_destroy((GtkWidget*)boxes->data);
if (boxes->prev)
free(boxes->prev);
boxes->prev=NULL;
}
free(boxes);
videoconfig.monitor_output_layers=NULL;
int overall_width=0;
yon_dictionary_add_or_create_if_exists_with_data(videoconfig.monitor_output_layers,"Box",gtk_box_new(GTK_ORIENTATION_HORIZONTAL,0));
gtk_box_pack_start(GTK_BOX(videoconfig.pack_box),&*(GtkWidget*)videoconfig.monitor_output_layers->data,0,0,0);
gtk_widget_show((GtkWidget*)videoconfig.monitor_output_layers->data);
for_dictionaries(dict,videoconfig.monitor_visuals){ for_dictionaries(dict,videoconfig.monitor_visuals){
monitor_window *window = yon_dictionary_get_data(dict,monitor_window*); monitor_window *window = yon_dictionary_get_data(dict,monitor_window*);
if(dict->first==dict) {} if(dict->first==dict) {}
else { else {
gtk_box_pack_start(GTK_BOX(container),window->templateMonitorscreenOverlay,0,0,0); overall_width+=138;
GtkWidget *boxpack=(GtkWidget*)videoconfig.monitor_output_layers->data;
gtk_box_pack_start(GTK_BOX(boxpack),window->templateMonitorscreenOverlay,0,0,0);
}
int width=0;
GdkWindow *cur_window = gtk_widget_get_window(videoconfig.pack_box);
if(cur_window)
width = gdk_window_get_width(cur_window);
if (overall_width+138>width){
overall_width=0;
GtkWidget *boxpack=NULL;
yon_dictionary_add_or_create_if_exists_with_data(videoconfig.monitor_output_layers,"Box",(boxpack=gtk_box_new(GTK_ORIENTATION_HORIZONTAL,0)));
gtk_widget_show((GtkWidget*)videoconfig.monitor_output_layers->data);
gtk_box_pack_start(GTK_BOX(videoconfig.pack_box),boxpack,0,0,0);
} }
} }
gtk_widget_show((GtkWidget*)videoconfig.monitor_output_layers->data);
monitor_window *window = yon_dictionary_get_data(videoconfig.monitor_visuals->first,monitor_window*); monitor_window *window = yon_dictionary_get_data(videoconfig.monitor_visuals->first,monitor_window*);
gtk_box_pack_start(GTK_BOX(container),window->templateMonitorscreenOverlay,0,0,0); gtk_box_pack_start(GTK_BOX(((GtkWidget*)videoconfig.monitor_output_layers->data)),window->templateMonitorscreenOverlay,0,0,0);
} }
yon_monitor_view_update(); yon_monitor_view_update();
} }
@ -983,27 +1082,50 @@ void on_config_fill_interface(widgets_dict *widgets)
*/ */
dictionary *yon_proprieary_get(){ dictionary *yon_proprieary_get(){
yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_LOADING_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_LOADING_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
videoconfig.dblock=1;
videoconfig.proprietary=NULL; videoconfig.proprietary=NULL;
int drivers_size=0; int drivers_size=0;
config_str drivers=yon_config_load(get_proprietary_drivers_command,&drivers_size);
int size=0; int size=0;
char **rtn = yon_config_load(get_proprietary_drivers_info_command,&size); config_str drivers=NULL;
for (int drivers_found=0;drivers_found<drivers_size;drivers_found++){ config_str rtn=NULL;
drivers[drivers_found]=yon_char_divide_search(drivers[drivers_found],"\n",-1); rtn = yon_config_load(get_proprietary_drivers_info_command,&size);
for (int i=0;i<size;i++){ // drivers=yon_config_load(get_proprietary_installed_command,&drivers_size);
rtn[i] = yon_char_divide_search(rtn[i],"\n",-1); // for (int dr_desc=0;dr_desc<drivers_size;dr_desc++){
char *keyp=yon_char_new(rtn[i]); // for (int dr_foun=0;dr_foun<drivers_size;dr_foun++){
if (keyp[0]==';') // drivers[dr_foun]=yon_char_divide_search(drivers[dr_foun],"\n",-1);
yon_char_divide_search(keyp,";",-1); // char *pack=yon_char_new(rtn[dr_desc]);
char *key = yon_char_divide_search(keyp,";",-1); // char *ubm=yon_char_divide_search(pack,";",-1);
keyp = yon_char_divide_search(keyp,";",-1); // pack=yon_char_divide_search(pack,";",-1);
char *driver_name=yon_char_divide_search(yon_char_new(drivers[drivers_found])," ",-1); // if (strcmp(drivers[dr_foun],ubm)==0){
if (strcmp(key,driver_name)==0||keyp) // yon_dictionary_add_or_create_if_exists_with_data(videoconfig.proprietary,drivers[dr_foun],rtn[dr_desc]);
if (i==0) videoconfig.proprietary=yon_dictionary_create_with_data(drivers[drivers_found],rtn[i]); // }
else videoconfig.proprietary=yon_dictionary_create_with_data_connected(videoconfig.proprietary,drivers[drivers_found],rtn[i]); // // else if (strcmp(pack,"")!=0&&!(yon_dictionary_find(!videoconfig.proprietary||&videoconfig.proprietary,pack))){
// // yon_dictionary_add_or_create_if_exists_with_data(videoconfig.proprietary,pack,rtn[dr_desc]);
// // }
// }
// }
if (videoconfig.proprietary){
yon_gtk_list_store_fill_with_proprietaries(videoconfig.list);
videoconfig.proprietary=NULL;
}
drivers=yon_config_load(get_proprietary_drivers_command,&drivers_size);
printf("begin loading information\n");
for (int dr_desc=0;dr_desc<size;dr_desc++){
for (int dr_foun=0;dr_foun<drivers_size;dr_foun++){
drivers[dr_foun]=yon_char_divide_search(drivers[dr_foun],"\n",-1);
char *pack=yon_char_new(rtn[dr_desc]);
char *ubm=yon_char_divide_search(pack,";",-1);
pack=yon_char_divide_search(pack,";",-1);
if (strcmp(drivers[dr_foun],ubm)==0){
yon_dictionary_add_or_create_if_exists_with_data(videoconfig.proprietary,drivers[dr_foun],rtn[dr_desc]);
}
else if (strcmp(pack,"")!=0&&!yon_dictionary_find(&videoconfig.proprietary,pack)){
yon_dictionary_add_or_create_if_exists_with_data(videoconfig.proprietary,pack,rtn[dr_desc]);
}
} }
} }
if (videoconfig.proprietary){ if (videoconfig.proprietary){
printf("printing information\n");
yon_gtk_list_store_fill_with_proprietaries(videoconfig.list); yon_gtk_list_store_fill_with_proprietaries(videoconfig.list);
yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_OPETAION_DONE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_OPETAION_DONE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
} else { } else {
@ -1027,8 +1149,8 @@ dictionary *yon_proprieary_get(){
yon_gtk_list_store_fill_with_proprietaries(videoconfig.list); yon_gtk_list_store_fill_with_proprietaries(videoconfig.list);
yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_USE_LOCAL_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_USE_LOCAL_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
} else } else {
{ videoconfig.dblock=0;
yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_LOADING_FAILED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_box_render(videoconfig.status_render,PROPRIETARY_LOADING_FAILED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
} }
} }
@ -1043,21 +1165,28 @@ void yon_gtk_list_store_fill_with_proprietaries(GtkListStore *list){
dictionary *dict=NULL; dictionary *dict=NULL;
gtk_list_store_clear(videoconfig.list); gtk_list_store_clear(videoconfig.list);
gtk_list_store_clear(videoconfig.list2); gtk_list_store_clear(videoconfig.list2);
int inssize=0;
config_str installed=yon_config_load(get_proprietary_installed_command,&inssize);
for (int i=0;i<inssize;i++)
installed[i]=yon_char_divide_search(installed[i],"\n",-1);
for_dictionaries(dict,videoconfig.proprietary){ for_dictionaries(dict,videoconfig.proprietary){
GtkTreeIter iter; GtkTreeIter iter;
int size=0; int size=0;
config_str str = yon_char_parse((char*)dict->data,&size,";"); config_str str = yon_char_parse((char*)dict->data,&size,";");
printf("%s\n",str[0]);
if (strcmp(str[0],"")!=0&&str[0]){ if (strcmp(str[0],"")!=0&&str[0]){
gtk_list_store_append(videoconfig.list,&iter); gtk_list_store_append(videoconfig.list,&iter);
gtk_list_store_set(videoconfig.list,&iter,1,str[0],2,str[1],3,str[2],4,_(str[3]),5,_(str[4]),-1); gtk_list_store_set(videoconfig.list,&iter,1,str[0],2,str[1],3,str[2],4,_(str[3]),5,_(str[4]),-1);
if (yon_char_parsed_check_exist(installed,inssize,str[0])!=-1)
gtk_list_store_set(videoconfig.list,&iter,0,1,-1);
} }
else{ else{
gtk_list_store_append(videoconfig.list2,&iter); gtk_list_store_append(videoconfig.list2,&iter);
gtk_list_store_set(videoconfig.list2,&iter,1,str[0],2,str[1],3,str[2],4,_(str[3]),5,_(str[4]),-1); gtk_list_store_set(videoconfig.list2,&iter,1,str[0],2,str[1],3,str[2],4,_(str[3]),5,_(str[4]),-1);
if (yon_char_parsed_check_exist(installed,inssize,str[1])!=-1){
gtk_list_store_set(videoconfig.list2,&iter,0,1,-1);
}
} }
if (strstr(dict->key," installed"))
gtk_list_store_set(videoconfig.list,&iter,0,1,-1);
} }
} }
} }
@ -1093,6 +1222,7 @@ void yon_setup_config(char *configcommand)
videoconfig.failsafenVidia=NULL; videoconfig.failsafenVidia=NULL;
videoconfig.gapfix=0; videoconfig.gapfix=0;
videoconfig.loaded_config=NULL; videoconfig.loaded_config=NULL;
videoconfig.dblock=0;
if(videoconfig.optirun) if(videoconfig.optirun)
free(videoconfig.optirun); free(videoconfig.optirun);
videoconfig.optirun=NULL; videoconfig.optirun=NULL;
@ -1283,6 +1413,10 @@ void yon_monitor_view_new(monitor_config monitor){
window->templateMonitorInfoAddButton=yon_gtk_builder_get_widget(builder,"templateMonitorInfoAddButton"); window->templateMonitorInfoAddButton=yon_gtk_builder_get_widget(builder,"templateMonitorInfoAddButton");
window->config=NULL; window->config=NULL;
gtk_overlay_add_overlay(GTK_OVERLAY(window->templateMonitorscreenOverlay),window->templateMonitorInfoBox); gtk_overlay_add_overlay(GTK_OVERLAY(window->templateMonitorscreenOverlay),window->templateMonitorInfoBox);
gtk_widget_set_tooltip_text(window->templateMonitorDeleteButton,DELETE_LABEL);
gtk_widget_set_tooltip_text(window->templateMonitorInfoConfigureButton,CONFIGURE_LABEL);
gtk_widget_set_tooltip_text(window->templateMonitorSwitchButton,SWITCH_LABEL);
gtk_widget_set_tooltip_text(window->templateMonitorInfoAddButton,ADD_LABEL);
if (monitor){ if (monitor){
window->config=monitor; window->config=monitor;
gtk_widget_hide(window->templateMonitorInfoAddButton); gtk_widget_hide(window->templateMonitorInfoAddButton);
@ -1357,9 +1491,10 @@ void yon_adapter_window_setup(widgets_dict *widgets){
yon_char_divide_search(product,"=",-1); yon_char_divide_search(product,"=",-1);
char *vendor = yon_config_get_parameter(rtn,size,"vendor"); char *vendor = yon_config_get_parameter(rtn,size,"vendor");
yon_char_divide_search(vendor,"=",-1); yon_char_divide_search(vendor,"=",-1);
char *driver_use = yon_config_get_parameter(rtn,size,"Kernel_driver_in_use"); char *driver_use = yon_config_get_parameter(rtn,size,"Kernel-driver-in-use");
yon_char_divide_search(driver_use,"=",-1); yon_char_divide_search(driver_use,"=",-1);
char *driver_all = yon_config_get_parameter(rtn,size,"Kernel_modules"); char *driver_all = yon_config_get_parameter(rtn,size,"Kernel-modules");
driver_all = yon_char_replace(driver_all,"-"," ");
yon_char_divide_search(driver_all,"=",-1); yon_char_divide_search(driver_all,"=",-1);
char *final_text = yon_char_unite("<span size=\"12pt\"><span weight='bold' color='#1a5fb4'>",DESCRIPTION_LABEL,":</span> ",_(desc), char *final_text = yon_char_unite("<span size=\"12pt\"><span weight='bold' color='#1a5fb4'>",DESCRIPTION_LABEL,":</span> ",_(desc),
"\n<span weight='bold' color='#1a5fb4'>",VENDOR_LABEL,":</span> ",vendor, "\n<span weight='bold' color='#1a5fb4'>",VENDOR_LABEL,":</span> ",vendor,
@ -1371,7 +1506,7 @@ void yon_adapter_window_setup(widgets_dict *widgets){
GtkIconTheme *icthm=gtk_icon_theme_get_default(); GtkIconTheme *icthm=gtk_icon_theme_get_default();
gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->InformationCompanyLogoImage),gtk_icon_info_load_icon(gtk_icon_theme_lookup_icon_for_scale(icthm, "com.ublinux.ubl-settings-video.intel-logo",64,1,GTK_ICON_LOOKUP_FORCE_SVG),NULL)); gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->InformationCompanyLogoImage),gtk_icon_info_load_icon(gtk_icon_theme_lookup_icon_for_scale(icthm, "com.ublinux.ubl-settings-video.intel-logo",64,1,GTK_ICON_LOOKUP_FORCE_SVG),NULL));
} }
else if (strstr(vendor,"NVidia")){ else if (strstr(vendor,"NVIDIA")){
GtkIconTheme *icthm=gtk_icon_theme_get_default(); GtkIconTheme *icthm=gtk_icon_theme_get_default();
gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->InformationCompanyLogoImage),gtk_icon_info_load_icon(gtk_icon_theme_lookup_icon_for_scale(icthm, "com.ublinux.ubl-settings-video.nvidia-logo",64,1,GTK_ICON_LOOKUP_FORCE_SVG),NULL)); gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->InformationCompanyLogoImage),gtk_icon_info_load_icon(gtk_icon_theme_lookup_icon_for_scale(icthm, "com.ublinux.ubl-settings-video.nvidia-logo",64,1,GTK_ICON_LOOKUP_FORCE_SVG),NULL));
} }
@ -1494,8 +1629,9 @@ void yon_setup_widgets(widgets_dict *widgets)
widgets->driverDriverColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "driverDriverColumn")); widgets->driverDriverColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "driverDriverColumn"));
widgets->driverDescriptionColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "driverDescriptionColumn")); widgets->driverDescriptionColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "driverDescriptionColumn"));
widgets->driverSupportedColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "driverSupportedColumn")); widgets->driverSupportedColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "driverSupportedColumn"));
videoconfig.pack_box=widgets->mainMonitorVisualConfigurationBox;
gtk_window_set_title(GTK_WINDOW(widgets->MainWindow),TITLE_LABEL); // g_signal_connect(G_OBJECT(widgets->MainWindow), "check-resize", G_CALLBACK(on_resized), NULL);
gtk_window_set_title(GTK_WINDOW(widgets->MainWindow),SETTINGS_VIDEO_TITLE_LABEL);
videoconfig.list = GTK_LIST_STORE(gtk_builder_get_object(widgets-> builder, "liststore6")); videoconfig.list = GTK_LIST_STORE(gtk_builder_get_object(widgets-> builder, "liststore6"));
videoconfig.list2 = GTK_LIST_STORE(gtk_builder_get_object(widgets-> builder, "liststore1")); videoconfig.list2 = GTK_LIST_STORE(gtk_builder_get_object(widgets-> builder, "liststore1"));
@ -1507,6 +1643,8 @@ void yon_setup_widgets(widgets_dict *widgets)
g_signal_connect(G_OBJECT(widgets->proprietaryDeleteButton), "clicked", G_CALLBACK(on_driver_pack_delete), widgets); g_signal_connect(G_OBJECT(widgets->proprietaryDeleteButton), "clicked", G_CALLBACK(on_driver_pack_delete), widgets);
g_signal_connect(G_OBJECT(widgets->proprietaryInstallButton), "clicked", G_CALLBACK(on_driver_pack_install), widgets); g_signal_connect(G_OBJECT(widgets->proprietaryInstallButton), "clicked", G_CALLBACK(on_driver_pack_install), widgets);
g_signal_connect(G_OBJECT(widgets->proprietaryInfoButton), "clicked", G_CALLBACK(on_driver_pack_info), widgets); g_signal_connect(G_OBJECT(widgets->proprietaryInfoButton), "clicked", G_CALLBACK(on_driver_pack_info), widgets);
g_signal_connect(G_OBJECT(widgets->proprietaryTreeView), "cursor-changed", G_CALLBACK(on_driver_pack_selection_change), widgets);
g_signal_connect(G_OBJECT(widgets->driversTreeView), "cursor-changed", G_CALLBACK(on_driver_selection_change), widgets);
g_signal_connect(G_OBJECT(widgets->driversDeleteButton), "clicked", G_CALLBACK(on_driver_delete), widgets); g_signal_connect(G_OBJECT(widgets->driversDeleteButton), "clicked", G_CALLBACK(on_driver_delete), widgets);
g_signal_connect(G_OBJECT(widgets->driversInstallButton), "clicked", G_CALLBACK(on_driver_install), widgets); g_signal_connect(G_OBJECT(widgets->driversInstallButton), "clicked", G_CALLBACK(on_driver_install), widgets);
@ -1521,7 +1659,7 @@ void yon_setup_widgets(widgets_dict *widgets)
g_signal_connect(G_OBJECT(widgets->MainWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL); g_signal_connect(G_OBJECT(widgets->MainWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);
// g_signal_connect(G_OBJECT(widgets->extraOptirunChooseAppsButton), "clicked", G_CALLBACK(on_apps_chooser_open), widgets); // g_signal_connect(G_OBJECT(widgets->extraOptirunChooseAppsButton), "clicked", G_CALLBACK(on_apps_chooser_open), NULL);
// g_signal_connect(G_OBJECT(widgets->extraPrimusunChooseAppsButton), "clicked", G_CALLBACK(on_apps_chooser_open), widgets); // g_signal_connect(G_OBJECT(widgets->extraPrimusunChooseAppsButton), "clicked", G_CALLBACK(on_apps_chooser_open), widgets);
g_signal_connect(G_OBJECT(widgets->mainHeaderSettingsAboutMenuItem), "activate", G_CALLBACK(on_about), NULL); g_signal_connect(G_OBJECT(widgets->mainHeaderSettingsAboutMenuItem), "activate", G_CALLBACK(on_about), NULL);
@ -1539,9 +1677,11 @@ void yon_setup_widgets(widgets_dict *widgets)
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeAMDCombo), OFF_LABEL); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeAMDCombo), OFF_LABEL);
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeAMDCombo), FBDEV_LABEL); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeAMDCombo), FBDEV_LABEL);
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainExtraFixGapCombo), SWITCHED_OFF_LABEL);
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainExtraFixGapCombo), GAP_FIX_1_LABEL); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainExtraFixGapCombo), GAP_FIX_1_LABEL);
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainExtraFixGapCombo), GAP_FIX_2_LABEL); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainExtraFixGapCombo), GAP_FIX_2_LABEL);
gtk_label_set_text(GTK_LABEL(widgets->headInfoLabel), HEADER_LABEL); gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->mainExtraFixGapCombo),0);
gtk_label_set_text(GTK_LABEL(widgets->headInfoLabel), SETTINGS_VIDEO_TITLE_LABEL);
gtk_label_set_text(GTK_LABEL(widgets->mainDriverFailsafeNvidiaLabel), FAILSAFE_NVIDIA_LABEL); gtk_label_set_text(GTK_LABEL(widgets->mainDriverFailsafeNvidiaLabel), FAILSAFE_NVIDIA_LABEL);
gtk_label_set_text(GTK_LABEL(widgets->mainDriverFailsafeAMDLabel), FAILSAFE_ATI_LABEL); gtk_label_set_text(GTK_LABEL(widgets->mainDriverFailsafeAMDLabel), FAILSAFE_ATI_LABEL);
gtk_label_set_text(GTK_LABEL(widgets->mainDriverFrameLabel), DRIVER_LABEL); gtk_label_set_text(GTK_LABEL(widgets->mainDriverFrameLabel), DRIVER_LABEL);
@ -1549,7 +1689,7 @@ void yon_setup_widgets(widgets_dict *widgets)
gtk_label_set_text(GTK_LABEL(widgets->mainHybridGraphicsFrameLabel), HYBRID_GRAPHICS_LABEL); gtk_label_set_text(GTK_LABEL(widgets->mainHybridGraphicsFrameLabel), HYBRID_GRAPHICS_LABEL);
gtk_label_set_text(GTK_LABEL(widgets->mainExtraFixGapLabel), FIX_GAP_LABEL); gtk_label_set_text(GTK_LABEL(widgets->mainExtraFixGapLabel), FIX_GAP_LABEL);
gtk_label_set_text(GTK_LABEL(widgets->mainExtraFrameLabel), EXTRA_LABEL); gtk_label_set_text(GTK_LABEL(widgets->mainExtraFrameLabel), EXTRA_LABEL);
gtk_label_set_text(GTK_LABEL(widgets->mainHeaderTitleLabel), TITLE_LABEL); gtk_label_set_text(GTK_LABEL(widgets->mainHeaderTitleLabel), SETTINGS_VIDEO_TITLE_LABEL);
gtk_label_set_text(GTK_LABEL(widgets->mainHeaderConfigLoadLabel), LOAD_LABEL); gtk_label_set_text(GTK_LABEL(widgets->mainHeaderConfigLoadLabel), LOAD_LABEL);
gtk_label_set_text(GTK_LABEL(widgets->mainHeaderSaveConfigurationLabel), SAVE_LABEL); gtk_label_set_text(GTK_LABEL(widgets->mainHeaderSaveConfigurationLabel), SAVE_LABEL);
@ -1675,9 +1815,14 @@ int main(int argc, char *argv[])
} }
if (getuid()!=0){ if (getuid()!=0){
system("/usr/bin/pkexec ubl-settings-video"); char *args="";
for (int i=0;i<argc;i++)
args=yon_char_unite(args," ",argv[i],NULL);
if (system(yon_char_get_augumented("/usr/bin/pkexec ubl-settings-video ",args)));
return 0; return 0;
} else { } else {
int ssize=0;
yon_config_load("pkexec pacman -Sy",&ssize);
gtk_init(&argc, &argv); gtk_init(&argc, &argv);
GError error; GError error;
yon_setup_config(load_drivers_local_command); yon_setup_config(load_drivers_local_command);
@ -1697,6 +1842,7 @@ int main(int argc, char *argv[])
-1); -1);
yon_monitor_view_update(); yon_monitor_view_update();
yon_ubl_setup_sockets(widgets.PlugBox,widgets.PlugLoadBox,widgets.PlugSaveBox,videoconfig.socket_id,videoconfig.load_socket_id,videoconfig.save_socket_id); yon_ubl_setup_sockets(widgets.PlugBox,widgets.PlugLoadBox,widgets.PlugSaveBox,videoconfig.socket_id,videoconfig.load_socket_id,videoconfig.save_socket_id);
g_signal_connect(G_OBJECT(gtk_widget_get_parent(widgets.mainPlugBox)), "check-resize", G_CALLBACK(on_resized), NULL);
gtk_main(); gtk_main();
return 0; return 0;
} }

@ -15,7 +15,9 @@
#include <fcntl.h> #include <fcntl.h>
#include <getopt.h> #include <getopt.h>
#include <libintl.h> #include <libintl.h>
#include <time.h>
#include "ubl-utils.h" #include "ubl-utils.h"
// #include "ubl-settings-app-chooser.h"
#include "ubl-settings-video-strings.h" #include "ubl-settings-video-strings.h"
#ifndef UBL_SETINGS_VIDEO_H #ifndef UBL_SETINGS_VIDEO_H
#define UBL_SETINGS_VIDEO_H #define UBL_SETINGS_VIDEO_H
@ -39,7 +41,7 @@
#define get_ports_command "xrandr |grep -E \"*connected\" |cut -d' ' -f1" #define get_ports_command "xrandr |grep -E \"*connected\" |cut -d' ' -f1"
#define get_resolutions_command "xrandr |grep -noP \"\\d+x+\\d+\"" #define get_resolutions_command "xrandr |grep -noP \"\\d+x+\\d+\""
#define get_resolution_ports_command "xrandr |grep -nwP \"connected\" |grep -oE \"[0-9a-zA-Z:]{1,10} connected\" |grep -oE \"[0-9a-zA-Z:]{1,10} \"" #define get_resolution_ports_command "xrandr |grep -nwP \"connected\" |grep -oE \"[-0-9a-zA-Z:]{1,} connected\" |grep -oE \"[-0-9a-zA-Z:]{1,} \""
#define get_proprietary_drivers_info_command "cut -d';' -f2- /usr/share/ubl-settings-video/csv/video-drivers.csv | grep -E \"-\"" #define get_proprietary_drivers_info_command "cut -d';' -f2- /usr/share/ubl-settings-video/csv/video-drivers.csv | grep -E \"-\""
@ -71,12 +73,12 @@
#define get_version_proprietary_command "grep \"VERSION_ID=\" /etc/os-release | cut -d= -f2" #define get_version_proprietary_command "grep \"VERSION_ID=\" /etc/os-release | cut -d= -f2"
#define get_proprietary_drivers_command "LC_ALL=C pacman -Ssy ubm-nvidia-.* |grep -oE \"[a-zA-Z-]{1,}-nvidia-[a-zA-Z0-9-]{1,}|installed\"|sed ':a;N;$!ba;s/\\ninstalled/ installed/g'" #define get_proprietary_drivers_command "pkexec pacman -Ssy ubm-nvidia-.* |grep -oE \"[a-zA-Z-]{1,}-nvidia-[a-zA-Z0-9-]{1,}\""
#define get_proprietary_drivers_local_command "LC_ALL=C pacman -Qq |grep -E \"ubm-nvidia-\"" #define get_proprietary_drivers_local_command "pkexec pacman -Qq |grep -E \"ubm-nvidia-\""
#define get_proprietary_installed_command yon_char_unite("pkexec pacman -Ss nvidia-.* |grep -E ",INSTALLED_LOW_LABEL," |grep -oE \"ubm-nvidia-[0-9a-zA-Z]{1,}|nvidia-[0-9]{1,4}xx-dkms\"",NULL)
// #define get_proprietary_drivers_command "LC_ALL=C pacman -Ss ubm-nvidia-.* |grep -oE \"[a-zA-Z-]{1,}nvidia-[a-zA-Z0-9-]{1,}|installed\"|sed ':a;N;$!ba;s/\\ninstalled/ installed/g'" // #define get_proprietary_drivers_command "LC_ALL=C pacman -Ss ubm-nvidia-.* |grep -oE \"[a-zA-Z-]{1,}nvidia-[a-zA-Z0-9-]{1,}|installed\"|sed ':a;N;$!ba;s/\\ninstalled/ installed/g'"
#define get_adapter_info "lshw -c display -quiet |grep -oE \"vendor:[0-9a-zA-Z ]{1,}|description:[0-9a-zA-Z ]{1,}|product:[]0-9a-zA-Z [-]{1,}\"|sed 's/: /=/g';lspci | grep -E ' VGA | Display ' | cut -d\" \" -f 1 | xargs -i lspci -v -s {} |grep -oE \"Kernel[:a-zA-Z0-9: ]{1,}\"|sed 's/: /=/g'|sed 's/ /_/g'" #define get_adapter_info "lshw -c display -quiet |grep -oE \"vendor:[0-9a-zA-Z ]{1,}|description:[0-9a-zA-Z ]{1,}|product:[]0-9a-zA-Z [-]{1,}\"|sed 's/: /=/g';lspci | grep -E ' VGA | Display ' | cut -d\" \" -f 1 | xargs -i lspci -v -s {} |grep -oE \"Kernel[:a-zA-Z0-9: ,_]{1,}\"|sed 's/: /=/g'|sed 's/ /-/g'"
#define XORG_MONITOR(port) yon_char_get_augumented(" XORG_MONITOR[",yon_char_get_augumented(port,"] ")) #define XORG_MONITOR(port) yon_char_get_augumented(" XORG_MONITOR[",yon_char_get_augumented(port,"] "))
@ -90,7 +92,7 @@ char *local;
typedef char *string; typedef char *string;
string version_application = "1.6"; string version_application = "2.1";
#define _(String) gettext(String) #define _(String) gettext(String)
@ -137,6 +139,9 @@ typedef struct
int lock_save_global; int lock_save_global;
int lock_load_global; int lock_load_global;
int lock_help; int lock_help;
dictionary *monitor_output_layers;
GtkWidget *pack_box;
int dblock;
} config; } config;
typedef struct typedef struct
@ -287,6 +292,10 @@ typedef struct
typedef struct typedef struct
{ {
char *curport;
config_str resolutions;
int resolutionssize;
GtkWidget *templateMonitorConfigurationWindow; GtkWidget *templateMonitorConfigurationWindow;
GtkWidget *mainMonitorConfigurationBox; GtkWidget *mainMonitorConfigurationBox;
GtkWidget *templateMonitorConfigurationBox; GtkWidget *templateMonitorConfigurationBox;
@ -359,7 +368,7 @@ void yon_monitor_config_update(monitorconfig* monitor, char *port, char *config_
void yon_monitor_view_new(monitor_config monitor); void yon_monitor_view_new(monitor_config monitor);
void on_configuration_save_global_local(GtkWidget *self, widgets_dict *widgets); void on_configuration_save_global_local(GtkWidget *self, widgets_dict *widgets);
// void on_confugure_monitor_settings(GtkWidget *self, MonitorSettings *settings); // void on_confugure_monitor_settings(GtkWidget *self, MonitorSettings *settings);
void yon_monitor_view_draw_all(GtkWidget *cnt); void yon_monitor_view_draw_all();
void on_monitor_configure(GtkWidget *self,monitor_window *window); void on_monitor_configure(GtkWidget *self,monitor_window *window);
void on_monitor_add(GtkWidget *self,monitor_window *window); void on_monitor_add(GtkWidget *self,monitor_window *window);
void on_monitor_switch(GtkWidget *self,monitor_window *window); void on_monitor_switch(GtkWidget *self,monitor_window *window);

@ -465,6 +465,7 @@ char *yon_char_divide_search(char *source, char *dividepos, int delete_divider)
return source; return source;
} }
} }
/**[EN] /**[EN]
* char *yon_char_from_int(int int_to_convert) * char *yon_char_from_int(int int_to_convert)
* converts int to char*. * converts int to char*.
@ -486,6 +487,21 @@ char *yon_char_from_int(int int_to_convert)
return ch; return ch;
} }
char *yon_char_replace(char *source, char *find, char*replace){
char *final=NULL;
char *temp=NULL;
if(!strstr(replace,find)){
while ((final=strstr(source,find))){
temp=malloc(strlen(source)-strlen(final));
memset(temp,0,strlen(source)-strlen(final)+strlen(replace));
memcpy(temp,source,strlen(source)-strlen(final));
temp=yon_char_get_augumented(temp,replace);
source=yon_char_get_augumented(temp,final+1);
}
return source;
}
}
/**[EN] /**[EN]
* char **yon_char_parse(char *parameters, int *size, char *divider) * char **yon_char_parse(char *parameters, int *size, char *divider)
* Parses string [parameters], divided by [divider], * Parses string [parameters], divided by [divider],
@ -544,6 +560,42 @@ int yon_char_parsed_check_exist(char **parameters, int size, char *param){
return -1; return -1;
} }
int yon_char_parsed_includes_char_parsed (config_str source, config_str to_check, int source_size, int check_size){
int overall_found=0;
for (int i=0;i<source_size;i++){
int found=0;
for (int j=0;j<check_size;j++){
if (strcmp(source[i],to_check[j])==0&&found==0) { found=1; overall_found++; }
}
}
if (overall_found==check_size)
return 1;
else return 0;
}
config_str yon_char_parsed_new (config_str old, int *old_size, ...){
va_list arglist;
int new_size=0;
config_str new_parsed=NULL;
if (old){
new_size=*old_size;
new_parsed=old;
}else {
new_parsed=new(char*);
}
va_start(arglist,old_size);
char *newparse = va_arg(arglist,char*);
while (newparse){
new_size++;
new_parsed=realloc(new_parsed,new_size*sizeof(char*));
new_parsed[new_size-1]=yon_char_new(newparse);
newparse=va_arg(arglist,char*);
}
va_end(arglist);
*old_size=new_size;
return new_parsed;
}
// parsing functions // parsing functions
@ -692,7 +744,6 @@ config_str yon_config_load(char *command, int *str_len)
} }
} }
/**[EN] /**[EN]
* int yon_config_save(char *command) * int yon_config_save(char *command)
* Saves config with [command] * Saves config with [command]
@ -871,7 +922,7 @@ int yon_gtk_combo_box_text_find(GtkWidget *combo_box, char *text_to_find){
gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box),i); gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box),i);
str=gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(combo_box)); str=gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(combo_box));
if (!str) return -1; if (!str) return -1;
if (strcmp(text_to_find,str)==0) return i; if (strstr(str,text_to_find)) return i;
} }
} return -1; } return -1;
} }
@ -955,6 +1006,7 @@ void yon_ubl_setup_sockets(GtkWidget *main_window, GtkWidget *left_window, GtkWi
GtkWidget *plug_main=gtk_plug_new(socket_main_id); GtkWidget *plug_main=gtk_plug_new(socket_main_id);
GtkWidget *plug_left=NULL; GtkWidget *plug_left=NULL;
GtkWidget *plug_right=NULL; GtkWidget *plug_right=NULL;
GtkWidget *box=NULL;
g_signal_connect(G_OBJECT(plug_main), "destroy", G_CALLBACK(gtk_main_quit),NULL); g_signal_connect(G_OBJECT(plug_main), "destroy", G_CALLBACK(gtk_main_quit),NULL);
if (socket_left_id>-1&&left_window){ if (socket_left_id>-1&&left_window){
plug_left=gtk_plug_new(socket_left_id); plug_left=gtk_plug_new(socket_left_id);
@ -968,6 +1020,17 @@ void yon_ubl_setup_sockets(GtkWidget *main_window, GtkWidget *left_window, GtkWi
gtk_style_context_add_class(gtk_widget_get_style_context(plug_left),"noborder"); gtk_style_context_add_class(gtk_widget_get_style_context(plug_left),"noborder");
gtk_widget_show(plug_left); gtk_widget_show(plug_left);
} }
else if (left_window){
if (box==NULL){
box=gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5);
gtk_box_pack_start(GTK_BOX(main_window),box,0,0,5);
gtk_box_reorder_child(GTK_BOX(main_window),box,0);
gtk_widget_show(box);
}
gtk_style_context_add_class(gtk_widget_get_style_context(left_window),"inherited");
gtk_container_remove(GTK_CONTAINER(gtk_widget_get_parent(left_window)),left_window);
gtk_box_pack_end(GTK_BOX(box),left_window,0,0,5);
}
if (socket_right_id>-1&&right_window){ if (socket_right_id>-1&&right_window){
plug_right=gtk_plug_new(socket_right_id); plug_right=gtk_plug_new(socket_right_id);
g_object_ref(right_window); g_object_ref(right_window);
@ -980,6 +1043,17 @@ void yon_ubl_setup_sockets(GtkWidget *main_window, GtkWidget *left_window, GtkWi
gtk_style_context_add_class(gtk_widget_get_style_context(plug_right),"noborder"); gtk_style_context_add_class(gtk_widget_get_style_context(plug_right),"noborder");
gtk_widget_show(plug_right); gtk_widget_show(plug_right);
} }
else if (right_window){
if (box==NULL){
box=gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5);
gtk_box_pack_start(GTK_BOX(main_window),box,0,0,5);
gtk_box_reorder_child(GTK_BOX(main_window),box,0);
gtk_widget_show(box);
}
gtk_style_context_add_class(gtk_widget_get_style_context(right_window),"inherited");
gtk_container_remove(GTK_CONTAINER(gtk_widget_get_parent(right_window)),right_window);
gtk_box_pack_start(GTK_BOX(box),right_window,0,0,5);
}
g_object_ref(main_window); g_object_ref(main_window);
gtk_container_remove(GTK_CONTAINER(gtk_widget_get_parent(main_window)),main_window); gtk_container_remove(GTK_CONTAINER(gtk_widget_get_parent(main_window)),main_window);
gtk_container_add(GTK_CONTAINER(plug_main),main_window); gtk_container_add(GTK_CONTAINER(plug_main),main_window);

@ -80,8 +80,8 @@ typedef char** config_str;
* [type] - тип данных, хранящихся в словаре [dictionary]. * [type] - тип данных, хранящихся в словаре [dictionary].
*/ */
#define yon_dictionary_get_data(dictionary, type) ((type)dictionary->data) #define yon_dictionary_get_data(dictionary, type) ((type)dictionary->data)
#define yon_dictionary_add_or_create_if_exists_with_data(dict,key,data) if (!dict) dict=yon_dictionary_create_with_data(key,data); \ #define yon_dictionary_add_or_create_if_exists_with_data(dict,key,data) {if (!dict) dict=yon_dictionary_create_with_data(key,data); \
else dict=yon_dictionary_create_with_data_connected(dict,key,data); else dict=yon_dictionary_create_with_data_connected(dict,key,data);}
dictionary *yon_dictionary_create_empty(); dictionary *yon_dictionary_create_empty();
@ -125,6 +125,8 @@ char *yon_char_divide_search(char *source, char *dividepos, int delete_divider);
char *yon_char_from_int(int int_to_convert); char *yon_char_from_int(int int_to_convert);
char *yon_char_replace(char *source, char *find, char*replace);
char **yon_char_parse(char *parameters, int *size, char *divider); char **yon_char_parse(char *parameters, int *size, char *divider);
char **yon_char_parsed_shrink(char **char_string, int *size, int item_to_delete); char **yon_char_parsed_shrink(char **char_string, int *size, int item_to_delete);
@ -133,7 +135,9 @@ int yon_char_parsed_check_exist(char **parameters, int size, char *param);
int yon_char_find_count(char *source, char *find); int yon_char_find_count(char *source, char *find);
int yon_char_parsed_includes_char_parsed (config_str source, config_str to_check, int source_size, int check_size);
config_str yon_char_parsed_new (config_str old, int *old_size, ...);
// parsing functions // parsing functions

@ -9,6 +9,10 @@
margin:0px; margin:0px;
padding:0px; padding:0px;
} }
.inherited>* {
border:none;
background:inherit;
}
.opacited { .opacited {
opacity:0.98; opacity:0.98;
} }

@ -3,7 +3,7 @@ Encoding=UTF-8
Name=ubl-settings-video Name=ubl-settings-video
Name[ru]=Настройки видеоадаптера и дисплея Name[ru]=Настройки видеоадаптера и дисплея
GenericName=ubl-settings-video GenericName=ubl-settings-video
GenericName[ru]=Настройки Видеоадаптера и дисплея GenericName[ru]=Настройки видеоадаптера и дисплея
Comment=Application for managing video adapter and display settings Comment=Application for managing video adapter and display settings
Comment[ru]=Приложение для управления настройками видеоадаптера и дисплея Comment[ru]=Приложение для управления настройками видеоадаптера и дисплея
Type=Application Type=Application
@ -12,4 +12,4 @@ Icon=com.ublinux.ubl-settings-video
Terminal=false Terminal=false
X-XfcePluggable=true X-XfcePluggable=true
X-UBLPluggable=true X-UBLPluggable=true
Categories=XFCE;GTK;Settings;DesktopSettings;X-XFCE-SettingsDialog;X-XFCE-SystemSettings;X-UBL-SettingsManager;X-UBL-HardwareSettings; Categories=XFCE;GTK;Settings;DesktopSettings;X-XFCE-SettingsDialog;X-XFCE-HardwareSettings;X-UBL-SettingsManager;X-UBL-HardwareSettings;

@ -11,7 +11,6 @@
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="resizable">False</property> <property name="resizable">False</property>
<property name="default-width">450</property> <property name="default-width">450</property>
<property name="default-height">250</property>
<property name="icon-name">dialog-question-symbolic</property> <property name="icon-name">dialog-question-symbolic</property>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
@ -74,7 +73,8 @@
<property name="valign">start</property> <property name="valign">start</property>
<property name="margin-right">10</property> <property name="margin-right">10</property>
<property name="margin-end">10</property> <property name="margin-end">10</property>
<property name="label" context="You will be redirected to documentation web site, where documentation are translated and supported by community." comments="You will be redirected to documentation web site, where documentation are translated and supported by community.">You will be redirected to documentation website where documentation is translated and supported by community.</property> <property name="label" context="You will be redirected to documentation web site, where documentation are translated and supported by community." comments="You will be redirected to documentation web site, where documentation are translated and supported by community.">You will be redirected to documentation website where documentation is
translated and supported by community.</property>
<property name="wrap">True</property> <property name="wrap">True</property>
<property name="xalign">0</property> <property name="xalign">0</property>
<style> <style>
@ -82,7 +82,7 @@
</style> </style>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>
@ -103,6 +103,7 @@
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">2</property> <property name="position">2</property>
</packing> </packing>
</child> </child>
@ -183,6 +184,7 @@
<object class="GtkHeaderBar" id="SettingsBar"> <object class="GtkHeaderBar" id="SettingsBar">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="show-close-button">True</property>
<child type="title"> <child type="title">
<object class="GtkLabel" id="webHeaderNameLabel"> <object class="GtkLabel" id="webHeaderNameLabel">
<property name="visible">True</property> <property name="visible">True</property>
@ -195,7 +197,6 @@
</child> </child>
<child> <child>
<object class="GtkImage"> <object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="pixel-size">32</property> <property name="pixel-size">32</property>
<property name="icon-name">dialog-question-symbolic</property> <property name="icon-name">dialog-question-symbolic</property>
@ -693,15 +694,20 @@
<object class="GtkImage" id="image13"> <object class="GtkImage" id="image13">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="tooltip-text" translatable="yes">Switch</property>
<property name="icon-name">system-shutdown-symbolic</property> <property name="icon-name">system-shutdown-symbolic</property>
</object> </object>
<object class="GtkImage" id="image14"> <object class="GtkImage" id="image14">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="tooltip-text" translatable="yes">Delete</property>
<property name="icon-name">user-trash-symbolic</property> <property name="icon-name">user-trash-symbolic</property>
</object> </object>
<object class="GtkImage" id="image15"> <object class="GtkImage" id="image15">
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="icon-name">value-increase-symbolic</property> <property name="icon-name">value-increase-symbolic</property>
</object> </object>
<object class="GtkImage" id="image2"> <object class="GtkImage" id="image2">
@ -712,6 +718,7 @@
<object class="GtkImage" id="image3"> <object class="GtkImage" id="image3">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="tooltip-text" translatable="yes">Configure</property>
<property name="icon-name">open-menu-symbolic</property> <property name="icon-name">open-menu-symbolic</property>
<style> <style>
<class name="thin"/> <class name="thin"/>
@ -812,6 +819,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="no-show-all">True</property>
<property name="halign">end</property> <property name="halign">end</property>
<property name="image">image3</property> <property name="image">image3</property>
<style> <style>
@ -832,6 +840,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Add</property>
<property name="image">image15</property> <property name="image">image15</property>
<style> <style>
<class name="thin"/> <class name="thin"/>
@ -1446,7 +1455,7 @@
<property name="margin-bottom">6</property> <property name="margin-bottom">6</property>
<attributes> <attributes>
<attribute name="weight" value="bold"/> <attribute name="weight" value="bold"/>
<attribute name="foreground" value="#000000000000"/> <attribute name="foreground" value="#4d4d4d4d4d4d"/>
</attributes> </attributes>
</object> </object>
<packing> <packing>
@ -1537,7 +1546,7 @@
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="top-padding">5</property> <property name="top-padding">5</property>
<property name="bottom-padding">5</property> <property name="bottom-padding">5</property>
<property name="left-padding">12</property> <property name="left-padding">5</property>
<property name="right-padding">5</property> <property name="right-padding">5</property>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
@ -1575,6 +1584,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="halign">start</property> <property name="halign">start</property>
<property name="margin-start">4</property>
<property name="label" translatable="yes">Failsafe driver nVidia:</property> <property name="label" translatable="yes">Failsafe driver nVidia:</property>
<property name="xalign">0</property> <property name="xalign">0</property>
</object> </object>
@ -1589,6 +1599,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="halign">start</property> <property name="halign">start</property>
<property name="margin-start">4</property>
<property name="label" translatable="yes">Failsafe driver AMD/ATI:</property> <property name="label" translatable="yes">Failsafe driver AMD/ATI:</property>
<property name="xalign">0</property> <property name="xalign">0</property>
</object> </object>
@ -1691,7 +1702,7 @@
<property name="margin-end">5</property> <property name="margin-end">5</property>
<property name="margin-top">5</property> <property name="margin-top">5</property>
<property name="margin-bottom">5</property> <property name="margin-bottom">5</property>
<property name="spacing">10</property> <property name="orientation">vertical</property>
<child> <child>
<placeholder/> <placeholder/>
</child> </child>
@ -1737,7 +1748,6 @@
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="top-padding">5</property> <property name="top-padding">5</property>
<property name="bottom-padding">5</property> <property name="bottom-padding">5</property>
<property name="left-padding">5</property>
<property name="right-padding">5</property> <property name="right-padding">5</property>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
@ -1890,6 +1900,7 @@
<property name="spacing">5</property> <property name="spacing">5</property>
<child> <child>
<object class="GtkButton" id="extraOptirunChooseAppsButton"> <object class="GtkButton" id="extraOptirunChooseAppsButton">
<property name="visible">True</property>
<property name="sensitive">False</property> <property name="sensitive">False</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
@ -1903,6 +1914,7 @@
</child> </child>
<child> <child>
<object class="GtkButton" id="extraPrimusunChooseAppsButton"> <object class="GtkButton" id="extraPrimusunChooseAppsButton">
<property name="visible">True</property>
<property name="sensitive">False</property> <property name="sensitive">False</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
@ -1938,6 +1950,7 @@
<object class="GtkLabel" id="mainExtraFixGapLabel"> <object class="GtkLabel" id="mainExtraFixGapLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="margin-start">4</property>
<property name="label" translatable="yes">Fix frame gap (nVidia):</property> <property name="label" translatable="yes">Fix frame gap (nVidia):</property>
<property name="xalign">0</property> <property name="xalign">0</property>
</object> </object>
@ -1951,6 +1964,8 @@
<object class="GtkComboBoxText" id="mainExtraFixGapCombo"> <object class="GtkComboBoxText" id="mainExtraFixGapCombo">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="active">0</property>
<property name="popup-fixed-width">False</property>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">True</property>
@ -2399,8 +2414,8 @@
<property name="margin-end">5</property> <property name="margin-end">5</property>
<property name="margin-top">5</property> <property name="margin-top">5</property>
<property name="margin-bottom">5</property> <property name="margin-bottom">5</property>
<property name="label-xalign">0</property> <property name="label-xalign">0.009999999776482582</property>
<property name="shadow-type">none</property> <property name="shadow-type">in</property>
<child> <child>
<object class="GtkAlignment"> <object class="GtkAlignment">
<property name="visible">True</property> <property name="visible">True</property>
@ -2446,6 +2461,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="valign">start</property> <property name="valign">start</property>
<property name="margin-top">30</property>
<property name="label" translatable="yes">&lt;span size='15pt'&gt;&lt;span color='#1a5fb4'&gt;sdrtjhsrtjh:&lt;/span&gt; dfuykdftytdykkdfty&lt;/span&gt;</property> <property name="label" translatable="yes">&lt;span size='15pt'&gt;&lt;span color='#1a5fb4'&gt;sdrtjhsrtjh:&lt;/span&gt; dfuykdftytdykkdfty&lt;/span&gt;</property>
<property name="use-markup">True</property> <property name="use-markup">True</property>
<property name="xalign">0</property> <property name="xalign">0</property>

@ -1,4 +1,4 @@
# Language translations for ubl-settings-manager package. # Language translations for ubl-settings-video package.
# Copyright (C) 2022, UBTech LLC # Copyright (C) 2022, UBTech LLC
# This file is distributed under the same license as the ubl-settings-manager package. # This file is distributed under the same license as the ubl-settings-manager package.
# UBLinux Team <info@ublinux.com>, 2022 # UBLinux Team <info@ublinux.com>, 2022
@ -264,6 +264,10 @@ msgstr ""
msgid "Off" msgid "Off"
msgstr "" msgstr ""
#: source/ubl-settings-video-strings.h:44
msgid "Switched off"
msgstr ""
#: source/ubl-settings-video-strings.h:45 #: source/ubl-settings-video-strings.h:45
msgid "fbdev" msgid "fbdev"
msgstr "" msgstr ""
@ -316,6 +320,10 @@ msgstr ""
msgid "Installed" msgid "Installed"
msgstr "" msgstr ""
#: source/ubl-settings-video-strings.h:58
msgid "installed"
msgstr "установлено"
#: source/ubl-settings-video-strings.h:58 #: source/ubl-settings-video-strings.h:58
msgid "Package" msgid "Package"
msgstr "" msgstr ""
@ -324,6 +332,10 @@ msgstr ""
msgid "Supported Devices" msgid "Supported Devices"
msgstr "" msgstr ""
#: source/ubl-settings-video-strings.h:58
msgid "More"
msgstr ""
#: source/ubl-settings-video-strings.h:61 #: source/ubl-settings-video-strings.h:61
msgid "Accept" msgid "Accept"
msgstr "" msgstr ""
@ -364,7 +376,7 @@ msgstr ""
#: source/ubl-settings-video-strings.h:72 #: source/ubl-settings-video-strings.h:72
msgid "" msgid ""
"You will be redirected to documentation website where documentation is " "You will be redirected to documentation website where documentation is\n"
"translated and supported by community." "translated and supported by community."
msgstr "" msgstr ""
@ -475,3 +487,23 @@ msgstr ""
#: source/ubl-settings-video-strings.h:112 #: source/ubl-settings-video-strings.h:112
msgid "UBLinux module includes NVIDIA 510xx driver and utilities" msgid "UBLinux module includes NVIDIA 510xx driver and utilities"
msgstr "" msgstr ""
#: source/ubl-settings-video-strings.h:112
msgid "UBLinux package includes NVIDIA 340xx driver and utilities"
msgstr ""
#: source/ubl-settings-video-strings.h:112
msgid "UBLinux module includes NVIDIA 390xx driver and utilities"
msgstr ""
#: source/ubl-settings-video-strings.h:112
msgid "UBLinux package includes NVIDIA 470xx driver and utilities"
msgstr ""
#: source/ubl-settings-video-strings.h:112
msgid "UBLinux module includes NVIDIA 510xx driver and utilities"
msgstr ""
#: source/ubl-settings-video-strings.h:112
msgid "UBLinux package includes NVIDIA 510xx driver and utilities"
msgstr ""

@ -49,7 +49,11 @@ msgstr "Успешное сохранение глобальной конфиг
#: source/ubl-settings-video.h:37 #: source/ubl-settings-video.h:37
msgid "Saving to local configuration Succeeded" msgid "Saving to local configuration Succeeded"
msgstr "Успешное сохранение локальной конфигурации" msgstr "Успешно записана локальная конфигурация"
#: source/ubl-settings-video.h:37
msgid "Saving to local and global configuration Succeeded"
msgstr "Успешно записаны локальная и глобальная конфигурация"
#: source/ubl-settings-video-strings.h:1 #: source/ubl-settings-video-strings.h:1
msgid "Version:" msgid "Version:"
@ -61,7 +65,7 @@ msgstr "Версия менеджера настроек вывода изобр
#: source/ubl-settings-video-strings.h:2 source/ubl-settings-video-strings.h:5 #: source/ubl-settings-video-strings.h:2 source/ubl-settings-video-strings.h:5
msgid "Video adapter and display settings" msgid "Video adapter and display settings"
msgstr "Настройка вывода изображения и установка драйвера видеокарты" msgstr "Настройка видеоадаптера и дисплея"
#: source/ubl-settings-video-strings.h:2 #: source/ubl-settings-video-strings.h:2
msgid "Usage:" msgid "Usage:"
@ -271,6 +275,10 @@ msgstr "Включить"
msgid "Off" msgid "Off"
msgstr "Выключить" msgstr "Выключить"
#: source/ubl-settings-video-strings.h:44
msgid "Switched off"
msgstr "Отключено"
#: source/ubl-settings-video-strings.h:45 #: source/ubl-settings-video-strings.h:45
msgid "fbdev" msgid "fbdev"
msgstr "fbdev" msgstr "fbdev"
@ -309,7 +317,7 @@ msgstr "Сохранить в глобальную конфигурацию"
#: source/ubl-settings-video-strings.h:54 #: source/ubl-settings-video-strings.h:54
msgid "Save to local configuration" msgid "Save to local configuration"
msgstr "Схоранить в локальную конфигурацию" msgstr "Сохранить в локальную конфигурацию"
#: source/ubl-settings-video-strings.h:55 #: source/ubl-settings-video-strings.h:55
msgid "Documentation" msgid "Documentation"
@ -327,6 +335,14 @@ msgstr "Установлено"
msgid "Package" msgid "Package"
msgstr "Пакет" msgstr "Пакет"
#: source/ubl-settings-video-strings.h:58
msgid "More"
msgstr "Подробнее"
#: source/ubl-settings-video-strings.h:58
msgid "installed"
msgstr "установлен"
#: source/ubl-settings-video-strings.h:59 #: source/ubl-settings-video-strings.h:59
msgid "Supported Devices" msgid "Supported Devices"
msgstr "Устройства" msgstr "Устройства"
@ -373,10 +389,10 @@ msgstr "Вы хотите прочитать справку в Сети?"
#: source/ubl-settings-video-strings.h:72 #: source/ubl-settings-video-strings.h:72
msgid "" msgid ""
"You will be redirected to documentation website where documentation is " "You will be redirected to documentation website where documentation is\n"
"translated and supported by community." "translated and supported by community."
msgstr "" msgstr ""
"Вы будете перенаправлены на сайт с документацией где страницы помощи " "Вы будете перенаправлены на сайт с документацией где страницы помощи\n"
"переводятся и поддерживаются сообществом." "переводятся и поддерживаются сообществом."
#: source/ubl-settings-video-strings.h:73 #: source/ubl-settings-video-strings.h:73
@ -389,7 +405,7 @@ msgstr "Информация"
#: source/ubl-settings-video-strings.h:75 #: source/ubl-settings-video-strings.h:75
msgid "Drivers" msgid "Drivers"
msgstr "Драйвера" msgstr "Драйвер"
#: source/ubl-settings-video-strings.h:76 #: source/ubl-settings-video-strings.h:76
msgid "Main settings" msgid "Main settings"
@ -410,7 +426,7 @@ msgstr "Справка"
#: source/ubl-settings-video-strings.h:81 #: source/ubl-settings-video-strings.h:81
msgid "UBLinux Settings Web View" msgid "UBLinux Settings Web View"
msgstr "" msgstr "Встроенный браузер UBLinux"
#: source/ubl-settings-video-strings.h:95 #: source/ubl-settings-video-strings.h:95
msgid "Error: Port must be chosen to save" msgid "Error: Port must be chosen to save"
@ -422,23 +438,23 @@ msgstr "Настройки экрана сохранены"
#: source/ubl-settings-video-strings.h:98 #: source/ubl-settings-video-strings.h:98
msgid "Global configuration loading succseeded." msgid "Global configuration loading succseeded."
msgstr "Успешная загрузка глобальной конфигурации" msgstr "Успешно загружена глобальная конфигураци"
#: source/ubl-settings-video-strings.h:99 #: source/ubl-settings-video-strings.h:99
msgid "Local configuration loading succseeded." msgid "Local configuration loading succseeded."
msgstr "Успешная загрузка локальной конфигурации" msgstr "Успешно загружена локальная конфигураци"
#: source/ubl-settings-video-strings.h:101 #: source/ubl-settings-video-strings.h:101
msgid "Local and global configuration saving succseeded." msgid "Local and global configuration saving succseeded."
msgstr "Успешное сохранение глобальной и локальной конфигурации" msgstr "Успешно записаны локальная и глобальная конфигурация"
#: source/ubl-settings-video-strings.h:102 #: source/ubl-settings-video-strings.h:102
msgid "Global configuration saving succseeded." msgid "Global configuration saving succseeded."
msgstr "Успешное сохранение глобальной конфигурации" msgstr "Успешно записана глобальная конфигурация"
#: source/ubl-settings-video-strings.h:103 #: source/ubl-settings-video-strings.h:103
msgid "Local configuration saving succseeded." msgid "Local configuration saving succseeded."
msgstr "Успешная загрузка локальной конфигурации" msgstr "Успешно записана локальная конфигурация"
#: source/ubl-settings-video-strings.h:105 #: source/ubl-settings-video-strings.h:105
msgid "Yes" msgid "Yes"
@ -486,14 +502,29 @@ msgstr "Модули ядра"
#~ msgstr "DMPS выключен" #~ msgstr "DMPS выключен"
msgid "UBLinux module includes NVIDIA 340xx driver and utilities" msgid "UBLinux module includes NVIDIA 340xx driver and utilities"
msgstr "UBLinux пакет драйвера и утилиты NVIDIA 340xx" msgstr "UBLinux пакет с модулем драйвера и утилиты NVIDIA 340xx"
msgid "UBLinux module includes NVIDIA 390xx driver and utilities" msgid "UBLinux module includes NVIDIA 390xx driver and utilities"
msgstr "UBLinux пакет драйвера и утилиты NVIDIA 390xx" msgstr "UBLinux пакет с модулем драйвера и утилиты NVIDIA 390xx"
msgid "UBLinux module includes NVIDIA 470xx driver and utilities" msgid "UBLinux module includes NVIDIA 470xx driver and utilities"
msgstr "UBLinux пакет драйвера и утилиты NVIDIA 470xx" msgstr "UBLinux пакет с модулем драйвера и утилиты NVIDIA 470xx"
msgid "UBLinux module includes NVIDIA 510xx driver and utilities" msgid "UBLinux module includes NVIDIA 510xx driver and utilities"
msgstr "UBLinux пакет драйвера и утилиты NVIDIA 510xx" msgstr "UBLinux пакет с модулем драйвера и утилиты NVIDIA 510xx"
#: source/ubl-settings-video-strings.h:112
msgid "UBLinux package includes NVIDIA 340xx driver and utilities"
msgstr "UBLinux пакет драйвера и утилиты NVIDIA 340xx"
#: source/ubl-settings-video-strings.h:112
msgid "UBLinux package includes NVIDIA 390xx driver and utilities"
msgstr "UBLinux пакет драйвера и утилиты NVIDIA 390xx"
#: source/ubl-settings-video-strings.h:112
msgid "UBLinux package includes NVIDIA 470xx driver and utilities"
msgstr "UBLinux пакет драйвера и утилиты NVIDIA 470xx"
#: source/ubl-settings-video-strings.h:112
msgid "UBLinux package includes NVIDIA 510xx driver and utilities"
msgstr "UBLinux пакет драйвера и утилиты NVIDIA 510xx"

@ -1,9 +1,9 @@
OS_VERSION_ID;DRV_PAСKAGE_UBM;DRV_PAСKAGE;DRV_NAME;DRV_DESCRIPTION;DRV_SUPPORT OS_VERSION_ID;DRV_PAСKAGE_UBM;DRV_PAСKAGE;DRV_NAME;DRV_DESCRIPTION;DRV_SUPPORT
2204;ubm-nvidia-340;;nvidia-340;UBLinux module includes NVIDIA 340xx driver and utilities;Драйвер видеокарт nVidia серий 8XXX, 9XXX, 1XX, 2XX, 3XX, 4XX, 5XX, 6XX, 7XX 2204;ubm-nvidia-340;;nvidia-340;UBLinux module includes NVIDIA 340xx driver and utilities;Драйвер видеокарт nVidia серий 8XXX, 9XXX, 1XX, 2XX, 3XX, 4XX, 5XX, 6XX, 7XX
2204;;nvidia-340xx-dkms;nvidia-340;UBLinux module includes NVIDIA 340xx driver and utilities;Драйвер видеокарт nVidia серий 8XXX, 9XXX, 1XX, 2XX, 3XX, 4XX, 5XX, 6XX, 7XX 2204;;nvidia-340xx-dkms;nvidia-340;UBLinux package includes NVIDIA 340xx driver and utilities;Драйвер видеокарт nVidia серий 8XXX, 9XXX, 1XX, 2XX, 3XX, 4XX, 5XX, 6XX, 7XX
2204;ubm-nvidia-390;;nvidia-390;UBLinux module includes NVIDIA 390xx driver and utilities;Драйвер видеокарт nVidia серий 6XX, 7XX, 9XX, 10XX, 16XX 2204;ubm-nvidia-390;;nvidia-390;UBLinux module includes NVIDIA 390xx driver and utilities;Драйвер видеокарт nVidia серий 6XX, 7XX, 9XX, 10XX, 16XX
2204;;nvidia-390xx-dkms;nvidia-390;UBLinux module includes NVIDIA 390xx driver and utilities;Драйвер видеокарт nVidia серий 6XX, 7XX, 9XX, 10XX, 16XX 2204;;nvidia-390xx-dkms;nvidia-390;UBLinux package includes NVIDIA 390xx driver and utilities;Драйвер видеокарт nVidia серий 6XX, 7XX, 9XX, 10XX, 16XX
2204;ubm-nvidia-470;;nvidia-470;UBLinux module includes NVIDIA 470xx driver and utilities;Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX 2204;ubm-nvidia-470;;nvidia-470;UBLinux module includes NVIDIA 470xx driver and utilities;Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX
2204;;nvidia-470xx-dkms;nvidia-470;UBLinux module includes NVIDIA 470xx driver and utilities;Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX 2204;;nvidia-470xx-dkms;nvidia-470;UBLinux package includes NVIDIA 470xx driver and utilities;Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX
2204;ubm-nvidia-510;;nvidia-510;UBLinux module includes NVIDIA 510xx driver and utilities;Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX 2204;ubm-nvidia-510;;nvidia-510;UBLinux module includes NVIDIA 510xx driver and utilities;Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX
2204;;nvidia-510xx-dkms;nvidia-510;UBLinux module includes NVIDIA 510xx driver and utilities;Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX 2204;;nvidia-510xx-dkms;nvidia-510;UBLinux package includes NVIDIA 510xx driver and utilities;Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX
1 OS_VERSION_ID DRV_PAСKAGE_UBM DRV_PAСKAGE DRV_NAME DRV_DESCRIPTION DRV_SUPPORT
2 2204 ubm-nvidia-340 nvidia-340 UBLinux module includes NVIDIA 340xx driver and utilities Драйвер видеокарт nVidia серий 8XXX, 9XXX, 1XX, 2XX, 3XX, 4XX, 5XX, 6XX, 7XX
3 2204 nvidia-340xx-dkms nvidia-340 UBLinux module includes NVIDIA 340xx driver and utilities UBLinux package includes NVIDIA 340xx driver and utilities Драйвер видеокарт nVidia серий 8XXX, 9XXX, 1XX, 2XX, 3XX, 4XX, 5XX, 6XX, 7XX
4 2204 ubm-nvidia-390 nvidia-390 UBLinux module includes NVIDIA 390xx driver and utilities Драйвер видеокарт nVidia серий 6XX, 7XX, 9XX, 10XX, 16XX
5 2204 nvidia-390xx-dkms nvidia-390 UBLinux module includes NVIDIA 390xx driver and utilities UBLinux package includes NVIDIA 390xx driver and utilities Драйвер видеокарт nVidia серий 6XX, 7XX, 9XX, 10XX, 16XX
6 2204 ubm-nvidia-470 nvidia-470 UBLinux module includes NVIDIA 470xx driver and utilities Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX
7 2204 nvidia-470xx-dkms nvidia-470 UBLinux module includes NVIDIA 470xx driver and utilities UBLinux package includes NVIDIA 470xx driver and utilities Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX
8 2204 ubm-nvidia-510 nvidia-510 UBLinux module includes NVIDIA 510xx driver and utilities Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX
9 2204 nvidia-510xx-dkms nvidia-510 UBLinux module includes NVIDIA 510xx driver and utilities UBLinux package includes NVIDIA 510xx driver and utilities Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX
Loading…
Cancel
Save