#include #include #include #include #include #include "ubl-util-standard.c" #define cssPath "/usr/share/ubl-settings-info/css/ubl-settings-info.css" #define gladePath "/usr/share/ubl-settings-info/ui/ubl-settings-info.glade" #define HeadBackgroundImagePath "/usr/share/ubl-settings-info/images/logo-background.png" #define LogoImagePath "/usr/share/ubl-settings-info/images/ublinux-logo.svg" #define LocaleName "ubl-settings-info" #define LocalePath "/usr/share/locale" typedef char* string; string version_application = "1.3"; #define _(String) gettext(String) char *yon_char_get_augumented(char *source, char *append){ int size=strlen(source)+strlen(append)+1; char *final=malloc(size); memset(final,0,size); sprintf(final,"%s%s",source,append); return final; } char *yon_cut(char *source, int size, int startpos){ char *cut=NULL; cut=malloc(size+1); memset(cut,0,size+1); memcpy(cut,source+startpos,size); return cut; } void on_about(GtkWidget *button){ GtkBuilder *builder = gtk_builder_new_from_file(gladePath); GtkWidget *AboutButtons = GTK_WIDGET(gtk_builder_get_object(builder,"AboutButtons")); GtkWidget *About = GTK_WIDGET(gtk_builder_get_object(builder, "About")); GtkWidget *HeaderAboutTopic = GTK_WIDGET(gtk_builder_get_object(builder, "headerAboutTopic")); gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(About),version_application); gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(About),_("Basic System Information")); gtk_about_dialog_set_program_name(GTK_ABOUT_DIALOG(About),_("System Information")); gtk_widget_show(GTK_WIDGET(gtk_builder_get_object(builder,"About"))); gtk_about_dialog_set_website_label(GTK_ABOUT_DIALOG(About),_("Project Home Page")); gtk_label_set_text(GTK_LABEL(HeaderAboutTopic),_("About ubl-settings-info")); gtk_widget_set_visible(AboutButtons,0); } void yon_on_window_close_dont_destroy(){ } int main(int argc, char *argv[]){ int argsc=0; char *arv=""; char **argsv=&arv; GError *err=NULL; gtk_init(&argsc, &argsv); setlocale(LC_ALL, ""); bindtextdomain (LocaleName, LocalePath); textdomain (LocaleName); GtkBuilder *builder = gtk_builder_new_from_file(gladePath); GtkWidget *plugBox = GTK_WIDGET(gtk_builder_get_object(builder, "plugBox")); GtkWidget *labelInfo = GTK_WIDGET(gtk_builder_get_object(builder, "InfoLabel")); GtkWidget *iconInfo = GTK_WIDGET(gtk_builder_get_object(builder, "InfoIcon")); GtkWidget *headLabel = GTK_WIDGET(gtk_builder_get_object(builder, "headLabel")); GtkWidget *HeaderTopic = GTK_WIDGET(gtk_builder_get_object(builder, "headerTopic")); GtkWidget *AboutButton = GTK_WIDGET(gtk_builder_get_object(builder,"MenuItemAbout")); GtkWidget *buttonSettings = GTK_WIDGET(gtk_builder_get_object(builder,"buttonSettings")); GtkWidget *headBackgroundIcon = GTK_WIDGET(gtk_builder_get_object(builder,"HeadBackgroundImage")); GtkWidget *headOverlay = GTK_WIDGET(gtk_builder_get_object(builder,"HeadOverlay")); GtkWidget *headbox = GTK_WIDGET(gtk_builder_get_object(builder,"boxColor")); gtk_image_set_from_file(GTK_IMAGE(headBackgroundIcon),HeadBackgroundImagePath); gtk_overlay_add_overlay(GTK_OVERLAY(headOverlay),headbox); gtk_label_set_text(GTK_LABEL(HeaderTopic),_("System Information")); gtk_label_set_text(GTK_LABEL(headLabel),_("System Information")); g_signal_connect(G_OBJECT(AboutButton), "activate", G_CALLBACK(on_about),NULL); gtk_menu_item_set_label(GTK_MENU_ITEM(AboutButton),_("About")); gtk_image_set_from_pixbuf(GTK_IMAGE(iconInfo),gdk_pixbuf_new_from_file_at_size(LogoImagePath,256,256,&err)); if (err){ printf("%s\n",err->message); g_error_free(err); } GtkCssProvider *css=gtk_css_provider_new(); gtk_css_provider_load_from_path(css,cssPath,&err); if (err){ printf("%s\n",err->message); g_error_free(err); } gtk_style_context_add_provider_for_screen(gdk_screen_get_default(), GTK_STYLE_PROVIDER(css), -1); FILE *fp; char path[1035]; char *loc=setlocale(LC_ALL,NULL); if (strcmp(loc,"ru_RU.UTF-8")==0) fp = popen("screenfetch -N -n | sed 's/OS:/Система:/' | sed 's/Kernel:/Ядро:/g' | sed 's/Uptime:/Время работы:/g' | \ sed 's/Packages:/Установлено пакетов:/g' | sed 's/Shell:/Оболочка:/g' | sed 's/Resolution:/Разрешение:/g' | sed 's/DE:/Среда рабочего стола:/g' | \ sed 's/WM:/Оконный менеджер:/g' | sed 's/WM Theme:/Тема оконного менеджера:/g' | sed 's/GTK Theme:/Тема GTK:/g' | sed 's/Icon Theme:/Тема значков:/g' | sed 's/Font:/Шрифт:/g' | \ sed 's/Disk:/Диск:/g' | sed 's/RAM:/Оперативная память:/g'", "r"); else fp = popen("screenfetch -n -w -N", "r"); if (fp == NULL) { printf("Failed to run command\n" ); exit(1); } char *line=NULL; line=""; char *prevline=""; char *pth; char *preph=""; line=""; while (fgets(path, sizeof(path),fp)!=NULL){ line=strstr(path,": "); if (line!=NULL){ line=yon_cut(line,strlen(line),1); int size=strlen(path)-strlen(line)+1; pth=yon_cut(path,size,0); pth=yon_char_get_augumented("",pth); pth=yon_char_get_augumented(pth,""); line=yon_char_get_augumented(pth,line); } else { line=path; pth="\n"; line=yon_char_get_augumented(pth,line); if (strlen(line)>40){ char *fnd=strstr(line," "); *fnd='\n'; } } prevline=yon_char_get_augumented(prevline,line); } prevline=yon_char_get_augumented(prevline,"");; gtk_label_set_text(GTK_LABEL(labelInfo),prevline); gtk_label_set_markup (GTK_LABEL(labelInfo),prevline);; int socket_id=0; int socket_ext_id=0; int socket_trd_id=0; int option_index=0; int textsize=0; int pointer=0; static struct option long_options[] = { {"socket-id", 1, 0, 's'}, {"socket-ext-id", 1, 0, 'e'}, {"socket-trd-id", 1, 0, 't'}, }; int socket_find; for (int i=0;i