**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
if (skia_rep_added && IsEmpty()) {
    gfx::Image image(image_skia);
    image_ = std::move(image);
  }
}
#if !defined(OS_MACOSX)
void NativeImage::SetTemplateImage(bool setAsTemplate) {}
bool NativeImage::IsTemplateImage() {
  return false;
}
#endif
/
mate::Handle<NativeImage> NativeImage::CreateEmpty(v8::Isolate* isolate) {
  return mate::CreateHandle(isolate, new NativeImage(isolate, gfx::Image()));
}
/
mate::Handle<NativeImage> NativeImage::Create(v8::Isolate* isolate,
                                              const gfx::Image& image) {
  return mate::CreateHandle(isolate, new NativeImage(isolate, image));
}
/
mate::Handle<NativeImage> NativeImage::CreateFromPNG(v8::Isolate* isolate,
                                                     const char* buffer,
                                                     size_t length) {
  gfx::Image image = gfx::Image::CreateFrom1xPNGBytes(
      reinterpret_cast<const unsigned char*>(buffer), length);
  return Create(isolate, image);
}
/
mate::Handle<NativeImage> NativeImage::CreateFromJPEG(v8::Isolate* isolate,