ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

deepin优雅地使用坚果云攻略

2021-08-21 09:01:38  阅读:500  来源: 互联网

标签:攻略 self deepin 坚果 file path home 目录


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('\r\n')
                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()
    ....#其他代码

然后就可以痛快地删除~/.nutstore/apps这个目录了。

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

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

解决方式:

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

标签:攻略,self,deepin,坚果,file,path,home,目录
来源: https://www.cnblogs.com/liwanliangblog/p/15168820.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有