Skip to content

Commit

Permalink
Merge pull request #736 from vkbo/xdg_setup
Browse files Browse the repository at this point in the history
XDG Setup and Uninstall
  • Loading branch information
vkbo authored Apr 2, 2021
2 parents 641ff44 + 96fb892 commit 3ee07c7
Show file tree
Hide file tree
Showing 6 changed files with 97 additions and 16 deletions.
6 changes: 5 additions & 1 deletion .github/workflows/test_linux_3.6.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,12 @@ jobs:
pip install --upgrade pip
pip install -r requirements.txt
pip install pytest-timeout
pip install pytest-cov
pip install pytest-qt
pip install codecov
- name: Run Tests
run: |
export QT_QPA_PLATFORM=offscreen
pytest -v --timeout=60
pytest -v --cov=nw --timeout=60
- name: Upload to Codecov
uses: codecov/codecov-action@v1
6 changes: 5 additions & 1 deletion .github/workflows/test_linux_3.7.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,12 @@ jobs:
pip install --upgrade pip
pip install -r requirements.txt
pip install pytest-timeout
pip install pytest-cov
pip install pytest-qt
pip install codecov
- name: Run Tests
run: |
export QT_QPA_PLATFORM=offscreen
pytest -v --timeout=60
pytest -v --cov=nw --timeout=60
- name: Upload to Codecov
uses: codecov/codecov-action@v1
3 changes: 2 additions & 1 deletion docs/source/int_started.rst
Original file line number Diff line number Diff line change
Expand Up @@ -109,13 +109,14 @@ you're running novelWriter from the source code, a local copy of this documentat
generated. It requires the following Python packages on Debian and Ubuntu.

* ``python3-sphinx``
* ``python3-sphinx-rtd-theme``
* ``python3-sphinxcontrib.qthelp``

Or from PyPi:

.. code-block:: console
pip install sphinx sphinxcontrib-qthelp
pip install sphinx sphinx-rtd-theme sphinxcontrib-qthelp
The documentation can then be built from the ``docs`` folder in the source code by running:

Expand Down
13 changes: 13 additions & 0 deletions docs/source/setup_linux.rst
Original file line number Diff line number Diff line change
Expand Up @@ -95,3 +95,16 @@ all users, run the script with the ``sudo`` command.

.. tip::
All options of the setup script can be listed with: ``./setup.py help``.


Uninstalling Icons
==================

The steps taken by the ``xdg-install`` step can be reversed by running:

.. code-block:: console
./setup.py xdg-uninstall
This will remove the desktop launcher and icons from the system. As above, whether this is done on
the current user, or system wide, depends on whether this command is called with ``sudo`` or not.
84 changes: 71 additions & 13 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -577,14 +577,6 @@ def xdgInstall():
else:
print(f"Error {exCode}: Could not install menu desktop file")

exCode = subprocess.call(
["xdg-desktop-icon", "install", "--novendor", "./novelwriter.desktop"]
)
if exCode == 0:
print("Installed icon desktop file")
else:
print(f"Error {exCode}: Could not install icon desktop file")

print("")

# Install MimeType
Expand Down Expand Up @@ -643,6 +635,68 @@ def xdgInstall():
else:
print(f"Error {exCode}: Could not update icon cache")

# Clean up
if os.path.isfile("./novelwriter.desktop"):
os.unlink("./novelwriter.desktop")

print("")
print("Done!")
print("")

return

##
# XDG Uninstallation (xdg-uninstall)
##

def xdgUninstall():
"""Will attempt to uninstall icons and make a launcher.
"""
print("")
print("XDG Uninstall")
print("=============")
print("")

exCode = subprocess.call(
["xdg-desktop-menu", "uninstall", "novelwriter.desktop"]
)
if exCode == 0:
print("Uninstalled menu desktop file")
else:
print(f"Error {exCode}: Could not uninstall menu desktop file")

sizeArr = ["16", "22", "24", "32", "48", "64", "96", "128", "256", "512"]

# App Icon
for aSize in sizeArr:
exCode = subprocess.call([
"xdg-icon-resource", "uninstall", "--noupdate",
"--context", "apps", "--size", aSize, "novelwriter"
])
if exCode == 0:
print(f"Uninstalled app icon size {aSize}")
else:
print(f"Error {exCode}: Could not uninstall app icon size {aSize}")

# Mimetype
for aSize in sizeArr:
exCode = subprocess.call([
"xdg-icon-resource", "uninstall", "--noupdate",
"--context", "mimetypes", "--size", aSize,
"application-x-novelwriter-project"
])
if exCode == 0:
print(f"Uninstalled mime icon size {aSize}")
else:
print(f"Error {exCode}: Could not uninstall mime icon size {aSize}")

# Update Cache
exCode = subprocess.call(["xdg-icon-resource", "forceupdate"])
if exCode == 0:
print("Updated icon cache")
else:
print(f"Error {exCode}: Could not update icon cache")

print("")
print("Done!")
print("")
Expand Down Expand Up @@ -881,6 +935,7 @@ def innoSetup():
" install.\n"
" xdg-install Install launcher and icons for freedesktop systems. Run as root or \n"
" with sudo for system-wide install, or as user for single user install.\n"
" Running 'xdg-uninstall' will remove the icons.\n"
" win-install Install desktop and start menu icons for Windows systems.\n"
)

Expand Down Expand Up @@ -932,11 +987,6 @@ def innoSetup():
# General Installers
# ==================

if "launcher" in sys.argv:
sys.argv.remove("launcher")
print("The 'launcher' command has been replaced by 'xdg-install'.")
sys.exit(1)

if "xdg-install" in sys.argv:
sys.argv.remove("xdg-install")
if hostOS == OS_WIN:
Expand All @@ -945,6 +995,14 @@ def innoSetup():
else:
xdgInstall()

if "xdg-uninstall" in sys.argv:
sys.argv.remove("xdg-uninstall")
if hostOS == OS_WIN:
print("ERROR: Command 'xdg-uninstall' cannot be used on Windows")
sys.exit(1)
else:
xdgUninstall()

if "win-install" in sys.argv:
sys.argv.remove("win-install")
if hostOS == OS_WIN:
Expand Down
1 change: 1 addition & 0 deletions setup/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,5 +46,6 @@ install.

`xdg-install` – Install launcher and icons for freedesktop systems. Run as root
or with sudo for system-wide install, or as user for single user install.
Running `xdg-uninstall` will remove the icons.

`win-install` – Install desktop and start menu icons for Windows systems.

0 comments on commit 3ee07c7

Please sign in to comment.