MagicCap is a image/GIF capture suite for Mac and Linux

Overview

MagicCap

MagicCap is a image/GIF capture suite for Mac and Linux. You can get a precompiled copy from the releases page of this GitHub page. It has the following features:

  • Very cross compatible. You should get the same experience on Mac and Linux.
  • Very fast. Captures are optimised to be as fast as possible.
  • Very flexible. You can choose to upload to whatever service you want to or just save the file.
  • Very functional. Want to capture a GIF? No problem. Want to blur a screenshot? No problem. MagicCap is there to help you with whatever you want.

This is not for Windows!

ShareX is amazing for that!

Supported Uploaders

MagicCap supports the following uploaders (this list will expand over time):

  • elixi.re
  • Passive (S)FTP
  • Pomf
  • imgur
  • Lunus
  • i.magiccap
  • reUpload
  • Ultrashare
  • S3 (Amazon and other S3-compatible providers)
  • ShareX (upload only)

Credit

The following people have done a ton to help in the creation of MagicCap. If you have done something to help and want your name here, feel free to make a pull request. This is in alphabetical order, not the order of the work people have done:

  • Devon (Da532) - Made all of the branding.
  • Harrison (AO554) - Helped us test for Mac.
  • Jacob (Kelwing) - Helped with some Go towards the project.
  • Jake (JakeMakesStuff) - Made the majority of the GUI/capture code for MagicCap.
  • Jake (techfan36) - Helped us test for Linux.
  • Matt (IPv4) - Refactored file naming, added random emoji & upload from clipboard.
  • Rhys (SunburntRock89) - Helped me with the structure and fixing bugs. Also fixed FTP.
  • Sam (REC) - Made the FTP logo.

Building

MagicCap is built as many modules. The reason for this is that modules can be easily hot reloaded, making updates significantly faster than with previous releases. To assist with this, we have split the application into several modules with a centralised webpacker.

To compile a release from source, you will need Go 1.17+, nvm, GNU Make, and a working CXX toolchain (if you have XCode installed on macOS, you have this, if not, install g++ and gcc). From here, you can simply run make and the release will automatically be built. On macOS, this will make the app as a universal binary. On Linux, this will build a folder for your specific architeture.

From here, you can run make package. This will make a dmg on macOS and a deb and rpm on Linux.

Development

If you wish to develop MagicCap, you will need the same dependencies as above with the addition of yarn. When you have these installed, you can use nvm install to jump to the version of Node we use in our development environment and then run yarn to install all packages/run all build scripts. After this, you can simply run yarn run dev-run to jump into the development environment. From here, you should note the following:

  1. We actively try and avoid native modules: Whilst sometimes they are needed, most of the time they are not and only serve to make the development experience more complex since they cannot be webpack'd.
  2. Modules should be fully unloadable: With the exception of bootloader which should rarely be touched, modules should be fully unloadable. This means no background loops in anything except browser processes and main, and in main the background loop must be stoppable within main/unloader.ts.
  3. Development hot reloads (mostly!): If you are editing bootloader.js or libscreenshot you will need to do a restart of your dev environment, if you are modifying some of the Go processes you will need to run the build command for them. However, for all modules, they should be hot reloadable. If your code isn't, see the above point!

Mac Note

If you are on Mac, you'll need to download XCode.

File structure

Here are the manually editable files in the root folder:

assets

This folder should rarely be used. It is mainly here for main assets that have to be given as paths.

build

Most of the build scripts/metadata for MagicCap belongs here.

config

This is the configuration for MagicCap, written in React. Most communication with the main process is done in config/utils/main_api.ts and main/config_callbacks.ts, although some hooks are set in config/config_preload.js.

editors

The editors used in MagicCap.

gif

The Go application which is responsible for GIF capture and encoding. This is another process to allow for smooth multi-threading. The GIF is sent via stdout.

inplace_upgrade

Used on macOS to replace the app during update in the event that the whole bundle needs to be replaced for whatever reason.

libscreenshot

A native Node module written for significant (sometimes literally 2 second) performance gains over the Electron screen capture API.

main

The main module that is spawned by the bootloader. Basically responsible for all things MagicCap that are not done in a browser window. It is worth noting that main/index.ts and main/init.ts are different. main/index.ts is first to load the exception handler/run any migrations, and then main/init.ts handles the initialisation of the application.

region_selector

The React application responsible for rendering the region selector. It is worth noting that the region selector can both be pooled waiting for a response or automatically sprung up.

sftp

A Go application to handle SFTP due to some difficulties in normalising the build files on macOS for universal binaries with ssh2.

uploaders

The uploaders used in MagicCap. Where possible, these uploaders are split into implementations and protocols. All uploaders should be exported in the index file, and it should only be uploaders exported there with the exception of secretKeys.

webpacks

The webpack configurations which are used for the various JS bundles. The webpack configurations should behave like they are in the root and named webpack..js. They will then be automatically picked up by the webpacker and launched in a process to build. webpack.common.js is an exception which is shared across most of the modules.

bootloader.js

Handles making sure that main is updated if the app bundle has been, handling several globals relating to reloading and native modules, loading main, and making sure that webpacker is setup in development.

webpacker.js

This handles caching, multi-processing, and invoking webpack for all webpacks described above. The webpack cache is stored at ~/.magiccap-dev/webpack_cache/.

sharedTypes.d.ts

This is a shared type definition file for all of the modules. It is used to ensure that all modules are compatible with each other when there is something they depend upon sharing.

.eslintrc

The ESLint configuration for MagicCap. This just uses the recommended options with some opinionated changes, the reasons of which are documented.

.nvmrc

The Node version used for MagicCap development.

Makefile

Includes all the scripts relating to the compilation, packaging, and deployment of MagicCap.

package.json

A standard package.json file for MagicCap. It has a few scripts within it, although long scripts relating to compilation should go into the Makefile.

tsconfig.json

The MagicCap TypeScript configuration.

You might also like...

A generative engine that takes various png layers on a sprite sheet format, combines them and then converts them into a .gif file

A generative engine that takes various png layers on a sprite sheet format, combines them and then converts them into a .gif file

Welcome to the Generative GIF Engine v2.0.4 🐤 [8 minute read] This python and node app generates layered-based gifs to create NFT gif art! It is fast

Jan 2, 2023

A generative engine that takes various png layers on a sprite sheet format, combines them and then converts them into a .gif file

A generative engine that takes various png layers on a sprite sheet format, combines them and then converts them into a .gif file

Welcome to the Generative Animated Engine v3.0.1 🐤 [8 minute read] This repo used to be called jalagar/Generative_Gif_Engine but because it now suppo

May 24, 2022

optimize image & upload file to cloud as image bed with tiny image automic.

optimize image & upload file to cloud as image bed with tiny image automic.

Rush! 图片压缩 & 直传图床工具 这是一个兴趣使然的项目, 希望 Rush! 能让这个世界的网络资源浪费减少一点点 下载 Downloads 获取最新发行版 功能 Features 拖拽批量压缩图片, 支持格式 jpg/png/gif Drop to optimize, jpg/png/gif

Nov 12, 2022

A JavaScript plugin to turn many images into a gif

A JavaScript plugin to turn many images into a gif

GiffyImages A JavaScript plugin to turn many elements images into a gif magically. Preview Getting started npm i giffy-images -D or yarn add giffy-im

Nov 6, 2021

Possibly the coolest way to install apps and customize your Mac!

Possibly the coolest way to install apps and customize your Mac!

BrewMyMac Possibly the coolest way to install apps and customize your Mac! Introduction This article explains the motivation behind this project. Gett

Dec 6, 2022

created mac OS desktop with HTML, CSS, JS 😀

created mac OS desktop with HTML, CSS, JS 😀

Hello World 👋 I am planing to make a mac OS simulator using HTML, CSS, and JavaScript 😀 Mac Os Monterey Try it now! : https://mhmdmhd6.github.io/Mac

Dec 21, 2022

A Tempermonky / Greasemonkey plugin which can help you export your class schedule to the calendar on your phone / pad / PC / Mac.

A Tempermonky / Greasemonkey plugin which can help you export your class schedule to the calendar on your phone / pad / PC / Mac.

WHU Class Schedule Export as iCS Languages: English | 簡體中文 | 繁體中文 Changelog v0.90.1 - Sep 18, 2022 Fix bugs: Fix an error when a class have multiple s

Sep 7, 2022

📷 Detects your face and adds filters from your webcam. You can capture and download images.

📷 Detects your face and adds filters from your webcam. You can capture and download images.

Snapchat Filters on WebCam 📷 Detects your face and adds filters from your webcam. You can capture and download images. 👉 Visit site 📌 Screenshots ?

Apr 27, 2022

🤪 A linter, prettier, and test suite that does everything as-simple-as-possible.

🤪 A linter, prettier, and test suite that does everything as-simple-as-possible.

Features Fully Featured Code Grading Knowing if you need to work on your code is important- that's why we grade your code automatically. But, unlike o

Sep 25, 2022
Owner
MagicCap is a image capture suite for Mac and Linux.
null
🆙 Upscayl - Free and Open Source AI Image Upscaler for Linux, MacOS and Windows built with Linux-First philosophy.

v1.3 will come around 12 September Upscayl ?? Free and Open Source AI Image Upscaler simplescreenrecorder-2022-08-23_20.17.02.mp4 Upscayl is a cross-p

Upscayl 8.7k Jan 9, 2023
🆙 Upscayl - Free and Open Source AI Image Upscaler for Linux, MacOS and Windows built with Linux-First philosophy.

Upscayl ?? Free and Open Source AI Image Upscaler Upsacyl.Demo.mp4 Upscayl is a cross-platform application built with the Linux-first philosophy. This

Upscayl 5.1k Sep 21, 2022
Inter Process Communication Module for node supporting Unix sockets, TCP, TLS, and UDP. Giving lightning speed on Linux, Mac, and Windows. Neural Networking in Node.JS

Inter Process Communication Module for node supporting Unix sockets, TCP, TLS, and UDP. Giving lightning speed on Linux, Mac, and Windows. Neural Networking in Node.JS

Node IPC 43 Dec 9, 2022
An open-source, blazing fast code editor for Windows, Mac, and Linux.

Thermite An open-source, blazing fast code editor for Windows, Mac, and Linux. About Thermite is a Blazing Fast, Open-Source, Cross-Platform Code Edit

Keston 4 Oct 25, 2022
Requestly Desktop App (Mac, Linux, Windows)

Requestly Desktop App Requestly Desktop App. Debug your network request across all apps (Safari, Chrome, Firefox, Brave...) using a single app. Direct

Requestly 14 Jan 2, 2023
Hashmat Noorani 4 Mar 21, 2023
An Anime Game launcher for Linux with automatic patching fixing detection of Linux/Wine and telemetry disabling

An Anime Game launcher for Linux with automatic patching fixing detection of Linux/Wine and telemetry disabling

An Anime Team 367 Jan 4, 2023
Grupprojekt för kurserna 'Javascript med Ramverk' och 'Agil Utveckling'

JavaScript-med-Ramverk-Laboration-3 Grupprojektet för kurserna Javascript med Ramverk och Agil Utveckling. Utvecklingsguide För information om hur utv

Svante Jonsson IT-Högskolan 3 May 18, 2022
Hemsida för personer i Sverige som kan och vill erbjuda boende till människor på flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo för kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023