Kaydet (Commit) 369661ca authored tarafından Hakan Dündar's avatar Hakan Dündar

update files

üst 151592f7
Package: system-monitoring-center
Version: 0.1.5-beta
Version: 0.1.6-beta
Architecture: amd64
Maintainer: Hakan Dündar <hakandundar34coding@gmail.com>
Installed-Size: 2598
Installed-Size: 2622
Depends: python3 (>= 3.7), python3-gi, python3-opengl, util-linux, mesa-utils, systemd
Section: utils
Priority: optional
......
system-monitoring-center (0.1.6-beta) unstable; urgency=medium
[ Hakan Dündar ]
* Added support for listing startup items on systems with GNOME-Classic, Ubuntu-GNOME desktop environments (Startup tab).
* Added "Run Now" and "Reset To System Values" items on the right click menu on Startup tab.
* Fixed bugs which cause incorrect startup item "Enabled/Disabled" information (Startup tab)
* Various bug fixes
* Minor GUI improvements
-- Hakan Dündar <hakandundar34coding@gmail.com> Tue, 14 Sep 2021 09:08:00 +0300
system-monitoring-center (0.1.5-beta) unstable; urgency=medium
[ Hakan Dündar ]
......
......@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-11 15:56+0300\n"
"POT-Creation-Date: 2021-09-14 08:53+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
......@@ -40,7 +40,7 @@ msgid "Shell Variable"
msgstr ""
#: src/EnvironmentVariables.py:275 src/Processes.py:477 src/Sensors.py:266
#: src/Services.py:361 src/Startup.py:541 src/Storage.py:571 src/Users.py:449
#: src/Services.py:361 src/Startup.py:590 src/Storage.py:571 src/Users.py:449
msgid "Total: "
msgstr ""
......@@ -88,6 +88,10 @@ msgstr ""
msgid "Network W: "
msgstr ""
#: src/FloatingSummary.py:189
msgid "FPS: "
msgstr ""
#: src/MainGUI.py:98
msgid ""
"Warning! The application has been run with root privileges, you may harm "
......@@ -150,8 +154,8 @@ msgstr ""
msgid "Wi-Fi"
msgstr ""
#: src/Performance.py:909 src/Processes.py:646 src/System.py:140
#: src/System.py:199 src/System.py:203
#: src/Performance.py:909 src/Processes.py:646 src/System.py:69
#: src/System.py:128 src/System.py:132
msgid "Unknown"
msgstr ""
......@@ -298,7 +302,8 @@ msgstr ""
#: src/Processes.py:721 src/ProcessesGUI.py:159 src/ProcessesMenusGUI.py:815
#: src/ProcessesMenusGUI.py:826 src/ServicesGUI.py:136 src/SettingsGUI.py:448
#: src/StartupGUI.py:129 src/StorageGUI.py:156
#: src/StartupGUI.py:131 src/StartupMenusGUI.py:557 src/StartupMenusGUI.py:568
#: src/StartupNewItemGUI.py:156 src/StorageGUI.py:156
msgid "Warning"
msgstr ""
......@@ -613,11 +618,11 @@ msgid "Do you want to reset all settings of the application to defaults?"
msgstr ""
#: src/Startup.py:48 ui/ProcessesMenus.ui:597 ui/ProcessesMenus.ui:1362
#: ui/StartupMenus.ui:266 ui/StartupMenus.ui:436 ui/UsersMenus.ui:979
#: ui/StartupMenus.ui:276 ui/StartupMenus.ui:446 ui/UsersMenus.ui:979
msgid "Name"
msgstr ""
#: src/Startup.py:49 ui/StartupMenus.ui:282 ui/StartupMenus.ui:450
#: src/Startup.py:49 ui/StartupMenus.ui:292 ui/StartupMenus.ui:460
msgid "Comment"
msgstr ""
......@@ -625,38 +630,99 @@ msgstr ""
msgid "Command"
msgstr ""
#: src/Startup.py:541
#: src/Startup.py:180
msgid ""
"Currently following desktop environments are supported for listing startup "
"items:\n"
msgstr ""
#: src/Startup.py:590
msgid " startup applications ("
msgstr ""
#: src/Startup.py:541
#: src/Startup.py:590
msgid " visible, "
msgstr ""
#: src/Startup.py:541
#: src/Startup.py:590
msgid " hidden)"
msgstr ""
#: src/StartupGUI.py:130
#: src/StartupGUI.py:132
msgid "Select A Startup Item"
msgstr ""
#: src/StartupGUI.py:131
#: src/StartupGUI.py:133
msgid "Please select a startup item and try again for opening the menu"
msgstr ""
#: src/StartupMenusGUI.py:420 src/StartupMenusGUI.py:423 ui/StartupMenus.ui:597
#: src/StartupMenusGUI.py:499
msgid "The startup item has system values."
msgstr ""
#: src/StartupMenusGUI.py:510 src/StartupMenusGUI.py:513 ui/StartupMenus.ui:631
msgid "System-wide values file: "
msgstr ""
#: src/StartupMenusGUI.py:423 src/StartupMenusGUI.py:429
#: src/StartupMenusGUI.py:513 src/StartupMenusGUI.py:519
msgid "None"
msgstr ""
#: src/StartupMenusGUI.py:426 src/StartupMenusGUI.py:429 ui/StartupMenus.ui:606
#: src/StartupMenusGUI.py:516 src/StartupMenusGUI.py:519 ui/StartupMenus.ui:640
msgid "User-specific values file: "
msgstr ""
#: src/StartupMenusGUI.py:558
msgid "Run Startup Item Now?"
msgstr ""
#: src/StartupMenusGUI.py:559
msgid "Do you want to run the following startup item?"
msgstr ""
#: src/StartupMenusGUI.py:559
msgid " Command: "
msgstr ""
#: src/StartupMenusGUI.py:569
msgid "Reset The Startup Item To System Values?"
msgstr ""
#: src/StartupMenusGUI.py:570
msgid "Do you want to reset the following startup item to system values?"
msgstr ""
#: src/StartupMenusGUI.py:571
msgid " '.desktop' File Name: "
msgstr ""
#: src/StartupMenusGUI.py:572
msgid ""
"1) If the startup item has both system-wide and user-specific '.desktop' "
"files, user-specific file will be deleted."
msgstr ""
#: src/StartupMenusGUI.py:573
msgid ""
"2) If the startup item has only user-specific '.desktop' files, this file "
"will be deleted and startup item will be removed completely."
msgstr ""
#: src/StartupNewItemGUI.py:157
msgid "Do You Want To Overwrite Existing File?"
msgstr ""
#: src/StartupNewItemGUI.py:158
msgid ""
"There is already a '.desktop' file with the same name.\n"
"Existing file will be overwritten if you continue.\n"
"Do you want to continue?"
msgstr ""
#: src/StartupNewItemGUI.py:158
msgid " Existing '.desktop' File Name: "
msgstr ""
#: src/Storage.py:49 ui/StorageMenus.ui:371 ui/StorageMenus.ui:1036
msgid "Disk Name"
msgstr ""
......@@ -803,11 +869,11 @@ msgstr ""
msgid "Disk has been removed and file system could not be renamed."
msgstr ""
#: src/System.py:91
#: src/System.py:221
msgid "(Yes)"
msgstr ""
#: src/System.py:93
#: src/System.py:223
msgid "(No)"
msgstr ""
......@@ -960,31 +1026,31 @@ msgid "Environment Variables Tab Customizations:"
msgstr ""
#: ui/EnvironmentVariablesMenus.ui:142 ui/PerformanceMenus.ui:2160
#: ui/ProcessesMenus.ui:396 ui/ServicesMenus.ui:199 ui/StartupMenus.ui:78
#: ui/ProcessesMenus.ui:396 ui/ServicesMenus.ui:199 ui/StartupMenus.ui:88
#: ui/StorageMenus.ui:183 ui/UsersMenus.ui:246
msgid "Column Reordering,"
msgstr ""
#: ui/EnvironmentVariablesMenus.ui:176 ui/PerformanceMenus.ui:2194
#: ui/ProcessesMenus.ui:430 ui/ServicesMenus.ui:233 ui/StartupMenus.ui:112
#: ui/ProcessesMenus.ui:430 ui/ServicesMenus.ui:233 ui/StartupMenus.ui:122
#: ui/StorageMenus.ui:217 ui/UsersMenus.ui:280
msgid "Row Sorting,"
msgstr ""
#: ui/EnvironmentVariablesMenus.ui:207 ui/PerformanceMenus.ui:2113
#: ui/ProcessesMenus.ui:473 ui/ServicesMenus.ui:264 ui/StartupMenus.ui:143
#: ui/ProcessesMenus.ui:473 ui/ServicesMenus.ui:264 ui/StartupMenus.ui:153
#: ui/StorageMenus.ui:248 ui/UsersMenus.ui:311
msgid "Reset"
msgstr ""
#: ui/EnvironmentVariablesMenus.ui:254 ui/PerformanceMenus.ui:2228
#: ui/ProcessesMenus.ui:520 ui/ServicesMenus.ui:311 ui/StartupMenus.ui:190
#: ui/ProcessesMenus.ui:520 ui/ServicesMenus.ui:311 ui/StartupMenus.ui:200
#: ui/StorageMenus.ui:295 ui/UsersMenus.ui:358
msgid "Column Widths:"
msgstr ""
#: ui/EnvironmentVariablesMenus.ui:273 ui/ProcessesMenus.ui:539
#: ui/ServicesMenus.ui:330 ui/StartupMenus.ui:209 ui/StorageMenus.ui:314
#: ui/ServicesMenus.ui:330 ui/StartupMenus.ui:219 ui/StorageMenus.ui:314
#: ui/UsersMenus.ui:377
msgid "View"
msgstr ""
......@@ -994,7 +1060,7 @@ msgid "Add/Remove Variable Information:"
msgstr ""
#: ui/EnvironmentVariablesMenus.ui:391 ui/ProcessesMenus.ui:870
#: ui/ServicesMenus.ui:515 ui/StartupMenus.ui:326 ui/StorageMenus.ui:722
#: ui/ServicesMenus.ui:515 ui/StartupMenus.ui:336 ui/StorageMenus.ui:722
#: ui/UsersMenus.ui:646
msgid "Add/Remove Columns"
msgstr ""
......@@ -1003,7 +1069,7 @@ msgstr ""
#: ui/PerformanceMenus.ui:496 ui/PerformanceMenus.ui:832
#: ui/PerformanceMenus.ui:1356 ui/PerformanceMenus.ui:1929
#: ui/PerformanceMenus.ui:2057 ui/ProcessesMenus.ui:1209
#: ui/ServicesMenus.ui:723 ui/SettingsWindow.ui:676 ui/StartupMenus.ui:357
#: ui/ServicesMenus.ui:723 ui/SettingsWindow.ui:676 ui/StartupMenus.ui:367
#: ui/StorageMenus.ui:930 ui/UsersMenus.ui:873
msgid "Reset All"
msgstr ""
......@@ -1013,7 +1079,7 @@ msgid "Environment Variables Search Customizations:"
msgstr ""
#: ui/EnvironmentVariablesMenus.ui:492 ui/PerformanceMenus.ui:2273
#: ui/ProcessesMenus.ui:1291 ui/ServicesMenus.ui:793 ui/StartupMenus.ui:427
#: ui/ProcessesMenus.ui:1291 ui/ServicesMenus.ui:793 ui/StartupMenus.ui:437
#: ui/StorageMenus.ui:1000 ui/UsersMenus.ui:943
msgid "Search in column:"
msgstr ""
......@@ -3004,51 +3070,59 @@ msgstr ""
msgid "Reset all settings of the application to defaults"
msgstr ""
#: ui/StartupMenus.ui:35
#: ui/StartupMenus.ui:45
msgid "Startup Tab Customizations:"
msgstr ""
#: ui/StartupMenus.ui:233 ui/StorageMenus.ui:338
#: ui/StartupMenus.ui:243 ui/StorageMenus.ui:338
msgid "Add/Remove Storage Information:"
msgstr ""
#: ui/StartupMenus.ui:296 ui/StartupMenus.ui:478
#: ui/StartupMenus.ui:306 ui/StartupMenus.ui:488
msgid "Command (Exec)"
msgstr ""
#: ui/StartupMenus.ui:411
#: ui/StartupMenus.ui:421
msgid "Startup Search Customizations:"
msgstr ""
#: ui/StartupMenus.ui:464
#: ui/StartupMenus.ui:474
msgid "Disabled (Hidden) startup items"
msgstr ""
#: ui/StartupMenus.ui:496 ui/StorageMenus.ui:1013
#: ui/StartupMenus.ui:506 ui/StorageMenus.ui:1013
msgid "Search in disk types:"
msgstr ""
#: ui/StartupMenus.ui:505
#: ui/StartupMenus.ui:515
msgid "All startup items"
msgstr ""
#: ui/StartupMenus.ui:519
#: ui/StartupMenus.ui:529
msgid "Enabled (Visible) startup items"
msgstr ""
#: ui/StartupMenus.ui:551
#: ui/StartupMenus.ui:561
msgid "Enable/Disable"
msgstr ""
#: ui/StartupMenus.ui:562
#: ui/StartupMenus.ui:572
msgid "Add"
msgstr ""
#: ui/StartupMenus.ui:571 ui/StorageMenus.ui:72
#: ui/StartupMenus.ui:581 ui/StorageMenus.ui:72
msgid "Remove"
msgstr ""
#: ui/StartupMenus.ui:586
#: ui/StartupMenus.ui:596
msgid "Run Now"
msgstr ""
#: ui/StartupMenus.ui:611
msgid "Reset To System Values"
msgstr ""
#: ui/StartupMenus.ui:620
msgid "Browse '.desktop' File..."
msgstr ""
......@@ -3076,6 +3150,10 @@ msgstr ""
msgid "Startup Notify"
msgstr ""
#: ui/StartupNewItemWindow.ui:251
msgid "Note: Name and Command fields cannot be left blank."
msgstr ""
#: ui/StorageDetailsWindow.ui:8
msgid "Storage Details"
msgstr ""
......
......@@ -34,6 +34,7 @@ def floating_summary_import_func():
# ----------------------------------- FloatingSummary - Initial Function (defines and sets floating summary GUI objects which are not updated on every loop) -----------------------------------
def floating_summary_initial_func():
# Floating Summary window is closed when main window is closed (when application is run as running a desktop application). But it is not closed when main window is closed if application is run from an IDE for debugging/develoing purposes.
global floating_summary_window, floating_summary_grid, floating_summary_data_shown_prev
floating_summary_data_shown_prev = []
......@@ -41,10 +42,9 @@ def floating_summary_initial_func():
floating_summary_window = Gtk.Window()
floating_summary_grid = Gtk.Grid()
floating_summary_window.add(floating_summary_grid)
# floating_summary_grid.set_column_homogeneous(True)
# floating_summary_grid.set_row_homogeneous(True)
floating_summary_grid.set_size_request(-1, -1)
# Append labels to grid for showing performance data
grid_row_count = 0
global floating_summary_cpu_label
floating_summary_cpu_label = Gtk.Label()
......@@ -101,12 +101,13 @@ def floating_summary_initial_func():
floating_summary_fps_label.set_valign(Gtk.Align.START)
floating_summary_window.show_all()
# Set floating summary window properties
floating_summary_window.set_resizable(False) # For preventing window to be resized.
floating_summary_window.set_skip_taskbar_hint(True) # For hiding window on the taskbar.
floating_summary_window.set_decorated(False) # For hiding window title, buttons on the title and window border.
floating_summary_window.set_keep_above(True) # For keeping the window on top of all windows.
floating_summary_window.set_resizable(False)
floating_summary_window.set_skip_taskbar_hint(True)
floating_summary_window.set_decorated(False)
floating_summary_window.set_keep_above(True)
# Define a function for clicking and dragging the window.
def on_floating_summary_window_button_press_event(widget, event):
if event.button == 1:
floating_summary_window.begin_move_drag(event.button, event.x_root, event.y_root, event.time)
......@@ -114,9 +115,7 @@ def floating_summary_initial_func():
floating_summary_window.connect("button-press-event", on_floating_summary_window_button_press_event)
floating_summary_window.show_all()
floating_summary_window.set_opacity(Config.floating_summary_window_transparency)
floating_summary_window.set_transient_for(MainGUI.window1) # To be able to use "set_destroy_with_parent"
floating_summary_window.set_destroy_with_parent(True) # To be able to destroy "floating_summary_window" when application main window is destroyed
floating_summary_window.set_opacity(Config.floating_summary_window_transparency) # Set transperancy of the window.
# ----------------------------------- FloatingSummary - Loop Function (updates performance data on the floating summary window) -----------------------------------
......@@ -169,6 +168,7 @@ def floating_summary_loop_func():
floating_summary_data_shown_prev = list(floating_summary_data_shown) # list1 = list(list2) have to be used for proper working of the code because using this equation without "list()" makes a connection between these lists instead of copying one list with a different variable name.
# Set label text for showing peformance data
if 0 in floating_summary_data_shown:
floating_summary_cpu_label.set_text(_tr("CPU: ") + f'{Performance.cpu_usage_percent_ave[-1]:.2f}' + "%")
if 1 in floating_summary_data_shown:
......@@ -186,7 +186,7 @@ def floating_summary_loop_func():
if 7 in floating_summary_data_shown:
floating_summary_network_send_speed_label.set_text(_tr("Network W: ") + f'{Performance.network_send_speed[Performance.selected_network_card_number][-1]:.0f}' + "B/s")
if 8 in floating_summary_data_shown:
floating_summary_fps_label.set_text("FPS: Not coded")
floating_summary_fps_label.set_text(_tr("FPS: ") + "[Not coded]")
# ----------------------------------- FloatingSummary Initial Thread Function (runs the code in the function as threaded in order to avoid blocking/slowing down GUI operations and other operations) -----------------------------------
......
......@@ -194,15 +194,6 @@ def main_gui_peformance_tab_default_sub_tab_func():
# ----------------------------------- MainGUI - Main Function Run Function (runs main functions (Performance, Processes, Users, Storage, Startup, Services, Environment Variables, OS) when their stack page is selected. All main tabs and performance tab sub-tabs switches are controlled in this function) -----------------------------------
def main_gui_main_function_run_func():
if Config.show_floating_summary == 1: # Show Floating Summary window appropriate with user preferences
if "FloatingSummary" not in globals():
global FloatingSummary
import FloatingSummary
FloatingSummary.floating_summary_import_func()
FloatingSummary.floating_summary_initial_func()
FloatingSummary.floating_summary_thread_run_func()
FloatingSummary.floating_summary_window.show()
remember_last_opened_tabs_on_application_start = Config.remember_last_opened_tabs_on_application_start # Local definition of this variable is made for lower CPU usage becuse this variable is used multiple times.
if radiobutton1.get_active() == True: # It switches to "Performance" tab if relevant radiobutton is clicked.
......@@ -366,6 +357,15 @@ def main_gui_main_function_run_func():
SystemGUI.system_gui_func()
System.system_thread_run_func()
if Config.show_floating_summary == 1: # Show Floating Summary window appropriate with user preferences. Code below this statement have to be used after "Performance" tab functions, variables, data are defined and functions are run in order to avoid errors.
if "FloatingSummary" not in globals():
global FloatingSummary
import FloatingSummary
FloatingSummary.floating_summary_import_func()
FloatingSummary.floating_summary_initial_func()
FloatingSummary.floating_summary_thread_run_func()
FloatingSummary.floating_summary_window.show()
Config.config_save_func()
......
......@@ -82,7 +82,7 @@ def main_menus_gui_func():
def on_menuitem1003m_activate(widget): # "Restart as Root" menu item
def restart_as_root(): # Running action is performed in a separate thread for letting rest of the function code to be run without waiting closing the new opened application.
os.system("pkexec system-monitoring-center") # For running application as root by using polkit authentication window
os.system("pkexec system-monitoring-center") # For running application as root by using polkit authentication window
restart_as_root_thread = Thread(target=restart_as_root, daemon=True).start() # Define a thread and run it
os.kill(os.getpid(), signal.SIGTERM) # Get PID of the current application and end it
......
......@@ -809,7 +809,7 @@ def processes_nice_error_dialog():
error_dialog2101.destroy()
# ----------------------------------- Processes - Processes End Process Warning Dialog Function (shows an warning dialog when a process is tried to be end) -----------------------------------
# ----------------------------------- Processes - Processes End Process Warning Dialog Function (shows a warning dialog when a process is tried to be end) -----------------------------------
def processes_end_process_warning_dialog(process_name, process_pid):
warning_dialog2101 = Gtk.MessageDialog(transient_for=MainGUI.window1, title=_tr("Warning"), flags=0, message_type=Gtk.MessageType.WARNING,
......@@ -820,7 +820,7 @@ def processes_end_process_warning_dialog(process_name, process_pid):
warning_dialog2101.destroy()
# ----------------------------------- Processes - Processes End Process Tree Warning Dialog Function (shows an warning dialog when a process tree is tried to be end) -----------------------------------
# ----------------------------------- Processes - Processes End Process Tree Warning Dialog Function (shows a warning dialog when a process tree is tried to be end) -----------------------------------
def processes_end_process_tree_warning_dialog(process_name, process_pid):
warning_dialog2102 = Gtk.MessageDialog(transient_for=MainGUI.window1, title=_tr("Warning"), flags=0, message_type=Gtk.MessageType.WARNING,
......
This diff is collapsed.
......@@ -116,13 +116,15 @@ def startup_open_right_click_menu_func(event):
if treeiter is None:
startup_no_startup_item_selected_dialog()
if treeiter is not None:
global selected_startup_application_file_name, selected_startup_application_visibility
global selected_startup_application_file_name, selected_startup_application_visibility, selected_startup_application_name
selected_startup_application_file_name = Startup.all_autostart_applications_list[Startup.startup_data_rows.index(model[treeiter][:])] # "[:]" is used in order to copy entire list to be able to use it for getting index in the "startup_data_rows" list to use it getting name of the startup application file name.
selected_startup_application_visibility = Startup.startup_applications_visibility_list[Startup.startup_data_rows.index(model[treeiter][:])]
selected_startup_application_name = model[treeiter][3]
StartupMenusGUI.menu5101m.popup(None, None, None, None, event.button, event.time)
StartupMenusGUI.startup_set_checkmenuitem_func()
StartupMenusGUI.startup_set_menu_labels_func()
# ----------------------------------- Startup - No Startup Item Selected Dialog Function (shows a dialog when Open Startup Item Right Click Menu is clicked without selecting a startup item) -----------------------------------
def startup_no_startup_item_selected_dialog():
......
This diff is collapsed.
......@@ -84,25 +84,25 @@ def startup_rename_gui_func():
window5101w.hide()
def on_button5102w_clicked(widget): # "Save" button
# Get current username which will be used for determining current user home directory.
global current_user_name
current_user_name = os.environ.get('SUDO_USER') # Get user name that gets root privileges. Othervise, username is get as "root" when root access is get.
if current_user_name is None: # Get username in the following way if current application has not been run by root privileges.
current_user_name = os.environ.get('USER')
pkexec_uid = os.environ.get('PKEXEC_UID')
if current_user_name == "root" and pkexec_uid != None: # current_user_name is get as "None" if application is run with "pkexec" command. In this case, "os.environ.get('PKEXEC_UID')" is used to be able to get username of which user has run the application with "pkexec" command.
current_user_name = usernames_startup_applications_visibility_list[usernames_uid_list.index(os.environ.get('PKEXEC_UID'))]
# Get human and root user usernames and UIDs. This data will be used if application is run with "pkexec" command.
usernames_startup_applications_visibility_list = []
usernames_username_list = []
usernames_uid_list = []
with open("/etc/passwd") as reader: # "/etc/passwd" file (also knonw as Linux password database) contains all local user (system + human users) information.
etc_passwd_lines = reader.read().strip().split("\n") # "strip()" is used in order to prevent errors due to an empty line at the end of the list.
for line in etc_passwd_lines:
line_splitted = line.split(":")
usernames_startup_applications_visibility_list.append(line_splitted[0])
usernames_username_list.append(line_splitted[0])
usernames_uid_list.append(line_splitted[2])
# Get current username which will be used for determining current user home directory.
global current_user_name
current_user_name = os.environ.get('SUDO_USER') # Get user name that gets root privileges. Othervise, username is get as "root" when root access is get.
if current_user_name is None: # Get username in the following way if current application has not been run by root privileges.
current_user_name = os.environ.get('USER')
pkexec_uid = os.environ.get('PKEXEC_UID')
if current_user_name == "root" and pkexec_uid != None: # current_user_name is get as "None" if application is run with "pkexec" command. In this case, "os.environ.get('PKEXEC_UID')" is used to be able to get username of which user has run the application with "pkexec" command.
current_user_name = usernames_username_list[usernames_uid_list.index(os.environ.get('PKEXEC_UID'))]
# Get startup item file directories. System default autostart directory is "system_autostart_directory". Startup items are copied into "current_user_autostart_directory" directory with modified values if user make modifications for the startup item. For the user, these values override system values for the user-modified startup item.
for line in etc_passwd_lines:
line_splitted = line.split(":")
......@@ -111,6 +111,15 @@ def startup_rename_gui_func():
current_user_autostart_directory = current_user_homedir + "/.config/autostart/"
system_autostart_directory = "/etc/xdg/autostart/"
# Show a warning dialog if there is already a .desktop file with the same name.
new_startup_application_name = entry5101w.get_text()
new_startup_application_file_name = entry5101w.get_text() + ".desktop"
if os.path.isfile(current_user_autostart_directory + new_startup_application_file_name) == True:
startup_overwrite_existing_startup_item_warning_dialog(new_startup_application_name, new_startup_application_file_name)
if warning_dialog5103_response == Gtk.ResponseType.YES:
pass # Continue running the code if "Yes" is clicked on the dialog.
if warning_dialog5103_response == Gtk.ResponseType.NO:
return # Do nothing (stop running the code and close the dialog) if "No" is clicked.
# Save ".desktop" file in order to add new startup item
with open(current_user_autostart_directory + entry5101w.get_text() + ".desktop", "w") as writer:
writer.write("[Desktop Entry]" + "\n")
......@@ -139,3 +148,14 @@ def startup_rename_gui_func():
entry5103w.connect("changed", on_entry5103w_changed)
button5101w.connect("clicked", on_button5101w_clicked)
button5102w.connect("clicked", on_button5102w_clicked)
# ----------------------------------- Startup - Startup Overwrite Existing Startup Item Warning Dialog Function (shows a warning dialog when a new startup item file is tried to be generated with the same name of an existing one) -----------------------------------
def startup_overwrite_existing_startup_item_warning_dialog(new_startup_application_name, new_startup_application_file_name):
warning_dialog5103 = Gtk.MessageDialog(transient_for=MainGUI.window1, title=_tr("Warning"), flags=0, message_type=Gtk.MessageType.WARNING,
buttons=Gtk.ButtonsType.YES_NO, text=_tr("Do You Want To Overwrite Existing File?"), )
warning_dialog5103.format_secondary_text(_tr("There is already a '.desktop' file with the same name.\nExisting file will be overwritten if you continue.\nDo you want to continue?") + "\n" + " Existing Startup Item: " + new_startup_application_name + "\n" + _tr(" Existing '.desktop' File Name: ") + new_startup_application_file_name)
global warning_dialog5103_response
warning_dialog5103_response = warning_dialog5103.run()
warning_dialog5103.destroy()
This diff is collapsed.
0.1.5-beta
\ No newline at end of file
0.1.6-beta
\ No newline at end of file
......@@ -4128,7 +4128,7 @@ May be different than maximum resolution of the monitor.</property>
<property name="tooltip-text" translatable="yes">Number of listed startup items</property>
<property name="halign">start</property>
<property name="margin-start">60</property>
<property name="label" translatable="yes">Total: -- startup items (-- visible, -- hidden startup items)</property>
<property name="label" translatable="yes">Total: -- startup items (-- visible, -- hidden startup items)</property>
<property name="wrap">True</property>
<property name="selectable">True</property>
</object>
......@@ -4265,7 +4265,7 @@ May be different than maximum resolution of the monitor.</property>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">system-monitoring-center-user-symbolic</property>
<property name="icon-name">system-monitoring-center-apply-symbolic</property>
</object>
</child>
</object>
......@@ -4286,7 +4286,7 @@ May be different than maximum resolution of the monitor.</property>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">system-monitoring-center-system-symbolic</property>
<property name="icon-name">system-monitoring-center-cancel-symbolic</property>
</object>
</child>
</object>
......@@ -4370,7 +4370,7 @@ May be different than maximum resolution of the monitor.</property>
<property name="can-focus">False</property>
<property name="tooltip-text" translatable="yes">Number of listed services</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Total: -- services (-- loaded, -- non-loaded services)</property>
<property name="label" translatable="yes">Total: -- services (-- loaded, -- non-loaded services)</property>
<property name="wrap">True</property>
<property name="selectable">True</property>
</object>
......@@ -4635,7 +4635,7 @@ Variables</property>
<property name="tooltip-text" translatable="yes">Number of listed environment variables</property>
<property name="halign">start</property>
<property name="margin-start">60</property>
<property name="label" translatable="yes">Total: -- environment variables (-- system wide, -- user environment variables)</property>
<property name="label" translatable="yes">Total: -- environment variables (-- system wide, -- user environment variables)</property>
<property name="wrap">True</property>
<property name="selectable">True</property>
</object>
......
......@@ -2,6 +2,16 @@
<!-- Generated with glade 3.38.2 -->
<interface>
<requires lib="gtk+" version="3.20"/>
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">system-monitoring-center-run-application-symbolic</property>
</object>
<object class="GtkImage" id="image2">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">system-monitoring-center-reload-symbolic</property>
</object>
<object class="GtkImage" id="menuitem5102mimage">
<property name="visible">True</property>
<property name="can-focus">False</property>
......@@ -581,6 +591,30 @@
<property name="can-focus">False</property>
</object>
</child>
<child>
<object class="GtkImageMenuItem" id="menuitem5106m">
<property name="label" translatable="yes">Run Now</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="image">image1</property>
<property name="use-stock">False</property>
</object>
</child>
<child>
<object class="GtkSeparatorMenuItem">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
</child>
<child>
<object class="GtkImageMenuItem" id="menuitem5107m">
<property name="label" translatable="yes">Reset To System Values</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="image">image2</property>
<property name="use-stock">False</property>
</object>
</child>
<child>
<object class="GtkImageMenuItem" id="menuitem5105m">
<property name="label" translatable="yes">Browse '.desktop' File...</property>
......
......@@ -13,7 +13,7 @@
<property name="type-hint">dialog</property>
<property name="skip-taskbar-hint">True</property>
<child>
<!-- n-columns=2 n-rows=7 -->
<!-- n-columns=2 n-rows=8 -->
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can-focus">False</property>
......@@ -130,7 +130,7 @@
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">6</property>
<property name="top-attach">7</property>
<property name="width">2</property>
</packing>
</child>
......@@ -243,6 +243,19 @@
<property name="width">2</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Note: Name and Command fields cannot be left blank.</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">6</property>
<property name="width">2</property>
</packing>
</child>
</object>
</child>
</object>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment