• deepin优雅地使用坚果云攻略


    1. 前言

    坚果云是一款多平台同步软件,能够实时备份同步工作和学习中很多重要的脚本,配置等文件。

    本篇主要介绍一些在deepin操作系统(最新版本deepin V20.2.3)上使用坚果云的经验,供有同样需求的朋友参考。

    注:博客中涉及到的部分代码的修改在很久之前完成,因为能正常实现个人需求,就没有复核,能用就行。以后有兴致再优化。

    2. deepin安装坚果云

    deepin安装坚果云很简单,只需三步即可完成。

    建议按照以下三个步骤安装,不要从商店安装坚果云

    1.浏览器访问坚果云官方网站下载地址:https://www.jianguoyun.com/s/downloads,下载Linux版本的坚果云deb包

    当前Linux版本的坚果云安装包最新版本5.1.2

    2.deepin打开终端,执行:sudo apt install libnotify-dev安装相关依赖

    3.找到下载的坚果云deb包,双击安装,输入密码,即可完成坚果云的安装

    3. 配置坚果云的同步目录

    3.1 重新配置默认放置目录

    坚果云默认在当前用户的home目录下创建一个NutStore Files的目录用来放置同步的内容。

    但是对于deepin文件管理器来说,在home目录下显示一个NutStore Files有些怪怪的。相比于坚果云,安装的微信就很老实,乖乖地躺在文档目录下。

    所以对于如何修改坚果云的放置目录,放文件目录看起来尽然有续,归档自然?

    答案是:在首次启动和登陆坚果云时配置同步目录。

    意思就是:你要选择本地的哪个目录,来作为你存放在坚果云云端文件的目录。

    所以先提前创建好一个目录:

    • 方式1,使用文件管理器,在“文档“下面创建”坚果云“
    • 方式2,使用终端,执行:mkdir ”~/Documents/NutStore Files“

    上面两个方式均可,目的只是重新配置坚果云默放置的目录。目录到底是中文还是英文,就看个人喜好了。

    然后点击登陆坚果云,在以下这个界面修改配置即可。

    3.2 彻底解决在home下创建NutStore Files问题

    上面的步骤能够修改坚果云默认的放置目录,但是不能够解决每次登陆坚果云以后,它在用户的home目录下创建NutStore Files目录的问题。

    以下过程就是通过修改坚果云核心工作脚本,来彻底解决这个问题。

    终端执行:vim ~/.nutstore/dist/bin/nutstore-pydaemon.py,修改内容如下:

    第一处修改:

    from indicator_menus import is_java_client_running, open_window
    from resource_manage import PicturesManage
    from log_utils import get_logger
    from network_util import execute_cmd, Command
    
    # 以下这几行是要添加的函数,函数的目的就是删除用户home目录下的NutStore Files目录
    def remove_home_file():
        file = "/home/替换为你的帐号/Nutstore Files"
        if os.path.exists(file):
            shutil.rmtree(file)
    
    def get_dist_dir():
        """Get the nutstore distribution install directory by the path to the python script"""
        path = os.path.dirname(sys.argv[0])
        abs_path = os.path.abspath(path)
        if os.path.basename(abs_path) != 'bin':
    
    

    第二处修改:

    class JavaAppWatchDog(threading.Thread):
        def __init__(self):
            remove_home_file()  #这里插入上面的函数
            # invoke the super class's constructor, if it has
            fun = getattr(threading.Thread, "__init__", lambda x: None)
            fun(self)
            self.daemon = True
            # It should only be set when the java app is restarted to migrate to another nutstore home
            self.__new_nutstore_home = None
            # It should only be set when the java app is restarted by adding more ignore path
            self.__ignore_path_list = None
            # How many times the java app has been restarted
            self.__restart_num = 0
            # It should only be set when the java app is restarted by switch account
            self.__switch_account = None
            # flag to indicate whether the watch dog thread should quit
            self.__exit = False
            # debug settings
            self.__cli_args = ' '.join(sys.argv[1:])
            self.__lock = threading.RLock()
    
        def set_new_nutstore_home(self, new_home_dir):
            remove_home_file() #这里插入上面的函数
            self.__lock.acquire()
            try:
                self.__new_nutstore_home = new_home_dir
            finally:
                self.__lock.release()
    
        def get_new_nutstore_home(self):
            remove_home_file() #这里插入上面的函数
            self.__lock.acquire()
            try:
                return self.__new_nutstore_home
            finally:
    

    第三处修改:

    def main_loop():
        watchDog = JavaAppWatchDog()
        watchDog.start()
    
        listen = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        listen.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        listen.bind(('localhost', LOCAL_PORT))
    
        while True:
            listen.listen(16)
            (conn, addr) = listen.accept()
    
            file = None
            try:
                # NS-4828 set mode='rw' cause python3 can't write without 'w'
                file = conn.makefile(mode='rw')
                remove_home_file() # 这里掺入上面的函数
                lines = []
                while True:
                    line = file.readline().rstrip('
    ')
                    lines.append(line)
                    if line == 'done' or line == '':
                        break
    

    第四处修改:

    if __name__ == '__main__':
        signal.signal(signal.SIGINT, sigint_handler)
        if is_java_client_running():
            remove_home_file() #这里插入上面的函数
            has_file_by_lightapp, path = parse_file_to_open_in_lightapp()
            if has_file_by_lightapp:
                if path: open_file_in_lightapp(path)
                else: open_wizard_in_lightapp()
            else:
            open_window()
    
    

    上面修改完成后,保存退出即可。

    再也不会应为启动坚果云,home目录下出现NutStore Fiels目录了,它会被自动删除。

    4. 剪裁坚果云

    4.1 卸载坚果云轻应用

    坚果云的安装,会附带安装一些轻应用,使用时,一些默认格式的文件会从轻应用打开。

    如果不喜欢使用坚果云轻应用,可以在deepin启动器,找到“坚果云轻应用”快捷方式,右键卸载即可

    4.2 目录瘦身

    虽然能够卸载轻应用,但是实际上轻应用的可执行文件等,还是存在本地的。

    一个快捷的验证就是:

    终端执行:du -sh ~/.nutstore/,会发现该目录很大。而造成这么大的原因,就是~/.nutstore/apps这个目录

    如果只是单纯删除这个目录,坚果云会自动修复(即自动下载生成这个目录),保证其功能的可用性。

    为了解决这个问题,就需要修改坚果云的核心工作脚本了:~/.nutstore/dist/bin/nutstore-pydaemon.py

    解决方案,vim 编辑~/.nutstore/dist/bin/nutstore-pydaemon.py,修改内容如下,保存退出即可。

    if __name__ == '__main__':
        signal.signal(signal.SIGINT, sigint_handler)
        if is_java_client_running():
            remove_home_file()
            #has_file_by_lightapp, path = parse_file_to_open_in_lightapp()
            #if has_file_by_lightapp:
                #if path: open_file_in_lightapp(path)
                #else: open_wizard_in_lightapp()
            #else:
            open_window() #注意要调整这一行的缩进,保持与remove_home_file()同级缩进
        ....#其他代码
    

    然后就可以痛快地删除~/.nutstore/apps/lightapp/1.0.1/下的内容了。
    千万注意:需要保留1.0.1的版本目录,否则会自动创建

    5. 修复安装坚果云后产生的问题

    场景1:安装了坚果云以后,创建的Markdown文件,即以.md为文件格式显示为白色,mime图标丢失

    解决方式:

    终端执行:rm -rf ~/.local/share/mime。即删除该目录即可

    【 欢迎交流探讨!邮箱:yunweinote@126.com】
  • 相关阅读:
    声音走样
    Terrain
    输出循环小数
    解决代码中多余的空行
    与二进制有关的几道面试题
    反转一个整数
    DirectX常见编译错误及解决办法
    STLset
    Visual Studio Autoexpand Information for DirectX 9
    素数环谈代码优化
  • 原文地址:https://www.cnblogs.com/liwanliangblog/p/15179592.html
Copyright © 2020-2023  润新知