2

我需要更改从 Unsplash API 下载的图像的文件权限,以便将其用作 Greeter(基本操作系统登录)背景。

我已经尝试过在方法中使用类似FileCopyFlags.OVERWRITE,和 的标志FileCopyFlags.ALL_METADATA,但是当下载文件时,它的权限设置为.FileCopyFlags.TARGET_DEFAULT_PERMSFileCopyFlags.NONEFile.copy_async600

我需要更改权限的原因是 Greeter 使用文件夹中的图像/var/lib/lightdm-data/user/wallpaper/image.jpg并且需要对该图像的读取权限。

var file_path = File.new_for_path ("/home/user/.local/share/backgrounds/background.jpg");
var file_from_uri = File.new_for_uri ("https://images.unsplash.com/photo-1560613717-c793db79055e?ixlib=rb-1.2.1&q=85&fm=jpg&crop=entropy&cs=srgb2176");

if (!file_path.query_exists ()) {
  file_from_uri.copy_async.begin (file_path, 
    FileCopyFlags.OVERWRITE | 
    FileCopyFlags.ALL_METADATA, 
    GLib.Priority.DEFAULT, 
    null, (current_num_bytes, total_num_bytes) => {
       // show progress
    }, (obj, res) => {
       // detect end
    });
} else {
    print ("Picture already exist\n");
}

下载的图像具有[600] -rw-------权限,但[664] -rw-rw-r--需要将其用于 Greeter。

我的不良结果

我需要这个

4

0 回答 0