**Is your feature request related to a problem? Please describe.**
The clipboard module depends on the remote module on Linux.

**Describe the solution you'd like**
It should be implemented using dedicated IPCs that are properly validated to avoid security issues.

**Describe alternatives you've considered**
The app can call the clipboard APIs in the main process in response to app-level IPCs from the renderer.

**Additional context**
Follow-up from https://github.com/electron/electron/pull/13028

atom/common/api/atom_api_native_image.cc
v8::Isolate* isolate,
    const mate::Handle<atom::api::NativeImage>& val) {
  return val.ToV8();
}
bool Converter<mate::Handle<atom::api::NativeImage>>::FromV8(
    v8::Isolate* isolate,
    v8::Local<v8::Value> val,
    mate::Handle<atom::api::NativeImage>* out) {
  /
  base::FilePath path;
  if (ConvertFromV8(isolate, val, &path)) {
    *out = atom::api::NativeImage::CreateFromPath(isolate, path);
    /
    return !(*out)->image().IsEmpty();
  }
  WrappableBase* wrapper =
      static_cast<WrappableBase*>(internal::FromV8Impl(isolate, val));
  if (!wrapper)
    return false;
  *out = CreateHandle(isolate, static_cast<atom::api::NativeImage*>(wrapper));
  return true;
}
}  /
namespace {
void Initialize(v8::Local<v8::Object> exports,