From 26d7cf3afd59614edddcaf27a51dfa2947bcb463 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 15 Apr 2024 15:18:13 +0600 Subject: [PATCH] Minor fixes --- Makefile | 10 +++--- source/ubl-settings-video.c | 72 +++++++++++++++++++++++++++---------- source/ubl-settings-video.h | 6 ++-- source/ubl-utils.c | 22 ++++++++---- source/ubl-utils.h | 2 ++ video-drivers.csv | 7 +++- 6 files changed, 86 insertions(+), 33 deletions(-) diff --git a/Makefile b/Makefile index 5b92e3f..7a9c535 100644 --- a/Makefile +++ b/Makefile @@ -90,6 +90,8 @@ uninstall: @$(RM) "${DESTDIR}${PREFIX}/bin/${PKGNAME}" @$(RM) "${DESTDIR}${PREFIX}/share/applications/${PKGNAME}.desktop" @$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/com.ublinux.${PKGNAME}.svg" + @$(RM) "${DESTDIR}/usr/share/${PKGNAME}/csv/resolutions.csv" + @$(RM) "${DESTDIR}/usr/share/${PKGNAME}/csv/video-drivers.csv" @$(RM) "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}${PKGIDENT}.policy" @$(RM) -rdf "${DESTDIR}${PREFIX}/share/${PKGNAME}" @if [ -z ${DESTDIR} ]; then \ @@ -122,16 +124,16 @@ install: check uninstall @install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/emblems/" "com.ublinux.${PKGNAME}.vmware-logo.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/${PKGNAME}/csv/" "resolutions.csv" - @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/csv/" "video-drivers.csv" + @install -Dm644 -t "${DESTDIR}/usr/share/${PKGNAME}/csv/" "resolutions.csv" + @install -Dm644 -t "${DESTDIR}/usr/share/${PKGNAME}/csv/" "video-drivers.csv" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop" @install -Dm755 -t "${DESTDIR}${PREFIX}/bin/" "${CMAKE_BUILD_DIR}/${PKGNAME}" @install -Dm644 "com.ublinux.${PKGNAME}.policy" "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}${PKGIDENT}.policy" @sed -e '\|annotate key=|s|/usr/bin|${PREFIX}/bin|' -e '/action id=/s/\.run/${PKGIDENT}\.run/' -i ${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}${PKGIDENT}.policy @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}/usr/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \ update-desktop-database --quiet &>/dev/null || true; \ - [ -d "${DESTDIR}${PREFIX}/share/applications" ] && touch "${DESTDIR}${PREFIX}/share/applications" &>/dev/null || true; \ + [ -d "${DESTDIR}/usr/share/applications" ] && touch "${DESTDIR}${PREFIX}/share/applications" &>/dev/null || true; \ fi @echo "Install: OK" diff --git a/source/ubl-settings-video.c b/source/ubl-settings-video.c index e94fffa..257d197 100644 --- a/source/ubl-settings-video.c +++ b/source/ubl-settings-video.c @@ -240,8 +240,18 @@ void on_driver_selection_change(GtkWidget *self, widgets_dict *widgets){ 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){ + char *module, *package; + gtk_tree_model_get(gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->driversTreeView)),&iter,0,&installed,1,&module,2,&package,-1); + char *target; + if (strcmp(module,"")) + target = module; + else + target = package; + if (strcmp(target,"xf86-video-intel")||strcmp(target,"lib32-vulkan-intel")||strcmp(target,"mesa")){ + gtk_widget_set_sensitive(widgets->driversInstallButton,0); + gtk_widget_set_sensitive(widgets->driversDeleteButton,0); + } + else if (installed==1){ gtk_widget_set_sensitive(widgets->driversInstallButton,0); gtk_widget_set_sensitive(widgets->driversDeleteButton,1); } else { @@ -1093,9 +1103,6 @@ void yon_proprietary_local_get(){ 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_get(!videoconfig.proprietary||&videoconfig.proprietary,pack))){ - // yon_dictionary_add_or_create_if_exists_with_data(videoconfig.proprietary,pack,rtn[dr_desc]); - // } } } @@ -1115,25 +1122,54 @@ dictionary *yon_proprieary_get(){ int size=0; config_str drivers=NULL; config_str rtn=NULL; + int adapter_size; + char flag=0; + config_str adapter = yon_config_load(get_adapter_info,&adapter_size); + for (int i=0;i2){ + if (strcmp(current[0],"")){ + if (!!strstr(current[0],"nvidia")&&((flag >> 2) & 1)||!!strstr(current[0],"amdgpu")&&((flag >> 1) & 1)||(!strcmp(current[0],"xf86-video-intel")||!strcmp(current[0],"mesa"))&&((flag >> 1) & 1)||!!strstr(current[0],"lib32-vulkan-intel")&&((flag >> 0) & 1)){ + int target = yon_char_parsed_check_exist(drivers,drivers_size,current[0]); + if (target>-1){ + yon_dictionary_add_or_create_if_exists_with_data(videoconfig.proprietary,drivers[target],rtn[di]); + } else { + yon_dictionary_add_or_create_if_exists_with_data(videoconfig.proprietary,current[0],rtn[di]); + } + } + } else if (strcmp(current[1],"")){ + if (!!strstr(current[1],"nvidia")&&((flag >> 2) & 1)||!!strstr(current[1],"amdgpu")&&((flag >> 1) & 1)||(!strcmp(current[1],"xf86-video-intel")||!strcmp(current[1],"mesa")||!!strstr(current[1],"lib32-vulkan-intel"))&&((flag >> 0) & 1)){ + int target = yon_char_parsed_check_exist(drivers,drivers_size,current[1]); + if (target>-1){ + yon_dictionary_add_or_create_if_exists_with_data(videoconfig.proprietary,drivers[target],rtn[di]); + } else { + yon_dictionary_add_or_create_if_exists_with_data(videoconfig.proprietary,current[1],rtn[di]); + } + } } } + yon_char_parsed_free(current,current_size); } if (videoconfig.proprietary){ yon_gtk_list_store_fill_with_proprietaries(videoconfig.list); @@ -1191,7 +1227,7 @@ void yon_gtk_list_store_fill_with_proprietaries(GtkListStore *list){ else{ 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); - if (yon_char_parsed_check_exist(installed,inssize,str[1])!=-1){ + if (yon_char_parsed_check_exist(installed,inssize,str[1])!=-1||!strcmp(str[1],"mesa")||!strcmp(str[1],"lib32-vulkan-intel")||!strcmp(str[1],"xf86-video-intel")){ gtk_list_store_set(videoconfig.list2,&iter,0,1,-1); } } @@ -1353,8 +1389,6 @@ void yon_monitor_config_update(monitorconfig* monitor, char *port, char *config_ monitor->enable=1; if (yon_char_parsed_check_exist(cnf,size,"disable")!=-1) monitor->enable=0; - // if (yon_char_parsed_check_exist(cnf,size,"ignore")==1) - // monitor->enable=0; if (yon_char_parsed_check_exist(cnf,size,"LeftOf:")!=-1) monitor->position=1; if (yon_char_parsed_check_exist(cnf,size,"lo:")!=-1) diff --git a/source/ubl-settings-video.h b/source/ubl-settings-video.h index db6b7c7..9a629d3 100644 --- a/source/ubl-settings-video.h +++ b/source/ubl-settings-video.h @@ -46,7 +46,7 @@ #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,} 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" #define get_resolutions_supportable_command "cut -d, -f1- /usr/share/ubl-settings-video/csv/resolutions.csv |sed 's/,/ /g'" @@ -76,8 +76,8 @@ #define get_version_proprietary_command "grep \"VERSION_ID=\" /etc/os-release | cut -d= -f2" -#define get_proprietary_drivers_command " pacman -Ssy ubm-nvidia-.* |grep -oE \"[a-zA-Z-]{1,}-nvidia-[a-zA-Z0-9-]{1,}\"" -#define get_proprietary_drivers_local_command " pacman -Qq |grep -E \"ubm-nvidia-\"" +#define get_proprietary_drivers_command "pacman -Ssyq 'ubm-nvidia-.*|amdgpu|^nvidia-[0-9]{1,}[a-zA-Z]{0,}-dkms'|grep -E 'nvidia|^vulkan-|^amdgpu-pro-libgl'" +#define get_proprietary_drivers_local_command "pacman -Qq |grep -E 'nvidia|^vulkan-amdgpu|^amdgpu-pro-libgl'" #define get_proprietary_installed_command yon_char_unite(" 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'" diff --git a/source/ubl-utils.c b/source/ubl-utils.c index 59d440a..e01d9a4 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -711,17 +711,27 @@ char **yon_char_parsed_rip(char **char_string, int *size, int item_to_delete){ * элемент [param] */ int yon_char_parsed_check_exist(char **parameters, int size, char *param){ - - for (int i=0;i0){ + for (int i=0;i