GithubHelp home page GithubHelp logo

0bcdian / waypaper-engine Goto Github PK

View Code? Open in Web Editor NEW
158.0 5.0 0.0 17.5 MB

A wallpaper setter with playlist functionality!

License: GNU General Public License v3.0

JavaScript 0.26% TypeScript 85.35% HTML 0.12% CSS 0.55% Shell 13.72%
archlinux hyprland sway wayland electron qtile react swww typescript wallpaper nodejs

waypaper-engine's Introduction

Features

  • Multi monitor support.
  • Four different types of playlists (Time of day, daily,interval based or static).
  • Easy configuration of all swww options.
  • Tray controls.
  • CLI Support.
  • All of swww features such as wallpaper change animations and wallpaper persistance through reboots.
  • Filter images by format, resolution,name,etc.
  • Run scripts on image set.


image

2024-05-06.22-11-19.1.mp4

Why

I started this project for two main reasons, one as a learning oportunity, and two because the available options for a tool like this didn't suit my needs fully. I really like swww but it lacks a lot of the features that I missed from wallpaper engine in windows, so this is my attempt to bridge that gap a little.

Install

Simply install from the aur like so:

yay -S waypaper-engine

or

yay -S waypaper-engine-git

Both the normal and -git version conflict with each other, so make sure to delete the other with yay -Rns package_name package_name-debug before installing either.

Manual installation

Be advised you will need to run some of the commands with sudo privileges as you will be copying files to protected paths.

  1. Clone this repo git clone [email protected]:0bCdian/Waypaper-Engine.git or download and extract the zip file
  2. cd into Waypaper-Engine
  3. run npm run build
  4. cd into release cd release
  5. Optional: if you want to change the tray icon, change the 512x512.png image inside linux-unpacked/resources/icons
  6. Optional: copy the 512x512.png file to the icons system directory cp linux-unpacked/resources/icons/512x512.png /usr/share/icons/hicolor/512x512/apps/waypaper-engine.png
  7. copy the whole directory to it's final destination sudo cp ./linux-unpacked -rt /opt/waypaper-engine
  8. go back to root dir cd ..
  9. cd into cli cd cli
  10. copy waypaper-engine file to your $PATH or /usr/bin sudo cp ./waypaper-engine /usr/bin or cp ./waypaper/engine $HOME/.local/bin be advised, if you do not copy the cli file to /usr/bin, the path you're copying it into must be in your $PATH, read this for more info
  11. go back to root cd ..
  12. copy the .desktop file to /usr/share/applications sudo cp ./waypaper-engine.desktop /usr/share/applications/

and you're done!

Usage

Simply start the app and add wallpapers to the gallery, from there you can double click to set the wallpapers or right click for more options, to create playlists simply click on the checkboxes that appear when hover over the images, and configure it, and then save it to auto start it.

Examples

Autostart on hyprland just the daemon

Add to your hyprland.conf the following lines:

exec-once=waypaper-engine daemon

Add scripts to run on each image set

Warning

Make sure the script in question has execution permissions Put you bash scripts in this path:

$HOME/.waypaper_engine/scripts

The scripts are always passsed as an argument the path of the image being set, so you can do stuff like this:

carbon

2024-05-06.22-22-49.mp4

TODO

  • Add testing.
  • Have a ci/cd pipeline.
  • Implement a logger for errors.
  • Publish in the aur.
  • Find a good icon/logo for the app (Thank you Cristian Avendaño!).
  • Add flatpak support.
  • Add scripts feature.
  • Add playlists per monitor.

If you encounter any problems or would like to make a suggestion, please feel free to open an issue.

Gallery

image image image image image image image

Special Thanks

LGFae - for the amazing little tool that swww is ! ❤️

Simon Ser - for wlr-randr, without it making this work across different wayland wm's would've been a nightmare 🥲

Cristian Avendaño - for creating the amazing logo! 💪

waypaper-engine's People

Contributors

0bcdian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

waypaper-engine's Issues

Random img per monitor ?

Is there a way to have a different random image per monitor ?

So for example, if I have 3 monitors and I type waypaper-engine random I get 3 different images, 1 one each monitor?

And by extension when the playlist is configured to refresh images in a random order, a random image would be loaded on each monitor instead of a random image in all monitors (as it is now)

Per wallpaper playlist settings

I'm curious if it's possible to set the wallpaper in an individual playlist to its own set of options.

I.e. I have several 'normal' wallpapers, and then a few ultrawide that would fit accross 2 normal monitors. The rest of the normal wallpapers could just go about their business normally, but the ultrawide would do the "Extend across all monitors" setting.

Separately (I can do write this up in another issue, and I'll probably take a look at the code to see if I can PR it in rather than just asking work of you), I'd love to see a way to do random wallpapers per monitor. So like in wallpaper-engine, where you can have a playlist for each monitor individually. I know swww can handle which display is applied, so it seems like something at least mildly technically feasable.

Adding a directory only adds 2 images

Maybe it's related to my file picker, but for some reason in the last couple days, when I click "Add Images from Directory", and add a directory with some 10-15 images, I'm only getting the first two alphanumerically.

Hyprland, Arch, Kernel 6.7 etc. I honestly don't know what I've changed since it last worked, been doing... a lot of customizations.

Any thoughts? I think it's GTK related, and something about the File Picker, but not sure where to dig in to actually figure out why it broke for wpe.

Binary Release

would it be possible to provide binary releases along with aur-bin package

Daemon does not start

I am using Arch and Wayland, I am using the latest waypaper-engine-git from the AUR. This is fresh install, I haven't been able to use waypaper-engine yet.

Whenever I run the daemon with the command waypaper-engine daemon, it just says "starting daemon..." but the daemon never actually starts.

If I pass the logs flag, it works, but I do not have any logs in ~/.waypaper-engine

when I run waypaper-engine run, I get this:

Error: Failed to establish connection to waypaper daemon.
at testConnection (/opt/waypaper-engine/resources/app/dist-electron/main.js:13872:9)
at async initWaypaperDaemon (/opt/waypaper-engine/resources/app/dist-electron/main.js:13849:7)
at async /opt/waypaper-engine/resources/app/dist-electron/main.js:15174:3
Could not start wpe-daemon, shutting down app...
/usr/bin/waypaper-engine: line 805: Something went wrong: command not found

Cannot run CLI options

When I try to set a random image, I get an error that the daemon isn't running, even if I have just started the daemon:

[kirkham@endeavour ~]$ pidof wpe-daemon
56387
[kirkham@endeavour ~]$ waypaper-engine random
/usr/bin/waypaper-engine: line 661: socat: command not found
Seems like the daemon is not running, make sure to run 'waypaper-engine daemon' first
[kirkham@endeavour ~]$

GUI always can not start

Can not start the GUI from the tray,When I config the app start from the tray,I can never start the GUI

Waypaper Daemon crashing when running the application

I don't seem to be able to run it with --logs but I can run it with info

waypaper-engine info
socat[96814] E connect(, AF=1 "/tmp/waypaper_engine_daemon.sock", 34): No such file or directory

This is what happens when I run it. It seems to have started since I tried running it not connected to a monitor (I usually run in clamshell mode) - Wonder if it got confused somewhere and I need to clear something out.

waypaper-engine run
swww is installed in the system
Error: Failed to establish connection to waypaper daemon.
at testConnection (/opt/waypaper-engine/resources/app/dist-electron/main.js:13895:9)
at async initWaypaperDaemon (/opt/waypaper-engine/resources/app/dist-electron/main.js:13872:7)
at async /opt/waypaper-engine/resources/app/dist-electron/main.js:15217:3
Could not start wpe-daemon, shutting down app...
/usr/bin/waypaper-engine: line 805: Something went wrong: command not found

waypaper-engine daemon
starting daemon...
swww is installed in the system
Connection to waypaper daemon established.
Connection to waypaper daemon established.
Connection to waypaper daemon established.
Connection to waypaper daemon established

waypaper-engine run
swww is installed in the system
Error: Failed to establish connection to waypaper daemon.
at testConnection (/opt/waypaper-engine/resources/app/dist-electron/main.js:13895:9)
at async initWaypaperDaemon (/opt/waypaper-engine/resources/app/dist-electron/main.js:13872:7)
at async /opt/waypaper-engine/resources/app/dist-electron/main.js:15217:3
Could not start wpe-daemon, shutting down app...
/usr/bin/waypaper-engine: line 805: Something went wrong: command not found

Playlist switch doesn't use Pywal scripts

I've been using Waypaper-engine for awhile, however once I updated my playlist to include more backgrounds, my Pywal script stopped working and swapping pics or pressing random always defaults to one image.

After closing the playlist I can change backgrounds again, however the Pywal colors still won't apply.

Ive provided the logs to my daemon

daemon.log

unable to start the program

getting this error when i try to run

 waypaper-engine run
TypeError: Cannot open database because the directory does not exist
    at new Database (/opt/waypaper-engine/resources/app/node_modules/better-sqlite3/lib/database.js:65:9)
    at Database (/opt/waypaper-engine/resources/app/node_modules/better-sqlite3/lib/database.js:11:10)
    at go (/opt/waypaper-engine/resources/app/dist-electron/main.js:38:18096)
    at Xu (/opt/waypaper-engine/resources/app/dist-electron/main.js:38:18279)
    at Object.<anonymous> (/opt/waypaper-engine/resources/app/dist-electron/main.js:38:18339)
    at Module._compile (node:internal/modules/cjs/loader:1256:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1311:10)
    at Module.load (node:internal/modules/cjs/loader:1098:32)
    at Module._load (node:internal/modules/cjs/loader:945:12)
    at c._load (node:electron/js2c/node_init:2:13672)
Error: Could not create better-sqlite3 connector electron /opt/waypaper-engine/resources/app/dist-electron dirname
    at go (/opt/waypaper-engine/resources/app/dist-electron/main.js:38:18167)
    at Xu (/opt/waypaper-engine/resources/app/dist-electron/main.js:38:18279)
    at Object.<anonymous> (/opt/waypaper-engine/resources/app/dist-electron/main.js:38:18339)
    at Module._compile (node:internal/modules/cjs/loader:1256:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1311:10)
    at Module.load (node:internal/modules/cjs/loader:1098:32)
    at Module._load (node:internal/modules/cjs/loader:945:12)
    at c._load (node:electron/js2c/node_init:2:13672)
    at node:electron/js2c/browser_init:2:121151
    at node:electron/js2c/browser_init:2:121360
TypeError: Cannot open database because the directory does not exist
    at new Database (/opt/waypaper-engine/resources/app/node_modules/better-sqlite3/lib/database.js:65:9)
    at Database (/opt/waypaper-engine/resources/app/node_modules/better-sqlite3/lib/database.js:11:10)
    at go (/opt/waypaper-engine/resources/app/dist-electron/main.js:38:18096)
    at new Ju (/opt/waypaper-engine/resources/app/dist-electron/main.js:38:20109)
    at Object.<anonymous> (/opt/waypaper-engine/resources/app/dist-electron/main.js:38:24814)
    at Module._compile (node:internal/modules/cjs/loader:1256:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1311:10)
    at Module.load (node:internal/modules/cjs/loader:1098:32)
    at Module._load (node:internal/modules/cjs/loader:945:12)
    at c._load (node:electron/js2c/node_init:2:13672)
A JavaScript error occurred in the main process
Uncaught Exception:
Error: Could not create better-sqlite3 connector electron /opt/waypaper-engine/resources/app/dist-electron dirname
    at go (/opt/waypaper-engine/resources/app/dist-electron/main.js:38:18167)
    at new Ju (/opt/waypaper-engine/resources/app/dist-electron/main.js:38:20109)
    at Object.<anonymous> (/opt/waypaper-engine/resources/app/dist-electron/main.js:38:24814)
    at Module._compile (node:internal/modules/cjs/loader:1256:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1311:10)
    at Module.load (node:internal/modules/cjs/loader:1098:32)
    at Module._load (node:internal/modules/cjs/loader:945:12)
    at c._load (node:electron/js2c/node_init:2:13672)
    at node:electron/js2c/browser_init:2:121151
    at node:electron/js2c/browser_init:2:121360

(waypaper-engine-bin:1366): Gtk-WARNING **: 20:25:39.793: Theme parsing error: gtk.css:407:20: '' is not a valid color name
[1366:0507/202539.886208:ERROR:object_proxy.cc(576)] Failed to call method: org.freedesktop.DBus.Properties.Get: object_path= /org/freedesktop/portal/desktop: org.freedesktop.DBus.Error.InvalidArgs: No such interface “org.freedesktop.portal.FileChooser”
[1366:0507/202539.886242:ERROR:select_file_dialog_linux_portal.cc(286)] Failed to read portal version property
libva error: /usr/lib/dri/nvidia_drv_video.so init failed

Can not delete a picture

image

Can not start the GUI frome the tray,When I config the app start from the tray,I can never start the GUI

Daemon crashes

Running waypaper-engine daemon gives the following output:

❯ waypaper-engine daemon;
starting daemon...

before the process exits, I also receive a notification, "Daemon crashed, Error: Could not set image,check the logs", but it's unclear where the relevant logs would be.

Sorry I don't have all that information for you to go off of. I installed using the waypaper-engine and waypaper-engine-git AUR packages, both give the same result as described above.

I'm using Arch Linux, w/ Node v20.12.2

Can't build

Hi, I can't build either the waypaper-engine or the waypaper-engine-git.

It builds fine when I do it manually though. (git clone...)

The problem seems to be that the folder .../.cache/paru/clone/waypaper-engine/src/Waypaper-Engine-2.0.3/node_modules/app-builder-lib/src does not exists.

.../.cache/paru/clone/waypaper-engine/src/Waypaper-Engine-2.0.3/node_modules/app-builder-lib/ contains :
certs, node_modules, out, templates, package.json and scheme.json. There's no src folder.

Here's the tail of the build :

vite v4.5.3 building for production...
✓ 229 modules transformed.
dist-electron/preload.js  193.79 kB │ gzip: 63.81 kB
✓ built in 437ms
  • electron-builder  version=24.13.3 os=6.9.5-zen1-1-zen
  • loaded configuration  file=/home/mafavreau/.cache/paru/clone/waypaper-engine/src/Waypaper-Engine-2.0.3/electron-builder.json
  • description is missed in the package.json  appPackageFile=/home/mafavreau/.cache/paru/clone/waypaper-engine/src/Waypaper-Engine-2.0.3/package.json
  • @electron/rebuild not required if you use electron-builder, please consider to remove excess dependency from devDependencies

To ensure your native dependencies are always matched electron version, simply add script `"postinstall": "electron-builder install-app-deps" to your `package.json`
  • writing effective config  file=release/builder-effective-config.yaml
  • rebuilding native dependencies  [email protected] platform=linux arch=x64
  • install prebuilt binary  name=better-sqlite3 version=9.5.0 platform=linux arch=x64 napi=
  • packaging       platform=linux arch=x64 electron=29.3.0 appOutDir=release/linux-unpacked
  • asar usage is disabled — this is strongly not recommended  solution=enable asar and use asarUnpack to unpack files that must be externally available
  • Cannot detect repository by .git/config. Please specify "repository" in the package.json (https://docs.npmjs.com/files/package.json#repository).
Please see https://electron.build/configuration/publish
  • asar usage is disabled — this is strongly not recommended  solution=enable asar and use asarUnpack to unpack files that must be externally available
  • building        target=AppImage arch=x64 file=release/waypaper-engine.AppImage
  • Cannot detect repository by .git/config. Please specify "repository" in the package.json (https://docs.npmjs.com/files/package.json#repository).
Please see https://electron.build/configuration/publish
  • Cannot detect repository by .git/config. Please specify "repository" in the package.json (https://docs.npmjs.com/files/package.json#repository).
Please see https://electron.build/configuration/publish
  ⨯ Cannot read properties of null (reading 'channel')  failedTask=build stackTrace=TypeError: Cannot read properties of null (reading 'channel')
    at computeChannelNames (/home/mafavreau/.cache/paru/clone/waypaper-engine/src/Waypaper-Engine-2.0.3/node_modules/app-builder-lib/src/publish/updateInfoBuilder.ts:47:74)
    at createUpdateInfoTasks (/home/mafavreau/.cache/paru/clone/waypaper-engine/src/Waypaper-Engine-2.0.3/node_modules/app-builder-lib/src/publish/updateInfoBuilder.ts:143:27)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
==> ERROR: A failure occurred in build().
    Aborting...
error: failed to build 'waypaper-engine-2.0.3-1': 
error: packages failed to build: waypaper-engine-2.0.3-1

Graphical errors

Hey, i'm really intrigued by your engine, coming from waypaper but wanting more customizability.

atm it kinda runs but i get the following error:
$ waypaper-engine run
swww is installed in the system
Error: net::ERR_FAILED
at SimpleURLLoaderWrapper. (node:electron/js2c/browser_init:2:109791)
at SimpleURLLoaderWrapper.emit (node:events:514:28)
[53995:0523/195126.250446:ERROR:gl_surface_presentation_helper.cc(260)] GetVSyncParametersIfAvailable() failed for 1 times!
[53995:0523/195134.157967:ERROR:gl_surface_presentation_helper.cc(260)] GetVSyncParametersIfAvailable() failed for 2 times!
[53995:0523/195134.160103:ERROR:gl_surface_presentation_helper.cc(260)] GetVSyncParametersIfAvailable() failed for 3 times!

was hoping you could help me fix it. thanks!

Unable to select display in sway

The 'select display' button doesn't give a box to select my display - running waypaper-engine info produces

{
"action": "error",
"error": {
"error": {}
}
}

I'm able to manually select a wallpaper and display it - however, I'd really like to create a playlist and show randomly changing wallpaper please.

Thank you

RJ

Unable to install. Failure during build

This is the output of yay -S waypaper-engine

AUR Explicit (1): waypaper-engine-2.0.0-1
:: PKGBUILD up to date, skipping download: waypaper-engine
  1 waypaper-engine                  (Build Files Exist)
==> Packages to cleanBuild?
==> [N]one [A]ll [Ab]ort [I]nstalled [No]tInstalled or (1 2 3, 1-3, ^4)
==> 
  1 waypaper-engine                  (Build Files Exist)
==> Diffs to show?
==> [N]one [A]ll [Ab]ort [I]nstalled [No]tInstalled or (1 2 3, 1-3, ^4)
==> 
==> Making package: waypaper-engine 2.0.0-1 (Tue 07 May 2024 03:53:32 PM CEST)
==> Retrieving sources...
  -> Found Waypaper-Engine-2.0.0.tar.gz
==> WARNING: Skipping verification of source file PGP signatures.
==> Validating source files with md5sums...
    Waypaper-Engine-2.0.0.tar.gz ... Skipped
:: (1/1) Parsing SRCINFO: waypaper-engine
==> Making package: waypaper-engine 2.0.0-1 (Tue 07 May 2024 03:53:32 PM CEST)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
  -> Found Waypaper-Engine-2.0.0.tar.gz
==> Validating source files with md5sums...
    Waypaper-Engine-2.0.0.tar.gz ... Skipped
==> Removing existing $srcdir/ directory...
==> Extracting sources...
  -> Extracting Waypaper-Engine-2.0.0.tar.gz with bsdtar
==> Sources are ready.
==> Making package: waypaper-engine 2.0.0-1 (Tue 07 May 2024 03:53:33 PM CEST)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> WARNING: Using existing $srcdir/ tree
==> Removing existing $pkgdir/ directory...
==> Starting build()...
wpe-daemon: no process found
==> ERROR: A failure occurred in build().
    Aborting...
 -> error making: waypaper-engine-exit status 4
 -> Failed to install the following packages. Manual intervention is required:
waypaper-engine - exit status 4

I had the previous version installed but had the same issue on update. Used pacman -R to remove previous version but issue persists.

If more logs are required let me know and I'll provide them

Sends the notification twice

I've testing this with swaync and mako and it seems waypaper-engine is sending the notification twice. I see 2 pids in the dbus-notifications interface.

Here's the output of dbus-monitor --session "type='method_call',interface='org.freedesktop.Notifications'":

signal time=1715694384.029922 sender=org.freedesktop.DBus -> destination=:1.189 serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameAcquired
   string ":1.189"
signal time=1715694384.029958 sender=org.freedesktop.DBus -> destination=:1.189 serial=4 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameLost
   string ":1.189"
method call time=1715694385.923486 sender=:1.190 -> destination=:1.188 serial=7 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=GetServerInformation
method call time=1715694385.923587 sender=:1.190 -> destination=:1.188 serial=8 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=GetServerInformation
method call time=1715694385.923703 sender=:1.190 -> destination=:1.188 serial=9 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=Notify
   string "Waypaper Engine"
   uint32 0
   string "/home/mafavreau/.waypaper_engine/images/nbplopes_fileUsersnbplopesDownloadsRISE20EDIT.png_5b1683e6-3ca3-4aaa-955e-97ffcd6c1f4d-topaz-high fidelity v2-7680w.jpeg"
   string "Waypaper Engine"
   string "Setting image: nbplopes_fileUsersnbplopesDownloadsRISE20EDIT.png_5b1683e6-3ca3-4aaa-955e-97ffcd6c1f4d-topaz-high fidelity v2-7680w.jpeg"
   array [
   ]
   array [
      dict entry(
         string "urgency"
         variant             byte 0
      )
      dict entry(
         string "sender-pid"
         variant             int64 68195
      )
   ]
   int32 2000
method call time=1715694385.970909 sender=:1.193 -> destination=:1.188 serial=7 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=GetServerInformation
method call time=1715694386.046041 sender=:1.193 -> destination=:1.188 serial=8 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=GetServerInformation
method call time=1715694386.047391 sender=:1.193 -> destination=:1.188 serial=9 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=Notify
   string "Waypaper Engine"
   uint32 0
   string "/home/mafavreau/.waypaper_engine/images/nbplopes_fileUsersnbplopesDownloadsRISE20EDIT.png_5b1683e6-3ca3-4aaa-955e-97ffcd6c1f4d-topaz-high fidelity v2-7680w.jpeg"
   string "Waypaper Engine"
   string "Setting image: nbplopes_fileUsersnbplopesDownloadsRISE20EDIT.png_5b1683e6-3ca3-4aaa-955e-97ffcd6c1f4d-topaz-high fidelity v2-7680w.jpeg"
   array [
   ]
   array [
      dict entry(
         string "urgency"
         variant             byte 0
      )
      dict entry(
         string "sender-pid"
         variant             int64 68206
      )
   ]
   int32 2000

Please share the sway config

Very beautiful desktop design, please share your config, and what additional programs and themes do you use? I would be very grateful!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.