You have a source code whose content you want to display on the stdout. The natural way to do that is the “
cat” command but it’s monochrome. How to get a syntax-highlighted output?
Use pygments. If you install it (“
sudo apt-get install python-pygments“), you will have a command called “
pygmentize” that you can invoke from the command line.
pygmentize -f terminal256 -O style=native -g color_me.py
Tip: put an alias on it.
alias pcat="pygmentize -f terminal256 -O style=native -g"
There are different styles available, see “
pygmentize -L” for a list.
- Using Pygments with less (thanks rajbot)
How to pronounce the name of the creator of the C++ language, Bjarne Stroustrup?
You can analyze a user-agent string with http://user-agent-string.info/.
A long time ago I also made a Greasemonkey script called BH IMDB/Word Highlight. This script is written for some specific sites in Hungary. However, you can take ideas from this how to highlight a text on a web site.
You have downloaded a Greasemonkey script but… how to install it?
Here I suppose you have the Greasemonkey add-on installed (Hey, what is GM?). Well, I didn’t find anywhere the option “install from local file“. A GM script is called
*.user.js and if you open the URL (
http://...) of such a script, GM will recognize it and offer to install it (for this GM must be enabled). However! If you open your script locally (
file://...), nothing happens. WTF?
Calm down. You know Python, right? The Swiss army knife of programmers. Just navigate to the directory where the GM script is located and start a web server:
$ python -m SimpleHTTPServer
Now open the URL http://localhost:8000 , click on the user script and GM will offer to install it. Python, what would I do without you?
User scripts are installed in this directory: “
~/.mozilla/firefox/xxxxxxxx.default/gm_scripts“. Here you will find a
config.xml file too that is created by GM.
I installed this way this script: Greasemonkey: focus first input field. This script puts the focus on the first input field. I use it with Amazon and IMDB and works like a charm.
I use Midnight Commander a lot and F9 in MC means: “go to the top menu bar“. However, Unity steals F9 and activates a widget layer. By default this layer is empty, so you only see that the screen greys out.
How to disable this shit?
ccsm“, find the Desktop section and untick “Widget Layer“. Done.
“AutoKey is a desktop automation utility for Linux and X11. It allows you to create scripts and assign hotkeys to these scripts, allowing you to execute them on demand in whatever program you are using.” (source)
I’ve already done similar automatizations with autopy, which is not difficult, but life is much easier with AutoKey. AutoKey is a framework for these kinds of scripts and the great news is you can program it with Python!
sudo apt-get install autokey-qt
There is an “autokey-gtk” version too but I had some problems with that. For me “autokey-qt” worked better.
- AutoKey HQ
- Autokey: Make Your Own Keyboard Shortcuts In Linux
- Using Autokey Scripts to Automate Your Linux Desktop
- AutoKey : Linux Utility for Text Substitution , Hotkeys and Desktop Automation (excellent tutorial)
- AutoKey API reference
Now let’s see a concrete use case. Printing at my workplace is a bit painful. If I want to send jobs to a powerful printer here, I need to authenticate myself each time (see the figure; click for a larger image). Or, I can use another (shitty) printer…
I must provide my username / password, then click on the OK button. If I print a large document, it’s OK, but if I want to print several small files, it becomes a pain in the ass.
There is a hotkey associated to this script: CTRL+F1. There is also a window filter, thus it cannot be activated by accident in a wrong environment.
The script is here:
with open(".../print.txt") as f: username = f.readline().rstrip("\n") password = f.readline().rstrip("\n") keyboard.send_keys("<shift>+<tab>") keyboard.send_keys(username) keyboard.send_keys("<tab>") keyboard.send_keys(password) for _ in range(3): keyboard.send_keys("<tab>") keyboard.send_keys("<enter>") # END