davidbrewer / xmonad-ubuntu-conf Goto Github PK
View Code? Open in Web Editor NEWMy xmonad config for Ubuntu versions from 20.04 all the way back to 12.04! Including package list, config files, and instructions.
License: MIT License
My xmonad config for Ubuntu versions from 20.04 all the way back to 12.04! Including package list, config files, and instructions.
License: MIT License
I'm on the master branch and installed the configuration by moving my old configuration and running the provided script. Whenever I log in/xmonad --recompile
I see the errors below.
It's likely I'm missing something or did something silly with an old Xmonad configuration (I'm pretty sure I've always had it installed via apt-get, but I saw the caveat mentioned in the README - I assume those issues would arise from multiple versions of xmonad being installed? which -a xmonad
only shows one binary on my path so I think I'm okay there).
xmonad.hs:119:18:
No instance for (xmonad-0.10:XMonad.Core.LayoutClass
(Choose
ResizableTall
(Choose
(Mirror ResizableTall)
(Choose
(XMonad.Layout.LayoutModifier.ModifiedLayout WithBorder Full)
Grid)))
GHC.Word.Word64)
arising from a use of `smartBorders'
Possible fix:
add an instance declaration for
(xmonad-0.10:XMonad.Core.LayoutClass
(Choose
ResizableTall
(Choose
(Mirror ResizableTall)
(Choose
(XMonad.Layout.LayoutModifier.ModifiedLayout WithBorder Full)
Grid)))
GHC.Word.Word64)
In the expression:
smartBorders
(avoidStruts
(ResizableTall 1 (3 / 100) (1 / 2) []
|||
Mirror (ResizableTall 1 (3 / 100) (1 / 2) [])
||| noBorders Full ||| Grid))
In an equation for `defaultLayouts':
defaultLayouts
= smartBorders
(avoidStruts
(ResizableTall 1 (3 / 100) (1 / 2) []
|||
Mirror (ResizableTall 1 (3 / 100) (1 / 2) [])
||| noBorders Full ||| Grid))
xmonad.hs:129:3:
No instance for (LayoutClass Grid GHC.Word.Word64)
arising from a use of `|||'
Possible fix:
add an instance declaration for (LayoutClass Grid GHC.Word.Word64)
In the first argument of `avoidStruts', namely
`(ResizableTall 1 (3 / 100) (1 / 2) []
|||
Mirror (ResizableTall 1 (3 / 100) (1 / 2) [])
||| noBorders Full ||| Grid)'
In the first argument of `smartBorders', namely
`(avoidStruts
(ResizableTall 1 (3 / 100) (1 / 2) []
|||
Mirror (ResizableTall 1 (3 / 100) (1 / 2) [])
||| noBorders Full ||| Grid))'
In the expression:
smartBorders
(avoidStruts
(ResizableTall 1 (3 / 100) (1 / 2) []
|||
Mirror (ResizableTall 1 (3 / 100) (1 / 2) [])
||| noBorders Full ||| Grid))
xmonad.hs:133:7:
No instance for (xmonad-0.10:XMonad.Core.LayoutClass
Full X11-1.5.0.1:Graphics.X11.Types.Window)
arising from a use of `noBorders'
Possible fix:
add an instance declaration for
(xmonad-0.10:XMonad.Core.LayoutClass
Full X11-1.5.0.1:Graphics.X11.Types.Window)
In the first argument of `(|||)', namely `noBorders Full'
In the second argument of `(|||)', namely `noBorders Full ||| Grid'
In the second argument of `(|||)', namely
`Mirror (ResizableTall 1 (3 / 100) (1 / 2) [])
||| noBorders Full ||| Grid'
xmonad.hs:210:27:
Couldn't match expected type `X ()'
with actual type `xmonad-0.10:XMonad.Core.X ()'
In the expression: focusUrgent
In the expression: ((myModMask, xK_u), focusUrgent)
In the expression:
[((myModMask, xK_b), sendMessage ToggleStruts),
((myModMask, xK_a), sendMessage MirrorShrink),
((myModMask, xK_z), sendMessage MirrorExpand),
((myModMask, xK_p), spawn "synapse"), ....]
xmonad.hs:322:13:
Couldn't match type `xmonad-0.10:XMonad.Core.X ()' with `X ()'
Expected type: M.Map (KeyMask, KeySym) (X ())
Actual type: M.Map
(X11-1.5.0.1:Graphics.X11.Types.KeyMask,
X11-1.5.0.1:Graphics.X11.Types.KeySym)
(xmonad-0.10:XMonad.Core.X ())
In the return type of a call of `planeKeys'
In the first argument of `M.toList', namely
`(planeKeys myModMask (Lines 4) Finite)'
In the first argument of `(++)', namely
`M.toList (planeKeys myModMask (Lines 4) Finite)'
xmonad.hs:339:12:
Couldn't match expected type `XConfig l0'
with actual type `xmonad-0.10:XMonad.Core.XConfig l1'
In the second argument of `($)', namely
`withUrgencyHook NoUrgencyHook
$ defaultConfig
{focusedBorderColor = myFocusedBorderColor,
normalBorderColor = myNormalBorderColor, terminal = myTerminal,
borderWidth = myBorderWidth, layoutHook = myLayouts,
workspaces = myWorkspaces, modMask = myModMask,
handleEventHook = fullscreenEventHook,
startupHook = do { setWMName "LG3D";
windows $ W.greedyView startupWorkspace;
spawn "~/.xmonad/startup-hook" },
manageHook = manageHook defaultConfig
<+> composeAll myManagementHooks
<+> manageDocks,
logHook = takeTopFocus
<+>
dynamicLogWithPP
(xmobarPP
{ppOutput = hPutStrLn xmproc,
ppTitle = xmobarColor myTitleColor "" . shorten myTitleLength,
ppCurrent = xmobarColor myCurrentWSColor ""
. wrap myCurrentWSLeft myCurrentWSRight,
ppVisible = xmobarColor myVisibleWSColor ""
. wrap myVisibleWSLeft myVisibleWSRight,
ppUrgent = xmobarColor myUrgentWSColor ""
. wrap myUrgentWSLeft myUrgentWSRight})}
`additionalKeys` myKeys'
In a stmt of a 'do' block:
xmonad
$ withUrgencyHook NoUrgencyHook
$ defaultConfig
{focusedBorderColor = myFocusedBorderColor,
normalBorderColor = myNormalBorderColor, terminal = myTerminal,
borderWidth = myBorderWidth, layoutHook = myLayouts,
workspaces = myWorkspaces, modMask = myModMask,
handleEventHook = fullscreenEventHook,
startupHook = do { setWMName "LG3D";
windows $ W.greedyView startupWorkspace;
spawn "~/.xmonad/startup-hook" },
manageHook = manageHook defaultConfig
<+> composeAll myManagementHooks
<+> manageDocks,
logHook = takeTopFocus
<+>
dynamicLogWithPP
(xmobarPP
{ppOutput = hPutStrLn xmproc,
ppTitle = xmobarColor myTitleColor "" . shorten myTitleLength,
ppCurrent = xmobarColor myCurrentWSColor ""
. wrap myCurrentWSLeft myCurrentWSRight,
ppVisible = xmobarColor myVisibleWSColor ""
. wrap myVisibleWSLeft myVisibleWSRight,
ppUrgent = xmobarColor myUrgentWSColor ""
. wrap myUrgentWSLeft myUrgentWSRight})}
`additionalKeys` myKeys
In the expression:
do { xmproc <- spawnPipe "xmobar ~/.xmonad/xmobarrc";
xmonad
$ withUrgencyHook NoUrgencyHook
$ defaultConfig
{focusedBorderColor = myFocusedBorderColor,
normalBorderColor = myNormalBorderColor, terminal = myTerminal,
borderWidth = myBorderWidth, layoutHook = myLayouts,
workspaces = myWorkspaces, modMask = myModMask,
handleEventHook = fullscreenEventHook,
startupHook = do { setWMName "LG3D";
.... },
manageHook = manageHook defaultConfig
<+> composeAll myManagementHooks
<+> manageDocks,
logHook = takeTopFocus
<+>
dynamicLogWithPP
(xmobarPP
{ppOutput = hPutStrLn xmproc,
ppTitle = xmobarColor myTitleColor "" . shorten myTitleLength,
ppCurrent = xmobarColor myCurrentWSColor ""
. wrap myCurrentWSLeft myCurrentWSRight,
ppVisible = xmobarColor myVisibleWSColor ""
. wrap myVisibleWSLeft myVisibleWSRight,
ppUrgent = xmobarColor myUrgentWSColor ""
. wrap myUrgentWSLeft myUrgentWSRight})}
`additionalKeys` myKeys }
xmonad.hs:339:44:
Couldn't match expected type `xmonad-0.10:XMonad.Core.XConfig l1'
with actual type `XConfig
(XMonad.Layout.PerWorkspace.PerWorkspace
(XMonad.Layout.LayoutModifier.ModifiedLayout
AvoidStruts
(XMonad.Layout.LayoutModifier.ModifiedLayout
AddRoster Grid))
(XMonad.Layout.PerWorkspace.PerWorkspace
(XMonad.Layout.LayoutModifier.ModifiedLayout
SmartBorder
(XMonad.Layout.LayoutModifier.ModifiedLayout
AvoidStruts ThreeCol))
(XMonad.Layout.LayoutModifier.ModifiedLayout
SmartBorder
(XMonad.Layout.LayoutModifier.ModifiedLayout
AvoidStruts
(Choose
ResizableTall
(Choose
(Mirror ResizableTall)
(Choose
(XMonad.Layout.LayoutModifier.ModifiedLayout
WithBorder Full)
Grid)))))))'
In the first argument of `additionalKeys', namely
`defaultConfig
{focusedBorderColor = myFocusedBorderColor,
normalBorderColor = myNormalBorderColor, terminal = myTerminal,
borderWidth = myBorderWidth, layoutHook = myLayouts,
workspaces = myWorkspaces, modMask = myModMask,
handleEventHook = fullscreenEventHook,
startupHook = do { setWMName "LG3D";
windows $ W.greedyView startupWorkspace;
spawn "~/.xmonad/startup-hook" },
manageHook = manageHook defaultConfig
<+> composeAll myManagementHooks
<+> manageDocks,
logHook = takeTopFocus
<+>
dynamicLogWithPP
(xmobarPP
{ppOutput = hPutStrLn xmproc,
ppTitle = xmobarColor myTitleColor "" . shorten myTitleLength,
ppCurrent = xmobarColor myCurrentWSColor ""
. wrap myCurrentWSLeft myCurrentWSRight,
ppVisible = xmobarColor myVisibleWSColor ""
. wrap myVisibleWSLeft myVisibleWSRight,
ppUrgent = xmobarColor myUrgentWSColor ""
. wrap myUrgentWSLeft myUrgentWSRight})}'
In the second argument of `($)', namely
`defaultConfig
{focusedBorderColor = myFocusedBorderColor,
normalBorderColor = myNormalBorderColor, terminal = myTerminal,
borderWidth = myBorderWidth, layoutHook = myLayouts,
workspaces = myWorkspaces, modMask = myModMask,
handleEventHook = fullscreenEventHook,
startupHook = do { setWMName "LG3D";
windows $ W.greedyView startupWorkspace;
spawn "~/.xmonad/startup-hook" },
manageHook = manageHook defaultConfig
<+> composeAll myManagementHooks
<+> manageDocks,
logHook = takeTopFocus
<+>
dynamicLogWithPP
(xmobarPP
{ppOutput = hPutStrLn xmproc,
ppTitle = xmobarColor myTitleColor "" . shorten myTitleLength,
ppCurrent = xmobarColor myCurrentWSColor ""
. wrap myCurrentWSLeft myCurrentWSRight,
ppVisible = xmobarColor myVisibleWSColor ""
. wrap myVisibleWSLeft myVisibleWSRight,
ppUrgent = xmobarColor myUrgentWSColor ""
. wrap myUrgentWSLeft myUrgentWSRight})}
`additionalKeys` myKeys'
In the second argument of `($)', namely
`withUrgencyHook NoUrgencyHook
$ defaultConfig
{focusedBorderColor = myFocusedBorderColor,
normalBorderColor = myNormalBorderColor, terminal = myTerminal,
borderWidth = myBorderWidth, layoutHook = myLayouts,
workspaces = myWorkspaces, modMask = myModMask,
handleEventHook = fullscreenEventHook,
startupHook = do { setWMName "LG3D";
windows $ W.greedyView startupWorkspace;
spawn "~/.xmonad/startup-hook" },
manageHook = manageHook defaultConfig
<+> composeAll myManagementHooks
<+> manageDocks,
logHook = takeTopFocus
<+>
dynamicLogWithPP
(xmobarPP
{ppOutput = hPutStrLn xmproc,
ppTitle = xmobarColor myTitleColor "" . shorten myTitleLength,
ppCurrent = xmobarColor myCurrentWSColor ""
. wrap myCurrentWSLeft myCurrentWSRight,
ppVisible = xmobarColor myVisibleWSColor ""
. wrap myVisibleWSLeft myVisibleWSRight,
ppUrgent = xmobarColor myUrgentWSColor ""
. wrap myUrgentWSLeft myUrgentWSRight})}
`additionalKeys` myKeys'
xmonad.hs:347:23:
Couldn't match type `X11-1.5.0.1:Graphics.X11.Xlib.Extras.Event'
with `Event'
Expected type: Event -> X Data.Monoid.All
Actual type: X11-1.5.0.1:Graphics.X11.Xlib.Extras.Event
-> xmonad-0.10:XMonad.Core.X Data.Monoid.All
In the `handleEventHook' field of a record
In the first argument of `additionalKeys', namely
`defaultConfig
{focusedBorderColor = myFocusedBorderColor,
normalBorderColor = myNormalBorderColor, terminal = myTerminal,
borderWidth = myBorderWidth, layoutHook = myLayouts,
workspaces = myWorkspaces, modMask = myModMask,
handleEventHook = fullscreenEventHook,
startupHook = do { setWMName "LG3D";
windows $ W.greedyView startupWorkspace;
spawn "~/.xmonad/startup-hook" },
manageHook = manageHook defaultConfig
<+> composeAll myManagementHooks
<+> manageDocks,
logHook = takeTopFocus
<+>
dynamicLogWithPP
(xmobarPP
{ppOutput = hPutStrLn xmproc,
ppTitle = xmobarColor myTitleColor "" . shorten myTitleLength,
ppCurrent = xmobarColor myCurrentWSColor ""
. wrap myCurrentWSLeft myCurrentWSRight,
ppVisible = xmobarColor myVisibleWSColor ""
. wrap myVisibleWSLeft myVisibleWSRight,
ppUrgent = xmobarColor myUrgentWSColor ""
. wrap myUrgentWSLeft myUrgentWSRight})}'
In the second argument of `($)', namely
`defaultConfig
{focusedBorderColor = myFocusedBorderColor,
normalBorderColor = myNormalBorderColor, terminal = myTerminal,
borderWidth = myBorderWidth, layoutHook = myLayouts,
workspaces = myWorkspaces, modMask = myModMask,
handleEventHook = fullscreenEventHook,
startupHook = do { setWMName "LG3D";
windows $ W.greedyView startupWorkspace;
spawn "~/.xmonad/startup-hook" },
manageHook = manageHook defaultConfig
<+> composeAll myManagementHooks
<+> manageDocks,
logHook = takeTopFocus
<+>
dynamicLogWithPP
(xmobarPP
{ppOutput = hPutStrLn xmproc,
ppTitle = xmobarColor myTitleColor "" . shorten myTitleLength,
ppCurrent = xmobarColor myCurrentWSColor ""
. wrap myCurrentWSLeft myCurrentWSRight,
ppVisible = xmobarColor myVisibleWSColor ""
. wrap myVisibleWSLeft myVisibleWSRight,
ppUrgent = xmobarColor myUrgentWSColor ""
. wrap myUrgentWSLeft myUrgentWSRight})}
`additionalKeys` myKeys'
xmonad.hs:349:7:
Couldn't match type `xmonad-0.10:XMonad.Core.X' with `X'
Expected type: X ()
Actual type: xmonad-0.10:XMonad.Core.X ()
In the return type of a call of `setWMName'
In a stmt of a 'do' block: setWMName "LG3D"
In the `startupHook' field of a record
xmonad.hs:354:11:
Couldn't match type `xmonad-0.10:XMonad.Core.Query
(Data.Monoid.Endo xmonad-0.10:XMonad.Core.WindowSet)'
with `Query (Data.Monoid.Endo WindowSet)'
Expected type: ManageHook
Actual type: xmonad-0.10:XMonad.Core.ManageHook
In the second argument of `(<+>)', namely `manageDocks'
In the `manageHook' field of a record
In the first argument of `additionalKeys', namely
`defaultConfig
{focusedBorderColor = myFocusedBorderColor,
normalBorderColor = myNormalBorderColor, terminal = myTerminal,
borderWidth = myBorderWidth, layoutHook = myLayouts,
workspaces = myWorkspaces, modMask = myModMask,
handleEventHook = fullscreenEventHook,
startupHook = do { setWMName "LG3D";
windows $ W.greedyView startupWorkspace;
spawn "~/.xmonad/startup-hook" },
manageHook = manageHook defaultConfig
<+> composeAll myManagementHooks
<+> manageDocks,
logHook = takeTopFocus
<+>
dynamicLogWithPP
(xmobarPP
{ppOutput = hPutStrLn xmproc,
ppTitle = xmobarColor myTitleColor "" . shorten myTitleLength,
ppCurrent = xmobarColor myCurrentWSColor ""
. wrap myCurrentWSLeft myCurrentWSRight,
ppVisible = xmobarColor myVisibleWSColor ""
. wrap myVisibleWSLeft myVisibleWSRight,
ppUrgent = xmobarColor myUrgentWSColor ""
. wrap myUrgentWSLeft myUrgentWSRight})}'
xmonad.hs:355:15:
Couldn't match expected type `X ()'
with actual type `xmonad-0.10:XMonad.Core.X ()'
In the first argument of `(<+>)', namely `takeTopFocus'
In the `logHook' field of a record
In the first argument of `additionalKeys', namely
`defaultConfig
{focusedBorderColor = myFocusedBorderColor,
normalBorderColor = myNormalBorderColor, terminal = myTerminal,
borderWidth = myBorderWidth, layoutHook = myLayouts,
workspaces = myWorkspaces, modMask = myModMask,
handleEventHook = fullscreenEventHook,
startupHook = do { setWMName "LG3D";
windows $ W.greedyView startupWorkspace;
spawn "~/.xmonad/startup-hook" },
manageHook = manageHook defaultConfig
<+> composeAll myManagementHooks
<+> manageDocks,
logHook = takeTopFocus
<+>
dynamicLogWithPP
(xmobarPP
{ppOutput = hPutStrLn xmproc,
ppTitle = xmobarColor myTitleColor "" . shorten myTitleLength,
ppCurrent = xmobarColor myCurrentWSColor ""
. wrap myCurrentWSLeft myCurrentWSRight,
ppVisible = xmobarColor myVisibleWSColor ""
. wrap myVisibleWSLeft myVisibleWSRight,
ppUrgent = xmobarColor myUrgentWSColor ""
. wrap myUrgentWSLeft myUrgentWSRight})}'
xmonad.hs:355:32:
Couldn't match expected type `X ()'
with actual type `xmonad-0.10:XMonad.Core.X ()'
In the return type of a call of `dynamicLogWithPP'
In the second argument of `(<+>)', namely
`dynamicLogWithPP
(xmobarPP
{ppOutput = hPutStrLn xmproc,
ppTitle = xmobarColor myTitleColor "" . shorten myTitleLength,
ppCurrent = xmobarColor myCurrentWSColor ""
. wrap myCurrentWSLeft myCurrentWSRight,
ppVisible = xmobarColor myVisibleWSColor ""
. wrap myVisibleWSLeft myVisibleWSRight,
ppUrgent = xmobarColor myUrgentWSColor ""
. wrap myUrgentWSLeft myUrgentWSRight})'
In the `logHook' field of a record
Please check the file for errors.
As ubuntu has shifted its sole attention to ubuntu 20.xx, It will be better to update the repo with the guidance for that.
First of all, thank you. I had tried Xmonad out prior and just couldn't get over that initial resistance in the default configuration. Trying to get a good config was just not a task I could tackle without knowing I would use it. You made it easy.
I was using UB 16.04 LTS, and recently upgraded to 18.04 LTS. I had your xmonad configs up prior with a small amount of customization. After pulling down your repo changes, and restarting the session, I noticed that stalonetray and variety weren't working. Also, synapse had a funky look with little black boxes. I tried changing start-xmonad, but the changes didn't seem to take. Finally, I realized that the start-xmonad wasn't being executed. Copying the desktop file from your repo again into /usr/share/xsessions seems to have everything up and running correctly.
Maybe a small section on the few tasks that need to be done to "properly" handle a dist upgrade?
I can fork and PR if you'd like, but my ideas my be a bit more on the trial-and-error side. I might also be missing something I should have done, but have not yet done. :)
Hello David
thanks for the thoroughly commented conf files, they are very helpful! After a clean install using your script in Ubuntu 13.10, the status bar keeps displaying an error message:
or textually
error: user error(unrecognized option `-c' )
I have googled this error message in the xmonad context, to no avail. Any pointers on how to get rid of it?
@davidbrewer updated to include txt as well as screenshot
Programs like IntelliJ Idea do not gain focus.
I recommend updating xmonad.hs
My diff log:
@@ -30,6 +31,7 @@ import XMonad.Hooks.DynamicLog
import XMonad.Actions.Plane
import XMonad.Hooks.ManageDocks
import XMonad.Hooks.UrgencyHook
+import XMonad.Hooks.ICCCMFocus
import qualified XMonad.StackSet as W
import qualified Data.Map as M
import Data.Ratio ((%))
@@ -348,7 +350,7 @@ main = do
, manageHook = manageHook defaultConfig
<+> composeAll myManagementHooks
<+> manageDocks
- , logHook = dynamicLogWithPP $ xmobarPP {
+ , logHook = takeTopFocus <+> dynamicLogWithPP xmobarPP {
ppOutput = hPutStrLn xmproc
, ppTitle = xmobarColor myTitleColor "" . shorten myTitleLength
, ppCurrent = xmobarColor myCurrentWSColor ""
I have just moved from Ubuntu16 to Ubuntu 17 (just to get the newest kernel), everything seems to be working fine.
I have my escape and caps lock key set to by switched via the gnome control panel. Installation of of this seems to have undone this. I used the install script. I did not have the problem with vanilla xmonad.
Thank you for taking the time to put this configuration and instructions together.
I just wanted to mention that on Ubuntu 18.04 the following steps of the Xmonad installation script fail:
Creating xmonad xsession configuration...
cp: cannot stat '/home/damian/.xmonad/xmonad.desktop': No such file or directory
chmod: cannot access '/usr/share/xsessions/xmonad.desktop': No such file or directory
Hello! it seams that you know how to work arround haskell and xmonad.
I've tried but, got lost really fast. You're conf it's awesome. It deals with all the thing i wanted perfectlly. The modbar, the trayer and the wallpapers per screen.
still I'm missing something, transparency on all windows. I would love to have 90% transparency on all windows, and some key toggle (ex. mod-o mod-i) to incrise or decrese transparency)
thanks a lot!
Should this work out-of-the-box? I have a fresh Ubuntu 18.04 installation and xmonad does not start properly. I only see the desktop background and a mouse. No status bar. Mod+shift+enter and Ctrl+Space don't do anything :(
Started my own repo recently: https://github.com/simlu/xmonad
I've tried to keep it a modular and put the user in charge of customization.
Just discovered this repo now and learned a lot already that I want to incorporate. Conversely I thought you might want to take a look at my repo as well!
Thanks again and I hope we can increase the amount of xmonad users drastically in the future!
Hi,
I am using your config on ubuntu 16, it is very easy to setup and use, Great Work!
However, I have found some minor things bugging me. One of them is, I am a emacs user and C-space
is blocked from usage. I tried to get rid of the line , ((myModMask.|. mod1Mask, xK_space), spawn "synapse")
, but I can still trigger synapse by C-space
. And is there a way to make Mod-p
as the default one and deal with the problem throughly?
Noticing that my battery life under xmonad is awful for a X230 thinkpad. I'm guessing that's because unity has sucked up power management responsibilites. Is it possible to get those accounted for in the this conf?
I know this isn't your fault nor responsibility. But you seam really smart, or at least smarter than me (:
I've setted this line in my .xmonad/startup-hook:
update-notifier
It does appears each time I log-in, but I can't update my software, nor change any config. I have to do all my updates over manual CLI.
Can you think in a way to use the GUI to keep my ubuntu up to date ?
TY
Your install script copies the data from ~/.xmonad which works for you when all is installed. But to work from the repository you need to copy it from xmonad-ubuntu-conf
I installed xmonad based on your config on a fresh Ubuntu 16.04 with a 27" Dell 4k monitor.
The xmobar on the top only fills about 70 percent of the top. The last 30 percent shows the desktop picture.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.