Create desktop entries from the code
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 649 B After Width: | Height: | Size: 649 B |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 640 B After Width: | Height: | Size: 640 B |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 902 B After Width: | Height: | Size: 902 B |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 894 B After Width: | Height: | Size: 894 B |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 4.5 KiB |
|
@ -34,6 +34,7 @@ import subprocess
|
||||||
import threading
|
import threading
|
||||||
from distutils.version import LooseVersion
|
from distutils.version import LooseVersion
|
||||||
from logging.handlers import RotatingFileHandler
|
from logging.handlers import RotatingFileHandler
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
import babel.core
|
import babel.core
|
||||||
import babel.dates
|
import babel.dates
|
||||||
|
@ -60,6 +61,8 @@ LOG_FILE_PATH = os.path.join(HOME_DIRECTORY, 'safeeyes.log')
|
||||||
SYSTEM_PLUGINS_DIR = os.path.join(BIN_DIRECTORY, 'plugins')
|
SYSTEM_PLUGINS_DIR = os.path.join(BIN_DIRECTORY, 'plugins')
|
||||||
USER_PLUGINS_DIR = os.path.join(CONFIG_DIRECTORY, 'plugins')
|
USER_PLUGINS_DIR = os.path.join(CONFIG_DIRECTORY, 'plugins')
|
||||||
LOCALE_PATH = os.path.join(BIN_DIRECTORY, 'config/locale')
|
LOCALE_PATH = os.path.join(BIN_DIRECTORY, 'config/locale')
|
||||||
|
SYSTEM_DESKTOP_FILE = os.path.join(BIN_DIRECTORY, "platform/safeeyes.desktop")
|
||||||
|
SYSTEM_ICONS = os.path.join(BIN_DIRECTORY, "platform/icons")
|
||||||
DESKTOP_ENVIRONMENT = None
|
DESKTOP_ENVIRONMENT = None
|
||||||
IS_WAYLAND = False
|
IS_WAYLAND = False
|
||||||
|
|
||||||
|
@ -362,35 +365,77 @@ def initialize_safeeyes():
|
||||||
logging.info('Copy the config files to ~/.config/safeeyes')
|
logging.info('Copy the config files to ~/.config/safeeyes')
|
||||||
|
|
||||||
style_dir_path = os.path.join(HOME_DIRECTORY, '.config/safeeyes/style')
|
style_dir_path = os.path.join(HOME_DIRECTORY, '.config/safeeyes/style')
|
||||||
startup_dir_path = os.path.join(HOME_DIRECTORY, '.config/autostart')
|
|
||||||
|
|
||||||
# Remove the ~/.config/safeeyes/safeeyes.json file
|
# Remove the ~/.config/safeeyes/safeeyes.json file
|
||||||
delete(CONFIG_FILE_PATH)
|
delete(CONFIG_FILE_PATH)
|
||||||
|
|
||||||
# Remove the startup file
|
|
||||||
delete(os.path.join(HOME_DIRECTORY, os.path.join(
|
|
||||||
startup_dir_path, 'safeeyes.desktop')))
|
|
||||||
|
|
||||||
# Create the ~/.config/safeeyes/style directory
|
# Create the ~/.config/safeeyes/style directory
|
||||||
mkdir(style_dir_path)
|
mkdir(style_dir_path)
|
||||||
mkdir(startup_dir_path)
|
|
||||||
|
|
||||||
# Copy the safeeyes.json
|
# Copy the safeeyes.json
|
||||||
shutil.copy2(SYSTEM_CONFIG_FILE_PATH, CONFIG_FILE_PATH)
|
shutil.copy2(SYSTEM_CONFIG_FILE_PATH, CONFIG_FILE_PATH)
|
||||||
os.chmod(CONFIG_FILE_PATH, 0o777)
|
os.chmod(CONFIG_FILE_PATH, 0o777)
|
||||||
|
|
||||||
# Copy the new startup file
|
|
||||||
try:
|
|
||||||
os.symlink("/usr/share/applications/safeeyes.desktop",
|
|
||||||
os.path.join(startup_dir_path, 'safeeyes.desktop'))
|
|
||||||
except OSError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
# Copy the new style sheet
|
# Copy the new style sheet
|
||||||
if not os.path.isfile(STYLE_SHEET_PATH):
|
if not os.path.isfile(STYLE_SHEET_PATH):
|
||||||
shutil.copy2(SYSTEM_STYLE_SHEET_PATH, STYLE_SHEET_PATH)
|
shutil.copy2(SYSTEM_STYLE_SHEET_PATH, STYLE_SHEET_PATH)
|
||||||
os.chmod(STYLE_SHEET_PATH, 0o777)
|
os.chmod(STYLE_SHEET_PATH, 0o777)
|
||||||
|
|
||||||
|
initialize_platform()
|
||||||
|
|
||||||
|
|
||||||
|
def initialize_platform():
|
||||||
|
"""
|
||||||
|
Copy icons and generate desktop entries.
|
||||||
|
"""
|
||||||
|
logging.debug("Initialize the platform")
|
||||||
|
|
||||||
|
applications_dir_path = os.path.join(HOME_DIRECTORY, '.local/share/applications')
|
||||||
|
icons_dir_path = os.path.join(HOME_DIRECTORY, '.local/share/icons')
|
||||||
|
startup_dir_path = os.path.join(HOME_DIRECTORY, '.config/autostart')
|
||||||
|
desktop_entry = os.path.join(applications_dir_path, 'safeeyes.desktop')
|
||||||
|
startup_entry = os.path.join(startup_dir_path, 'safeeyes.desktop')
|
||||||
|
|
||||||
|
# Create the folders if not exist
|
||||||
|
mkdir(applications_dir_path)
|
||||||
|
mkdir(icons_dir_path)
|
||||||
|
mkdir(startup_dir_path)
|
||||||
|
|
||||||
|
# Remove existing files
|
||||||
|
delete(desktop_entry)
|
||||||
|
delete(startup_entry)
|
||||||
|
|
||||||
|
# Create a destop entry
|
||||||
|
try:
|
||||||
|
os.symlink(SYSTEM_DESKTOP_FILE, desktop_entry)
|
||||||
|
except OSError:
|
||||||
|
logging.error("Failed to create desktop entry at %s" % desktop_entry)
|
||||||
|
|
||||||
|
# Create the new startup entry
|
||||||
|
try:
|
||||||
|
os.symlink(SYSTEM_DESKTOP_FILE, startup_entry)
|
||||||
|
except OSError:
|
||||||
|
logging.error("Failed to create startup entry at %s" % startup_entry)
|
||||||
|
|
||||||
|
# Add links for all icons
|
||||||
|
for (path, _, filenames) in os.walk(SYSTEM_ICONS):
|
||||||
|
for filename in filenames:
|
||||||
|
system_icon = os.path.join(path, filename)
|
||||||
|
local_icon = os.path.join(icons_dir_path, os.path.relpath(system_icon, SYSTEM_ICONS))
|
||||||
|
parent_dir = str(Path(local_icon).parent)
|
||||||
|
|
||||||
|
# Create the directory if not exists
|
||||||
|
mkdir(parent_dir)
|
||||||
|
|
||||||
|
# Remove the link if already exists
|
||||||
|
delete(local_icon)
|
||||||
|
|
||||||
|
# Add a link for the icon
|
||||||
|
try:
|
||||||
|
os.symlink(system_icon, local_icon)
|
||||||
|
except OSError:
|
||||||
|
logging.error("Failed to create icon link at %s" % local_icon)
|
||||||
|
|
||||||
|
|
||||||
def reset_config():
|
def reset_config():
|
||||||
# Remove the ~/.config/safeeyes/safeeyes.json and safeeyes_style.css
|
# Remove the ~/.config/safeeyes/safeeyes.json and safeeyes_style.css
|
||||||
|
@ -405,6 +450,8 @@ def reset_config():
|
||||||
os.chmod(CONFIG_FILE_PATH, 0o777)
|
os.chmod(CONFIG_FILE_PATH, 0o777)
|
||||||
os.chmod(STYLE_SHEET_PATH, 0o777)
|
os.chmod(STYLE_SHEET_PATH, 0o777)
|
||||||
|
|
||||||
|
initialize_platform()
|
||||||
|
|
||||||
def replace_style_sheet():
|
def replace_style_sheet():
|
||||||
"""
|
"""
|
||||||
Replace the user style sheet by system style sheet.
|
Replace the user style sheet by system style sheet.
|
||||||
|
|
4
setup.py
|
@ -65,10 +65,12 @@ def __package_data():
|
||||||
data = ['glade/*.glade', 'resource/*']
|
data = ['glade/*.glade', 'resource/*']
|
||||||
data.extend(__package_files('safeeyes/config'))
|
data.extend(__package_files('safeeyes/config'))
|
||||||
data.extend(__package_files('safeeyes/plugins'))
|
data.extend(__package_files('safeeyes/plugins'))
|
||||||
|
data.extend(__package_files('safeeyes/platform'))
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
__data_files = list(_data_files('share'))
|
# __data_files = list(_data_files('share'))
|
||||||
|
__data_files = list()
|
||||||
|
|
||||||
setuptools.setup(
|
setuptools.setup(
|
||||||
name="safeeyes",
|
name="safeeyes",
|
||||||
|
|