A universal media file opener / player desktop app developed in React.js and Electron.
Uses craco for accessing local file system on client side.
This project was bootstrapped with Create React App.
Go to Slasher blog for more development details!
- Check issues
Supported Files:
Audio/Video: .mp3, .mp4
Image: .png, .jpg, .bmmp, .gif
Text: .txt, .md
Installation:
Install the .dmg file in dist folder.
Double click open backslash.app, there should be 3 preloaded files for testing purpose.
+ On first start, please grant the app's access to local file system.Loading files:
- Drag and drop any file from the computer into the
dropzonewould load that file. - Multiple files can be drag-drop-loaded in one operation.
Playlist operations:
There are two views (list/grid) for playlist. Grid view is friendly to image/av heavy presentations, which shows previews of the files in a grid; list view is friendly to text heavy presentations, where each file's name is clearly shown.
- Click on a
cellto show the file and click again to deselect. Shift+click multiple cells together will show multiple files. - If there are multiple files selected and you want to deselect one of them, shift click that cell.Only click and no shift will clear the
preview, aka. deselect all selected files. - In list view, click the
Xto delete the file fromplaylistaka. removing it from the app's internal memo. - Click
CLEARto remove all loaded files from internal memo. - The app would "remember" what files are added. Feel free to quit, same files will be loaded upon re-opening the app.
- Drag the
cellsto reorder the files in theplaylistas you wish. - Toggle list/grid view via
LIST/GRIDbutton.
Preview operations:
- The shown files could be dragged with the handleπ§² and placed anywhere within the window as you like.
- Click
PREVorNEXTto show prev/next file in the list/grid. This is disabled when selecting multiple files. - Click
CLEARto reset thepreviewarea. This will not delete the file from the app's internal memo. - The color of the border indicates the order of the layer (useful when there are multiple files shown; whiter = near bottom).
- Click
FULLSCREENto enter fullscreen. PressESCto exit fullscreen. - Click
BRING TO FRONTto bring certain file to the top layer when multiple files are shown.
Canvas operations:
Canvas is an overlay to image files, which allows users to jot or doodle without permanently modify the undelying image during a live presentation.
- Click
SHOW CANVASon the top-left corner of one previewed image to show its own local canvas. - Default pencil stroke is
S(small), clickLon the bottom of the canvas to change pencil stroke to large. - Click
SHOW COLORSto use the colorpicker. - Click
CLEARto remove all drawing history. - Clicking
HIDE CANVASor toggle fullscreen will not remove all drawing history local to the file. However, the drawings will be removed when selecting a different file from the playlist. To save the canvas, clickSAVE CANVAS. - Click
GLOBAL CANVASto show a global overlay layer for eg. drawing the relationships between different shown files. There is no explicit saving functions for drawings on global canvas at the moment considering its use cases.
Editor operations:
Users can edit/save/download the text files from a WYSIWYG editor. The files are downloaded into the same default location as your browser downloads. They are save in .md to keep the styles.
Recorder:
Recorder is designed for bookkeeping and dissemination of the recorded presentation session.
+ For MacOS, please grant the app's access to Microphone in System Preference. Misc:
- Each component is draggable to anywhere in the window with the handleπ§².
- Preview components are resizable by dragging the sides or the corners of the displayed area. Aspect ratios are not locked.
- To hide any of the functions that don't appear on starting the app, just click again on whatever button that made it appear.
Hotkeys:
toggle, interaction: shift
clear: ctrl
global: alt
App.js:
toggleGlobalCanvas: shift+alt+c
toggleAudio: shift+a
toggleZone: shift+z
toggleList: shift+l
clearLS: ctrl+l
prev: left
next: right
clearPreview: ctrl+p
Audio.js:
start:
stop:
pause:
download:
Playlist.js:
selection/deselection: shift click
IAVMedia.js: (no button for fullscreen)
toggleCanvas: shift+c
enterFullscreen: shift+f
exitFullscreen: esc
larger: =
smaller: -
DrawArea.js:
undo: ctrl+z
redo: ctrl+shift+z
clearCanvas: ctrl+c
toggleStroke: shift+b (bold)
togglePicker: shift+h (hue)
GlobalDrawArea.js:
undo: alt+ctrl+z
redo: alt+ctrl+shift+z (lol)
clearCanvas: alt+ctrl+c
toggleStroke: alt+shift+b (bold)
togglePicker: alt+shift+h (hue)
Editor.js:
save: ctrl+s
download: ctrl+d
Supported controller: MidiPlus SmartPad
.
βββ build Assets for test will be built into this folder
βΒ Β βββ ...
βββ dist
βΒ Β βββ backslash-0.1.0-mac.zip
βΒ Β βββ backslash-0.1.0.dmg The installer
βΒ Β βββ ...
βΒ Β βββ mac
βΒ Β βββ backslash.app The exebutable
βββ node_modules
βΒ Β βββ {depedencies}
βββ public
βΒ Β βββ asset
βΒ Β βΒ Β βββ {img / av files} The assets for test
βΒ Β βββ electron.js Entry point for electron-builder
βΒ Β βββ index.html
βΒ Β βββ ...
βββ src
βΒ Β βββ App.css
βΒ Β βββ App.js Main logic
βΒ Β βββ index.js Entry point for React app
βΒ Β βββ ...
βΒ Β βββ components
βΒ Β Β Β βββ ...
βββ craco.config.js Enables Node.js file system on client side
βββ electron-dev.js Entry point for electron app in dev mode
βββ package.json
βββ .env.electron Environment configuration for desktop app
βββ .env.web Environment configuration for web app
βββ ...
To install dependencies, run:
yarn
Runs the app in the development mode.
Open http://localhost:3000 to view it in the browser.
The page will reload if you make edits.
You will also see any lint errors in the console.
yarn start:web
Runs the app on desktop. Launch an electron window and reload electron automatically while developing:
yarn watch:electron
and in another console tab:
yarn start:electron-dev
The build and dist folders will be generated after running:
yarn build:electron
yarn dist
Please consult the scripts in package.json files in the two references.
Launches the test runner in the interactive watch mode.
See the section about running tests for more information.
Builds the app for production to the build folder.
It correctly bundles React in production mode and optimizes the build for the best performance.
The build is minified and the filenames include the hashes.
Your app is ready to be deployed!
See the section about deployment for more information.
Note: this is a one-way operation. Once you eject, you canβt go back!
If you arenβt satisfied with the build tool and configuration choices, you can eject at any time. This command will remove the single build dependency from your project.
Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except eject will still work, but they will point to the copied scripts so you can tweak them. At this point youβre on your own.
You donβt have to ever use eject. The curated feature set is suitable for small and middle deployments, and you shouldnβt feel obligated to use this feature. However we understand that this tool wouldnβt be useful if you couldnβt customize it when you are ready for it.
You can learn more in the Create React App documentation.
To learn React, check out the React documentation.
This section has moved here: https://facebook.github.io/create-react-app/docs/code-splitting
This section has moved here: https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size
This section has moved here: https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app
This section has moved here: https://facebook.github.io/create-react-app/docs/advanced-configuration
This section has moved here: https://facebook.github.io/create-react-app/docs/deployment
This section has moved here: https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify
- Devin Kenny
- William Leon
- Kelly Sun
