Solution/Workaround for Mac OS High Sierra Unified Media Buttons (Play/Pause, Next and Previous Track) Problem

Mac OS High Sierra brings an annoying new feature (I guess you can insert “It’s not a bug; it’s a feature” joke here) for users who like using media keys to control their media player while browsing on Safari, be it iTunes, Spotify, or some other player. It’s the new unified media controls feature which takes control over your regular stand-alone player and gives it to the last player that you use, in most cases an HTML5 player on Safari, like the players on Youtube or Facebook. So, when you press the media keys, you start controlling the Youtube or Facebook video instead of iTunes or Spotify tracks. For Chrome users this is not a problem yet. But if you use Safari, it is very annoying to say the least.

I kind of devised a workaround to fix the problem albeit using a paid software which gives a 45 day free trial period. Here is how it goes.

  1. Download and install BetterTouchTool from here.
  2. Open your keyboard settings and check the last option to use media function keys as standard function keys. (We have this step because I couldn’t get BetterTouchTool to recognize media function keys. If someone can, I’ll update the post.)Screen Shot 2017-10-01 at 12.53.26.png
  3. Open the Shortcuts tab and disable “Show Desktop” and “Show Dashboard” functions.Screen Shot 2017-10-01 at 12.59.38
  4. Open BetterTouchTool (allow the BetterTouchTool in Accessibility settings in the first run) and go to the Keyboard tab.
  5. Set all the function keys like the one in the screenshot. As for the media buttons, choose Run Apple Script feature and enter the following scripts per your player preference. Mine is Spotify so I used Spotify. If you use iTunes, write “iTunes” instead.
    1. tell application "iTunes"
      	playpause
      end tell
    2. tell application "iTunes"
      	previous track
      end tell
    3. tell application "iTunes"
      	next track
      end tell

      Screen Shot 2017-10-01 at 13.46.46

      Screen Shot 2017-10-07 at 23.45.53Screen Shot 2017-10-07 at 23.46.10.png

There you go, the problem is temporarily solved until Apple does something about this.

Advertisements

Getting Google Play Books (or any other non-OCR’ed PDF) Ready To Be Read on Kindle (or any other PDF reader) with Text Manipulation Functions

Skip the explanation part(s) if you know what you are doing, I have written this manual for intermediate users of UNIX-like systems.

Brief Explation

I like my Kindle Voyage and its PDF display capabilities but once in a while I am having a hard time enjoying the content because of non-OCR’ed PDF material. I recently bought a 40 USD 1950 edition old book from Google Play (I can’t take the risk of getting the hard copy through the customs in Turkey considering the actual book is around 100 USD) and it’s a shame I couldn’t read it on my Kindle without pulling all kinds of stunts. For starters, OCR is what makes a regular scanned document more than just an image version of it by detecting the text on it and making it an actual text document rather than a simple photocopy. Why is OCR important? If you want to do a text search, copy a text, do annotations or look up the meaning of a word inside your PDF, OCR is your single solution for older documents (or even the newer ones when the document is intentionally left as scanned). Unfortunately, most OCR software is very expensive, starting from around ten dollards going up to thousands of dollars. But the best part is most OCR software use the same open-source, free back-end, TESSERACT. TESSERACT was started by HP decades ago, now it is sponsored by Google. Actually, the famous Google Docs utilize it for the pdf’s you have on your Google Drive or even Gmail. The problem with TESSERACT for the regular users is that it is too powerful to be user-friendly. In fact, it does not even have a GUI or interface. So the following gives brief and simple (as much as possible) instructions on how to tame it in OS X.

Install Homebrew

Homebrew is an indispensable package manager for powerusers of OS X, similar to apt-get or yum in Linux distros. In fact, it is much like Gentoo’s package manager since it compiles most stuff directly on your computer instead of downloading binary executables.

To install it via Terminal, which is the only way actually, run:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Install Imagemagick

The almigthy Imagemagick has more juice and tricks than Photoshop if you know how to use it. No wonder why even Hollywood studios use it (Shrek, Toy Story, Stuart Little, The Incredibles are just a few examples of the movies it was used in), too. I honestly don’t know how to do anything with it other than simple image manipulation.

Run this:

brew install --with-libtiff --with-ghostscript imagemagick

 

Install Tesseract

Time to unleash the monster in all its glory. The current procedure will use a lot of CPU power and memory. So leave your computer be while the fans cry their lungs out:

brew install --with-all-languages tesseract

A necessary modification here. The latest version of tesseract (3.04.00) has a glitch with generating the fonts on the final pdf. I have contacted the development team, and it seems that a fix is on the way;however for now, you have to use an alternative font. Ken Sharp saves the day with his font. Click here to download it. Run this in the terminal and replace pdf.ttf with Sharp’s font:

open /usr/local/Cellar/tesseract/3.04.00/share/tessdata

Scanning and OCR’ing:

Run this (by replacing the INPUT part) to create tiff versions of your original pdf:

convert -density 300 INPUT.pdf -type Grayscale -compress lzw -background white +matte -depth 32 page_%05d.tif

OCR the tiffs with:

for i in page_*.tif; do echo $i; tesseract $i $(basename $i .tif) pdf; done

Now, merge the single page pdfs with CPDF, which is available here (CPDF was an expensive pdf toolkit before it was made open-source, now the back-end binaries are free to download but you still have to pay thousands of dollars for the GUI if you are a company):

./cpdf page_*.pdf -o MERGED.pdf

That’s it! You have a searchable pdf which you can use both on your computer and on Kindle.

Google Chrome OS Screenshots (Chromium OS Developer Build)

For those who are curious about Google’s new operating system Chrome OS, here are some screenshots (of Chromium OS Developer Build). I have used the Vmware image on Virtualbox since I don’t own a netbook (I’m not sure Chrome OS will work on any architecture, however, it may at the moment if they haven’t stripped down the kernel. It’s based on Debian as far as I know).

No splash screen, it immediately asks for an account and password:

It immediately took me to Gmail page for a login. Since Chrome OS is using Google Apps, you need to login to your google account.

Regular Chrome browser:

When I clicked on the “start” button of Chrome OS, it prompted me for a password again. It says “Welcome uses Google Accounts for Sign In.” I’m not sure what this “Welcome” is but it must be something new to personalize your google experience on your Chrome OS. It says Google is not affiliated with the contents of Welcome or its owners. Sounds strange. It may be something like a shell for the OS.

Sort of a start menu (or “Welcome”):

Here is what Google Talk looks like:

Notepad:

When you click on Chess, it opens a regular flash chess game on the browser:

When you click on other applications like facebook, it just redirects you to your facebook account through the browser window. I couldn’t make some of the applications work. Anyways, as you see there is not much to be curious about yet, especially if you don’t own a netbook or you don’t like cloud computing.

Subpixel Font Rendering in Linux

Due to some patent issues, most of the distributions ship their freetype packages with subpixel rendering option disabled. In fact, as far as I know Ubuntu is the only one that enabled this option. If you want cleartype-like font rendering in your distro, you have to uncomment a macro in the code and  build the package yourself. But this is not enough since the newest LCD-specific FreeType APIs have not been implemented in Xft and Cairo. So you have to patch and build these packages too. I have downloaded the sources of these packages from Ubuntu  and applied the patches to Debian code. Cairo and Freetype compiled fine but Xft wouldn’t. So I used David Turner’s patch for that one. Though font rendering issues are a matter of taste, the results are miraculous in LCD displays. Here are some screenshots with and without patches, see how fonts differ in webpages.

Unpatched freetype, cairo and xft:

before

before1

patched builds:

after1

enson

Sources and patches of freetype 2.3.7, xft 2.1.12, cairo 1.6.4 can be found here. The tar archive also includes patched versions of the packages that I have built for Debian (deb archives for i386).

To enable subpixel rendering, you have to choose subpixel smoothing from appearance preferences menu in gnome. If you are using Debian or a Debian-based distro, you can configure system-wide settings through dpkg with the following options:

sudo dpkg-reconfigure fontconfig-config

terminal1

terminal2

son3

More information about patches and patents can be found in:

http://david.freetype.org/cleartype-patents.html

http://freetype.sourceforge.net/patents.html

Debian GNU/Linux 5.0 codename Lenny

Long-awaited “Lenny” has finally been out! After 22 months of development, Debian development team announced the official release of Debian GNU/Linux 5.0 on 14th of February as planned (well, at least in American Samoa, which happens to be located in UTC-11.) and the very same day I installed and tested it on my laptop.

lennybanner_indexed

Installation

This is the first time that a Debian release comes with a graphical installer, though the text-based installation is still the default option. The Debian installer in the DVD that I have used offered different options like expert mode, default desktop selection, etc. The overall installation process was easy and smooth. One of the good things was having the chance to load non-free firmwares from a USB flash drive during the installation because my laptop has Intel 4965 AGN wifi, which needs some binary firmware to work.

hw-detect_load_firmware_0

You can also choose the mount options of the partitions while you are installing the system, no need to edit fstab. I always use relatime.

partman-basicfilesystems_mountoptions_0

One thing to mention is that if you have an ntfs partition, you need to install ntfs-3g yourself because it is not installed automatically. So you may need to edit your fstab in that case, no big deal anyway.

What’s New

Even if Distrowatch says Lenny uses Gnome 2.20.1.1, it ships with Gnome 2.22.3.  However, some packages are still in their 2.20 version. One of those kept back packages is gnome-panel. It is a very good decision to keep gnome-panel in version 2.20 because even in Ubuntu Hardy, which ships 2.22, the panel and applets crash too often. The other important package in version 2.20 is nautilus. Gvfs is not implemented in Lenny since it is thought to be “not stable and featured enough for a stable Debian release.” So Lenny uses “patched, rock-solid version of gnome-vfs instead”.

gnome

Lenny comes with native Flash support both in desktop and in the browser. It uses swfdec to view flash files and objects but I can’t say it’s an effective decoder. The quality of flash videos with swfdec-mozilla were so low that I immediately had to switch to non-free flash plug-in.

X.Org version in Lenny  is 7.3, which brings support for input/output hotplug. Some other important novelties in base system is mlocate replacing locate, and  rsyslog replacing sysklogd/klogd.

Installation guides can be found here and release notes are here. Here is what the default desktop looks like:

desktop

Firefox Search Bar Plugins

Mozilla Firefox comes with some pre-installed search plugins and some websites provide their users with a plugin for firefox search bar. However, there are also lots of websites on the net that don’t give you any plugin to make your search easier. Sometimes I have to use Cambridge Advanced Learner’s Dictionary to look up a word that I don’t know but copying the unknown word and putting it into the search box of Cambridge Dictionary seems too painful to me, especially if I am reading a long sophisticated text. So I created some search plugins for different websites using a perl script. (See Screenshots below) Below you can find some of them. In order to use them in your firefox browser, you need to right-click and save them to your computer. Then, Windows user should put them in:

C:\Program Files\Mozilla Firefox\searchplugins\

And, Linux users should put them in:

/home/YOURHOME/.mozilla/firefox/YOURPROFILE.default/searchplugins

Then, you need to restart your browser.
PLUGINS

Cambridge Advanced Learner’s Dictionary

Dictionary.com

Thesaurus.com

Tureng v2

Zargan

IMDB

Myspace

Flickr

Hi5

Tagged

Sourceforge

Eksi Sozluk

Screenshots

screenshot_search2

screenshot_search

Other Additional Plugins

If there are any other plugins that you need to use with your firefox browser, ask for them in comments section below.

By the way, all the credit goes to ccn. Without his script, these plugins would not exist.

Intel High Definition Audio in Linux

A great number of laptops produced after 2004, including my vaio fz 190, come with an Intel® High Definition Audio chipset. Interestingly, these chipsets have problems in both Linux and Windows. If you are using an old version of alsa, I would recommend you to upgrade it because newer alsa drivers are almost problem-free. However, sometimes even if you upgrade your alsa driver, the default setup is not enough, for example, your headphones may not be working. In that case you need to pass some extra options to make alsa driver recognize your card. I guess “model” option is the most important one here, setting it according to my sound card was enough for me. In order to pass “model” option to snd-hda-intel module, first you need to know the model of your card. You can find it out by running this command:

cat /proc/asound/card0/codec#* | grep Codec

After that, you can find the appropriate parameter for your model in alsa documentation:

/alsa-driver-VERSION/alsa-kernel/Documentation/ALSA-Configuration.txt

If your driver is already a new one or you want to use the one shipped with your distro, you can find these configurations in:

/usr/src/KERNEL_VERSION/Documentation/sound/alsa/ALSA-Configuration.txt

If you don’t have any of these files, you can find the one for alsa-driver-1.0.18 here.
After finding the appropriate options for your card, you need to pass them to your alsa-base file. You can do that by typing

sudo nano /etc/modprobe.d/alsa-base

or choose your favourite text editor. Add the following line to the end of that file:

options snd-hda-intel model=MODEL

For instance mine was:

options snd-hda-intel model=vaio

Then find the applications that are using alsa by typing:

lsof /dev/snd/*

and kill them with

killall APPLICATION

(you may need root priviliges for that) Unload and reload the module again by:

sudo rmmod snd_hda_intel
sudo modprobe snd-hda-intel

or if these do not work reboot your computer. Your sound should be working with no problems.

If you still have problems, please run this script and report it to the alsa-developer mailing list to get more help.