13.10 с Mate и Clearlooks: некоторые gtk-приложения в основном черные

Я внес некоторые изменения в код , данный Марком Байерсом . Функция ниже также добавляет пустые каталоги, если они у вас есть. Примеры должны прояснить, какой путь добавляется к почтовому индексу.

#!/usr/bin/env python
import os
import zipfile

def addDirToZip(zipHandle, path, basePath=""):
    """
    Adding directory given by \a path to opened zip file \a zipHandle

    @param basePath path that will be removed from \a path when adding to archive

    Examples:
        # add whole "dir" to "test.zip" (when you open "test.zip" you will see only "dir")
        zipHandle = zipfile.ZipFile('test.zip', 'w')
        addDirToZip(zipHandle, 'dir')
        zipHandle.close()

        # add contents of "dir" to "test.zip" (when you open "test.zip" you will see only it's contents)
        zipHandle = zipfile.ZipFile('test.zip', 'w')
        addDirToZip(zipHandle, 'dir', 'dir')
        zipHandle.close()

        # add contents of "dir/subdir" to "test.zip" (when you open "test.zip" you will see only contents of "subdir")
        zipHandle = zipfile.ZipFile('test.zip', 'w')
        addDirToZip(zipHandle, 'dir/subdir', 'dir/subdir')
        zipHandle.close()

        # add whole "dir/subdir" to "test.zip" (when you open "test.zip" you will see only "subdir")
        zipHandle = zipfile.ZipFile('test.zip', 'w')
        addDirToZip(zipHandle, 'dir/subdir', 'dir')
        zipHandle.close()

        # add whole "dir/subdir" with full path to "test.zip" (when you open "test.zip" you will see only "dir" and inside it only "subdir")
        zipHandle = zipfile.ZipFile('test.zip', 'w')
        addDirToZip(zipHandle, 'dir/subdir')
        zipHandle.close()

        # add whole "dir" and "otherDir" (with full path) to "test.zip" (when you open "test.zip" you will see only "dir" and "otherDir")
        zipHandle = zipfile.ZipFile('test.zip', 'w')
        addDirToZip(zipHandle, 'dir')
        addDirToZip(zipHandle, 'otherDir')
        zipHandle.close()
    """
    basePath = basePath.rstrip("\\/") + ""
    basePath = basePath.rstrip("\\/")
    for root, dirs, files in os.walk(path):
        # add dir itself (needed for empty dirs
        zipHandle.write(os.path.join(root, "."))
        # add files
        for file in files:
            filePath = os.path.join(root, file)
            inZipPath = filePath.replace(basePath, "", 1).lstrip("\\/")
            #print filePath + " , " + inZipPath
            zipHandle.write(filePath, inZipPath)

Выше простая функция, которая должна работать для простых случаев. Вы можете найти более элегантный класс в моем Gist: https://gist.github.com/Eccenux/17526123107ca0ac28e6

2
задан 06.05.2020, 19:00

1 ответ

Некоторые из ваших неправильно работающих приложений могут быть gtk3. Чтобы выяснить это, запустите:

ldd /usr/bin/app_name | grep gtk

Например, с gucharmap,

$ ldd /usr/bin/gucharmap | grep gtk
    libgtk-3.so.0 => /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 (0x00007fcdee89a000)
$ 

Примечание libgtk-3.0 на выходе.

Также проверьте с whereis, если ваше приложение находится где-то еще, например, в sbin, а не в bin.

Тема Clearlooks поддерживает только gtk2. (Загляните в папку themes, и вы не увидите подпапку gtk-3.0 в папке Clearlooks.)

Я предлагаю вам использовать тему, поддерживающую как gtk2 , так и gtk3.

1
ответ дан 06.05.2020, 19:01
  • 1
    Вы закрепили его. Я выбрал " TraditionalOk" тема, которая выглядит подобной Clearlooks и поддерживает gtk3. – greg 06.05.2020, 19:01

Теги

Похожие вопросы