return 'android';
} else if (/iOS|iPhone|Macintosh|Darwin|OS\s*X|macOS|mac/i.test(ua)) {
return 'macos';
- } else if (/^ms$|Microsoft|Windows|win32|win|PowerShell/i.test(ua)) {
+ } else if (/Linux/i.test(ua) && !/cygwin|msysgit/i.test(ua)) {
// It's the year of the Linux Desktop!
- // (TODO: what about cygwin / msysgit?)
// See also http://www.mslinux.org/
// 'linux' must be tested before 'Microsoft' because WSL
+ // (TODO: does this affect cygwin / msysgit?)
+ return 'linux';
+ } else if (/^ms$|Microsoft|Windows|win32|win|PowerShell/i.test(ua)) {
// 'win' must be tested after 'darwin'
return 'windows';
} else if (/Linux|curl|wget/i.test(ua)) {
+ // test 'linux' again, after 'win'
return 'linux';
} else {
return 'error';