diff options
author | Anish Bhatt | 2013-08-17 23:39:15 -0700 |
---|---|---|
committer | Anish Bhatt | 2013-08-17 23:39:15 -0700 |
commit | f145b08fbbb2e2bff5f721e96682948d96e359b8 (patch) | |
tree | a6ecf4b71e0c7032e89b4ecbf7582c581ed3e178 | |
download | aur-f145b08fbbb2e2bff5f721e96682948d96e359b8.tar.gz |
Add wine-silverlight & netflix-desktop source files
-rw-r--r-- | .SRCINFO | 31 | ||||
-rw-r--r-- | NetflixIcon.png | bin | 0 -> 661 bytes | |||
-rw-r--r-- | PKGBUILD | 88 | ||||
-rw-r--r-- | netflix-desktop.desktop | 10 | ||||
-rw-r--r-- | netflix-desktop.install | 16 | ||||
-rwxr-xr-x | netflix-desktop.launcher | 351 |
6 files changed, 496 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..0ed2a9ac4c77 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,31 @@ +pkgbase = netflix-desktop + pkgdesc = An automated script for viewing Netflix through Firefox and patched WINE + pkgver = 0.7 + pkgrel = 3 + url = https://launchpad.net/netflix-desktop/ + install = netflix-desktop.install + arch = i686 + arch = x86_64 + license = LGPL + depends = wine-silverlight + depends = ttf-ms-fonts + depends = zenity + depends = wget + depends = libsm + depends = libpng12 + depends = libpng + depends = alsa-lib + depends = openal + depends = mpg123 + depends = libxcomposite + source = https://launchpad.net/netflix-desktop/trunk/0.7.0/+download/netflix-desktop.tar.gz + source = netflix-desktop.desktop + source = netflix-desktop.launcher + source = NetflixIcon.png + md5sums = c6da1fd128cfbe35423fe86ad01f7db3 + md5sums = a41f098487affa1de34c8b44d52617b5 + md5sums = 5eb47189f7f8ec959678339f605b7546 + md5sums = 0a4c2ef50831a751dae74315eb066c01 + +pkgname = netflix-desktop + diff --git a/NetflixIcon.png b/NetflixIcon.png Binary files differnew file mode 100644 index 000000000000..06e1bd336e35 --- /dev/null +++ b/NetflixIcon.png diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..59ef9ecde009 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,88 @@ +# Maintainer: Jesus Alvarez <jeezusjr@gmail.com> +# Contributor: sxe <sxxe@gmx.de> +# Based on the wine-git in AUR + +pkgname='netflix-desktop' +pkgver=0.7 +pkgrel=3 +pkgdesc="An automated script for viewing Netflix through Firefox and patched WINE" +url="https://launchpad.net/netflix-desktop/" +arch=('i686' 'x86_64') +license=('LGPL') +depends=('wine-silverlight' 'ttf-ms-fonts' 'zenity' 'wget') + +if [[ "$CARCH" == "x86_64" ]]; then + depends+=( + 'lib32-libsm' 'lib32-alsa-lib' 'lib32-openal' 'lib32-mpg123' + 'lib32-libpng12' 'lib32-libpng' 'lib32-libxcomposite' + ) + optdepends=( + 'lib32-ati-dri: for open source ATI driver users' + 'lib32-catalyst-utils: for AMD Catalyst users' + 'lib32-intel-dri: for open source Intel driver users' + 'lib32-nouveau-dri: for Nouveau users' + 'lib32-nvidia-utils-bumblebee: for NVIDIA + Bumblebee users' + 'lib32-nvidia-utils: for NVIDIA proprietary blob users' + 'xorg-xset: for screensaver/DPMS toggling' + ) +else + depends+=('libsm' 'libpng12' 'libpng' 'alsa-lib' 'openal' 'mpg123' + 'libxcomposite') +fi + +install=netflix-desktop.install + +source=("https://launchpad.net/netflix-desktop/trunk/${pkgver}.0/+download/${pkgname}.tar.gz" +netflix-desktop.desktop +netflix-desktop.launcher +NetflixIcon.png) + + +md5sums=('c6da1fd128cfbe35423fe86ad01f7db3' + 'a41f098487affa1de34c8b44d52617b5' + '5eb47189f7f8ec959678339f605b7546' + '0a4c2ef50831a751dae74315eb066c01') + +build() { + cd "${srcdir}/${pkgname}" + pushd po + make + popd + pushd wine-browser-installer/test-xattr + make + popd + pushd wine-browser-installer + sed -i -e 's/share\/wine-browser-installer/share\/netflix-desktop/g' download-missing-files + sed -i -e 's/\/usr\/share\/n/${HOME}\/\.n/g' download-missing-files + sed -i -e 's/GLOBAL_SUMS="${INST/GLOBAL_SUMS="${NETF/g' download-missing-files + sed -i '4i NETFDIR="/usr/share/netflix-desktop";' download-missing-files + popd +} + +package() { + + install -dm755 ${pkgdir}/usr/bin + install -dm755 ${pkgdir}/usr/share/netflix-desktop + install -dm755 ${pkgdir}/usr/share/applications + install -m755 netflix-desktop.launcher ${pkgdir}/usr/bin/netflix-desktop + pwd + install -m644 ${srcdir}/${pkgname}/wine-browser-installer/sha256sums ${pkgdir}/usr/share/netflix-desktop/wine-browser-installer.sha256sums + install -m644 ${srcdir}/${pkgname}/wine-browser-installer/sha256sums ${pkgdir}/usr/share/netflix-desktop/ + install -m644 ${srcdir}/${pkgname}/wine-browser-installer/browser-settings.ini ${pkgdir}/usr/share/netflix-desktop/ + install -m644 NetflixIcon.png ${pkgdir}/usr/share/netflix-desktop/ + install -m644 netflix-desktop.desktop ${pkgdir}/usr/share/applications/ + install -m755 ${srcdir}/${pkgname}/wine-browser-installer/download-missing-files ${pkgdir}/usr/share/netflix-desktop/install-file-downloader + install -dm755 ${pkgdir}/usr/share/netflix-desktop/browser-profile + cp -R ${srcdir}/${pkgname}/wine-browser-installer/browser-profile/* ${pkgdir}/usr/share/netflix-desktop/browser-profile/ + install -dm755 ${pkgdir}/usr/share/netflix-desktop/fullscreen-close-plugin + cp -R ${srcdir}/${pkgname}/wine-browser-installer/fullscreen-close-plugin/* ${pkgdir}/usr/share/netflix-desktop/fullscreen-close-plugin/ + cd "${srcdir}/${pkgname}" + pushd po + make DESTDIR="${pkgdir}" install + popd + pushd wine-browser-installer/test-xattr + make DESTDIR="${pkgdir}/usr/share/netflix-desktop/" install + popd +} + +# vim:set ts=2 sw=2 et: diff --git a/netflix-desktop.desktop b/netflix-desktop.desktop new file mode 100644 index 000000000000..7cc72b274894 --- /dev/null +++ b/netflix-desktop.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=Netflix Desktop +GenericName=Netflix Desktop +Comment=Watch movies and TV shows on your PC +Exec=netflix-desktop +Terminal=false +Type=Application +StartupNotify=true +Icon=/usr/share/netflix-desktop/NetflixIcon.png +Categories=Video;Player;AudioVideo; diff --git a/netflix-desktop.install b/netflix-desktop.install new file mode 100644 index 000000000000..401ecdd7ca7c --- /dev/null +++ b/netflix-desktop.install @@ -0,0 +1,16 @@ +post_install() { + update-desktop-database -q + echo + echo "Netflix Desktop was installed without the needed installation files 'FirefoxSetup.exe' " + echo "and 'SilverlightSetup.exe'. These files will be downloaded to ~/.netflix-desktop once " + echo "netflix-desktop is activated." + echo + echo "!IMPORTANT!" + echo "It is vitally important that you install the correct OpenGL drivers for your system! " + echo "All available OpenGL drivers are added as optional dependencies to this package." + echo +} + +post_upgrade() { + post_install +} diff --git a/netflix-desktop.launcher b/netflix-desktop.launcher new file mode 100755 index 000000000000..6a0cc31ef38c --- /dev/null +++ b/netflix-desktop.launcher @@ -0,0 +1,351 @@ +#!/bin/sh + +# netflix-desktop is written by Erich Hoover (compholio.com) and has been +# modified to work with the Arch Linux ecosystem by Jesus Alvarez +# (demizerone.com). + +INSTDIR="/usr/share/netflix-desktop"; +GLOBAL_SUMS="${INSTDIR}/sha256sums"; +WINE="/usr/bin/wine"; +SHOWDEBUG="0"; +RELAYLOG="0"; + +# Use 32bit arch by default required by silverlight +export WINEARCH=win32; + +# Disable gecko messages +export WINEDLLOVERRIDES="mshtml=" + +# Enable translation capabilities +. gettext.sh +export TEXTDOMAIN="netflix-desktop"; +export TEXTDOMAINDIR="/usr/share/locale"; + +# The default configuration +NDC_CONFIG_PATH="${HOME}/.config/netflix-desktop/conf.sh" + +gettext_default_config=`gettext '\ +# netflix-desktop configuration file +# +# 0 = Disable +# 1 = Enable +# + +# Specify the installation path. +NETFLIX_DESKTOP=$HOME/.netflix-desktop + +# Disable the custom profile used to hide the Firefox UI. +NO_CUSTOM_PROFILE=0 + +# Disable xset usage. xset prevents DPMS and xscreensaver from activating. +NO_XSET=0 + +# Disable extended attribute checks. +NO_XATTR=0'` + +# General strings that are translatable +gettext_program_name=`gettext "Netflix Desktop"`; + +gettext_usage=`gettext "\ + +usage: + + netflix-desktop [options] + +Options: + --show-debug Show Wine debug output. + --relay-log Enable logging output to ~/netflix-desktop.log + --no-xattr Don't perform extending file attribute checks. + --no-xset Don't use xset to disable screen blanking. + +Extended file attributes are necessary for Netflix Digital Rights Management."`; + +gettext_compositing_error=`gettext "\ +Compositing is disabled in the X11 configuration file, please enable compositing support and relaunch \$gettext_program_name."`; + +gettext_new_conf_msg=`gettext "\ +A configuration file has been created at ${HOME}/.config/netflix-desktop/conf.sh. + +Would you like to edit this now in ${EDITOR}?"` + +gettext_disclaimer_msg=`gettext "\ +Neither this package or its author is affliated with, endorsed, provided, or +supported in any way by Netflix, Inc. + +Netflix and Netflix Watch Instantly are trademarks of Netflix, Inc. + +Mozilla and Mozilla Firefox are trademarks of the Mozilla Corporation. + +Microsoft and Microsoft Silverlight are trademarks of the Microsoft +Corporation. + +netflix-desktop was written by Erich Hoover (compholio.com) and packaged by +Jesus Alvarez (demizerone.com) for Arch Linux."`; + +gettext_download_msg=`gettext "\ +Not all of the components required by Netflix Desktop were downloaded, or +there are updates available. Would you like to download them now? + +Please be advised, you will be downloading Microsoft Silverlight which can not +be modified or distributed without expressed permission from the Microsoft +Corporation."`; + +gettext_xattr_error_0=`gettext "\ +Unable to test extended attributes at location '${NETFLIX_DESKTOP}'."`; + +gettext_xattr_error_1=`gettext "\ +An unexpected error code was returned when testing for extended file system +attributes."`; + +gettext_xattr_enable_msg=`gettext "\ +It appears that you do not have extended file system attributes enabled, please +enable the user_xattr option for your filesystem and try again."`; + +gettext_file_download_msg=`gettext "Downloading Firefox and Silverlight..."`; + +gettext_task_0=`gettext "Performing local installation"`; + +gettext_task_1=`gettext "Performing profile upgrade"`; + +# Version comparison +vercomp () { + if [ "$1" = "$2" ]; then + RET="0"; + elif [ "$1" = "`echo -e "$1\n$2" | sort -V | head -n1`" ]; then + RET="1"; + else + RET="-1"; + fi + echo "${RET}"; +} + +# Process any command-line arguments +for arg in "$@"; do + case "$arg" in + --show-debug) + SHOWDEBUG="1"; + ;; + --relay-log) + SHOWDEBUG="1"; + RELAYLOG="1"; + ;; + --no-xattr) + NO_XATTR="1"; + ;; + --no-xset) + NO_XSET="1"; + ;; + *) + eval_gettext \ + "Unrecognized command-line argument '$arg', usage:"; echo; + echo "${gettext_usage}"; + exit; + ;; + esac; +done + +# Load the configuration file +if [ ! -f ${NDC_CONFIG_PATH} ]; then + mkdir -p "${HOME}/.config/netflix-desktop" + echo "${gettext_default_config}" > ${NDC_CONFIG_PATH} + zenity --question --title="${gettext_program_name}" --no-wrap --text="${gettext_new_conf_msg}" --ok-label="Yes" --cancel-label="No"; + if [ "$?" -eq "0" ]; then + $EDITOR $NDC_CONFIG_PATH + fi + source ${NDC_CONFIG_PATH} +else + echo $NETFLIX_DESKTOP + source ${NDC_CONFIG_PATH} +fi + +# Setup logging +if [ "${RELAYLOG}" -eq "1" ]; then + OUTPUT="${HOME}/netflix-desktop.log"; + rm "${OUTPUT}" 2>&1 > /dev/null; + DBGTMP=""; + if [ "${WINEDEBUG}" != "" ]; then + DBGTMP=",${WINEDEBUG}"; + fi + export WINEDEBUG="+relay${DBGTMP}"; +elif [ "${SHOWDEBUG}" -eq "1" ]; then + OUTPUT="/dev/fd/2"; +else + OUTPUT="/dev/null"; +fi + +# Create the ~/.netflix-desktop directory if it does not yet exist. This is +# important because wine requires special attributes for the WINEPREFIX +# directory and our install files must be downloaded to this directory. +export WINEPREFIX="${NETFLIX_DESKTOP}"; +if [ ! -d "${NETFLIX_DESKTOP}" ]; then + zenity --title="${gettext_program_name}" --warning --no-wrap \ + --text="${gettext_disclaimer_msg}"; + ${WINE} 'wineboot' 2>>${OUTPUT}; +fi + +# Make sure that all the necessary files are installed. +files_missing=0; +while read desired_checksum filename permissions url; do + if [ ! -f "${NETFLIX_DESKTOP}/${filename}" ]; then + files_missing=1; + fi +done < $GLOBAL_SUMS +if [[ "$files_missing" == "1" ]]; then + zenity --question --title="${gettext_program_name}" --no-wrap --text="${gettext_download_msg}" --ok-label="Yes" --cancel-label="No"; + if [ "$?" -eq "1" ]; then + exit 1; + fi + ${INSTDIR}/install-file-downloader 2>>${OUTPUT}; +fi + +# Make sure that the filesystem supports extended file attributes +if [[ "${NO_XATTR}" != "1" ]]; then + "${INSTDIR}/test-xattr" "${NETFLIX_DESKTOP}"; + XATTR="$?"; + if [[ "${XATTR}" != "0" ]]; then + if [[ "${XATTR}" != "1" ]]; then + MESSAGE="${gettext_xattr_error_0}"; + elif [[ "${XATTR}" != "2" ]]; then + MESSAGE="${gettext_xattr_enable_msg}"; + else + MESSAGE="${gettext_xattr_error_1}"; + fi + zenity --warning --no-wrap --text "${MESSAGE}"; + exit; + fi +fi + +# Make sure that compositing is not disabled in the X11 configuration file +if [ -f /etc/X11/xorg.conf ]; then + COMPDISABLED=`cat /etc/X11/xorg.conf | sed '/.*Option[ \t]*"Composite"/!d' | grep -ic disable`; + if [ "${COMPDISABLED}" -ne "0" ]; then + zenity --warning --title="${gettext_program_name}" --text "${gettext_compositing_error}"; + exit; + fi +fi + +# Make sure that the MS core true type fonts are installed +# COREFONTS=`debconf-show ttf-mscorefonts-installer 2>/dev/null | grep "msttcorefonts/accepted-mscorefonts-eula: true"`; +# if [ "${COREFONTS}" = "" ]; then + # zenity --question --title="${SERVICE}" --text="${gettext_fonts_needed}" --ok-label="Yes" --cancel-label="No"; + # RET=$?; + # if [ "$RET" -eq "1" ]; then + # exit; + # fi + # gksudo ${INSTDIR}/install-fonts; + # COREFONTS=`debconf-show ttf-mscorefonts-installer 2>/dev/null | grep "msttcorefonts/accepted-mscorefonts-eula: true"`; + # if [ "${COREFONTS}" = "" ]; then + # zenity --warning --title="${SERVICE}" --text "${gettext_fonts_still_needed}"; + # exit; + # fi + # gksudo -- apt-get install --yes --reinstall ttf-mscorefonts-installer; +# fi + +# Transition over old profiles (from before version 0.6.0) +if [ -f "${HOME}/.netflix-desktop/filesums" ]; then + mv "${NETFLIX_DESKTOP}/drive_c/netflix-profile" "${NETFLIX_DESKTOP}/drive_c/browser-profile" 2>>${OUTPUT}; + cp -a "${INSTDIR}/browser-profile/extensions" "${NETFLIX_DESKTOP}/drive_c/browser-profile/" 2>>${OUTPUT}; +fi + +# Copy over the specially configured user profile if installation has never been performed previously +LOCAL_SUMS="${NETFLIX_DESKTOP}/filesums"; +if [ ! -f "${LOCAL_SUMS}" ]; then + mkdir -p "${NETFLIX_DESKTOP}/drive_c"; + cp -a "${INSTDIR}/browser-profile" "${NETFLIX_DESKTOP}/drive_c/browser-profile"; +fi + +CLIENT_SIDE_GRAPHICS_WORKAROUND=0; +if [ "$(cmp "${LOCAL_SUMS}" "${GLOBAL_SUMS}" 2> /dev/null; echo $?)" -ne "0" ]; then + # If no previous installation has been performed (or new installation packages are available) then install the software we need to the local prefix + UPGRADE=0; + TASK="${gettext_task_0}"; + if [ -f "${LOCAL_SUMS}" ]; then + UPGRADE=1; + TASK="${gettext_task_1}"; + fi + ( + echo "1"; + ${WINE} "${NETFLIX_DESKTOP}/FirefoxSetup.exe" /INI=Z:\\usr\\share\\netflix-desktop\\browser-settings.ini 2>>${OUTPUT}; + ${WINE} "${NETFLIX_DESKTOP}/SilverlightSetup.exe" /q /doNotRequireDRMPrompt /noupdate 2>>${OUTPUT}; + echo "100"; + ) | zenity --progress --pulsate --no-cancel --auto-close --text="${TASK}"; + # If not upgrading then make sure the installer fully finishes + if [ "${UPGRADE}" -eq "0" ]; then + until [ -f "${HOME}/.local/share/applications/wine/Programs/Microsoft Silverlight/Microsoft Silverlight.desktop" ]; do + sleep 0.1; + done; + fi + # Remove the Silverlight menu shortcut + rm "${NETFLIX_DESKTOP}/drive_c/users/${USER}/Start Menu/Programs/Microsoft Silverlight/Microsoft Silverlight.lnk"; + rm "${HOME}/.local/share/applications/wine/Programs/Microsoft Silverlight/Microsoft Silverlight.desktop"; + xdg-desktop-menu uninstall "${HOME}/.local/share/applications/wine/Programs/Microsoft Silverlight/Microsoft Silverlight.desktop"; + # Install the hash file (indicates whether updates are necessary) + cp "${GLOBAL_SUMS}" "${LOCAL_SUMS}"; +else + # If a previous installation exists then confirm that the profile is up-to-date + EXTENSION_INSTALLED=0; + if [ -f "${NETFLIX_DESKTOP}/profile-settings" ]; then + . "${NETFLIX_DESKTOP}/profile-settings"; + fi + WINEVERSION=`/usr/bin/wine --version | sed -e 's/wine-//'`; + OLDVERSION=`cat "${NETFLIX_DESKTOP}/wine-version" 2> /dev/null`; + NEWWINE=`vercomp "${WINEVERSION}" "1.5.19"`; + OLDPROFILE=`vercomp "${OLDVERSION}" "1.5.19"`; + # Wipe the DRM folder if we're upgrading to Wine 1.5.19 or newer (new extended attribute format) + if [ "${NEWWINE}" -ge "0" ] && [ "${OLDPROFILE}" -lt "0" ]; then + rm -Rf "${NETFLIX_DESKTOP}/drive_c/users/Public/Application Data/Microsoft/PlayReady/"*; + fi + # Install the new window closing extension + if [ "${EXTENSION_INSTALLED}" -ne "1" ]; then + cp -a "${INSTDIR}/browser-profile/extensions" "${NETFLIX_DESKTOP}/drive_c/browser-profile/"; + fi +fi + +# Install the workaround for Wine Bug #31812 +if [ "${CLIENT_SIDE_GRAPHICS_WORKAROUND}" -ne "1" ]; then + tmpfile="/tmp/netflix-desktop.$$.reg"; + echo -e "REGEDIT4\n\n[HKEY_CURRENT_USER\\Software\\Wine\\X11 Driver]\n\"ClientSideGraphics\"=\"N\"\n" >${tmpfile}; + ${WINE} regedit ${tmpfile}; + rm ${tmpfile}; +fi + +echo "${WINEVERSION}" > "${NETFLIX_DESKTOP}/wine-version"; +echo "# Netflix Desktop profile settings (do not edit) +EXTENSION_INSTALLED=1; +CLIENT_SIDE_GRAPHICS_WORKAROUND=1; +" > "${NETFLIX_DESKTOP}/profile-settings"; + +if [ "${SHOWDEBUG}" -eq "1" ]; then + # The "--show-debug" flag does several things: + # 1) It outputs additional driver information to the console to help find the source of OpenGL issues + # 2) It enables verbose libgl debugging and outputs this information to the console + # 3) It allows Wine debug messages to be written to the console + echo "################################################################################" 1>>${OUTPUT}; + echo "# OpenGL Diagnostics #" 1>>${OUTPUT}; + echo "################################################################################" 1>>${OUTPUT}; + glxinfo | grep -e 'direct rendering:' -e 'server glx vendor string:' -e 'server glx version string:' 1>>${OUTPUT}; + echo "################################################################################" 1>>${OUTPUT}; + echo "# Firefox #" 1>>${OUTPUT}; + echo "################################################################################" 1>>${OUTPUT}; + export LIBGL_DEBUG="verbose"; +fi + +if [ -f "/usr/bin/xset" ] && [ "${NO_XSET}" -eq "0" ]; then + xset -dpms; + xset s off; +fi + +if [ ${NO_CUSTOM_PROFILE} -eq "1" ]; then + # Launch Firefox without the custom profile + ${WINE} "C:\\Program Files\\Mozilla Firefox\\firefox.exe" "http://www.netflix.com/" 2>>${OUTPUT}; +else + # Launch Firefox with our specially prepared profile + ${WINE} "C:\\Program Files\\Mozilla Firefox\\firefox.exe" -profile "C:\\browser-profile" "http://www.netflix.com/" 2>>${OUTPUT}; +fi + +if [ -f /usr/bin/xset ] && [ "${NO_XSET}" -eq "0" ]; then + xset dpms; + xset s on; +fi + +# vim:set tw=79 ts=4 sw=4 et: |