1. Home
  2. Linux
  3. Use icloud on linux

How to use iCloud on Linux

Apple doesn’t take it’s Linux users seriously, even though a good chunk of people on the platform use iPhones. Due to their negligence, there isn’t a good way to use iCloud on Linux and users can’t access their data, photos, notes, etc.

To make up for Apple’s unwillingness to make an iCloud application on Linux, users can get around this by either installing the iCloud Snap app or, create their application with the Nativefier tool.

Note: to use iCloud on Linux via the iCloud Snap app or with a self-built Nativefier application, you must already have an Apple ID. For more information about that, click here.

Method 1 – iCloud Notes Snap app

The iCloud Notes Snap application is a simple browser wrapper packed into an easy to install Snap package. The point of the app is to give quick and easy access to iCloud Notes, but other features within Apple services are accessible as well, such as Mail, Photos, Contacts, and more.

To gain access to the iCloud Snap app on your Linux PC, you will need to be running the Snap package runtime. Without the runtime, Snaps won’t install, so it’s critical you get it working (if you don’t have it already.)

Getting the Snap runtime working on most Linux distributions is very easy these days, as almost all major Linux distributions support the runtime. For more information on how to set up Snaps, click here. Or, if you aren’t currently using a Linux OS with Snap support, consider switching to Ubuntu.

Install iCloud Notes Snap

With the Snap runtime set up on your Linux PC, the next step in the process is to download the iCloud application from the Snapcraft store and install it on your Linux PC. To do this, open up a terminal window by pressing Ctrl + Alt + T or Ctrl + Shift + T on the keyboard. Then, enter the snap install command below.

sudo snap install icloud-notes-linux-client

With the app installed, open your application menu up and search for “icloud-notes-linux-client,” or something similar. Immediately upon opening, you’ll be prompted to sign into Apple’s iCloud system with your Apple ID. Do so.

Assuming sign-in is successful, you’ll be transported to your iCloud Notes. From there you can view recently saved notes. If you want to access other iCloud services, go to the top-left part of the window where it says “iCloud Notes” and click the down arrow. Doing this will reveal other iCloud apps you can quickly switch to.

Method 2 – Make Linux iCloud app with Nativefier

Using the iCloud Notes snap package is fine for most users that don’t want to fuss around. That said, it’s far from the best experience you can get with iCloud on Linux, because it’s in a Snap, and can’t be modified. For a better experience, consider building your own using Nativefier.

It’s not very hard to build your iCloud app with Nativefier, mainly because the program does all the heavy lifting. All you’ll need to know is the right commands to enter in the terminal.

The first part of the process for creating your iCloud app is to install Nativefier. To do this, check out our in-depth tutorial. It goes over how to get it working on every mainstream Linux app out there. Once you’ve got Nativefier installed, open up a terminal, move the session to the tmp directory, and create a new build folder.

cd /tmp

mkdir -p icloud-linux-build-dir

cd icloud-linux-build-dir

Next, use the wget downloader to grab the iCloud icon from the internet.

wget https://i.imgur.com/m0abT4k.png -O icon.png

Now that you’ve got the iCloud icon file, it’s time to use Nativefier to package a Linux binary.

nativefier -p linux -a x64 -i icon.png --disable-context-menu --disable-dev-tools --single-instance https://www.icloud.com/

With the package done building, use the mv command and rename the output folder from “sign-in-to-i-cloud-apple-linux-x64” to “icloud.”

mv sign-in-to-i-cloud-apple-linux-x64 icloud

Place the new “icloud” folder into /opt.

mv /tmp/icloud-linux-build-dir/icloud /opt

Rename the icloud binary file from “sign-in-to-i-cloud-apple” to “icloud.”

mv /opt/icloud/sign-in-to-i-cloud-apple /opt/icloud/icloud

After renaming the iCloud binary, you must update its permissions using the chmod command. Without the correct permissions, the app will not execute correctly.

sudo chmod 755 -R /opt/icloud/

Create a desktop shortcut

The iCloud nativefier application is set up on your Linux PC, but you can’t use it yet, as there isn’t a desktop shortcut. Thankfully, this is easy to fix. To start, open up a terminal and use the touch command to create a new shortcut file.

su -

or

sudo -s
touch /usr/share/applications/icloud.desktop

Next, open up the iCloud shortcut file in the Nano text editor.

nano -w /usr/share/applications/icloud.desktop

Paste the code below into Nano.

[Desktop Entry]
Comment[en_US]= Access Apple iCloud on Linux.
Comment=
Exec=/opt/icloud/icloud
GenericName[en_US]=Apple iCloud desktop app.
GenericName=iCloud
Icon=/opt/icloud/resources/app/icon.png
MimeType=
Name[en_US]=iCloud
Name=iCloud
NoDisplay=false
Path=
Categories=Network
StartupNotify=true
Terminal=false
TerminalOptions=
Type=Application

Save the edit to the iCloud shortcut file by pressing Ctrl + X and exit with Ctrl + O. Then, finish up by updating the shortcut’s permissions.

chmod +x /usr/share/applications/icloud.desktop

8 Comments

  1. Hi,
    Need some help. I’m getting the following error when trying to run the nativefer command. How can I resolve this issue.

    ubuntu.local:/tmp/icloud-linux-build-dir$ nativefier -p linux -a x64 -i icon.png –disable-context-menu –disable-dev-tools –single-instance https://www.icloud.com/

    /usr/local/lib/node_modules/nativefier/node_modules/yargs/node_modules/yargs-parser/build/index.cjs:1015
    throw Error(`yargs parser supports a minimum Node.js version of ${minNodeVersion}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`);
    ^
    Error: yargs parser supports a minimum Node.js version of 12. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions
    at Object. (/usr/local/lib/node_modules/nativefier/node_modules/yargs/node_modules/yargs-parser/build/index.cjs:1015:15)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Module.require (internal/modules/cjs/loader.js:692:17)
    at require (internal/modules/cjs/helpers.js:25:18)
    at Object. (/usr/local/lib/node_modules/nativefier/node_modules/yargs/build/index.cjs:1:59931)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    todh@timrek87:/tmp/icloud-linux-build-dir$

  2. This is great and I finally got it working although I found some of the rename instructions confusing when I actually did it.
    Could this technique be used for Outlook on the WEB too?
    I was successful in creating a Nativefier app for google maps too but it did not work for google translate.
    Only thing not working in iCloud app is reminders app creates an error but the calendar and notes and address book and mail work and that is the main thing.
    thanks for a great post

  3. What about accessings files, like a spreadsheet, stored on an icloud drive from an app on Ubuntu 20.x? I don’t see the icloud drive in the file open window in Libre Calc. Do I need to define icloud as a remote service somehow and use the open remote menu option to open the file? How do I setup icloud as a remote service?

    thanks in advance, for any advice,
    – Derrick

  4. Just a quick correction: for the last step instructing how to save then exit in nano – the commands are transposed:
    Ctrl + o = save
    Ctrl + x = exit
    Alternatively you can jump directly to ‘ctrl + x’ and the editor recognizes there’s been edits without saving the file, and it will prompt you to save prior-to exit. But for safety & assurances sake, it is best to just use the extra key command and save first.

    🙂

    Otherwise this is A GREAT article!

    Cheers!

  5. Some of this has changed since it was written. For instance “sign-in-to-i-cloud-apple” is not created. It’s named something else now but I can’t recall what exactly.
    Also, /icloud/icloud is now changed to iCloud in both cases

  6. Everything appeared to work just fine until I got to

    nativefier -p linux -a x64 -i icon.png –disable-context-menu –disable-dev-tools –single-instance https://www.icloud.com/

    Phil