|
|
#include <gtk/gtk.h>
|
|
|
#include <gtk/gtkx.h>
|
|
|
#include "ubl-utils.h"
|
|
|
#include <locale.h>
|
|
|
#include <stdio.h>
|
|
|
#include <unistd.h>
|
|
|
#include <stdlib.h>
|
|
|
#include <libintl.h>
|
|
|
#include <getopt.h>
|
|
|
#include <libintl.h>
|
|
|
#include <vte/vte.h>
|
|
|
#include "ubl-cmake.h"
|
|
|
#include "sys/sysinfo.h"
|
|
|
|
|
|
#ifdef WEBKIT_FOUND
|
|
|
#include <webkit2/webkit2.h>
|
|
|
#endif
|
|
|
#include "ubl-strings.h"
|
|
|
#define config_path yon_char_unite("/home/",yon_ubl_root_user_get(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL)
|
|
|
#define WIKI_LINK "https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubl-settings-resourcequota"
|
|
|
|
|
|
#define _(String) gettext(String)
|
|
|
|
|
|
#define glade_path "/com/ublinux/ui/ubl-settings-resourcequota.glade"
|
|
|
#define glade_filters_path "/com/ublinux/ui/ubl-settings-resourcequota-filters.glade"
|
|
|
#define glade_quota_path "/com/ublinux/ui/ubl-settings-resourcequota-quota.glade"
|
|
|
#define banner_path "/com/ublinux/images/ubl-settings-resourcequota-banner.png"
|
|
|
#define CssPath "/com/ublinux/css/ubl-settings-resourcequota.css"
|
|
|
|
|
|
#define LocalePath "/usr/share/locale"
|
|
|
#define LocaleName "ubl-settings-resourcequota"
|
|
|
|
|
|
#define load_global_command "ubconfig --default --source global get security CGROUP_QUOTA[*]"
|
|
|
#define load_local_command "ubconfig --default --source system get security CGROUP_QUOTA[*]"
|
|
|
#define save_global_command "ubconfig --default --target global set security"
|
|
|
#define save_local_command "ubconfig --default --target system set security"
|
|
|
#define save_command "ubconfig set security "
|
|
|
#define remove_command "ubconfig remove security "
|
|
|
#define remove_global_command "ubconfig --target global --noexecute remove security "
|
|
|
#define remove_local_command "ubconfig --target system remove security "
|
|
|
#define get_devices_command "findmnt -lo source,target,fstype,label,size -t ext4 |grep -vE \"zram|\\]|\\[|SOURCE\""
|
|
|
#define get_processes_tree_command "systemd-cgls --no-page"
|
|
|
#define get_dispatcher_command "systemd-cgtop"
|
|
|
#define get_information_command "systemctl status "
|
|
|
|
|
|
#define CGROUP_QUOTA(name) yon_char_unite("CGROUP_QUOTA[",name,"]",NULL)
|
|
|
|
|
|
typedef char *string;
|
|
|
string version_application;
|
|
|
|
|
|
char *local;
|
|
|
|
|
|
typedef struct {
|
|
|
int always_open_documentation;
|
|
|
int win_pos_x;
|
|
|
int win_pos_y;
|
|
|
int win_width;
|
|
|
int win_height;
|
|
|
|
|
|
int socket_id;
|
|
|
int load_socket_id;
|
|
|
int save_socket_id;
|
|
|
|
|
|
int lock_help;
|
|
|
int lock_save_local;
|
|
|
int lock_save_global;
|
|
|
int lock_load_global;
|
|
|
GtkListStore *list;
|
|
|
long avaliable_ram;
|
|
|
long cores;
|
|
|
|
|
|
config_str users;
|
|
|
int users_size;
|
|
|
config_str processes;
|
|
|
int processes_size;
|
|
|
config_str slices;
|
|
|
int slices_size;
|
|
|
|
|
|
char *last_info;
|
|
|
} config;
|
|
|
|
|
|
typedef struct {
|
|
|
//Standard
|
|
|
GtkWidget *Window;
|
|
|
GtkWidget *HatLabel;
|
|
|
GtkWidget *PlugBox;
|
|
|
|
|
|
GtkWidget *HeadOverlay;
|
|
|
GtkWidget *HeadImage;
|
|
|
GtkWidget *HeadBox;
|
|
|
GtkWidget *HeadTitleLabel;
|
|
|
GtkWidget *HeadInfoLabel;
|
|
|
|
|
|
GtkWidget *StatusBox;
|
|
|
GtkWidget *StatusIcon;
|
|
|
GtkWidget *StatusLabel;
|
|
|
|
|
|
GtkWidget *SaveLabel;
|
|
|
GtkWidget *SaveMenuItem;
|
|
|
GtkWidget *SaveGlobalMenuItem;
|
|
|
GtkWidget *SaveLocalMenuItem;
|
|
|
GtkWidget *RightBox;
|
|
|
|
|
|
GtkWidget *LoadLabel;
|
|
|
GtkWidget *LoadGlobalMenuItem;
|
|
|
GtkWidget *LoadLocalMenuItem;
|
|
|
GtkWidget *LeftBox;
|
|
|
|
|
|
GtkWidget *DocumentationMenuItem;
|
|
|
GtkWidget *AboutMenuItem;
|
|
|
// Custom
|
|
|
GtkWidget *FiltersButton;
|
|
|
GtkWidget *InformationButton;
|
|
|
GtkWidget *RemoveButton;
|
|
|
GtkWidget *EditButton;
|
|
|
GtkWidget *AddButton;
|
|
|
GtkWidget *MainTree;
|
|
|
GtkWidget *MainNotebook;
|
|
|
|
|
|
GtkWidget *DispatcherUpdateCheck;
|
|
|
GtkWidget *DispatcherUpdateSpin;
|
|
|
GtkWidget *DispatcherUpdateButton;
|
|
|
GtkWidget *DispatcherTerminal;
|
|
|
|
|
|
GtkWidget *ShowCoreCheck;
|
|
|
GtkWidget *ShowAllCheck;
|
|
|
GtkWidget *ProcessesUpdateButton;
|
|
|
GtkWidget *ProcessesTerminal;
|
|
|
|
|
|
GtkWidget *TargetTypeCombo;
|
|
|
GtkWidget *TargetCombo;
|
|
|
GtkWidget *InformationUpdateButton;
|
|
|
GtkWidget *InformationTerminal;
|
|
|
} main_window;
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
GtkWidget *Window;
|
|
|
|
|
|
GtkWidget *HatText;
|
|
|
GtkWidget *HeaderText;
|
|
|
GtkWidget *InfoText;
|
|
|
GtkWidget *AlwaysOpenCheck;
|
|
|
|
|
|
GtkWidget *CloseButton;
|
|
|
GtkWidget *AcceptButton;
|
|
|
} documentation_confirmation_window;
|
|
|
|
|
|
typedef struct {
|
|
|
GtkWidget *Window;
|
|
|
|
|
|
GtkWidget *TitleLabel;
|
|
|
GtkWidget *BlockUiBox;
|
|
|
GtkWidget *EditQuotaTargetBox;
|
|
|
GtkWidget *AddQuotaTargetBox;
|
|
|
GtkWidget *TargetTypeCombo;
|
|
|
GtkWidget *TargetCombo;
|
|
|
GtkWidget *TargetLabel;
|
|
|
GtkWidget *SoftRestrictionCheck;
|
|
|
GtkWidget *SoftRestrictionSpin;
|
|
|
GtkWidget *SoftRestrictionCombo;
|
|
|
GtkWidget *HardRestrictionCheck;
|
|
|
GtkWidget *HardRestrictionSpin;
|
|
|
GtkWidget *HardRestrictionCombo;
|
|
|
GtkWidget *PagingLimitCheck;
|
|
|
GtkWidget *PagingLimitSpin;
|
|
|
GtkWidget *PagingLimitCombo;
|
|
|
GtkWidget *CpuLimitCheck;
|
|
|
GtkWidget *CpuLimitSpin;
|
|
|
GtkWidget *DeviceLimitCombo;
|
|
|
GtkWidget *DeviceLimitReadCheck;
|
|
|
GtkWidget *DeviceLimitReadSpin;
|
|
|
GtkWidget *DeviceLimitReadCombo;
|
|
|
GtkWidget *DeviceLimitWriteCheck;
|
|
|
GtkWidget *DeviceLimitWriteSpin;
|
|
|
GtkWidget *DeviceLimitWriteCombo;
|
|
|
GtkWidget *ApplyChangesButton;
|
|
|
GtkWidget *ManualInputEntry;
|
|
|
GtkWidget *CancelButton;
|
|
|
GtkWidget *SaveButton;
|
|
|
dictionary *devices;
|
|
|
} quota_window;
|
|
|
|
|
|
typedef struct {
|
|
|
GtkWidget *Window;
|
|
|
|
|
|
GtkWidget *QuotaTypeCheck;
|
|
|
GtkWidget *QuotaTargetCheck;
|
|
|
GtkWidget *SoftRamLimitCheck;
|
|
|
GtkWidget *HardRamLimitCheck;
|
|
|
GtkWidget *PagingLimitCheck;
|
|
|
GtkWidget *CpuLimitCheck;
|
|
|
GtkWidget *ReadLimitCheck;
|
|
|
GtkWidget *WriteLimitCheck;
|
|
|
GtkWidget *CancelButton;
|
|
|
GtkWidget *AcceptButton;
|
|
|
} filters_window;
|
|
|
|
|
|
typedef struct {
|
|
|
char *read;
|
|
|
char *write;
|
|
|
} device_limits;
|
|
|
|
|
|
main_window *setup_window(); |