@ -1,6 +1,5 @@
# include <gtk/gtk.h>
# include <gtk/gtk.h>
# include <gtk/gtkx.h>
# include <gtk/gtkx.h>
# include "ubl-utils.h"
# include <locale.h>
# include <locale.h>
# include <stdio.h>
# include <stdio.h>
# include <unistd.h>
# include <unistd.h>
@ -12,7 +11,9 @@
# include <sys/types.h>
# include <sys/types.h>
# include <sys/select.h>
# include <sys/select.h>
# include <pwd.h>
# include <pwd.h>
# include "../compile/ubl-cmake.h"
# include <libublsettings.h>
# include <libublsettings-gtk3.h>
# include <libublsettingsui-gtk3.h>
# ifdef WEBKIT_FOUND
# ifdef WEBKIT_FOUND
# include <webkit2/webkit2.h>
# include <webkit2/webkit2.h>
# endif
# endif
@ -39,16 +40,25 @@
# define config_path yon_char_unite(yon_ubl_user_get_home_directory()," / .config / ",LocaleName," / ",LocaleName,".conf",NULL)
# define config_path yon_char_unite(yon_ubl_user_get_home_directory()," / .config / ",LocaleName," / ",LocaleName,".conf",NULL)
# define journals_list_path " / usr / share / ubl-settings-logging / csv / journals_list.csv"
# define journals_list_path " / usr / share / ubl-settings-logging / csv / journals_list.csv"
# define services_list_path " / usr / share / ubl-settings-logging / csv / logging_services.csv"
# define services_list_path " / usr / share / ubl-settings-logging / csv / logging_services.csv"
# define icon_path "com.ublinux.ubl-settings-logging"
# define logrotate_config_command "ls / etc / logrotate.d / |sed -e 's / * / \\n / g'"
# define logrotate_config_command "ls / etc / logrotate.d / |sed -e 's / * / \\n / g'"
# define journald_size_command "journalctl --disk-usage | grep -oE \"[0-9]{1,}.[0-9]{1,}[A-Z]\""
# define journald_size_command "journalctl --disk-usage | grep -oE \"[0-9]{1,}.[0-9]{1,}[A-Z]\""
# define logrotate_size_command(paths) yon_ char_unite("du ",paths," |grep -oE '^[0-9]{1,}'",NULL)
# define logrotate_size_command(paths) yon_ debug_output("%s\n",yon_ char_unite("du ",paths," |grep -oE '^[0-9]{1,}'",NULL) )
# define logrotate_config_path " / etc / logrotate.d / "
# define logrotate_config_path " / etc / logrotate.d / "
# define custom_logs_saving_file_path yon_char_unite(yon_ubl_user_get_home_directory()," / .config / ",LocaleName," / logwatcher.csv",NULL)
# define custom_logs_saving_file_path yon_char_unite(yon_ubl_user_get_home_directory()," / .config / ",LocaleName," / logwatcher.csv",NULL)
# define read_log_command(command) yon_debug_output("%s\n",yon_char_unite("sed -r \"s / \\x1B\\[([0-9]{1,3}(;[0-9]{1,2};?)?)?[mGK] //g\" ",command,NULL))
# define LocalePath " / usr / share / locale"
# define LocalePath " / usr / share / locale"
# define LocaleName "ubl-settings-logging"
# define LocaleName "ubl-settings-logging"
# define config_get_command(source) yon_char_unite("ubconfig --source ",source," get logging LOGROTATE[*] JOURNALD[*]",NULL)
# define config_get_default_command ""
# define config_get_global_only_parameters ""
# define config_get_local_only_parameters ""
# define JOURNALD(key) yon_char_unite("JOURNALD[",key,"]",NULL)
# define JOURNALD(key) yon_char_unite("JOURNALD[",key,"]",NULL)
# define LOGROTATE(key) yon_char_unite("LOGROTATE[",key,"]",NULL)
# define LOGROTATE(key) yon_char_unite("LOGROTATE[",key,"]",NULL)
@ -61,13 +71,25 @@
# define get_journal_all_units_command "clear;systemd-analyze blame --no-pager"
# define get_journal_all_units_command "clear;systemd-analyze blame --no-pager"
# define get_journal_init_tree_command "clear;systemd-analyze critical-chain --no-pager"
# define get_journal_init_tree_command "clear;systemd-analyze critical-chain --no-pager"
# define get_file_folder_size(path) yon_char_append("du -hsc ",path)
# define get_all_files_in_path(path) yon_char_append("find ",path)
# define group_list_path " / etc / group"
# define group_list_path " / etc / group"
# define edit_icon_name "document-edit-symbolic"
# define add_icon_name "com.ublinux.ubl-settings-logging.increase-symbolic"
# define remove_icon_name "com.ublinux.libublsettingsui-gtk3.trash-symbolic"
# define minus_icon_name "com.ublinux.ubl-settings-logging.decrease-symbolic"
# define import_icon_name "com.ublinux.ubl-settings-logging.back-symbolic"
# define settings_icon_name "com.ublinux.ubl-settings-logging.settings-symbolic"
# define start_icon_name "com.ublinux.ubl-settings-logging.play-symbolic"
# define start_icon_name "com.ublinux.ubl-settings-logging.play-symbolic"
# define stop_icon_name "com.ublinux.ubl-settings-logging.stop-symbolic"
# define stop_icon_name "com.ublinux.ubl-settings-logging.stop-symbolic"
# define enable_icon_name "com.ublinux.ubl-settings-logging.check-symbolic"
# define enable_icon_name "com.ublinux.ubl-settings-logging.check-symbolic"
# define disable_icon_name "com.ublinux.ubl-settings-logging.uncheck-symbolic"
# define disable_icon_name "com.ublinux.ubl-settings-logging.uncheck-symbolic"
# define check_command_is_legit(command) !system(yon_char_unite("bash -c \"set -u; command -v ",command,"\"",NULL))
# define yon_add_space_if_exists(string) yon_char_is_empty(string) ? "" : yon_char_append(",",string)
# define yon_add_space_if_exists(string) yon_char_is_empty(string) ? "" : yon_char_append(",",string)
typedef char * string ;
typedef char * string ;
string version_application ;
string version_application ;
@ -75,23 +97,17 @@ string version_application;
char * local ;
char * local ;
typedef struct {
typedef struct {
GSourceFunc func ;
void * data ;
} queue_func ;
typedef struct {
template_config_fields
config_str launch_arguments ;
int launch_size ;
char * * envp ;
char * * envp ;
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 ;
int load_mode ;
int save_config ;
GtkListStore * logrotate_list ;
GtkListStore * logrotate_list ;
GtkListStore * logrotate_apps_list ;
GtkListStore * logrotate_apps_list ;
@ -105,37 +121,18 @@ typedef struct {
pthread_t inspector_thread ;
pthread_t inspector_thread ;
int remove_thread ;
int remove_thread ;
PolkitAuthorizationResult * authorization_result ;
PolkitSubject * process ;
queue_func * * queue ;
int queue_size ;
GMutex authorized_mutex ;
} config ;
} config ;
typedef struct {
typedef struct {
//Standard
//Standard
GtkWidget * Window ;
template_window_fields
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 ;
GtkWidget * MainTree ;
GtkWidget * MainTree ;
GtkWidget * InspectButton ;
GtkWidget * InspectButton ;
@ -154,6 +151,8 @@ typedef struct {
GtkWidget * UpgradePermissionsMenuItem ;
GtkWidget * UpgradePermissionsMenuItem ;
GtkWidget * PermissionsLock ;
GtkWidget * PermissionsLock ;
// Custom
// Custom
rmb_menu_window * LogsRMBMenu ;
rmb_menu_window * ServicesRMBMenu ;
} main_window ;
} main_window ;
@ -252,6 +251,8 @@ typedef struct {
GtkWidget * CancelButton ;
GtkWidget * CancelButton ;
GtkWidget * SaveButton ;
GtkWidget * SaveButton ;
GtkWidget * StatusBox ;
GtkWidget * StatusBox ;
rmb_menu_window * Menu ;
rmb_menu_window * AppsMenu ;
} logrotate_window ;
} logrotate_window ;
typedef struct {
typedef struct {
@ -372,4 +373,89 @@ typedef struct {
YON_CONFIG_TYPE type ;
YON_CONFIG_TYPE type ;
} saving_window ;
} saving_window ;
main_window * setup_window ( ) ;
typedef int ( * RmbCheck ) ( void * ) ;
main_window * setup_window ( ) ;
void on_save_window_parameter_switched ( GtkCellRendererToggle * self , gchar * path , saving_window * window ) ;
char * yon_size_get_letter_from_int ( int size ) ;
int yon_size_get_int_from_letter ( char size ) ;
// void yon_polkit_authorized_action(GCallback *func);
void yon_logs_custom_save ( main_window * widgets ) ;
void update_loaded_logrotate ( ) ;
int yon_load_proceed ( YON_CONFIG_TYPE type ) ;
void on_load_global ( ) ;
void on_load_local ( ) ;
void on_config_custom_load ( GtkWidget * , main_window * widgets ) ;
void on_save_global_local ( ) ;
void on_save_global ( ) ;
void on_save_local ( ) ;
void on_config_custom_save ( GtkWidget * , main_window * ) ;
void on_save_done ( main_window * widgets , config_str output , int size ) ;
void on_save_failed ( main_window * , config_str , int ) ;
void on_inspector_jornald_read_async ( inspector_window * window ) ;
void on_inspector_update ( GtkWidget * self , inspector_window * window ) ;
GtkWidget * yon_inspector_add_terminal ( inspector_window * window , char * page_name , int mode ) ;
void on_inspector_close ( GtkWidget * self , inspector_window * window ) ;
void on_inspector_open ( GtkWidget * self , main_window * widgets ) ;
void on_logrotate_configuration_path_filechooser_selection_changed ( GtkWidget * self , logrotate_filechooser_window * dialog ) ;
void on_logrotate_filechooser_file_dir_toggled ( GtkWidget * self , logrotate_filechooser_window * dialog ) ;
void on_logrotate_configuration_path_filechooser_save_edit ( GtkWidget * self , dictionary * dict ) ;
void on_logrotate_configuration_path_filechooser_save ( GtkWidget * self , dictionary * dict ) ;
void on_logrotate_configuration_path_filechooser_open ( GtkWidget * self , logrotate_configure_window * window ) ;
void on_logrotate_configuration_path_add ( GtkWidget * self , logrotate_configure_window * window ) ;
void on_path_editing_done ( GtkCellRendererText * self , gchar * gtkpath , gchar * new_text , logrotate_configure_window * window ) ;
void on_path_editing_cancel ( GtkCellRendererText * self , logrotate_configure_window * window ) ;
void on_logrotate_configuration_path_edit ( GtkWidget * self , logrotate_configure_window * window ) ;
void on_logrotate_configuration_path_remove ( GtkWidget * self , logrotate_configure_window * window ) ;
void on_combo_activate_first ( GtkComboBox * self , GtkWidget * target ) ;
void on_combo_activate_second ( GtkComboBox * self , GtkWidget * target ) ;
void on_file_amount_checked ( GtkToggleButton * self , logrotate_configure_window * window ) ;
void on_rules_accept ( GtkWidget * self , dictionary * dict ) ;
void on_rules_update ( GtkWidget * self , logrotate_rules_window * window ) ;
void on_rules_open ( GtkWidget * self , GtkEntry * entry ) ;
void on_filechooser_mode_switch ( GtkWidget * self , logrotate_filechooser_window * window ) ;
void on_filechooser_save ( GtkWidget * self , dictionary * dict ) ;
void on_filechooser_open ( GtkWidget * self , logrotate_configure_window * window ) ;
void on_logrotate_period_check_toggled ( GtkToggleButton * self , logrotate_configure_window * window ) ;
void on_logrotate_paths_cursor_changed ( GtkWidget * self , logrotate_configure_window * window ) ;
int on_logrotate_check_repeats ( GtkWidget * self , logrotate_configure_window * window ) ;
void on_logrotate_save ( GtkWidget * self , dictionary * dict ) ;
logrotate_configure_window * yon_logrotate_window_new ( char * paths , logrotate_window * dialog , char * log_name ) ;
void on_logrotate_add ( GtkWidget * self , logrotate_window * dialog ) ;
void on_logrotate_edit ( GtkWidget * self , logrotate_window * window ) ;
void on_logrotate_remove ( GtkWidget * self , logrotate_window * window ) ;
void on_logrotate_apps_configure ( GtkWidget * self , logrotate_window * window ) ;
void on_log_edit_logrotate_settings ( GtkWidget * self , dictionary * dict ) ;
void on_logrotate_tab_selection_changed ( GtkWidget * self , logrotate_window * window ) ;
void on_logrotate_applications_tab_selection_changed ( GtkWidget * self , logrotate_window * window ) ;
void on_logrotate_tab_open ( GtkWidget * self , main_window * widgets ) ;
void yon_combo_compress_check ( GtkComboBox * self , journald_window * window ) ;
void on_journald_reset ( GtkWidget * self , journald_window * window ) ;
void on_journald_save ( GtkWidget * self , journald_window * window ) ;
journald_window * yon_journald_open ( GtkWidget * self , main_window * widgets ) ;
void on_journald_open ( GtkWidget * self , main_window * widgets ) ;
void on_log_save ( GtkWidget * self , dictionary * dict ) ;
add_log_window * on_add_open ( main_window * widgets ) ;
void on_log_path_remove ( GtkWidget * self , add_log_window * window ) ;
void on_log_path_filechooser_selection_changed ( GtkWidget * self , logrotate_filechooser_window * dialog ) ;
void on_log_path_filechooser_toggled ( GtkWidget * self , logrotate_filechooser_window * dialog ) ;
void on_log_path_filechooser_save ( GtkWidget * self , dictionary * dict ) ;
void on_log_path_filechooser_open ( GtkWidget * self , GtkEntry * entry ) ;
void on_log_path_choose ( GtkWidget * self , add_log_window * window ) ;
void on_log_path_append ( GtkWidget * self , add_log_window * window ) ;
void on_log_add ( GtkWidget * self , main_window * widgets ) ;
void on_log_edit ( GtkWidget * self , main_window * widgets ) ;
void on_log_remove ( GtkWidget * self , main_window * widgets ) ;
void on_service_edit ( GtkWidget * self , main_window * widgets ) ;
void on_main_window_tree_selection_changed ( GtkWidget * self , main_window * widgets ) ;
void on_main_window_services_tree_selection_changed ( GtkWidget * self , main_window * widgets ) ;
void on_start_stop_clicked ( GtkButton * self , main_window * widgets ) ;
void on_enable_disable_clicked ( GtkButton * self , main_window * widgets ) ;
void on_permissions_changed ( ) ;
void config_init ( ) ;
void yon_main_window_complete ( template_main_window * * window ) ;
void on_logrotate_apps_configure_activate ( GtkWidget * , GtkTreePath * , GtkTreeViewColumn * , logrotate_window * window ) ;
void on_logrotate_edit_activate ( GtkWidget * , GtkTreePath * , GtkTreeViewColumn * , logrotate_window * window ) ;
void on_logrotate_closed ( GtkWidget * , logrotate_window * window ) ;
void on_rules_changed ( GtkEditable * editable , const gchar * text , gint length , gint * position ) ;
int main ( int argc , char * argv [ ] ) ;