Product SiteDocumentation Site Slackermedia 13.37 Slackermedia ============ The Multimedia Distro-from-Text ------------------------------- Edition 13.37 Seth Kenlon Slackermedia Documentationseth@straightedgelinux.com Klaatu la Terible Slackermedia Documentationklaatu@member.fsf.org slak magik Sbopkg Engineerinfo@sbopkg.org ------------------------------------------------------------------------ Legal Notice ============ Copyright © 2011 | Slackermedia | This material may only be distributed subject to the terms and conditions set forth in the GNU Free Documentation License (GFDL), V1.2 or later (the latest version is presently available at http://www.gnu.org/licenses/fdl.txt). Abstract Slackermedia is documentation providing the information a user will need to create a full multimedia studio from a Slackware base install. Inspired by Linux-From-Scratch, it is intended to be a "distro from text", a do-it-yourself Linux distribution beginning with installing Slackware and ending with what we will call "Slackermedia" with all the custom-compiled and configuration of only the best in multimedia content creation tools that Linux offers and the user requires to achieve their artistic goals. ------------------------------------------------------------------------ Preface 1. Document Conventions 1.1. Typographic Conventions 1.2. Pull-quote Conventions 1.3. Notes and Warnings 2. We Need Feedback! 1. An Introduction to Slackermedia 1.1. Where's The Installer Disc? 1.2. What's Wrong With Multimedia Distros? 1.3. Why Slackware? 1.4. Prerequisites 2. Multimedia Workflow on GNU Linux 2.1. What is a Workflow? 2.2. Monolithic vs Modular 2.3. What is a Workflow? 3. Step One: Installation 4. Step Two: Understanding Package Management 4.1. Slackware Packages 4.2. The pkgtool, installpkg, removepkg Utilities 4.3. Slackware Packages and slackpkg 4.4. Finding Additional Slackware Packages 4.4.1. rpm2tgz 4.4.2. SlackBuilds and sbopkg 4.4.3. Source Code 4.5. Bottomline for Slackermedia 5. Step Three: Getting the Deps and Libs 5.1. Which Dependencies Should You Install? 5.2. Structure of Slackermedia Queue Files 5.3. Dependencies List and Queue Files 6. Step Four: Application Sets 6.1. The Slackermedia Sets 6.1.1. Audio Workstation 6.1.2. Graphic Designer 6.1.3. Film and Video Production 6.1.4. For Writers 7. Step Five: Real-Time Kernel 7.1. Compiling the Linux Kernel 7.1.1. Setting Real-Time Priorities 8. Part Six: Compiling and Configuring Software 8.1. Ardour 8.2. Audacity 8.3. Blender 8.4. Blender Plugins 8.5. Digikam 8.6. dvgrab 8.7. ffmpeg 8.8. Fonts 8.8.1. Installing Fonts 8.8.2. Font Matrix 8.9. GIMP Brushes 8.10. GIMP Photoshop Keybindings 8.11. GIMP Paint Studio 8.12. GIMP CMYK Support 8.13. HandBrake 8.14. ICC Color Profiles 8.15. K-3d 8.16. KDENlive 8.17. LiVES 8.18. MediaInfo and MediaInfoGUI 8.19. Miro 8.20. Qtractor 8.21. Scribus 8.22. SoX 8.23. Synfig Studio 8.24. Transcode 8.25. video-meta 9. Soft Synths and Effects Explained 9.1. Finding Soft Synth Plugins for GNU Linux 9.2. Some Popular Soft Synths for Linux 9.2.1. whySynth 9.2.2. Xsynth-DSSI 9.2.3. hexter 9.2.4. nekobee-DSSI 9.2.5. Fluidsynth 9.2.6. Fluidsynth-DSSI 9.2.7. Soundfonts 9.3. Finding Effect Processors for GNU Linux 9.3.1. Steve Harris LADSPA Plugins 9.3.2. Calf Plugins 9.4. Stand-Alone Synths 9.4.1. Qsynth 9.4.2. Linux Sampler 9.4.3. Sooper Looper 9.4.4. Hydrogen 10. Part Seven: Slackermedia for Writers 10.1. Noobifying GNU Emacs 10.2. Spell Check 10.2.1. Spell Checking in GNU Emacs 10.2.2. Ispell 10.2.3. Aspell 10.2.4. Office Suites 10.3. Outlining and Organization 10.3.1. Org-mode 10.3.2. KJots and Journal 10.3.3. KWord and Office 10.4. Expanding Emacs 10.4.1. Installing a single .el extension 10.4.2. Installing a bundled .el mode 10.4.3. The dot-emacs file and You 10.5. Self-Publishing 10.5.1. Circulate 10.5.2. Publican 10.6. Screenplays 10.6.1. screenwriter.el 10.6.2. celtx 11. The End A. Customizing the Slackermedia Desktop A.1. KDE Plasma Desktop Optimization A.1.1. Customizing KDE Panels A.1.2. Customizing Windows and Applications A.1.3. Plasmoids and Interface Changes A.1.4. Custom KDE Key Bindings A.2. Fluxbox Desktop Optimization A.3. Custom Fluxbox Key Bindings A.4. Applications in Fluxbox A.5. Unification of User Interface in Fluxbox A.6. Other Desktop Environments B. Choosing the Right Hardware B.1. Due Diligence in Hardware Selection B.1.1. CPU B.1.2. RAM B.1.3. Graphics Card B.1.4. GPU Tests B.1.5. Sound card B.1.6. Wireless card B.1.7. Webcam B.1.8. Miscellaneous Considerations B.2. Desktop or Laptop? B.3. Building Your Own System, and Ideal Specs C. The State of Multimedia on GNU Linux C.1. What Free Software Is Not C.2. Benefits of Free Software Multimedia C.3. Multimedia as a Moving Target D. Revision History Index Preface ======= 1. Document Conventions ------------------------ This manual uses several conventions to highlight certain words and phrases and draw attention to specific pieces of information. In PDF and paper editions, this manual uses typefaces drawn from the Liberation Fonts set. The Liberation Fonts set is also used in HTML editions if the set is installed on your system. If not, alternative but equivalent typefaces are displayed. Note: Red Hat Enterprise Linux 5 and later includes the Liberation Fonts set by default. 1.1. Typographic Conventions Four typographic conventions are used to call attention to specific words and phrases. These conventions, and the circumstances they apply to, are as follows. Mono-spaced Bold Used to highlight system input, including shell commands, file names and paths. Also used to highlight keycaps and key combinations. For example: To see the contents of the file my_next_bestselling_novel in your current working directory, enter the cat my_next_bestselling_novel command at the shell prompt and press Enter to execute the command. The above includes a file name, a shell command and a keycap, all presented in mono-spaced bold and all distinguishable thanks to context. Key combinations can be distinguished from keycaps by the hyphen connecting each part of a key combination. For example: Press Enter to execute the command. Press Ctrl+Alt+F2 to switch to the first virtual terminal. Press Ctrl+Alt+F1 to return to your X-Windows session. The first paragraph highlights the particular keycap to press. The second highlights two key combinations (each a set of three keycaps with each set pressed simultaneously). If source code is discussed, class names, methods, functions, variable names and returned values mentioned within a paragraph will be presented as above, in mono-spaced bold. For example: File-related classes include filesystem for file systems, file for files, and dir for directories. Each class has its own associated set of permissions. Proportional Bold This denotes words or phrases encountered on a system, including application names; dialog box text; labeled buttons; check-box and radio button labels; menu titles and sub-menu titles. For example: Choose System → Preferences → Mouse from the main menu bar to launch Mouse Preferences. In the Buttons tab, click the Left-handed mouse check box and click Close to switch the primary mouse button from the left to the right (making the mouse suitable for use in the left hand). To insert a special character into a gedit file, choose Applications → Accessories → Character Map from the main menu bar. Next, choose Search → Find… from the Character Map menu bar, type the name of the character in the Search field and click Next. The character you sought will be highlighted in the Character Table. Double-click this highlighted character to place it in the Text to copy field and then click the Copy button. Now switch back to your document and choose Edit → Paste from the gedit menu bar. The above text includes application names; system-wide menu names and items; application-specific menu names; and buttons and text found within a GUI interface, all presented in proportional bold and all distinguishable by context. Mono-spaced Bold Italic or Proportional Bold Italic Whether mono-spaced bold or proportional bold, the addition of italics indicates replaceable or variable text. Italics denotes text you do not input literally or displayed text that changes depending on circumstance. For example: To connect to a remote machine using ssh, type ssh username@domain.name at a shell prompt. If the remote machine is example.com and your username on that machine is john, type ssh john@example.com. The mount -o remount file-system command remounts the named file system. For example, to remount the /home file system, the command is mount -o remount /home. To see the version of a currently installed package, use the rpm -q package command. It will return a result as follows: package-version-release. Note the words in bold italics above — username, domain.name, file-system, package, version and release. Each word is a placeholder, either for text you enter when issuing a command or for text displayed by the system. Aside from standard usage for presenting the title of a work, italics denotes the first use of a new and important term. For example: Publican is a DocBook publishing system. 1.2. Pull-quote Conventions Terminal output and source code listings are set off visually from the surrounding text. Output sent to a terminal is set in mono-spaced roman and presented thus: books Desktop documentation drafts mss photos stuff svn books_tests Desktop1 downloads images notes scripts svgs Source-code listings are also set in mono-spaced roman but add syntax highlighting as follows: package org.jboss.book.jca.ex1; import javax.naming.InitialContext; public class ExClient { public static void main(String args[]) throws Exception { InitialContext iniCtx = new InitialContext(); Object ref = iniCtx.lookup("EchoBean"); EchoHome home = (EchoHome) ref; Echo echo = home.create(); System.out.println("Created Echo"); System.out.println("Echo.echo('Hello') = " + echo.echo("Hello")); } } 1.3. Notes and Warnings Finally, we use three visual styles to draw attention to information that might otherwise be overlooked. Note ---- Notes are tips, shortcuts or alternative approaches to the task at hand. Ignoring a note should have no negative consequences, but you might miss out on a trick that makes your life easier. Important --------- Important boxes detail things that are easily missed: configuration changes that only apply to the current session, or services that need restarting before an update will apply. Ignoring a box labeled 'Important' will not cause data loss but may cause irritation and frustration. Warning ------- Warnings should not be ignored. Ignoring warnings will most likely cause data loss. 2. We Need Feedback! --------------------- Contact us via slackermedia.info, or via IRC on the freenode network in #slackermedia, or via email. Chapter 1. An Introduction to Slackermedia -------------------------------------------- 1.1. Where's The Installer Disc? 1.2. What's Wrong With Multimedia Distros? 1.3. Why Slackware? 1.4. Prerequisites Slackermedia is a book and Linux configuration guide. After reading, comprehending, and implementing the lessons in Slackermedia the book, a user will have a customized Slackware Linux distribution for multimedia production. The idea is based in part upon the Linux-From-Scratch project and is respectfully the antithesis to Ubuntu Studio, Studio64, DyneBolic, and other (quite good) "multimedia distros". 1.1. Where's The Installer Disc? ---------------------------------- Anyone who has looked into Linux will know that there are a lot of Linux distributions available. Many of them are very good, with a lot of effort going into their production and maintenance. There are distributions for everyone; Linux for the office, Linux for home creativity, Linux for server administrators, Linux for televisions, Linux for the science community, for the electronic circuitry design community, Linux for children, Linux for firewalls, Linux for different languages, Linux for religious communities, and Linux for people who like the color pink, or blue, or orange, and on and on. It's because GNU Linux distributes its code freely that such a rich ecosystem of operating environments are able to peacefully co-exist in a way that just never happens in commercial proprietary software. But Slackermedia is not one of the discs you can download and install, reboot, and magically find that the multimedia environment of your dreams has been installed on your computer. Slackermedia is not a CD or DVD or pre-fabricated distribution. In fact, part of the idea behind Slackermedia is that a pre-fabricated environment will be less efficient and less effective for you, the user. So what is Slackermedia? Slackermedia is a set of tutorials on how to build your own Slackware multimedia environment that will be tailored specifically for you and how you work. Slackermedia exists for two reasons: 1. To build one's environment is to know one's environment. 2. Slackware is a stable, powerful, unix-like, well-supported, sensible, free and open operating system, ideal for the needs of a multimedia artist. 1.2. What's Wrong With Multimedia Distros? ------------------------------------------- Multimedia distros like Ubuntu Studio, Studio64, DyneBolic, Startcom, Musix, Indamixxx, and others, are great solutions for the artist whose goals and workflow match up with the distribution's maintainers. They also serve as a good starting point if an artist is unfamiliar with the artistic tools available in Linux. A good multimedia distribution comes pre-configured with all the usual media creation apps, so you can try them out and determine which application best fits your needs. For some artists, however, a pre-built distribution means that the video editor might have to wade through ten different hobbyist video cutters before finding a good solution, and yet will still have to uninstall ffmpeg in order to configure it with all the codec support required by professional video work. Conversely, a hobbyist user who wants to play around with some software synths may have to download a dozen synths but never understand how to load patches into them or what sequencer to use to make them work. Slackermedia is more of a "workflow" distro. It teaches the user how to build their own environment, how to leverage the inherently modular Linux system, and how all the different parts work together. And most importantly, it lets the user get their artwork done. After building and using Slackermedia, you will better understand how the unix philosophy. You will understand how it applies not to just computing, but to large multimedia projects, and you might even come to a better understanding of your craft. In short, no distribution will ever perfectly fit a user unless the user has designed it with themselves in mind. 1.3. Why Slackware? -------------------- Building a multimedia system on any OS is a precarious task; the goal is always to maximize flexibility, have every tool available to the user with as much integration as possible, have the latest features, a good understanding the tools of the trade, and a solid system that is stable and powerful. Linux makes an ideal platform for multimedia based on many of those requirements. It is inherently flexible, and if configured correctly it can be everything the user needs in the exact way that the user prefers. For Slackermedia, the base system is the famously stable and powerful Slackware. There are a few advantages to Slackware over other varieties of Linux: * Solid. Slackware prizes stability over jumping to the latest-and-greatest features. This means, for instance, that Slackware has not included new technologies like HAL and Pulse Audio and udev until they have proven to be reliable, finished products. To users itching for the neatest, latest features, this may appear an inconvenience, but for mission-critical machines it is far better to wait on flashy new features than have beta-quality technology cause unforeseen delays in the workflow. * Manual Updates. Many computer users are very accustomed to their computer blinking an icon at them every week or month, urging them to accept a series of updates to their operating system. Most users accept these alerts blindly and let their OS be updated right out from under them. Sometimes this adds new features and new security patches; other times, it breaks a critical component of an intricate workflow. For mission-critical systems, auto-updating is not a user-friendly feature, it is bothersome at best, and at worst it's an unknown variable that could all-too easily bring production to a halt. Similarly, many Linux distributions advertise frequent releases of the OS itself. Ubuntu and Fedora both strive to release a new version every six months, and many users jump to upgrade. This generally demands a time-consuming reconfiguration of the entire system; extremely unrealistic for a serious production studio. Ubuntu and Red Hat do offer longterm stable releases but the general hype tends to lean toward upgrading over conservatism, while Slackware is known for its infrequent upgrades, unless the user wants to update packages manually. * Unix-like functionality. GNU and Linux, the two basic components of what is colloquially called "Linux", were modeled on AT&T's UNIX operating system, and more broadly on the "unix philosophy" as analyzed quite completely in the book Linux and the Unix Philosophy by Mike Gancarz. Ideas such as re-using other people's work, keeping things modular, stringing together existing small applications to functionally achieve larger ones are all part of the "unixy" way of doing things. Slackware strives to be as true to UNIX as possible. In fact, its mission statement from the slackware.com website is: The Slackware Philosophy: since its first beta release in April of 1993, the Slackware Linux Project has aimed at producing the most "UNIX-like" Linux distribution out there. Slackware complies with the published Linux standards, such as the Linux File System Standard. We have always considered simplicity and stability paramount, and as a result Slackware has become one of the most popular, stable, and friendly distributions available. * Control. In Slackware, the user has control over almost every aspect of the system. While other distributions have successfully made some things very easy and almost invisible to the user, such as adding packages via friendly package managers like RPM and yum or apt and aptitude, the user also loses a degree of control over the way applications are compiled, what options applications have enabled, where applications and libraries get installed in the system, what gets added and removed upon the instalation and removal of packages, and so on. Slackware leaves all such control firmly with the user, and for this reason the resulting system is precisely the sort of system the user needs. 1.4. Prerequisites ------------------- This book attempts to make no assumption about the reader's experience level, and ideally the Slackermedia tutorials will be able to be used by everyone. Realistically, however, in order to use this book a user will probably need: * Familiarity with Linux and unix. Obviously, the more familiar you are, the easier the process will be. * Some familiarity with compiling source code is helpful but not strictly necessary. Slackermedia advises the user to compile from source on a number of important programs, but if the user's needs are simple - or the user wishes to start out simple - then manually compiling from source may never be necessary. * It is recommended that the user be comfortable with installing and configuring Slackware. While Slackware is not difficult, it does allow for quite a bit of customization and configuration. If the user does not feel comfortable doing this (ie, if the user has only ever run a distribution that largely installs and configures itself, like Fedora, Mandriva, Ubuntu, Suse, and so on), then before Slackermedia is attempted, some degree of comfort with Slackware should be attained. If you have not already, then you should read the Slackbook, available online at slackbook.org, and available as a hard copy from store.slackware.com as "Slackware Essentials". * Familiarity with Linux multimedia applications. It will be difficult to custom design a multimedia distribution if the user does not know what applications they want to install. While Slackermedia gives plenty of good examples and suggestions, it is heavily biased toward what the author knows best and the applications that the author uses most. If a user knows that they prefer Ardour to Qtractor, then the user should implement an Ardour-based Slackermedia design; if the user doesn't know one from the other, then the user may not be getting the best solution for their needs. All in all, the more experience a user can bring to Slackermedia, the easier the process will be, and the more purposeful it will be able to be. However, if a user wishes to create a Slackermedia system solely based on the tutorials in this Slackermedia book, the result will be a well-tuned and efficient multimedia OS. The learning experience might be beneficial even if the studio isn't tailored to the user, and hopefully Slackermedia is clear enough so that users of all experience levels will benefit. Chapter 2. Multimedia Workflow on GNU Linux ---------------------------------------------- 2.1. What is a Workflow? 2.2. Monolithic vs Modular 2.3. What is a Workflow? Slackermedia is a blank canvas. There is not one "right" way to create your Slackermedia system. While Slackermedia does divide packages into broad sets, there is no pre-set that says "install this if you want to make music" or "install this if you want to make videos" and so on. You need to know what you want to do, and how you intend to do it, before building your system. In other words, this chapter contains a bunch of advice, which, as the cliche goes, is the one free thing in this world that no one really wants. You don't really want to read this chapter; you want to build Slackermedia. However, unless you've got experience as a production co-ordinator, this chapter will probably do you some good. Think of it as the green vegetables of Slackermedia and give it a read not because it's all that good, but because it's good for you. 2.1. What is a Workflow? -------------------------- Different disciplines have different methods of creating content, and different people work in unique ways. However, there are common elements from any production to another, and the basic methodology of getting a production from idea to finished product is called the "workflow". The term "workflow" refers to the entire process of production, not just what happens in the computer system being used on the project. However, since so much of modern production happens on a computer, the computer workflow is a often a determining factor in how the rest of the production will happen. It is important, therefore, to understand certain unique aspects of the Free Software workflow. 2.2. Monolithic vs Modular ---------------------------- Much of the GNU workflow is defined by its inherent modularity. This is very different than the popular tendency to consolidate broad functionality into one "one-stop shop" application. They are two different philosophies that are not really exclusive of one another; it makes sense to keep different tasks confined to specialized applications because this divides work among many applications and makes troubleshooting much easier, but it also makes sense to have an application designed to a specific goal to also include capabilities to complete all the steps required to achieve that goal. You may be used to the popular mega-applications that provide methods for everything in a perceived workflow, and you may see the logic in that kind of design, but consider the two approaches carefully: Monolithic The Video Editor You are an editor who has footage on harddrives delivered to you each week. You have no deck, camera, or other capture device and you will probably never need to capture footage into your non-linear editing solution. Why then does your NLE of choice feature eight different ways to capture footage but no way to do something simple like color code the video regions in your timeline, and no capability to understand divx or wmv or flv, much less xvid or theora? The Photographyer You are a photographer who requires a digital darkroom for re-touching. You do not need watercolor emulation in your brushes, you do not need to be able to open images from x-ray machines, you do not even need type setting. Why does your bloatware digital darkroom software feature all of this and more in the main application when it could instead be included as stand-alone plugins or insertable plug-ins for those who do need these kinds of features? The Graphic Designer You are a graphic designer working on websites, promotional materials, invitations, logos, and any other job you can get. Your needs are diverse and unpredictable. You are trying to choose between a few popular software titles but find that they are all major investments both in terms of money and their learning curve. While they all seem to do the same thing, it also seems that one specializes in photography, another specializes in materials emulation, another in design layout, and so on; you need a little of it all, but you want each part to be done well. Modular The Slackened Video Editor You're a video editor who gets footage delivered to them on harddrives and will never need to capture footage. You find kdenlive, an application that edits video without enforcing logging, organizing, and capturing footage. It's sleek and fast, and even has a plug-in architecture for effects that you may or may not use (it's up to you!). It also doesn't ship with 8gb of pre-fabricated motion graphic effects that you'll never use, but you know that there's blender or even Libre Office for that. You like that you're free to use ffmpeg or dvgrab for importing footage if you need to, or you can fall back on the user-friendly GUI of kdenlive if needed. The Slackened Photographer You're a photographer with simple digital darkroom needs. You've taken the plunge and switched to GNU Linux, opting for Slackware with the Slackermedia tutorials helping you set it up. You find that digiKam handles your digital darkroom needs and even allows you to upload instantly to a wide variety of sites, so you can deliver proofs to your clients quickly and easily, regardless of what vendor-specific sphere they happen to be associated with. It's lightweight, task-specific, and it doesn't try to manage your files for you with over-complex database backends that separate you from your data. It also lets you do minor retouching, but knows that for serious retouching and compositing, you'll simply open the picture in an external image manipulation application. Because it it is designed to integrate with the KDE software suite, digiKam's interface is familiar and easy to use. The Slacker Graphic Designer You're a graphic designer with diverse and unpredictable needs, depending on the job you've managed to pick up. You are find that on GNU Linux, the applications are smaller and less feature-rich, and you like this. When you need paint-brush emulation, you launch Krita and plug in your graphics tablet and create the textures you require. You bring that layer into the GNU Image Manipulation Program and do the integration of photographs with the textures from Krita. You bring a low-res version of that into Inkscape for elaborate vector-based layers and fanciful type-setting. You re-integrate all of that with GIMP, as needed. Depending on what the graphic will be used for, you pre-flight in Scribus or simply export straight from GIMP and upload to the client's server right from your Dolphin file manager. On a rare occasion, you find yourself in need of importing some rare formats that even GIMP will not recognize, but you find a plethora of small applications on sourceforge.net or Slackbuilds.org (like luminance HD) that will import these formats and convert them to something the other applications in your workflow will understand. As you can see, there are many times when the modular approach makes more sense than the monolithic. There is an immediate convenience sometimes with the monolithic; depending on how well-structured your workflow is, you may find yourself confounded when you suddenly have to find a new application to do a task that you'd never had to do before. While in a monolithic application, the solution to that may be found in a sub-menu of the sub-menu of a menu, in the modular approach you may be faced with no hint or indication of where to turn. However, these are mere growing pains that are eliminated once you've found the solution; they tend to happen only once: the first time you are faced with the issue that requires a new solution. And in the mean time, you have no need to deal with bloated software with more menus and features than you can ever hope to either understand or use. 2.3. What is a Workflow? -------------------------- It is important that you approach your workflow carefully and deliberately when setting up your multimedia studio. Simply throwing together a collection of applications that are tagged as "multimedia" or "graphics" or "audio" is not the correct solution in GNU Linux any more than it is on blackbox vendor software. The artist knows best what s/he needs from the computer, so the artist should determine what s/he must have on the computer in order to get the work done. If you have never served as a producer (or in software terms, "project manager") before, then this concept may be new to you, so we will review it here. 1. List all of the major tasks you are expecting to do on the computer system. Use general, broad terms here, such as "edit video", "retouch photos", "motion graphics", "clean up audio", and so on. 2. Do a second pass of this list for the specific steps involved in each major task you wrote down for the first step. For example, a video editor might list: Edit Video Log footage Review all footage with video player with variable speed control and spreadsheet for notes Capture Capture video from tape or drive Organize Organize by scene number and take number Edit Video editor with sync sound and color correction tools Print Export full quality for director's approval Edit Re-edit, rinse and repeat Motion Graphics Spec Get initial sketches from director Create Create graphic sources with graphic applications Animate Do first draft of motion graphics Render, Export Export low res version for approval Render, Deliver Do full quality render, deliver for integrate into final edit 3. Now do a third pass of your list and assign known software applications to each task. If you are familiar with only the mass-market blackbox applications, then list these. If you know some Free Software solutions as well, then list those. If you are uncertain what application addresses a list item, then do not make an assumption or guess; list it as something that requires more research. 4. Do some research to learn what application will address each list item. Make sure that everything you know you need to do can effectively be achieved with what is available to you. Be prepared for many different applications to surface in the Free Software world; due to the modular nature of its design, it's only natural that there will be a software application just capture video from a deck, or a separate application from your graphic design application just to change colorspace and compression settings, and so on. 5. Look for ways to automate your workflow. If there are repetitive tasks that you may have had to do one-by-one in your old non-Free workflow, you should look at these tasks in a new light. Quite possibly there will be scripts that you can write (or find someone to help you write) that can be run on your Free Software system to automatically perform adjustments or processing without any intervention from you. 6. With the help of Slackermedia, build your Slackware GNU Linux system according to the requirements you have specified in your list. 7. Gather raw material. This is a step that is easy to overlook in Free Software because it is not often addressed, but the fact that many of the vendors providing the non-Free applications package gigabytes of extra content for you to use in your work means that whenever the artist needs something random like a cursive font or a paint brush shaped like an oak leaf or a bear paw print, or a music loop of South American drums, or a high-res sand-texture, and so on, the artist has it available to them within a few clicks. Note ---- Free Software lacks the luxury of having gigabytes of licensed content to ship along with their software. Again, this is a double-edged sword that has the benefits of cutting download size by orders of magnitude, and also fights the pre-fabricated feel of art produced on Free Software as opposed to the off-the-shelf solutions, but means that you must go out and find the content yourself. Sites like flickr.com , freesound.org , and openclipart.org are veritable bastions of free cultur, offering Creative Commons content for easy download. To further address this need, the Slackermedia project itself gathered supporters from around the globe to do an initial crawl of the Internet to find free raw materials for artistic endeavours (such as fonts, clip art, sound banks, and so on). The content can be found as a torrent file on the Slackermedia.info website. Chapter 3. Step One: Installation ----------------------------------- The first step in creating Slackermedia is to install Slackware and configure it for your machine. It is strongly advised that a user be familiar with GNU, Linux, BSD, or UNIX before attempting to build a Slackermedia system. However, it is hardly unheard of (and in fact, arguably best) for someone to start their *nix journey with Slackware. There are many resources online to help a new Linux or new Slackware user through the installation process, including Alan Hicks' slackbook.org which is also available in print from the official Slackware Store. Support for installation is available via linuxquestions.org. Installation of Slackware begins with obtaining a Slackware installation disc, available for free from slackware.com or via bit torrent. After the Slackware install disc has been obtained, begin installation as with any other distribution; place the disc into your optical drive, reboot the computer with BIOS or EFI settings such that the optical drive precedes the harddrive in boot order, and wait for a prompt. Slackware's installation is menu-based and provides all the information needed to understand the process. This is not necessarily true with all operating system installers, or even with all Linux installers, but with Slackware, reading the screen makes the installation fairly self-explanatory. If it is not clear how to install Slackware from simply reading the screen, then refer to slackbook.org. Here are a few noteworthy points to keep in mind as you install: * Slackermedia officially advises against "dual booting", a somewhat popular method of having more than one operating system or versions of operating systems on a single computer. Dual booting is fine for bug testing or trying out various versions of GNU Linux, or for enabling a user to have both a proprietary OS needed for work and one free OS for real life, but it tends to add confusion to the installation process as well as to the stability of the system since one OS may attempt to change the master boot record unexpectedly, or a user of the other OS may accidentally erase or corrupt another partition, and so on. Unless you are an experienced Linux user, avoid dual booting. * Slackware ships with a variety of desktop environments that can be used by default. You will be asked to choose which desktop to use as default. KDE's Plasma Desktop tends to make all of the most common tasks of system configuration, integration, and everyday use both easy and efficient. Slackermedia is tested and configured on the Plasma Desktop , so it's adviseable for new users to default to KDE. Note ---- The other desktops will work, as well (and in fact most of them are more conservation with system resources) but they do require more configuration, which this book will not cover. * After the installation has finished, reboot the computer. Login to the new system as root and create at least one user. Slackware ships with the script useradd for creating new users, making the process quite simple. In fact, as of Slackware 13, useradd even offers to add a new user to appropriate groups that will enable the user to access important multimedia components such as audio, video, optical media, and so on, so take it up on that offer. * Keep in mind that useradd allows you to customize the UID (User ID) of the user you create. If you use other GNU or BSD systems, you will probably want to make your UID and username the same on your Slackermedia system as on your other systems, simply to avoid small but annoying permission problems when using external drives. * After creating a user, log out from root user, and log back in as a normal user. To start a graphical environment, enter su -c kdm at the BASH prompt, which will start a graphical login screen. Chapter 4. Step Two: Understanding Package Management -------------------------------------------------------- 4.1. Slackware Packages 4.2. The pkgtool, installpkg, removepkg Utilities 4.3. Slackware Packages and slackpkg 4.4. Finding Additional Slackware Packages 4.4.1. rpm2tgz 4.4.2. SlackBuilds and sbopkg 4.4.3. Source Code 4.5. Bottomline for Slackermedia Before you begin to build your multimedia system, it's important to understand how software is installed, uninstalled, and upgraded on a Slackware system. Generically, this is referred to as "package management". GNU Linux systems have become known for having a progressive and unique method of installing software, referred usually as the "repository" or "package management" systems. Red Hat Linux introduced this idea when they created, essentially, a database to keep track of all software installed on the computer. This database could then be automatically checked to see if newer versions of the software existed on a remote server, and in the event that a newer version was released then the user's local computer could be updated. Other distributions have since either re-invented this methodology or adapted it, or they use it directly. There are a few notable exceptions, one of which is Slackware. Slackware has three primary methods of managing the software installed on a system: 1. pkgtool and related tools 2. Slackbuilds 3. Installing and uninstalling from source code Each of these offers the user a variety of choices with regards to how a user manages the software on a computer; none of them impose update schedules, automatic dependency installation and removal, or demand a complex system of database calls be learned. 4.1. Slackware Packages ------------------------- Slackware packages are simply a collection of pre-defined files that have been archived; they generally have the file extension .tgz, .tbz, or .txz, although not all .tgz, .tbz, or .txz are necessarily Slackware packages. Those that are Slackware packages contain, generally speaking, these files: * slack-desc A description of the application this package will install. * doinst.sh A shell script doing post-install tasks, like adding support in one program for the application just installed. * /usr, /usr/share, and similar The folders into which the executable application itself exists and from which it will be copied out into the rest of the system. A traditional package, therefore, is a mimicry of your Linux system; it contains a few descriptive files or scripts to do a few specialized tasks, but mainly it is simply an isolated /usr, /etc, and whatever else is required for the application to run, with all the compiled files in place. The install process is to take all of these files and to impose them upon your existing Linux system. In other words, you could literally go through each file in the package and copy it over to the corresponding folder on your computer; ie, cp package/usr/bin/foo /usr/bin/foo and so on. Once the files are copied from the package to your larger system, the application can be run on your computer. This would be tedious and impossible to track and therefore difficult to reverse, so it would be smarter to have a shell script do it for you. The scripts included on Slackware for these and related tasks are: * installpkg * removepkg * pkgtool 4.2. The pkgtool, installpkg, removepkg Utilities --------------------------------------------------- installpkg is a simple front-end to the process of decompressing, copying files from, and keeping a record of a Slackware package. bash$ su -c 'installpkg /media/cdrom/extra/wicd/wicd-version.txz' Once a package is installed, all of the files that have been placed on your system are recorded in /var/log/packages. Using this information, two other scripts can upgrade packages, or remove packages. bash$ su -c 'upgradepkg /var/log/packages/wicd-version.txz' bash$ su -c 'removepkg /var/log/packages/wicd-version.txz' To see exactly what is going to be installed before installing it, you can use the explodepkg command, which shows a list of all the files in the Slackware package. Most of these commands can be done with pkgtool. pkgtool is an empty shell that looks for Slackware packages in any directory defined by the user. pkgtool is able to install a package, remove a package that has once been installed, and even upgrade packages. It is a graphical tool that runs in the terminal, so its use is fairly self-explanatory; simply choose whether you want to install packages from a directory, remove packages, or view a list of installed files associated with a package. Since Slackware itself uses Slackware packages to install itself in the first place, you can also run the initial install scripts again, including the font cache, lilo config, choose a default window manager, and more. 4.3. Slackware Packages and slackpkg -------------------------------------- The first Slackware packages you'll deal with are the ones installed onto your system during the normal installation process. You probably won't interact with these directly, but they are always available for reinstallation, either from your install media or via the internet. Aside from the default packages installed with a full install, there is an /extra directory containing additional packages. To install them from the install DVD, use installpkg: installpkg /dev/cdrom/extra/foo-0.1.tgz If you don't have the install media, then of course all of this is possible from the internet. To install a package from the internet, you could download the .tgz file from a Slackware mirror and then use installpkg or pkgtool, but there is a simple shell script that can make the process easier, called slackpkg. To configure slackpkg so that it knows where online to look for packages, open /etc/slackpkg/mirrors (a text file) as root and find the mirror that is associated with your Slackware version and that is geographically close to you, and uncomment it. This list of mirrors offers ftp and http access, but you must uncomment only one. Note ---- In terms of slackpkg, there is no functional difference between ftp and http. But if you use a network that restricts, for instance, ftp traffic, then http would have the obvious advantage for you. Using slackpkg is simple and much like using tools like yum or aptitude. You should update your list of available packages by issuing the initial command slackpkg update and from that point on, the repository can be searched by using the command slackpkg search foobar as root, and an application can be installed with slackpkg install foo. As usual, reading the manual page for slackpkg will reveal a full listing of associated commands. Once a package has been installed with slackpkg, it can be removed or upgraded using pkgtool and the other package management commands. 4.4. Finding Additional Slackware Packages -------------------------------------------- If you installed the full Slackware install base, then the only additional packages that slackpkg provides are applications found in the /extra and /testing directories. Aside from these folders, everything else on the server or DVD has been installed on your system. Slackware packages can be found elsewhere online, but you should make sure you trust the source of those packages, just as you would when considering installing applications on any other operating system. There are many places online that offer Slackware packages, and many tools available to help you install them in such a way that you can keep track of what you have installed, and also remove them cleanly. 4.4.1. rpm2tgz A useful command that can be used in conjunction with pkgtool is rpm2tgz, which converts a pre-built package for Red Hat Linux into a slackpkg (ie, a .tgz file) that can then be installed via pkgtool. This is similar to finding a pre-built .tgz on any given software's download page, except that rpm files are ubiquitous to Linux package formats and the liklihood of finding a .rpm file often exceeds the likelihood of happening across a Slackware package. Once you've downloaded the .rpm file, use rpm2tgz to convert it: rpm2tgz foobar-x.x.xx.rpm The result is a .tgz file, so after the conversion is finished the original .rpm can be discarded and pkgtool can be used to install the .tgz file. You will need to ensure that the computer contains the dependency code for the application to function; this means that you might need to install other software before installing the application you really want to install. For instance, the Red Hat documenation tool publican offers an .rpm, but in order to install it there are about twenty perl modules that must be installed first, which must be done manually. Warning ------- The user should also trust the source of the package such that they can be sure there is no broken, disabled, or malicious code present. 4.4.2. SlackBuilds and sbopkg One of the hallmarks of Slackware is its SlackBuild system, a powerful yet easy-to-understand and easy-to-learn method of scripting how an application will be built. The SlackBuild system enables the user to script exactly how applications are compiled so that the same SlackBuild can be used on a variety of computers (useful in a production studio) or from computer to computer after a major system upgrade has been performed. SlackBuilds result in .tgz files as well, so managing the applications after they have been compiled is as easy as using pkgtool. This essentially combines the best of both worlds; it allows the user to compile from source code and to enable all the options required for the application to work best for the user, but also feels like a pre-built package since it requires very little interaction from the user in order to be installed. Note ---- There is a unixy beauty to this system, as well, in that there is really nothing distribution-specific to it, and nothing redundant about it. It consists simply of a shell script which can be easily hosted on minimal storage, quickly downloaded, and used by anyone. Consider for a moment .deb or .rpm files, which in their most popular and common forms literally contain compiled code of the software it intends to install. This means that the source code itself is hosted on the appliction's homepage, it is possibly then modified by the .deb or .rpm maintainer, so that the application is now stored in at least two separate locations (its source homepage and the repository containing its .deb or .rpm), it can be a hefty download, compiled without any involvement from the user, and installed without any involvment from the user. Such complexity is un-unix-like, but fortunately Slackware doesn't use this method, using instead build scripts that are clean and efficient. This system was so powerful that, for Slackware 11.0, a group of Slackware users decided to establish a community around it, which can be found at SlackBuilds.org. An advantage to slackbuilds.org is that hundreds of applications have had scripts built for them, which are all fully editable by the individual user so that the compiling options are exactly the way the user wants them. Each user can then either maintain their private repository of customized SlackBuilds or simply continue to use the Slackbuilds.org versions. All of the scripts are reviewed and tested by the Slackbuilds.org administrators but can also be reviewed in advance by the user for security and functionality. Just prior to the release of Slackware 12.1, a frontend to Slackbuilds.org called sbopkg was released. Sbopkg is a local application which looks to the Slackbuilds.org server and synchronizes the list of available Slackbuild scripts. The user can then navigate through sbopkg similar to how pkgtool is used, and install packages from the Internet. 4.4.2.1. Introduction to sbopkg Sbopkg is a command-line and dialog-based tool to mirror the SlackBuilds.org repository and to operate on the local copy or to operate on a user's own repository of SlackBuild scripts. Sbopkg allows the user to browse the local copy, read associated ChangeLogs, view pertinent README files, read and modify the SlackBuild script itself, the .info file, and the slack-desc files. Sbopkg also allows the user to select packages to build and it will download the source code for the user, check the md5sum, and build a Slackware package. It will also optionally install the package onto the system. Sbopkg does not check or resolve dependencies. It does not automatically install packages. It does not track what has been installed. In other words, this is in no way apt-get or rpm for Slackware; it is a local front-end for Slackbuilds.org and does not duplicate or overlap the function of pkgtool or the responsibilities of the user as the primary manager of the system. To better understand sbopkg, it is good to understand how a SlackBuild traditionally works. Traditionally, the workflow to install from a Slackbuild from Slackbuilds.org might be something like this (performing all but the first step repeatedly in order for any required dependencies): 1. Open a web browser 2. Download the SlackBuild script 3. Search for, or navigate to, the tarball of the SlackBuild files and download it and the source code 4. On your local machine, navigate to the downloaded file and untar it tar -xzvf foo-sbo.tar.gz 5. Move the source code tarball into the SlackBuild directory mv foo-src.tar.gz foo-sbo/ 6. Change directory into the SlackBuild directory 7. Allow the SlackBuild script to be executable chmod +x foo.SlackBuild 8. Become root with su and run the SlackBuild 9. Install the resulting package installpkg /tmp/foo_sbo.tgz Sbopkg enables the user essentially to skip all but two of these commands, and can optionally perform the final step of installation as well. To obtain sbopkg, visit sbopkg.org and download the Slackware package. Then, open a terminal and use either pkgtool or installpkg: $ su -c 'installpkg sbopkg-VERSION-noarch_1-cng.tgz' Among the files installed along with sbopkg, there is /etc/sbopkg/sbopkg.conf, which contains all pertinent configuration options for sbopkg. It is safe to use the default settings. To start sbopkg, launch it as root by typing su -lc sbopkg (The -l is to obtain the root environment some packages require). Upon first launch, sbopkg creates, as defined in the sbopkg.conf file, a local copy of the scripts available from slackbuilds.org in /var/lib/sbopkg/SBo/x (where x is the latest stable release of Slackware), a log in /var/log/sbopkg, a queue directory in /var/sbopkg/queues, a cache in /var/cache/sbopkg, and a local tmp directory called /tmp/sbopkg. After sbopkg has launched, the user is delivered to an ncurses interface; use the Up and Down arrow keys to navigate through the main menu, Return to make a selection, and the Right and Left arrow keys to select which button on the bottom of the menu (OK, Cancel, Back, etc) the Return key activates. The first step with sbopkg is to sync with the remote server; this is the top selection in the sbopkg main menu. This copies all available scripts from SlackBuilds.org and saves them into directories corresponding with the categories defined by SlackBuilds.org (academic, accessibility, audio, etc). This allows the user to browse the mirrored repository in sbopkg whether or not the user is online, and also modify the scripts before using them to install software. After the initial rsync, the user can view the SlackBuilds.org ChangeLog, which documents the most recent updates applied to the SlackBuild repository, whether these are bug fixes in the scripts or updated packages. A user may also subscribe to the SlackBuild user mailing list at http://lists.slackbuilds.org/mailman/listinfo/slackbuilds-users. A list of all SlackBuild packages installed on the user's system may be viewed via the Packages menu selection, which looks at /var/log/sbopkg and displays the packages installed whose tags match the currently active repo's tags (by default, _SBo). Similarly, selecting the Update menu item will compare installed packages to those available in the local mirror and identify any packages that have updates available. Finding a package to install is done with the Browse menu selection, or the Search selection. Browse takes the user to a list of top-level categories as defined by SlackBuilds.org; use the Return key to select a category and browse through the packages. Hitting Return again will display the details about a package, such as the README file, the SlackBuild script itself, and more. To go back in the list of packages or to the list of categories, use the Right arrow to select the Back button on the bottom row of sbopkg's interface, and press Return or type Alt+B. The convention of using the Up and Down arrow keys (or accelerators) for the top menu of sbopkg and the Right and Left arrows (or Alt+accelerator) for the bottom row is used throughout sbopkg, except in textbox dialogs where the arrows scroll the text. The search function in sbopkg works as would be expected: hit Return on Search to be taken to a pop-up search field, type in the term you are searching for (it is case-insensitive) and hit Return again. Sbopkg returns all packages matching the search term; i.e., if a search is performed for the term "ink" then sbopkg will return "link-grammar", "inkscape", "libnfnetlink", "elinks", "wink", etc. Common bash wildcard characters are also supported, such that a search for "?ink*" returns the same list minus "inkscape" which has no character prior to "ink". 4.4.2.2. Building and Installing Software with Sbopkg Sbopkg can build and install software. These are two separate processes. If you elect to only build software, the resulting Slackware package (.tgz file) is left in /tmp by default. This location is controlled by the OUTPUT variable in the config file. It can then be installed via pkgtool or installpkg, or taken to other machines of the same architecture and installed on those, or simply stored for later use. Alternatively, sbopkg can be set to install the software after it has been compiled. Building and/or installing can be done from different places; the Build item is the final menu item on each individual package menu of unbuilt packages, and it is invoked with the Process Queue item in the Queue sub-menus. Sbopkg will prompt the user to perform only a build of the software or a build-and-install. Slackermedia recommends build-and-install for single or small groups of users in which compile time is not an issue; for building larger install bases, it may be more efficient to build once and install the resulting binary rather than having each computer compile it individually. To build or install a package via sbopkg, the first step should always be to view the README file. This displays a brief description of the application about to be installed, any options that may be passed to the SlackBuild, and any applications upon which the application depends (required dependencies can always be found on SlackBuilds.org). Sbopkg does not automatically resolve dependencies so it is up to the user to ensure that all listed dependencies are installed on the system before proceeding. READMEs can be viewed from various places, including selecting Queue → Process → View READMEs when using the dialog interface or using the -R flag from the command line. Assuming, for the purpose of this example, that there are no dependencies, the next step might be to view the .info file, which is a SlackBuilds.org-specific file of metadata which lists the canonical program name, the version for which the SlackBuild script was written, the project's homepage, the exact link where the source code for the program can be downloaded, the md5sum of that downloadable package, the SlackBuild script's maintainer's name and email, and the SlackBuilds.org administrator who approved the script. Next, the SlackBuild script itself can be reviewed. Although all SlackBuild scripts have been reviewed and tested by SlackBuild maintainers, it is a good idea to review the script, both for security purposes as well as to ensure that the application is going to be installed the way the user thinks it's going to be installed. There are some scripts that feature options that the user can take advantage of (like turning off or on codec or plugin support), while other scripts simply help elucidate optional components that the application will use if available but that are not dependencies themselves. Other applications feature an unusual build process such that a SlackBuild script may be more convenient for most users but a disadvantage to a user who relies on that program and would be better off installing directly from the project's code repository. If additional options are available in the SlackBuild script, the user's local copy of the script and/or .info file can be edited from within sbopkg by selecting the Custom menu item. This will open the SlackBuild script in the user's text editor of choice (defined by the EDITOR environmental variable). For example, if the SlackBuild script for LiVES was written for version 1.1.8 but a new version of LiVES has been released and a user wishes to install the newer version, all that is required of the user is that the version number be changed from 1.1.8 to, for instance, 1.2.0 (making the corresponding changes to the .info file's VERSION and DOWNLOAD fields). The script can be saved and run in sbopkg and the correct version of LiVES would be downloaded, compiled, and optionally installed. Any change can be made to a SlackBuild script in this way, whether the user wishes to hard code a unique feature into the script, or define a variable that is described in the README file, update the version number, modify build paths, and so on. If the only thing that is desired is to set a build option, however, this can be done by selecting the Options item and typing OPTION=value … in the entry field. While editing the SlackBuild is a persistent change, the edited version would have to be kept in sync with version changes which happen often. Using custom options also persists but only needs to be kept in sync with option changes which happen rarely. Changing a SlackBuild script, of course, requires at least some very basic knowledge of bash scripting and the installation process. It may be that a software package has changed substantially from one version to the next and so a simple update of the version number may not be all that is required, so if a user is opening a SlackBuild script for modification then the user should truly understand what is being done in the script, or be prepared for the build to potentially fail. 4.4.2.3. The Sbopkg Queue One of the most powerful features of sbopkg is its queue, which makes it possible for a user to create a list of packages to have installed in a particular order and use the list on other computers. Slackermedia makes extensive use of queue files to co-ordinate which packages should be installed as a basis for a good multimedia system. From the main sbopkg menu, select Queue and press Return. The Queue menu contains items to view the current queue, to modify the queue, load an existing queue, save a queue, rename or delete existing queues, add all installed packages to the queue (for creating package templates to enable restoration of the current package list or to transfer to another machine), and to process the current queue. A queue is created from the sbopkg GUI by finding a package via either Browse or Search and selecting Add to Queue. This adds the package to a temporary session-only queue file. A typical use for this would be, for instance, when installing Inkscape. Doing a search for Inkscape reveals that there is a SlackBuild available, but that it depends on a number of other packages such as gc, pangomm, cairomm, and others. Adding Inkscape to the queue allows the user to then go seek out SlackBuild packages for Inkscape's dependencies and either install them one by one, or add them to the queue as well. If they are added to the queue, then obviously the queue will attempt to install Inkscape before it installs the dependencies, so there are special functions in the Sort Queue submenu of sbopkg's Queue menu to either manually rearrange the order of the queue, or simply reverse the queue such that it is processed in reverse order. A simple reversal of the queue sometimes does work, but it may be insufficient since a dependency of one application may have its own dependencies which may require manual re-ordering to do subsorts in the queue. Alternatively, queuefiles can be created and edited with a text editor. The Queue menu is accessed from the main sbopkg menu by selecting Queue and contains items to view the current queue, which is dynamically created by the user during an sbopkg session and will be erased (unless saved) when sbopkg is stopped. The Sort item allows the user to reorder the list of applications in the queue while Remove allows the user to delete items from the queue. Save allows a queue file to be saved to the harddrive for later use; this is useful when doing multiple installs of Slackware on a number of machines; a queue file can be used on each machine so that the same packages are installed with minimal effort. By default, queue files are saved in /var/lib/sbopkg/queues. To load a pre-existent queue file into sbopkg, select Queue → Load and check the desired queuefile(s) in the list. To run a queue file, select Process Queue from the Queue menu. For example, if you have downloaded the av queue file from Slackermedia, then to load it into sbopkg, simply invoke sbopkg as QUEUEDIR=/path/to/dir/containing/queuefile sbopkg and it will appear in the checklist and can be checked as usual. The queue file would then be loaded into sbopkg and you can view it, modify it, remove or reorder applications, and finally process it. 4.4.2.4. Advanced Uses of sbopkg Sbopkg can also be used directly from the command line. Its options can be listed with sbopkg -h and details can be found via its manual page (man sbopkg), but the most direct and simple command is (to use the earlier example) su -lc 'sbopkg -i av' which will search for an application or queue file called "av" and install it (if an application) or the programs in it (if a queuefile). If both a program and queuefile exist with the same name, you'll be prompted to specify which. If a queuefile is intended, specifying the .sqf extension will avoid the prompt. If you know the name of an application and feel confident that you you have met all its dependencies (or can meet them all within the same command), this is probably both easier and simpler than loading sbopkg's graphical environment. Other command line options include causing sbopkg to rsync to slackbuilds.org, building without installing, diverse search options, viewing changelogs, and so on. It is also possible to maintain a local repository of customized SlackBuilds rather than, or in addition to, synchronizing with SlackBuilds.org. The local repository is stored in /var/lib/sbopkg/local by default and can be made active by either selecting it from Utilities → Repository or by invoking sbopkg as sbopkg -V local. Additionally, the location of the sbopkg repository can be defined in the /etc/sbopkg/sbopkg.conf file. If necessary, you may also pass the -d flag to specify an alternate directory for SlackBuilds repositories or by maintaining two configuration files, since sbopkg can be passed an alternate configuration file (sbopkg -f FILE) on the command line. 4.4.3. Source Code Slackware users often prefer to compile the software they install themselves; that is, they take the raw text files containing the application's code and process it through the GNU gcc compiler, and then move the executable result of this process into their system. This has a wide variety of advantages: * It allows the user to control where the executable binary (the application) is installed. * It allows the user to enable or disable features of the application before the application is built. * It allows the user to optimize the application for a specific processor. * It allows the user to review the code that goes into the building of an application should the user wish to do so. * It ensures the availability of applications to all users on any GNU, Linux, or unix-like system; if applications are distributed as .rpm or .deb files then a user must hunt for the proper format for their computer but source code is universal in that if an application was written for a GNU Linux system then it will compile and run on any GNU Linux system regardless of distribution. The general process of compiling is in theory simple; it is merely a matter of going to a website or code management site and downloading the source code of an application. Typically, free software is available in both a work-in-progress ("current") form as well as a packaged "stable" release version. Slackermedia reccommends with few exceptions downloading the stable version, which indicates that the code has been tested to some degree and that the programmers of the application feel confident enough in the code to package it into a .zip or .tar.gz or .tar.bz2 archive, give it an official number and sometimes a release name, and offer it for download to the general non-programmer public. Once the code has been downloaded, it is uncompressed, and a series of two or three commands are issued which starts GNU gcc compiling the code and then placing the binaries into the system. In practise, there is potential for error, just as with any part of computing. Some piece of code that the softare relies upon to run correctly may no be present on the user's system, or the user may have attempted to customize the build process in some impossible way, or the user may have configured the rest of the system in a unique enough way that another program cannot compile against it. This is one major advantage to using stock Slackware as the install base for Slackermedia; in all regards, the foundational code will be the same on the user's system as on the system used for all examples in Slackermedia. In any case, if a user believes there will be an advantage to compiling an application from source code then the user should make the attempt. A failed compile is harmless and can be deleted easily, but never having tried could mean a missing feature on the user's Slackermedia system. There is not just one way to compile software. There is the usual way, but any programmer may choose a different method to have software compiled. The compilation itself is usually performed by the GNU C Compiler (gcc). The way that gcc knows what steps to take during the compile is with a makefile; that is, a document written in a syntax specific to a compiler, which informs the compiler what code to use while building the application. The Makefile may contain pointers to other code that is expected to already exists on the user's system, or to other parts of code within that application's project, and it may contain special instructions for installing the software after it has been built as well as instructions on how to uninstall that application should the user decide it is no longer needed. It is worth noting that the source code downloaded may or may not include all of the code it actually requires to compile and run. If, for example, Developer Foo has developed code for a graphics application that requires heavily on Developer Bar's libjpeg, a set of code that enables the computer to handle jpeg images, then Developer Foo is obviously not going to distribute libjpeg along with the application's code, because libjpeg is maintained by Developer Bar. It is up the user, therefore, to read the README file (or similar) packaged along with Developer Foo's application and find out what other code is required to be present on the computer for Application Foo to work. This is called "dependency resolution". The canonical user commands to compile software are: ./configure make su -c 'make install' The version of this you can do on Slackware: ./configure make su -c 'makepkg ../foo.txz' su -c 'installpkg ../foo.txz' The application is built as usual in the first two steps, but the third command (makepkg) creates a Slackware package file (a simple .tar.xz file with the extension .txz) and then installs it upon the final command. The advantage to installing in this way is that there is then a record of what has been installed and where it has been installed, and the removepkg can be used to uninstall the application if desired. 4.5. Bottomline for Slackermedia --------------------------------- If nothing else, sbopkg provides an easy way to ensure that a certain layer of common packages are installed, much as using Slackware as the foundation for the system ensures that the install base is constant across all Slackermedia systems. Therefore, with the appropriate use of pkgtool and sbopkg, anyone's system may be made into a Slackermedia system. To begin this process, go to www.slackermedia.info and locate the sbopkg queue files, which are, much like Slackware's install files, grouped into a logical set of "series". For example, to download and install everything in the "huge" series (which contains everything for a full Slackermedia install), one would use the following command: $ su -c 'wget http://slackermedia.info/downloads/slackermedia-huge.txt \ > -O /var/lib/sbopkg/queues/slackermedia-huge.sqf' This leaves the user with the file slackermedia-huge.sqf, an sbopkg queue file. To synchronize with SlackBuilds.org and build and install all of the Slackermedia applications that can be or are recommended to be installed via sbopkg use the following command: $ su -lc 'sbopkg -r && sbopkg -i slackermedia-huge.sqf' To use the GUI, use the following command: $ su -lc sbopkg Then scroll down to the Queue item (or type Q and Return), choose Load, check the slackermedia-huge.sqf file and hit Return, and choose Process. Sbopkg will build and install the applications. Chapter 5. Step Three: Getting the Deps and Libs --------------------------------------------------- 5.1. Which Dependencies Should You Install? 5.2. Structure of Slackermedia Queue Files 5.3. Dependencies List and Queue Files Three steps into the process, and you're ready to start building your multimedia studio! There are a number of small prgrams, libraries, and small applications that a typical multimedia system, regardless of what you intend to do on it, should have installed, simply because they are so ubiquitous that nearly ever major media app you will install will probably require them anyway. These deps and libs are usually small pieces of software that you will not use directly, but that are important for the larger applications to be able to function properly. In some cases, these dependencies are also fully-featured applications in themselves, and are also used by other applications. In any case, they are good to have as a common base from which you can build upon; think of it as the missing "base install" components that you didn't get with stock Slackware. Determining what your system will need in order to process all the different kinds of media that a multimedia artist typically encounters can be confusing and overwhelming. This is alleviated in this chapter. 5.1. Which Dependencies Should You Install? --------------------------------------------- Slackware is a nice all-purpose distribution, so many of the dependencies, libraries, and backend apps required for a Slackermedia system are already installed by default, and many others can be obtained easily and quickly via sbopkg. The question is whether or not you should build a given dependency or application from source code yourself. Building from source code gives you the ability to build the application so that it has the features that you need, whereas relying on an unmodified Slackbuild or a prepackaged binary will not give you the same control over what you are installing. For the most part, it is safe to install most all libs and many dependencies from sbopkg or other trusted sources. Read the README files and Slackbuild information that comes along with software packages to determine whether you might need to compile the application with custom options. If you are not sure, then it is safe to install the software as it configured by default, and if something does not work that you believe should work, then identify what component that function is dependent upon, and investigate online documentation and forums for whether or not more can be gotten from that component by custom compiling it. You may have to install more than those listed here, depending on what you intend to install for your multimedia work. But if you performed the default, full Slackware install and do a complete Slackermedia dependency install, then most everything you'll need will be ready for you when you need it. Note ---- Mind the order in which you install libraries and dependencies; if you attempt to install, for instance, Inkscape before you install gc or libsigc++ then the install will obviously fail since Inkscape depends on gc and libsig++, so the sequence of install is important. 5.2. Structure of Slackermedia Queue Files -------------------------------------------- The lists of Slackermedia libraries and dependencies can, like the rest of Slackermedia, be divided into roughly-defined modules according to what kind of multimedia the system will be used to create. For the best possible system, it is recommended to install all of the advised dependencies and libraries. To use the Slackermedia lists of dependencies and libraries, simply copy the list and paste it into a text file. Save the text file, using the extension .sqf rather than .txt. When you launch sbopkg to use this queue file, become root and then define QUEUEDIR as the directory containing the slackermedia*sqf file and launch sbopkg: $ su $ QUEUEDIR=/home/slacker/src/ sbopkg If you are reading a printed version of this book, you may also find the Slackermedia .sqf files available for download on the slackermedia.info website. Once you have the .sqf files placed in your filesystem properly, launch sbopkg as root and select the Queue submenu. From there, load the appropriate queue file, and then select the Process Queue option. 5.3. Dependencies List and Queue Files ---------------------------------------- huge All slackermedia deps and libs; everything from groups avg, av, vg, and a. Highly recommended. avg Deps and libs for Audio, Video, and Graphic Designers, and everyone else. In other words, everyone should install this group. Installs scons OpenAL freealut locale-gettext ftgl exiftool gtk-engines gtk-qt-engine wxGTK imlib2 giblib scrot fftw shorten icu4c cppunit lua podofo libdvdnav dvdauthor lsdvd unrar p7zip pyicu fontmatrix av Deps and libs for Audio and Video creators. Note ---- Requires sdl libvorbis libtheora, all included in a stock Slackware install. Installs yasm ladspa_sdk set_rlimits libmp4v2 faad2 faac libdv x264 libquicktime libsndfile twolame xvidcore libdca lame libmpeg2 liblo speex smpeg aften a52dec mjpegtools lv2core vorbisgain aacgain mp3gain swh-plugins ogmtools oggvideotools libvpx rtmpdump opencore-amr orc schroedinger mplayer-codecs jack-audio-connection-kit qjackctl fluidsynth libdvdcss vobcopy frei0r libdvbpsi libzen libmediainfo mediainfo mediainfo-gui vg Deps and libs for Video and Graphic creators. Note ---- Requires exiv2, libkdcraw, libkipi, included in a stock Slackware install. Installs libwpg libdc1394 libopenraw openjpeg SDL_gfx gc gsl graphviz liblqr gimp-lqr-plugin gimp-fourier-plugin gimp-registry-plugins gimp-wideangle-plugin resynthesizer gimpfx-foundry kipi-plugins lensfun dcraw gtkimageview ufraw gdk-pixbuf potrace luminance-hdr raw-thumbnailer unpaper libsigc++ mm-common glibmm cairomm pangomm atkmm gtkmm Cython pysetuptools lxml numpy inkscape aDeps and libs for Audio creators. Installs id3lib id3v2 freepats TiMidity++ This gives you a solid foundation for a wide variety of more discipline-specific applications. Feel free to customize this base install as you see fit; you may not need so many video codecs, or you may opt for a different id3 tag editor, and so on. However, installing the above layer of dependencies and libraries prepares your system quite well for a more discipline-specific set of applications. A very robust Slackermedia install will involve over 50 packages from sbopkg and more to be built from source. The sbopkg queue file for all the packages listed on this site can be downloaded here and moved to /var/lib/sbopkg/queues/slackermedia.sqf and then loaded into sbopkg as a queue to process. Feel free to add to it or subtract from it as needed. The above lists install important libraries (like libsigc++) and dependencies (such as openAL) , as well as ubiquitous applications such as Inkscape or qjackctl or application plug-ins (such as GIMP plugins and mplayer codecs), but your Slackermedia build is far from over. Next, we will look at a number of important multimedia components that you can install to get your artwork done, different options you have while installing them, as well as how many of them work together. Chapter 6. Step Four: Application Sets ----------------------------------------- 6.1. The Slackermedia Sets 6.1.1. Audio Workstation 6.1.2. Graphic Designer 6.1.3. Film and Video Production 6.1.4. For Writers With the basis for Slackermedia now complete, the system is ready for the main multimedia applications that you want to use for your multimedia content creation. By now you are familiar with the different methods of installing software on Slackware, so all that remains is to choose the applications you want to use, and use either slackpkg, Slackbuilds.org, sbopkg, rpm2tgz, or (if all else fails) the old, traditional method of compiling directly from source code, to install them. There are a great many multimedia applications available for Linux, and if Slackermedia attempted to list them all it would turn into a catalogue of hundreds of applications without much room for anything else. Lists and blog posts of all the "best" multimedia applications abound on the internet, so if you are completely new to GNU Linux then shop around. Try some ready-made multimedia distros to sample the multimedia applications they offer. Listen to oggcasts (a good master list of Linux-related shows can be found at thelinuxlink.net ) to hear about the applications that are available and, more importantly, the ones that are stable and mature enough to actually be in use by real users. It's important to understand the difference between an application-in-development and an application ready for production use. It's natural that sometimes an application is not really aware of this itself, since the programming team is usually busy creating the application and not as busy actually utilizing it for full-time creative works. In an idea world, rigorous quality assurance testing would be done on all applications by professionally trained beta-testers. On the other hand, this is done on most proprietary "professional" applications and yet often they are still nowhere near ready for real-world use even as they sit on a shelf with a price tag of hundreds of dollars attached to them. Therefore, the process might be for you to first assemble a list of candidates for the tasks you'll need to do on your media workstation, and then to install those applications and test them. Eventually you will assemble a collection of applications upon which you can rely. 6.1. The Slackermedia Sets ---------------------------- The maintainers, friends, and users of Slackermedia use quite a few multimedia applications in real-world production environments. The applications that have proven themselves in everyday stress-tests are considered to be members of the Slackermedia software sets, which are loosely organized by discipline. 6.1.1. Audio Workstation DAWs and Editors qtractor MIDI and Audio sequencer ardour Audio and MIDI sequencer rosegarden MIDI sequencer hydrogen Drum Machine lmms Audio and MIDI sequencer schismtracker or milkytracker Tracker Score Editors tuxguitar Multitrack tablature editor and player nted or mscore WYSIWYG score-editors Waveform Editors audacity Multitrack waveform editor mhwaveedit Waveform editor Samplers and Synths linux sampler Sampler for Linux whysynth Soft synth qsampler Frontend for Linux Sampler qsynth Frontend for Fluidsynth gigedit Sample editor Mixing and Effects jamin mastering Audio mastering calf audio plugin pack Audio effects streamripper Ripper of streams Related Tools kid3 id3 tagger id3v2 CLI id3 tagger Support Libraries and Miscellany soundtouch Audio processing library shorten archive and compression of sound files pd Pure Data, realtime audio processing and synthesis lilypond musical typsetting frescobaldi score editor solfege A learning tool for musical notation abcde a better cd encoder Already Installed... JACK and related tools, vorbis and related tools, id3 support, freepats, normalize, libsamplerate, and others sox Re-compiled to include all codec support Because GNU Linux does not have a staff of musicians packaging sets of samples, synth banks, drum loops, and so on, it is up to the artist to create and/or compile the components of their art work. This means that either you should spend time gathering together whatever raw materials you will require for your art, whether by creating your content or gathering it from outside sources like freesound.org, soundcloud.com, ccmixter.org, or Computer Music Magazine. There is also the so-called "Great Linux Multimedia Sprints" which have rendered free collections of Creative Commons and Public Domain content (such as soundfonts, samples, loops, et cetera). You may download these from multiple mirrors. See slackermedia.info/downloads.html for more information. 6.1.2. Graphic Designer Slackermedia Base System GIMP Image manipulation GIMP Paint Studio Materials emulation DigiKam Digital darkroom Inkscape Vector art Image Magick, tiff2pdf, luminance hdr Image processors gimpfx-foundry and gimp-registry-plugins GIMP plugins fontmatrix Font manager povray, yafaRay Rendering engines Additional Graphics Applications scribus Page layout and design graphics magick alternative to Image Magick scrot screen capture utility fontforge Font designer ttf-ubuntu-font-family, ecofont-ttf, google-droid-font Just a few fonts available from SlackBuilds; see the Multimedia Sprint for a few thousand more :^) As with the music module, you will need to gather together your raw materials since, luckily, Linux does not come pre-packaged with a standardized set of pre-fabricated artistic components or raw materials. Typically helpful for the graphic artist is a good set of fonts, which you should collect and back up for re-installs; many good free fonts (many are available from openfontlibrary.org and theleagueofmoveabletype.com), gimp paint brushes, patterns, and more can be via the Great Linux Multimedia Sprint. Stock photography also often helps; a good resource is flickr which allows (via the Advanced Search) within various Creative Commons licensing schemes. If it is vector art you seek, try openClipArt.org, a vast library of public domain vector art with contributors from around the world (including many of the respected Fedora Art Team) resulting in art suitable for a wide variety of projects and styles. 6.1.3. Film and Video Production Slackermedia Base System ogg theora, webm, dirac, xvidcore Flexible, robust, free video codecs Mplayer Video player, processor, and editor rtmpdump Support for RTMP streams, because you never know when 1995 might come back around libdvdnav, dvdauthor, lsdvd, libdvdcss DVD support libraries Video Editors kdenlive Professional-level video editor avidemux Video de-muxer and editor LiVES Video editor and VJ toolkit Animation, Compositing, and Effects Blender 3d modeler, compositer, animation editor k3d 3d modeler and animator synfig studio Vector animation and compositing gaupol subtitle editor Video Tools ffmpeg video processor, player, and editor HandBrake DVD ripper transcode Video transoder guvcview Video capture frontend smpte calculator SMPTE calculator Imagination Slideshow builder video-meta Video analysis tool frames.sh Frame conversion calculator Distribution rtorrent Commandline torrent client miro Internet TV aggregator and viewer bombono-dvd User-friendly DVD authoring In terms of the Linux-based video editing applications, kdenlive is the only realistic choice for moderate-professional to professional users. 6.1.4. For Writers Slackermedia Base System emacs, vim, kate Text editors with plugin structures kword, libre office Word processors Docbook Publishing markup Writers Tools screenwriter.el, screenplay-tools, celtx Screenwriting applications nXML XML plugin for Emacs org-mode task management and outlining plugin for Emacs publican Perl frontend for Docbook text2pdf plain text to pdf conversion Writing, either creative or technical, requires the fewest tools and yet seems to have some of the most variations of them. In essence, a writer needs a basic text editor; something that can be written by even a modest programming student in a day or two. Yet there is a proliferation of text editors and office suites. The appropriate choice for your writing environment will be whatever is familiar and comfortable to you, and whatever is most appropriate for your genre. Charles Olson (formerly of the podcast Mintcast) provides an overview of writer's tools on Linux via the Linux Reality podcast, which may help with understanding some potential workflows for writing on GNU Linux. Chapter 7. Step Five: Real-Time Kernel ----------------------------------------- 7.1. Compiling the Linux Kernel 7.1.1. Setting Real-Time Priorities For audio and video content producers, it will probably be necessary to work with a realtime kernel (often referred to as an "RT Kernel"). Until very recently, it was necessary to download realtime-kernel patches from an obscure Red Hat repository, manually patch the kernel, and then re-compile. However, Linux kernel 2.6.38.4 received a 200-line block of code that drastically changed its ability to work with near-realtime performance. There is a discouraging mythology against compiling kernels, much less about patching it to have realtime functionality, but Slackware has always made the process quite easy. Slackware 13.37 ships with the 2.6.37 kernel, but its /testing directory contains a config file for 2.6.38.4, making a re-compile a trivial task. To simplify the process, do not attempt to upgrade your kernel to versions that Slackware does not support in /testing, unless there is a clear need for you to use an more updated kernel, or you are familiar with compiling kernels already. Otherwise, the config files for the Linux kernels that the current Slackware system supports can be found on your install media in the /testing directory. 7.1. Compiling the Linux Kernel --------------------------------- Here is a step-by-step tutorial on configuring and compiling the Linux kernel for realtime performance. 1. First, download the source code for Linux kernel. Download as root and place the sources into /usr/src/linux bash# wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.38.4.tar.bz2 \ -P /usr/src/linux/ 2. Uncompress the sources and cd into the folder. bash# cd /usr/src/linux && bzip2 -d linux*38.4*bz2 bash# cd ./linux-2.6.38.4 3. Download the config file into the kernel sources folder. You can find the kernel config file in /media/{cdrom}/testing/source/linux-2.6.38.4-configs or on any Slackware mirror; for example, ftp://ftp.slackware.com/pub/slackware/slackware-13.37/testing/source/linux-2.6.38.4-configs/ Presuming an SMP-capable CPU, you will notice that there are two configuration files; the "generic" kernel configuration and the "huge" kernel configuration. By default you are using the huge config, but this doesn't mean you have to keep using it. If you feel that your hardware is well-supported by the Linux kernel, then you may wish to try operating on a more lightweight kernel. You can always re-compile to a huge kernel if it turns out to be necessary. bash# cp /media/cdrom/testing/source/ \ linux-2.6.38.4-configs/config-generic-smp-2.6.38.4-smp \ /usr/src/linux/linux-2.6.38.4/.config 4. Launch the menuconfig, an ncurses-based, menu-driven list of possible options for your new kernel. The menu can be overwhelming, but as it starts off with the default Slackware configuration, there will not be much you really need to change. The most common point of failure is filesystem support; without the ability to read your harddrive the kernel will not be able to load your operating system. So make sure that you go into the File System menu and activate the filesystem support you need (not as modules, but as code to compile into the kernel). As an example, if I chose to use ext4 filesystem when I installed Slackware, then I must enable ext4 support as part of my kernel. I would then save and exit the menu to commit the change to the config file. Note ---- Strictly speaking, there are better ways to configure the kernel. You could drop support for hardware you don't actually have in your machine, you could compile dynamically-loadable modules to keep the actual kernel small, you could use an initrd, and so on. On the other hand, you could also give up art and become a computer scientist ;^) That said, it is a good idea to have a look through menuconfig, just to see what options are available in that monolith of code that runs your computer. You may also find, unfortunately, that you will need to revisit this menuconfig in the event that your new kernel does not boot, or you may get brave and try to trim down your kernel some lazy afternoon, so getting accustomed to the layout and interface of the configuration menu might be helpful. If you are not sure what kind of filesystem you chose, simply cat your fstab: bash# cat /etc/fstab 5. With your new configuration file saved, compile the kernel and its modules. bash# make bzImage bash# make modules bash# mv /boot/vmlinuz /boot/vmlinuz.stock bash# cat arch/x86_64/boot/bzImage > /boot/vmlinuz # or arch/i386/boot/bzImage bash# mv /boot/System.map /boot/System.map.stock bash# cp System.map /boot/System.map bash# make modules_install 6. The new kernel is now in place and its modules are installed. Still as root user, edit lilo.conf and run lilo to reflect the new topography of your system: bash# vim /etc/lilo.conf Duplicate the current entry, but change the label to reflect that it will boot the realtime kernel, and change the vmlinuz reference in the stock kernel so that it points to vmlinux.stock rather than vmlinuz. In the end, you will have entries quite similar to this: image = /boot/vmlinuz root = /dev/sda1 label = slackermedia read-only image = /boot/vmlinuz.stock root = /dev/sda1 label = slackware read-only And then run lilo to complete the change. bash# lilo Reboot the machine and boot using the realtime kernel. It should boot as quickly or quicker (depending on how much customization you did in menuconfig) as the stock Slackware kernel. If the new kernel does not boot as expected, then it will most certainly provide errors during the boot process. Take note of the errors, reboot to with the stock kernel, and research what the errors mean. Typical errors are that the user has left some important code to be built as modules rather than building them into the kernel. Most often this is the filesystem, so verify that you have the proper filesystem(s) included. Another possibility is that the user has removed some vital component of the kernel altogether in an effort to reduce its size. Research the issue, cd into /usr/src/linux and run (as root) make clean ; make menuconfig and include what you had previously taken out of the kernel. Otherwise, the kernel is no different from a stock Slackware kernel configuration and should work as expected. If you had installed Slackware with the huge kernel and are trying to use the generic, then it's possible that you do need the huge kernel after all, meaning you'll need to download the huge configuration file and make that into the config file. Note ---- Always remember to run lilo after doing a new kernel installation. 7.1.1. Setting Real-Time Priorities Now that the realtime kernel has been installed and boots as expected, an interface for the user to assign realtime priorities must be installed and implemented. The application is set_rlimits, and it is installed by default along with the audio or huge Slackermedia dependency installs. After installation, there will be a new file in /etc called set_rlimits.conf.new. It is well commented and the man page is well written. Re-name the set_rlimits.conf.new to set_rlimits.conf and edit it so that the important realtime-dependent applications get escalated realtime priviledges. For example: @audio /usr/local/bin/jackd nice=-1 rtprio=80 memlock=100000 Repeat this for each application you wish to elevate to higher realtime priorities. If you are not sure what applications need to have realtime priorities, you can always come back to this file to add priviledges as you encounter the need to do so. Certainly add jackd, and your DAW will certainly require it. Other applications may or may not require it. The set_rlimits.conf only grants permission to certain processes to be realtime, it does not actually force them to use that priviledge. Any application you want to have running as a realtime process, you must launch through set_rlimits, which can be done either by launching the application from the terminal or by modifying your KDE menu. Launching each application from the terminal can be cumbersome, so you'll more likely want to modify your menu: 1. Right-click on the K-menu and select Menu Editor from the contextual menu that appears. 2. Find the application you wish to launch with realtime priorities in the left pane (for example, QJackCtl). 3. In the right pane, edit the Command field to include the realtime priority command (for example, set_rlimits qtractor %F. Save your changes. From now on, when you go to the K-Menu to launch Qtractor it will launch with realtime priorities enabled. If you launch applications with a keyboard shortcut, then you will need to edit the command your custom key binding sends to your desktop environment. In KDE this would be via the System Settings in the Keyboard & Mouse menu. Chapter 8. Part Six: Compiling and Configuring Software ---------------------------------------------------------- 8.1. Ardour 8.2. Audacity 8.3. Blender 8.4. Blender Plugins 8.5. Digikam 8.6. dvgrab 8.7. ffmpeg 8.8. Fonts 8.8.1. Installing Fonts 8.8.2. Font Matrix 8.9. GIMP Brushes 8.10. GIMP Photoshop Keybindings 8.11. GIMP Paint Studio 8.12. GIMP CMYK Support 8.13. HandBrake 8.14. ICC Color Profiles 8.15. K-3d 8.16. KDENlive 8.17. LiVES 8.18. MediaInfo and MediaInfoGUI 8.19. Miro 8.20. Qtractor 8.21. Scribus 8.22. SoX 8.23. Synfig Studio 8.24. Transcode 8.25. video-meta Some applications are so important to an artist's work that it is probably best to compile from source code. This will ensure that the application is built with the options that the artist needs, and in theory produces more optimized code for the computer upon which it was compiled. Without custom compiling some of these applications, certain file types (particularly files with codecs associated with them) will not be able to open, or will not be available as an export option, or there may be no plugin architecture built into the application, and so on. Compiling software, second only to compiling a custom Linux kernel, is often discouraged by proponents of a so-called "user friendly" system. They assert that a truly user friendly system is already set up and configured for the user, ignoring that the user may want something completely different than what the system designer has given them. GNU Linux makes no such assumption, leaving you free to compile your own software so that it does what you want it to do, and then to configure the applications so that you may interact with them the way you want to. This chapter will provide some overviews of some of the popular applications that might warrant customization, but it is obviously not an exhaustive list. 8.1. Ardour ------------- Ardour is a multi-track audio editor, sequencer, and mixer currently geared toward waveforms rather than MIDI, although MIDI functionality is being developed. It is a reasonable sound production tool for musicians and filmmakers alike. Ardour has some dependencies in addition to the default Slackware and Slackermedia installbase. All are available via Slackbuilds.org (or the sbopkg frontend, of course): * slv2 * liblrdf * libgnomecanvas * aubio Once these dependencies are met, a SlackBuild.org install will proceed as usual. Note ---- To use Ardour, it will almost certainly be necessary to establish a realtime kernel system; please see the section on Real Time Kernel for details on how to configure your system for secure real time priorities. Note that the executable name of Ardour is ardour2, so in /etc/set_rlimits.conf the entry will read: @audio /usr/bin/ardour2 nice=-1 rtprio=80 memlock=100000 8.2. Audacity --------------- Audacity is a time-honored and widely used free software audio editor, used by a staggering number of audio hobbyists and professionals alike. As such, it probably deserves to be compiled from source. Luckily, Chess Griffin's slackbuild for it applies all the right options although it does leave the soundtouch and twolame features optional. To ensure that soundtouch and/or twolame compatibility is compiled in, make sure that you have soundtouch and twolame support installed, and use the sbopkg Options menu to set SOUNDTOUCH="yes" TWOLAME="yes" FFMPEG="yes" or set them manually in bash if you are not using sbopkg. The version of Audacity you choose to run is extremely important, as well. Klaatu (of the GNU World Order oggcast, and a maintainer of Slackermedia) swears by version 1.3.12 and so that is the version that Slackermedia recommends for maximum features and stability. Releases are somewhat frequent with Audacity, but not all releases are equal, so you may want to find a good release and stay with it for as long as it continues to meet your needs. There are official "stable" releases as well. If you find the need to change the version that you are compiling with SlackBuilds, modifying the VERSION line in the SlackBuild script to the desired version, and downloading that source into the SlackBuild directory will allow you to properly build and then install it. If you are doing this from within sbopkg, then change the version number and the download link so that it downloads the proper version. You may also download the official Slackermedia Audacity power-user config file and place in your ~/.audacity-data directory for a better UI layout and "power user" keyboard shortcuts. Note ---- To use Audacity, it has not necessary to establish a realtime kernel system, however if you are doing a lot of audio and video multimedia work it won't hurt to have one; please see the section on Real Time Kernel for details on how to configure your system for secure real time priorities. However, Audacity is not a realtime application in the same sense that a DAW and its soft synths and effects are, so the RT Kernel is not necessary for it to run at optimal performance. 8.3. Blender -------------- Blender is a powerful application that you can use for graphics, motion graphics, 3d and 2d animation, game programming, desktop publishing, video editing, and quite a lot more. It is also very actively developed, with new features arriving often. While there are pre-compiled binaries available on the blender.org site (and through sbopkg) for 32-bit and 64-bit systems, the binaries will use their own versions of ffmpeg and other supporting software, which may not be the best versions for your needs. The Blender 2.5x series requires Python 3, which is not installed by default in Slackware or in the Slackermedia deps and libs. However, it is safe to install Python 3 alongside of Python 2, so if you intend to use Blender then the first step is to install Python 3. However, currently SlackBuilds.org has Python 3.1 and the latest Blender requires 3.2, so you will need to install from python.org To install Python 3.2, it is probably easiest to simply edit the most recent Python3 SlackBuild from SlackBuilds.org. Increment the version number, correct the download link, remove extraneous code that is specific to Python 3.1.3 (specifically, references to a patch file should be removed, since Python 3.2 does not need patching the way 3.1.3 did), and then run the SlackBuild. All of this can be done with or without sbopkg. A modified SlackBuild can be downloaded from Slackermedia if your attempt at modifying it is not working. Warning ------- Note that Blender is dependent upon the Slackermedia AV set of dependencies, and upon ffmpeg, so you should meet those requirements before compiling Blender. The compilation process of Blender is not as complex as it might seem at first glance. On a default Slackware system, most of Blender's dependencies are already installed and there is no need for "development" versions of anything as there are on distributions like Fedora or Ubuntu. If you installed all of the dependencies (primarily for Blender: Python 3.2, scons, OpenAL, ftgl, smpeg, and gettext) listed as the starting point for this multimedia version of Slackware, then the process is simple: 1. Download the source code from their site. The development team offers you a stable release tarball as well as the development code from svn; Slackermedia recommends the stable release. 2. Untar the downloaded archive and cd into it: bash$ tar -xzf blender-2.5.x.tar.gz bash$ cd blender-2.5.? 3. Invoke scons bash$ scons scons configures and builds the application. Once completed, the blender executable file will be located in ../build/linux2/bin Following the example of Robby Workman (one of the administrators of SlackBuilds.org), it is easier to simply move the resulting build into /opt or ~/binand run it from there than to become an expert on packaging and figuring out where all of the different statically linked libraries go, and so on. If you do not require other users to access blender, then ~/bin is sufficient. 8.4. Blender Plugins ---------------------- Blender has an extensible plugin architecture, but like much of Blender it has undergone changes from the 2.4 to 2.5 series. The Blender 2.5 series emphasizes Python plugins, and even features a control panel from which the user can install, activate, or deactivate plugins. Note ---- Blender 2.4 versions will benefit from sequence and texture plugins located here: * https://svn.blender.org/svnroot/bf-extensions/contrib/2_4x/plugins/ contains up-to-date and active Sequence and Texture Plugins. * www-users.cs.umn.edu/~mein/blender/plugins/ claims to be out-of-date but contains many useful plugins and scripts. This site also contains pre-compiled binaries for most everything they offer in all the supported Blender formats including Linux 32bit and 64bit. You can find a repository of plugins at svn.blender.org/svnroot/bf-extensions/contrib/py/scripts/addons bash$ svn co https://svn.blender.org/svnroot/bf-extensions/contrib/py/scripts/addons Once you have downloaded the plugins, launch blender and open the User Preferences. Navigate to the Add-Ons tab. All of the currently installed Python add-ons are listed. At the bottom of this preference pane is an Intall Add-Ons button; click it and select the Add-On you wish to install from the file browser. 8.5. Digikam -------------- Digikam is a direct competitor to powerful digital darkroom applications as well as to photo managers. It is fully featured, powerful, and has a rich plugin structure which enables even more features. Even if a graphic artist or photographer is happy using GIMP or Krita, digikam is an important tool for its workflow and image manipulation ability. Since Digikam is being developed so quickly, it is usually worth while to grab the latest version available. It's trivial to then download the SlackBuild for it from Slackbuilds.org, modify the version number in the build script, and then run the build and install. 8.6. dvgrab ------------- DVgrab and its dependencies are specific to capturing footage via IEEE1394, also known as FireWire. Since not all computers have a IEEE1394 port, you may or may not need DVgrab and its related libraries. libdv and DVgrab are dependencies of kdenlive, so if you intend to do serious video editing then you'll probably want to install them for maximum compatibility. DVgrab requires the following supporting libraries: * libiec61883 * libavc1394 * libdv Once these have been installed, install dvgrab itself. 8.7. ffmpeg ------------- ffmpeg is the backbone of many video-related applications from players to editors (and is in fact even both of these things in itself). For the most flexible video and audio system possible, ffmpeg should be installed directly from source code. You can find the code at ffmpeg.org, or you may modify the config options from within sbopkg which will handle the download for you. It's a big application with many options and you will want to have control over whether these options are enabled or disabled. To learn about the options, read the ffmpeg compiling documentation found in the source code tarball, and then try ./configure --options or use the SlackBuild file, passing options to the script, such as FOO=yes BAR=yes ./ffmpeg.SlackBuild A sample configuration of ffmpeg via SlackBuilds: bash# DC1394=yes DIRAC=yes FAAC=yes GSM=yes JP2=yes LAME=yes OPENCORE=yes RTMP=yes SCHROEDINGER=yes SPEEX=yes VPX=yes X264=yes XVID=yes ./ffmpeg.SlackBuild Warning ------- Obviously ffmpeg will require that you have those libraries installed in order for it to build with support for them. If you are building ffmpeg mainly as a dependent component for some other application (such as blender or kdenlive) then you should investigate what particular options those applications require ffmpeg to have been built with (especially, in the case of kdenlive the versions of each library). Of course you can also modify the SlackBuild itself with the options being used during the ./configure stage: ./configure --enable-nonfree --enable-avfilter \ --enable-avfilter-lavf --enable-x11grab --enable-gray \ --enable-small --enable-libdc1394 --enable-libdirac \ --enable-libfaac --enable-libfaad --enable-libfaad \ --enable-libmp3lame --enable-libschroedinger --enable-libspeex \ --enable-libtheora --enable-libvorbis --enable-libx264 \ --enable-libxvid --disable-debug --mandir=/usr/man Save the SlackBuild and then run it as usual. 8.8. Fonts ------------ Fonts are vital to creativity and good design. Slackware comes packaged with the Red Hat set of Liberation Fonts, which are drop-in replacements for fonts like Helvetica and Times. There are a number of sources of more fanciful free fonts available online. First, look on Slackbuilds.org either in your web browser or via sbopkg. There are many fonts packaged there. The League of Moveable Type features aggressively open source and free fonts. openfontlibrary.org features a plethora of fine free fonts. You will also find quite a few font packages available from, for instance, the Fedora Linux repositories. Fedora has long been considered to have on of the finest graphic design teams among Linux distributions, and it is also dedicated to freely licensed content, so pillaging their repositories for .rpm files is both helpful and simple. Take any .rpm from an official Fedora repository and turn it into a Slackware package, and then use installpkg to install. And finally there is the Great Linux Multimedia Sprint v1.0, which has over 2000 free fonts to use and re-distribute. Note that most applications scan the font directory every time they launch, so keeping hundreds of fonts in your font directory may make applications slower to load. If you anticipate using a large number of fonts, then you should use a font management program, like Font Matrix. 8.8.1. Installing Fonts To install fonts on a system-wide basis, the font files (usually .ttf) should be copied to /usr/share/fonts/$foo where $foo is the type of font. Usually they are TTF fonts, so they are copied into /usr/share/fonts/TTF Here is an example of installing a font, all done as root user: bash$ su -c 'cp foo.ttf /usr/share/fonts/TTF/' bash$ cd /usr/share/fonts/TTF bash$ su # enter root password bash# mkfontscale . bash# mkfontdir . bash# /usr/bin/fc-cache -f If you are running KDE, or Fluxbox with KDE applications, you may use KDE's Font Viewer (which will launch automatically if you click a TTF file in Dolphin). This shows you a feature of all the glyphs in the font set and even allows you to enter your own preview text). If you choose to install the font, click the Install button on the lower right corner of the window. Enter the root password to install the font system-wide, or choose to install it for only the current user. 8.8.2. Font Matrix fontmatrix is a font organizer and manager with the goal of keeping your fonts accessible and yet out of the way. You can activate or deactivate fonts on an as-needed basis, thereby turning off (but not uninstalling) a certain set of fonts if they are not relevant for the project you are currently working on. You may then activate them again when they become needed. It has many other features, such as searching for a font based on a rasterized sample, font previewing, font exporting, printing a font sample booklet, and much more. There is a SlackBuild for fontmatrix and it is installed in the Slackermedia-huge and Slackermedia-avg queue files. 8.9. GIMP Brushes ------------------- As of version 2.4, GIMP can use Photoshop ABR brushes, so almost any website offering free brushes for image manipulation programs will have something to offer an artist in need of new brushes. These sites seem to come and go at random, but the Great Linux Multimedia Sprint v1.0 has plenty for you to freely install, use, and re-distribute. Installing GIMP brushes is simple: * To install them on a system-wide basis, move the brush files (*.gbr *.arb *.vbr etc) to the /usr/share/gimp/2.0/brushes/ directory * To install them on a per-user basis, copy the files to that user's ~/.gimp-2.x/brushes directory Launch GIMP (or quit and then launch, if it was already running) and the brushes will in the brush palette. Notice that GIMP scans the brushes directory every time it launches, so keeping hundreds or brushes in the the brushes directory will make GIMP slower to launch. It may behoove you to familiarize yourself with the brushes you own, and only keep your favourite brushes in the brush directory, or simply install them on an as-needed basis, until GIMP developers come up with a dynamic way to load brushes. Note ---- GIMP supports two default installation locations; if you install brushes, palettes, gradients, presets, or anything else, you may place them in either /usr/share/gimp and they will be accessible by any user on the computer. Or, if you are the only GIMP user of a computer then you may place them in ~/.gimp-2.6/ 8.10. GIMP Photoshop Keybindings ---------------------------------- GIMP is the premiere photographic manipulation application of the free software world. Many GIMP users will say that GIMP is not attempting to "be" Adobe Photoshop and does not need to be Adobe Photoshop. Even so, it is only natural that people requiring the functionality of Photoshop will defer to GIMP, since that is the application that fills the same need. For this reason, many users of GIMP prefer to use the common Photoshop keyboard shortcuts rather than the GIMP key bindings. While it's possible to use GIMP's menus to modify key bindings selectively, the easier method is to simply copy a pre-made menurc file to ~/.gimp/2.x/ directory. A pre-set file is available from epierce.freeshell.org/gimp/ps-menurc and it is mirrored at slackermedia.info/downloads/ps-menurc To install, close GIMP if it is open, and copy the ps-menurc to ~/.gimp-2.x/menurc bash$ cp -i ps-menurc ~/.gimp-2.6/menurc cp: overwrite `/home/sxe/.gimp-2.6/menurc'? yes Now most of the Photoshop keyboard shortcuts will have overwritten the old GIMP shortcuts, with a few minor exceptions, accounting for differences in the applications. See epierce.freeshell.org for more information 8.11. GIMP Paint Studio ------------------------ The Gnu Image Manipulation Program was intended to be a tool to edit photographs, but the interface and workflow is similar enough to common paint programs that all it took to turn it into a fully featured paint application was to develop customized brushes and brush behaviour. GIMP Paint Studio is the result of such an effort; it installs new brushes, material emulations, and color swatches. With these changes, GIMP can emulate pencils of various sizes and densities, pens, sketching pens, palette knives, oils, water colours, acrylics, dust, chalk, splatters, a variety of special effects like light, fire, and particles, and much more. To install GPS, download the set from code.google.com/p/gps-gimp-paint-studio and unzip it (it's a zipbomb, so unzip into its own folder), and then move the files to their appropriate folders. bash$ wget http://gps-gimp-paint-studio.googlecode.com/files/GPS\ 1_5_final\ release.zip bash$ unzip GPS*zip -d GPS; cd GPS; ls bash$ su bash# cp ./brushes/* /usr/share/gimp/2.0/brushes/ bash# cp ./gradients/* /usr/share/gimp/2.0/gradients/ And so on. The copy all of the rc files over to the same directory. bash# cp *rc /usr/share/gimp/2.0/ Obviously, copying the rc files will overwrite anwhay old configurations you had in GIMP, so if you have a heavily customized GIMP environment already, you should make a backup of your rc files. Your new brushes will be located in the brush palette, via the Restore Options From... A list of all available brushes is revealed, with all Gimp Paint Studio options being preceded by GPS. There is an install script for GPS located at klaatu.fedorapeople.org/install-gps.sh 8.12. GIMP CMYK Support ------------------------ Contrary to much of what is written about GIMP on the web, the GNU Image Manipulation Program does feature CMYK support. It is somewhat limited, however, so you may wish to expand it with the separate+ plug-in. Klaatu's SlackBuild for Separate+ is available from SlackBuilds.org, so installation is fairly trivial. After you have installed separate+, GIMP will have a new separate in the Image menu. Through this menu, you will be able to create CMYK separations, adjust source and destination ICC Color Profiles, generate soft proofs, and more. For more information on installing additional ICC Profiles, see the ICC Color Profiles section of Slackermedia. 8.13. HandBrake ----------------- HandBrake comes in two flavours: HandBrakeCLI on the command line and HandBrake with a GUI. Either way you choose to use it, HandBrake is one of the best DVD rippers around; it will read DVDs and convert the native muxed mpeg2 files to some other format, like Ogg Theora, xvid, x264, and others. It is one of the many invaluable tools for the video editor, who can typically expect to receive video from every imaginable source, and a good thing for any Linux user to have since too often DVD distribution companies opt to encrypt their discs in fear of "piracy", which has the side-effect of locking users of free software from viewing the disc's content, even though the user has paid the same price for the disc as everyone else. Compiling HandBrake is simple, but requires jam (which is not installed by default with other Slackermedia packages, but is available via Slackbuilds.org). Dsomero's SlackBuild for HandBrake on SlackBuilds.org will optionally build (or not) the GUI. HandBrakeCLI is quite capable and with the built-in presets it is as easy to use as the GUI version. However, if the user is accustomed to GUI applications then the GUI can be built, although it requires webkit, which itself depends on libsoup; both are available from SlackBuilds.org 8.14. ICC Color Profiles -------------------------- To maintain consistent color temperature and hues across multiple forms of media (screens, printers, scanners, et cetera), the idea of ICC Color Profiles was developed. ICC Profiles provide a baseline for color settings depending on what device is being used, and are particularly useful if you are printing to a specific printer with a specific specialty paper (such as photo paper, archival paper, and so on), or that you are using a monitor that you know tends to be "warmer" than many other monitors, and so on. Realistically, an artist can never expect their artwork to always be appreciated using a specific color setting. Your audience might be viewing your work on the latest, greatest high-quality LED monitor, or they may be viewing it on a CRT monitor from 1992. On the other hand, when there are known variables, ICC Profiles can eliminate the constant adjustment and re-adjustment of a monitor, or the special color correction of an image just to account for a printer's tendency to print more magenta than the screen shows, and so on. The default install of Slackware features a number of ICC Profiles pre-installed on the system, mostly inherited from Krita. If you purchase a scanner or printer or a package of specialty paper, you will want to visit the website of the manufacturer and look for the ICC Color Profiles belonging to that item. The .icc files can then be placed in /usr/share/color/icc (you may wish to create a custom folder, or simply install them into /~/icc) In GIMP you can set your Color Profile in the Image menu, under the Mode submenu. For true CMYK printing, use the separate+ plug-in with GIMP to load different ICC Color Profiles and export an image using that profile. Note ---- If you are collaborating with other artists or companies, you will almost certainly need Adobe color profiles, and in Europe you may want ECI profiles. Klaatu and Thrice` have created a SlackBuild for this, available from SlackBuilds.org 8.15. K-3d ------------ K-3d is a 3d modeling and animation program with a fairly conventional interface (for 3d applications, anyway). It includes native support for RenderMan and should work with the LGPL renderer, Pixie. Installation is simple via SlackBuilds. 8.16. KDENlive ---------------- KDENlive is a mature editing environment that aims to be equivalent to AVID or Final Cut Pro suites. It is making leaps and bounds toward this goal and has improved vastly in features and stability since earlier versions. Installing KDENlive is complex due to the many video codecs and video sources it is able to accept. The project's website currently maintains Slackware packages, however, so much of the work is already done. First, you should check the KDENlive dependencies to see what version of each library is required, and compare that list to the versions (if any) you have installed on your system. The KDENlive Slackware packages are maintained at mlange.dds.nl/kdenlive.html As of this writing, the only packages that differ are: * gsm * libquicktime * libvpx * orc * x264 * ffmpeg will require re-compilation if you have already compiled it You can upgrade or reinstall the packages with the Slackpkg tools. Once all the dependencies are at the correct versions, you can download and install the frei0r, qjson, and MLT Slackware packages and install those, followed by KDENlive itself. During the initial launch of KDENlive, the program will run checks to find different technologies that it can use if they are present. Of course many are default installs for Slackermedia, but some are not (mainly dvgrab and recordmydesktop). Install them if you expect to use them. There is also a SlackBuild for KDENlive available from Slackbuilds.org Note ---- If you experience performance issues with kdenlive, you may want to use a realtime kernel; please see the section on Real Time Kernel for details on how to configure your system for secure real time priorities. Set the realtime permissions of Kdenlive in /etc/set_rlimits.conf like this: @audio /usr/bin/kdenlive nice=-1 rtprio=80 memlock=100000 And in any launcher: set_rlimits kdenlive 8.17. LiVES ------------ LiVES is a Video Editing System. Being built upon powerful free software like mplayer, mencoder, sox, and more, there are few formats it cannot support. It features a number of high quality realtime effects. The interface is unique but it is flexible enough to offer fairly conventional means of achieving results, as well. LiVES may be installed from Klaatu's SlackBuild from SlackBuilds.org. 8.18. MediaInfo and MediaInfoGUI ---------------------------------- A simple but infinitely useful application that shows metadata on an audio or video file. Every multimedia artist should have some kind of "video forensics" tool on their system; this or video-meta are good choices. Note ---- Strictly speaking, video and audio files can be analyzed with mplayer or ffmpeg. It isn't that mediainfo or video-meta delivers unrivaled features; they simply provide the information in an easy-to-read, easy-to-parse format, and when you're trying to solve codec issues or decide on a working resolution or samplerate, quick-and-easy is a welcome feature. mediainfo is the commandline version of the application; it depends only upon libmediainfo; both are available via SlackBuilds. Its GUI counterpart is mediainfo-gui, which depends upon libmediainfo and either wxGTK or wxPython. Since wxPython contains wxGTK as well as Python bindings, it's not a bad idea to just install it to solve the wxGTK dependency. One installed, you can launch mediainfo-gui from the KDE application menu; using it is intuitive. 8.19. Miro ------------ Miro is not a content creation application, but it is a popular aggregator for all kinds of media, including audio podcasts, video casts, and anything torrentable. It's a cross-platform application that encourages independent media, crowd-funded art, and creative commons, so it is a good application become familiar with if you are distributing your content via RSS or Torrents. Miro has many dependencies, so installing it is non-trivial, but if you intend to distribute in a Miro-compatible format, seeing what your audience sees is a good idea. Miro depends on: * gst-python * mutagen * libtorrent-rasterbar * ORBit2 * GConf * gnome-mime-data * libbonobo * gnome-vfs * libgnome * gnome-python * pycurl * libsoup * webkitgtk * pywebkitgtk * gst-ffmpeg * gst-plugins-bad * gst-plugins-ugly * miro 8.20. Qtractor --------------- Qtractor is a Qt4-based multi-track audio editor with LADSPA, LV2, DSSI, and even VST support. It still claims to be alpha software, so you will want to give it a few test runs before integrating it into your production workflow, but Slackermedia's maintainer, Klaatu, has been using it for months to edit podcasts without incident. Compilation is a little complex for its multitude of options. It requires Qt4, JACK, ALSA, libsndfile, LADSPA (all available via slackpkg and sbopkg). Optional installs are libvorbis, libmad, libsamplerate (already in Slackware), liblo, and LV2 (the successor to LADSPA) -- again, all available via slackpkg or sbopkg. You may also choose to download and install the rubberband library, which in turn depends on the vamp SDK and the LADSPA SDK, each of which are available via SlackBuilds.org After you've installed the vamp and LADSPA SDKs, install rubberband/. Note that the SlackBuild for the rubberband library is currently for version 1.5, but rubberband has released 1.6, so manually updating the SlackBuild script to install 1.6 is advisable. The SlackBuild requires both rubberband.SlackBuild and libdir_x86_64.diff to build properly. Download each from SlackBuilds.org, the source code for rubberband itself, and build. Also dependent upon the LADSPA SDK is the dssi plug-in framework, used for soft synths, available via SlackBuilds. Additionally, there is Steinberg's ubiquitous VST framework, which will provide support for native Linux VST plugins. * dssi * VST SDK 2.4 In order to enable VST functionality you must: 1. Establish a developer account at steinberg.net, confirm registration, and log in. 2. Download VST 2.4 3. Unzip the source directory su -c 'cp vstsdk2.4/pluginterfaces/vst2.x/aeffect* /usr/local/include/' Note ---- LADSPA, LV2, DSSI, and VST plug-in paths need to be defined in the Qtractor application, but this should be fairly obvious to you when using the app. Once all of the dependencies have been installed, Qtractor itself may be downloaded and installed. There is a SlackBuild for it on SlackBuilds.org but at the time of this writing it is for 0.5.0, so to get the latest version you should be sure to manually download the SlackBuild and edit it, or edit it via sbopkg, and compile. Configuring options within the application itself is covered in the software synth section of Slackermedia. Note ---- Once Qtractor has compiled and installed, in order to run it properly, you will need to set up JACK and realtime audio options, both covered in this book. Read the chapter on Real Time Kernel for more information. If you've installed set_rlimits already, then you'll set real time priority in /etc/set_rlimits.conf to something like this: @audio /usr/bin/qtractor nice=-1 rtprio=80 memlock=100000 And modify any launcher that starts Qtractor to: set_rlimits /usr/bin/qtractor 8.21. Scribus --------------- Scribus is a page layout application suitable for printed and digital publishing. It is such a capable application, in fact, that for the last few years the program guides for the Ohio Linux Fest and Southeast Linux Fest are produced on Slackermedia and Scribus, professionally printed, and distributed at the conventions. Note that Scribus is not a word processor or even a "desktop publisher", but a professional-grade layout application with resolution-independence, CMYK support, printer and reader spread options, and much more. Installation is simple via SlackBuilds.org, and configuration is good out-of-the-box. 8.22. SoX ----------- As transcode is to video, so SoX is to audio; therefore, to have maximum flexibility in your multimedia studio you might want to create a custom compile of SoX. On the other hand, if your primary interest is not audio, or you feel you can workaround the default compile options of sox (which lacks support for some proprietary codecs) then you may not need to change anything. To re-compile SoX first remove the default installed version: bash$ su -c 'removepkg sox' Then download the sox source code and associate SlackBuild files, and re-compile with new configure options. Note ---- For fastest downloads, you can use your closest Slackware mirror. If you do not know what your local mirror is, you can find out what you are using with slackpkg by issuing the command cat /etc/slackpkg/mirrors | grep ^.\t. This is a good set of ./configure options: ./configure --with-distro='Slackermedia1337' --with-ladspa-path='/usr/lib64/' --with-oggvorbis=dyn --with-flac=dyn --with-amrwb=dyn --with-amrnb=dyn --with-wavpack=dyn --with-alsa=dyn --with-ffmpeg=dyn --with-oss=dyn --with-sndfile=dyn --with-mp3=dyn --with-gsm=dyn --with-lpc10=dyn --with-ao=dyn --libdir='/usr/lib64' --mandir='/usr/man/' Note that if you are doing customization that differs from what Slackermedia does, then one of the --with-foobar=dyn options may cause your ./configure to exit with an error. This is probably because, for instance, you have defined --with-flac=dyn but you have no flac support on your system; either install flac (or whatever there is a problem with) or remove that option from your ./configure command. 8.23. Synfig Studio --------------------- Synfig Studio is a vector animation tool for Linux. Being vector-based, you can animate with resolution independence and never lose quality. It uses a system of "transformation layers" is powerful and allows the user to do everything from basic animation to rotoscoping and everything in between. Technically, it consists of two elements: synfig, the backend, and synfig studio, the GUI front end. In order to compile it, you first must install ETL, then synfig, and finally synfig studio. All of these packages are available via its project page. Note that also included on the project page are rpm packages for both 32bit and 64bit systems, so using Slackware's rpm2tgz utility should work as well. Compiling from source code requires nothing special, although on 64bit systems there may be confusion between /usr/local/lib and /usr/local/lib64 directories, which could cause compiling errors. Should this occur, define the appropriate paths with the --libdir=/usr/local/lib64 or --libdir=/usr/local/lib, and possibly set PKG_CONFIG_PATH as needed. 8.24. Transcode ----------------- Transcode is a cross between a commandline front-end to ffmpeg and lame, and a powerful application in its own right with some nice and unique features. It is also a recommended dependency on some other major applications, so even if you feel at first like transcode is redundant, it's not a bad application to have installed. Like ffmpeg, it has many options that you will want to ensure are enabled and others that can safely be left disabled. There is a SlackBuild for it but you should ensure that you include all the codec support you anticipate needing by marking those option as "yes" in the SlackBuild script. A52DEC=yes \ FAAC=yes \ LIBDV=yes \ LIBMPEG2=yes \ MJPEGTOOLS=yes \ QUICKTIME=yes \ X264=yes \ XVID=yes Or for even finer-grain control, you can hardcode ./configure arguments into the script: ./configure --enable-libavcodec --enable-libavformat --enable-libavformat --enable-libmpeg2 --enable-experimental --enable-v4l --enable-oss --enable-alsa --enable-freetype2 --enable-lame --enable-xvid --enable-x264 --enable-ogg --enable-vorbis --enable-theora --enable-libdvdread --enable-libdv --enable-libquicktime --enable-a52 --enable-faac --enable-mjpegtools --enable-ibp --enable-sdl --enable-imagemagick --enable-libjpeg --enable-libpostproc --with-libavformat-libs=/usr/lib --with-libavformat-includes=/usr/local/include --mandir=/usr/man --with-libpostproc-libs=/usr/lib And then run the SlackBuild and install as usual. 8.25. video-meta ------------------ Mike Schilli's perl script to show metadata on a video file is a helpful "video forensics" tool that invokes the Video::FrameGrab module which in turn invokes mplayer. This tool can quickly help a video artist determine codecs, frame sizes, bitrates, frame rates and other properties of video clips at a glance. The installation is easy but unique in that it involves perl, which has its own way of installing modules. It also depends upon yaml, available via sbopkg. 1. Install the video::framegrab perl module with the command: bash$ su -c "perl -MCPAN -e 'install Video::FrameGrab'" 2. Install the data::dump perl module with the command: bash$ su -c "perl -MCPAN -e 'install Data::Dump'" 3. The script video-meta itself requires no installation, although the initial line of the script needs modifying so that the script can find perl on the system. bash$ wget ftp://linuxmagazin.de/pub/magazin/2010/01/Perl/video-meta \ -O video-meta.pl bash$ sed "1s#/local##" video-meta.pl > video-meta bash$ chmod +x video-meta bash$ su -c 'cp video-meta /usr/local/bin/' The script can then be used by simply invoking it before the name of a video file, such as: video-meta foo.avi which will list all metadata attributes associated with foo.avi Note ---- For this functionality with a GUI, see mediainfogui. Chapter 9. Soft Synths and Effects Explained ---------------------------------------------- 9.1. Finding Soft Synth Plugins for GNU Linux 9.2. Some Popular Soft Synths for Linux 9.2.1. whySynth 9.2.2. Xsynth-DSSI 9.2.3. hexter 9.2.4. nekobee-DSSI 9.2.5. Fluidsynth 9.2.6. Fluidsynth-DSSI 9.2.7. Soundfonts 9.3. Finding Effect Processors for GNU Linux 9.3.1. Steve Harris LADSPA Plugins 9.3.2. Calf Plugins 9.4. Stand-Alone Synths 9.4.1. Qsynth 9.4.2. Linux Sampler 9.4.3. Sooper Looper 9.4.4. Hydrogen Soft Synths are the software versions of the big and bulky synthesizers that electronic musicians used to use. The concept of using a synthesizer is simple if expressed in hardware terminology; if you have a recording device and a synthesizer, then you connect the synthesizer sound Out to the recorder's sound In, press record on the recording device and play on the synthesizer. If you want your music to be more complex, then you'll purchase a 4-track recorder, a mixer, and mulitiple synthesizers. To make it more automated, you'd use MIDI so that you can trigger sounds and pre-recorded phrases on cue. In the software world, the equivalent setup would be a good digital audio workstation (or "DAW"), which inherently will feature multi-track recording. Examples of these are Qtractor, Rosegarden (from SlackBuilds) or Ardour. For sound generation, you need some software synths. To record, then, you will start the DAW application, add a new track, open the mixer window, and define the track as containing a plugin that is a synthesizer of your choice. The soft synth then appears onscreen as a plugin into qtractor, which you can then sequence and play, and record. In the hardware world, we might have experienced issues with cable sizes (eighth-inch, quarter-inch, mono vs stereo, and so on) or MIDI compatibility; in the software world we experience issues with soft synth plugin formats. Specifically, soft synths and effect units are created in a variety of different formats. Generally speaking, on GNU Linux you will have access to: * DSSI * LADSPA * LV2 (LADSPA's second-coming) * VST (limited support) Note ---- Note that the VST plugins generally must be Linux-Native, which are far fewer in number than Windows and Mac VST plugins, making the best support for soft synth and effects available via DSSI and LADSPA. There has been some work to use wrapper-programs to run VST plugins from within a fake Windows-environment, but obviously support is extremely limited with such a setup, and the plugins themselves are not Free Software so should they ever fail or become deprecated, there will most likely be no way to prolong their life. Installing soft synths and effects is simple; find the synth or effect you want, download the source code, build and install. The default install location rarely needs to be altered. The location of those synths in your DAW, however, might need to be set; in Qtractor, for instance, go to View > Options > Plugins and define where all of your installed plugins are located in your system; the paths to audio plugins are usually /usr/local/lib or /usr/lib on 32bit systems, and either /usr/local/lib64 or /usr/lib64 on 64bit systems. Once these paths are defined, you will be presented with, when you create a track and insert a plugin, a list of auto-detected LADSPA, DSSI, and VST plugins that you may use on that track. The plugin may be a soft synth that you want to use to generate sound, or it may be an effect that you wish to process the track through. It may be a combination of both; in the software world, you have far more effects units and sub-mixers than you probably ever had in real life. Keep in mind as you search the internet for new synths and plugins that you are looking for DSSI or LADSPA plugins unless you intend to do quite a bit of hacking to get VST plugins to work. Also keep in mind that if you decide to use a stand-alone soft synth or effect, that they must be JACK-aware. 9.1. Finding Soft Synth Plugins for GNU Linux ----------------------------------------------- One source for good soft synths and effects is Planet CCRMA (pronounced "Planet Karma"), a well-maintained and respected site that hosts audio software for Fedora GNU Linux. This provides an exhaustive list of all the audio software available for GNU Linux, a brief description of each application and its function, and even RPMs that could be utilized by Slackware's rpm2tgz for a quick and easy install. Outside of this, the usual Linux search locations apply, such as sourceforge.net and SlackBuilds.org. 9.2. Some Popular Soft Synths for Linux ----------------------------------------- Listed here are some soft synths that the Slackermedia team has had enough good experience with to recommend to others. Of course this is a partial list, and there are a myriad options for sound generation on GNU Linux. Planet CCRMA lists a great many of those, so see their list for more, although be aware that some of the modular synths CCRMA uses and lists are less interested in emulating the traditional musician / instrument paradigm and are more geared toward artist / programmers exploring "computer music" or are creating new sound applications. Slackermedia aims to focus on the [a]typical artist, so this list contains the user-friendly synths that are meant for traditional user interaction. 9.2.1. whySynth In terms of instant gratification, whySynth is one of the best. If you require a synth fully loaded with diverse pre-made patches, install this first. With over 200 synth sounds ready-to-use and a friendly interface, whySynth is the synth to install if all you want to do is get started making synth music on Linux. The interface for whySynth at first is simply a list of available patches; if you want to create new patches or edit current ones, you can select Edit > Edit Patch and you will be shown a full synthesizer interface. To install whySynth, download the source code from dssi.sourceforge.net and set the PKG_CONFIG_PATH: bash$ PKG_CONFIG_PATH=/usr/local/lib/pkgconfig bash$ export PKG_CONFIG_PATH And then compile as usual with ./configure && make && su -c 'make install' sequence. Access whySynth via Qtractor or other DAW as a plugin for a MIDI track. 9.2.2. Xsynth-DSSI Xsynth is part of the basis for whySynth but may require more setup than whySynth and, for those not familiar with synthesis may be overwhelmed by its interface. Installing it is the same as with whySynth. 9.2.3. hexter Hexter is a Yamaha DX7 emulator that also can import native Yamaha DX7 patch files (many are available with a simple internet search). The user interface is simple with more complex controls accessed via the Edit button on the synth itself. It comes pre-packaged with 70 patches and has moderate control over each. Installation is the same as whySynth and Xsynth. Be sure to read the README for links to sites with DX7 patches and information. 9.2.4. nekobee-DSSI Nekobee is a simple synth for DSSI with modest controls. Installation is same as whySynth. 9.2.5. Fluidsynth Fluidsynth is a command-line synthesizer that utilizes E-MU's Soundfont format. Soundfonts are a flexible format and provide high quality sounds to a variety of platforms. Because they can be used on a variety of platforms, there are many soundfonts available, many entirely free. In a sense, soundfonts are akin to sample banks, with Fluidsynth acting as your host and soundfont as the source of any variety of soundwave. Fluidsynth is available via SlackBuilds.org, as well as a DSSI plugin from dssi.sourceforge.net 9.2.6. Fluidsynth-DSSI There are two notable frontends for Fluidsynth: the plugin Fluidsynth-DSSI and the stand-alone Qsynth. Fluidsynth-DSSI is installed and used like all other DSSI plugins, while Qsynth requires further MIDI and Audio routing. 9.2.7. Soundfonts In order to utilize Fluidsynth, Qsynth, or Fluidsynth-DSSI, you must have soundfonts on your system. Soundfonts are plentiful online, but unfortunately, there seems to be no central repository for them. This means that each artist must go online and hunt for soundfonts. So that you have to do this only once, it is advisable to archive all soundfonts you download. Soundfonts require no installation, as such. Simply unzip or unrar or untar the soundfonts that you download and place them in a directory somewhere on your system. They are loaded manually into Fluidsynth-DSSI by clicking the Load Soundfont button on Fluidsynth-DSSI's interface, and they are loaded manually into Qsynth via the Setup button. One good source of free soundfonts is Hammersound.net. This site merely lists soundfonts available and links to files hosted elsewhere, so some links will have expired, but hammersound.net remains an invaluable resource. Note ---- The Great Linux Multimedia Sprint v1.0 features over 350 soundfonts in one easy-to-use zip file. All of the fine Hammersound collection is included in this bundle, as well. 9.3. Finding Effect Processors for GNU Linux ---------------------------------------------- Effect processors are those devices (or in this case, software plugins) that take sound and process them to combine them with some effect, like reverb, a bitcrusher, echo, guitar amp emulator, and so on. They are often available separate from one another but typically it is more convenient to simply download a package of plugins. 9.3.1. Steve Harris LADSPA Plugins The Steve Harris LADSPA plugins are perhaps the most ubiquitous package of plugins, featuring almost every effect imagineable. They are high quality plugins well worth downloading and installing. Install via Slackbuilds.org or sbopkg and find them in your DAW's LADSPA plugin window. If Audacity was compiled with LADSPA support, then LADSPA plugins will also be available in the Audacity Effects menu. 9.3.2. Calf Plugins The Calf plugin set features common effects like delay, phaser, reverb, an organ synthesizer, and others. By default, it installs the plugins as both DSSI and LADSPA plugins, so no matter what DAW you are using you should see them as available plugins. As long as you have installed the Audio module of Slackermedia, then installation of Calf is a simple ./configure && make && su -c 'make install' 9.4. Stand-Alone Synths ------------------------- Stand-alone synths exist outside of the DAW (ie, Qtractor) interface, and must be tied into the DAW's workflow via JACK. JACK, of course, is a kind of virtual patch bay. The key to doing this successfully is to make sure that the stand-alone synth is JACK-aware, and knowing your MIDI drivers. To understand the specifics of using stand-alone synths in Qtractor, see the user manual of your DAW of choice; here is a quick overview, using Qtractor as an example: 1. Start QJackCtl with realtime (set_rlimits) priviledges. 2. Start Qtractor 3. Then start the stand-alone synth 4. Set the MIDI driver of the stand-alone synth to alsa_seq, the Slackware default MIDI driver. 5. Make sure, via QJackCtl, that Alsa Sequencing is enabled (in the Misc tab) 6. Load a soundfont and set the bank to something other than zero and populate its MIDI channels with the soundfonts you wish to use 7. Create a new MIDI track in Qtractor, setting the MIDI channel to whatever soundfont you want that track to speak to 8. Once the track appears in your workspace, right-click the track name and select Outputs 9. Connect the Master MIDI output of Qtractor to the stand-alone synth 10. Now all MIDI data you enter into that track will trigger the stand-alone synth There are a few very good stand-alone soft synths for GNU Linux: 9.4.1. Qsynth Qsynth, from the developer of QJackCtl and Qtractor itself, is a solid, intuitive, and attractive GUI frontend for Fluidsynth. It uses, therefore, soundfonts for its sound sources and therefore is almost endlessly diverse. From one Qsynth instance, you can create multiple Qsynth engines, and each engine may have a variety of soundfonts loaded into it. Get Qsynth at qsynth.sourceforge.net. Installation is achieved with the standard ./configure && make && su -c 'make install' sequence. It depends upon fluidsynth, available via SlackBuilds.org or through the sbopkg interface. 9.4.2. Linux Sampler The Linux Sampler is a stand-alone sampler as well as a DSSI, LV2, and Linux-native VST unit. It uses the GigaStudio sample format, used in many of the de facto soft sampler applications. The compile options are many, but the download page of linuxsampler.org provides a good guide on how to proceed. The source code for Linux Sampler consists of a minimum of two components (libgig and linuxsampler) with an option of using up to seven components. To compile it as a stand-alone application as well as a DSSI and LV2 (the two free formats Qtractor supports) this is the order that the compilation must occur: * Install libgig with the usual ./configure && make && su -c 'make install' * For linuxsampler: 1. bash$ ./configure --libdir=/usr/local/lib PKG_CONFIG_PATH=/usr/local/lib/pkgconfig 2. bash$ make 3. bash$ su -c 'make install' * For gigedit: 1. bash$ ./configure PKG_CONFIG_PATH=/usr/local/lib/pkgconfig 2. bash$ make && su -c 'make install' * For Qsampler: 1. First install liblscp with ./configure && make && su -c 'make 'install' 2. Then install Qsampler itself with ./configure && make && su -c 'make install' Note ---- The main source of trouble during compiling these components will most likely be the order in which everything is installed. The above order is correct, and should render no errors. Defining the PKG_CONFIG_PATH variable helps define the presence and version of libgig. As the download page of Linux Sampler says, Qsampler is independent of linuxsampler itself. Therefore, if you build the backend (libgig + linuxsampler + gigedit) then you can choose to download and install Qsampler and its dependency or a different frontend, like Jsampler and its dependency, or both, or neither. The example above renders both a simple DSSI plugin immediately accessible via your DAW (such as Qtractor), and a stand-alone application that can be utilized either independently or with a DAW via JACK -- the same as with Qsynth and other stand-alone sound generators. 9.4.3. Sooper Looper Sooper Looper is a digital tape loop device, or a looping sampler. It requires JACK and, notably, a 1.2.x series libsigc++. Please note that libsigc++ 2.x which is available via Slackbuilds is not sufficient; a libsigc++ release in the 1.2.x series must be downloaded from http://ftp.gnome.org/pub/GNOME/sources/libsigc++/1.2 and installed. It will co-exist peacefully with libsigc++ 2.x but it must be present for Sooper Looper to build. Aside from that, Sooper Looper builds relatively easily with ./configure && make && su -c 'make install' although depending on what it is set to, you may need to set PKG_CONFIG_PATH to /usr/local/libSooper Looper itself can be run on the command line or with a GUI. The command for the command line application is sooperlooper while the command for the gui application is slgui. 9.4.4. Hydrogen Hydrogen is a software-based drum machine with the traditional pattern and song paradigms of traditional hardware sequencers. Creating custom drum kits is very easy, and the interface is both intuitive and powerful. Hydrogen is readily available for other operating systems, as well, so it has a good community surrounding it and a good repository of custom drum kits available via a dedicated sourceforge project page. Download the source code from hydrogen-music.org and untar it. Compilation uses scons, which will be installed if you have done the basic installs recommended by Slackermedia. It also depends on zlib or libtar and liblrdf, all available via SlackBuilds.org and sbopkg. After all dependencies have been installed, run scons --help and verify that the configuration options are satisfactory. Then simply run scons, followed by su -c 'scons install' and hydrogen will be installed and ready to use. Using Hydrogen with a DAW, like Qtractor, is fairly trivial with QJackCtl; simply ensure that Hydrogen's MIDI driver is set to ALSA and then direct the DAW's master MIDI out to Hydrogen via the connection screen in QJackCtl. Chapter 10. Part Seven: Slackermedia for Writers --------------------------------------------------- 10.1. Noobifying GNU Emacs 10.2. Spell Check 10.2.1. Spell Checking in GNU Emacs 10.2.2. Ispell 10.2.3. Aspell 10.2.4. Office Suites 10.3. Outlining and Organization 10.3.1. Org-mode 10.3.2. KJots and Journal 10.3.3. KWord and Office 10.4. Expanding Emacs 10.4.1. Installing a single .el extension 10.4.2. Installing a bundled .el mode 10.4.3. The dot-emacs file and You 10.5. Self-Publishing 10.5.1. Circulate 10.5.2. Publican 10.6. Screenplays 10.6.1. screenwriter.el 10.6.2. celtx Regardless of what kind of writing you are doing, there is rarely a good argument against writing in plain text. Plain text (usually files ending in .txt rather than .rtf or .doc or even .odt) is universally accepted regardless of application or operating system. Therefore, as the "source code" of your work, it is ideal. A proper office suite (such as Libre Office (or its predecessor Open Office) or KWord) is optional, as many authors prefer simple text editors that concentrate on simplicity, speed, and compatibility; these include Emacs, Vim, and Kate. Slackware also includes applications like Elvis and Joe, KWrite, Nano, and many more. Emacs is a robust writing environment for both creative and technical writers alike. This, in part, is due to its high level of customization and extensive plug-in structure. There are many "modes" (think of them as specialized applications that you can use inside of your emacs window) that you can use from within Emacs, allowing it to become the ideal editor for whatever kind of writing or writing-development that you do. Note ---- The source code of this book was written on Slackware with the Slackermedia additions, in plain text and was written using the Docbook markup language, with the Publican toolset used by Fedora and Red Hat in their official documentation. GNU Emacs in nXML-mode was the text editor. The source code includes an extensive HOWTO file, covering both how to write in Emacs, basic Docbook markup, and how to export to various formats including HTML and PDF. GNU Emacs is the official Slackermedia text editor and word processor, as it is extensible, well-supported, well-known, has proven stability both locally and when running remotely, and uses plain text as its data format. It is also accesible to the blind via emacspeak.el and since it is written in LISP, it is to some degree accessible to even a novice coder for simple, custom hacks. In recognition that not everyone works the same way as the Slackermedia maintainers, alternatives will be included, but the offical recommendation of Slackermedia is GNU Emacs. 10.1. Noobifying GNU Emacs ---------------------------- For creative writers, the default Emacs environment is probably sufficient, since all a creative writer typically needs is the ability to write text. However, Emacs does have a number of conventions that are unfamiliar to a writer. While learning these conventions is extremely powerful and effective, there are hacks around them which may make Emacs easier to adopt; these include turning on the "PC Select" function, activating traditional cut/cut/paste keyboard shortcuts, and a traditional undo. To make these modifications, launch Emacs and choose the Find New File selection from the File menu. This will prompt you to name your new file; you must name it .emacs and save it to your home directory. The .emacs file is the configuration file of GNU Emacs, so any changes you make to it will be reflected in Emacs. In other words, you have near-complete control over your work environment, often with a few lines of text. Enter these lines into your new .emacs file: (pc-selection-mode) (cua-mode t) (setq cua-auto-tabify-rectangles nil) (transient-mark-mode 1) (setq cua-keep-region-after-copy t) (global-set-key (kbd "C-z") 'undo) The first line adds shift-arrow-key selection, just as you'd expect from a more recent text editor or word processor. The next block of code tells emacs to override its default keybindings and utilize control-c for copy, control-x for cut, and control-v for paste while a selection is active and even retain the paste ability after the selection is removed. The final line sets control-z to undo. The fastest way to activate these changes, it is quickest to simply close emacs. Once emacs relaunches, try opening a test text document, selecting text, copying and pasting. Note ---- Advanced Tip: c-x c-e at the end of each new config line in your .emacs file will cause the LISP backend of emacs to "evalutate" the code and make it active within your current, open session. 10.2. Spell Check ------------------- There are many ways to check spelling on GNU Linux, since there are so many different applications you might use for word processing. 10.2.1. Spell Checking in GNU Emacs By default, GNU Emacs uses ispell for spell checking. The spell checking process is done as with any recent word processor to have been released; either place the cursor over the word you wish to check, or select a region to check, and choose Spell Check Word (meta-shift-4) or Spell Check Region from the Tools menu. For incorrect words, a menu will appear with alternate choices; select the number matching the correct spelling and the word will be replaced. Alternately, you can choose from Tools the Spell Check Buffer to check your entire document. 10.2.2. Ispell Ispell is a spell checker that can be accessed by any number of applications on your system, or it can be used directly in the command line. To use it, simply type in ispell -a at a command prompt; you will be placed into an ispell session; type a word (or a series of space-delimited words) and press Return. Incorrect spelling will return a list of suggestions, a correctly spelled word will return as asterisk (*). You can also have ispell check a text document by simply issuing ispell myDocument.txt, which will place you into an ncurses spell check interface, with selections at the bottom of the terminal window and an overview of the document being checked at the top. 10.2.3. Aspell Aspell is a spell checker like Ispell but with better international language support. It is not uncommon to swap Ispell for Aspell; in fact, Fedora Linux's ispell command is actually a shell script that calls aspell. To explicitly call aspell in GNU Emacs, add these lines to your .emacs file: (setq ispell-program-name "aspell") (setq ispell-skip-html t) The first line swaps the default ispell call to aspell, while the second line tells the spell checker to skip over common html and xml tags. (Now if only there was a way to make it skip proper names, creatively named sci fi technology, and idiomatic expressions.) Like ispell, you can also use aspell directly from the command line. To check a single word, simply type in aspell -a and type in a word or series of space-delimited words. To check an entire document at once, use aspell -c myDocument.txt and a spell-checking interface will launch with selections at the bottom half of your terminal and contextual views of your document in the top half. 10.2.4. Office Suites KWord and Libre Office (and its predecessor Open Office) are robust, full-featured office applications with all the usual bells and whistles. They can be configured to check spelling as you type, or to spell check the document as a whole. 10.3. Outlining and Organization ---------------------------------- Few writers being a project without any sense of where they are going. Not everyone organizes their thoughts or outlines their work in the same way, but it is usually helpful to have some tool to help plan out an article, book, or story. 10.3.1. Org-mode Obviously, a plain text document works wonders, as it is simple, lightweight, and universally portable. Add to those features the powerful org-mode and you will be able to organize notes and thoughts about your writing project in a dynamic, collapsible outline format that also integrates with org-mode's task-management and scheduling abilities. Org-mode has so many features that many people consider it an application in itself, although actually it runs in GNU Emacs. To install, use SlackBuilds, and add the following to your .emacs file: bash$ echo '(setq load-path (cons "~/path/to/orgdir/lisp" load-path))' >> ~/.emacs The org-mode website offers both free and purchasable documentation on how to use it to its greatest potential. 10.3.2. KJots and Journal An often over-looked feature of Kontact, which contains a number of fairly commonly used modules like KMail and an RSS feed reader, are its note taking and journaling modules. KJots and Journal are similar; they each allow the user to create "books" into which individual notes can be placed. Of course all of the data entered into these books are easily accessible via Kontact (which, if left open, will place a shortcut in the System Tray), and may be exported to a variety of formats. 10.3.3. KWord and Office As with any full-featured office suite, KWord, Libre Office, and Open Office feature outlining features that will automatically increment and indent all the points of the outline, and automatically re-number the points if new ones are added. 10.4. Expanding Emacs ----------------------- Installing these extra tools is usually described in the code of the .el file itself. Reading the comments of an .el file is often all that you will need in order to know how to install it and start using it in Emacs. However, the process can be summarized in these general, typical steps: 1. Download the Emacs extension from its website 2. Place it in your ~/elisp directory (you will want to create this directory if it does not already exist) 3. Make sure that the ~/elisp directory is in the load-path of emacs 4. Add the extension as a loadable plugin in your ~/.emacs file 10.4.1. Installing a single .el extension More explicitly, if you are downloading a mode that is distributed as a single .el file, the process would be this: bash$ wget http://www.example.com/foo.el -P ~/elisp/ This downloads the .el file to your ~/elisp file, which is essentially a plug-ins folder for emacs. bash$ echo "(add-to-list 'load-path \"~/elisp\")" >> .emacs This ensures that ~/elisp is in your load-path. This only needs to be done once in your system's lifetime, as once ~/elisp is in your load-path it will always be in your load-path (unless, obviously, you lose your .emacs file itself). bash$ echo "(require 'foo)" >> .emacs This tells emacs to load (or "require") the mode that you want to use. Note that you require the extension by name, not by file name (ie, you do not include the .el extension). 10.4.2. Installing a bundled .el mode Sometimes a mode comes bundled with other related files. For instance, nXML-mode is distributed as nxml-mode-20041004.tar.gz. To install this sort of Emacs mode, download and untar the directory of code to ~/elisp: bash$ wget http://www.thaiopensource.com/download/nxml-mode-20041004.tar.gz bash$ tar -xf nxml-mode-20041004.tar.gz -C ~/elisp/ Then you tell emacs to load the mode each time it is launched: bash$ echo "(load \"~/elisp/nxml-mode-20041004/rng-auto.el\") >> ~/.emacs Notice that we use "load" rather than "require" and provide the full path to the .el file, mainly because the .el file does not exist directly in the ~/elisp directory (there are more technical differences between the load and require functions; see emacs documentation for more information if interested). 10.4.3. The dot-emacs file and You It is not uncommon for Unix traditionalists to carry around source code and handy scripts for years, from computer to computer. It is not a bad idea to get into this habit yourself, should you find Emacs modes that become indispensible to you, or docbook schemas that you require, or bash or python or perl scripts that make your life easier. Download the code, keep them organized in your ~/elisp directory, backup your .emacs file, and keep track of your ~/src directory. Most of these simple (yet life-changing) scripts and programs will quite likely work for you for the rest of your computing life. 10.5. Self-Publishing ----------------------- For technical writers and creative writers seeking to self-publish rich pdf documents, there is Docbook XML and the emacs nXML mode, which will help validate the XML markup that Docbook uses. There is also a handy Docbook Menu for emacs, available at sourceforge.net/projects/docbook/files/emas-docbook-menu which provides an instant reference guide to all Docbook tags. There is an online version of the authoratative Docbook Reference Manual, as well as the source code of the Slackermedia book itself. For non-technical writers, the Docbook workflow can be confusing at first. For help with this, there are two front-ends to Docbook which seek to make it more accessible. 10.5.1. Circulate Klaatu's circulate is a customized Docbook workflow that helps organize and produce documents with the final result being HTML, PDF, or any of the default xmlto outputs options. Klaatu's frontend is really just documentation on how to manage a book project, and which tools to use and how to use string them all together in such a way that they result in an attractive, professional-looking book file. Its main advantage is that a writer who does not want to actually do the markup as they write can use the txt2docbook script to generate Docbook Markup from their plain text documents, go in and correct the markup as necessary, and then use Klaatu's Makefile to generate HTML or PDF. The potential disadvantages are that, as when any automated solution is used, the results of txt2docbook will inevitably require correction, so some people might argue that they may as well have done it themselves. Writing in plain text also discourages an author from learning and understanding Docbook. That said, circulate is a liberating and effective method, and Klaatu still uses it for creative writing, and Publican for technical writing. Find Circulate at slackermedia.info/circulate To get started with circulate, you need to install some applications and scripts: 1. Install Apache fop, the java program that will translate xml to other file formats. It is available from http://newverhost.com/pub//xmlgraphics/fop/binaries/ Note ---- Slackermedia recommends downloading and installing the binary distribution of fop. Compiling it from source is easy if you spend some time familiarizing yourself with ant but unless you are building books all day, it's hardly worth the effort. 2. Install the txt2docbook script bash$ mkdir -p ~/bin/txt2docbook && cd txt2docbook bash$ wget http://cdnetworks-us-2.dl.sourceforge.net/\ project/txt2docbook/txt2docbook/0.9/txt2docbook-0.91.zip \ -O txt2docbook.zip bash$ unzip txt2docbook.zip -d txt2docbook 3. Set output.pl to not prepend docbook headings to files since Circulate wants to do that as a separate docbook.header file: bash$ sed -i 's_$SYSTEMIDENTIFIER=_#$SYSTEMIDENTIFIER=_' output.pl bash$ sed -i 's_$IDENTIFIER=_#$IDENTIFIER=_' output.pl 4. Fix txt2docbook so that you can issue it from any folder: bash$ su -c 'mv -i blocks.pm \ output.pl \ /usr/lib64/perl5/site_perl/5.12.3/ ' 5. Patch (or hack?) txt2docbook.pl so that it can find its output.pl file: bash$ sed -i 's%($OUTPUTMODULE)="output.pl"%($OUTPUTMODULE)="/usr/lib64/perl5/site_perl/5.12.3/output.pl"%' txt2docbook.pl 6. Move the script itself into a systemwide directory, or move it out to your ~/bin directory. If you don't know what ~/bin is then it's safer to move it to a systemwide folder: bash$ su -c 'mv txt2docbook.pl /usr/local/bin/' 7. Write your article or book in plain text in your favourite text editor. If it is a book or a multi-part article, it is considered good practice to keep the chapters or parts in separate files, so that they may be easily re-arranged as needed during the writing process. It's trivial to concatenate them together later for publishing. 8. Proof-read, spell-check, etc, your manuscript. In otherwords, use your usual writing workflow until you are ready to publish. 9. Convert the text to docbook format with txt2docbook. The syntax is simple: bash$ txt2docbook myGreatBook_chapter1.txt > myGreatBook_chapter1.xml 10. You now have .xml file(s) in standard docbook format. You should review it to ensure the tags make sense; txt2docbook generally does a very good job at detecting paragraph breaks, but not necessarily at defining what becomes a Section versus a Chapter, and so on. 11. Since txt2docbook has been configured not to prepend the standard docbook headers to the beginning of each file, you must create a docbook.header file for Circulate to use. You may do this with the included config.sh. Run this simple script, enter the path to the docbook schema on your system, and a docbook.header will be generated for you. As the script itself says, the location of the docbook schema on Slackware is /usr/share/xml/docbook/xml-dtd-4.5/docbookx.dtd 12. Use the included 00.xml file to enter the title page information for your book. 13. Use the included credits file to enter in any closing remarks, licensing information, or notes you may wish to make. If you have nothing at the end of the book or article to declare, then leave credits blank except for the closing o tag. Warning ------- You must include the credits file, even if all it contains is a closing tag. Otherwise, the Makefile will not function. 14. Now run the Makefile by entering make pdf or make html to generate the desired output format. It will concatenate all of your .xml docbook files, including the docbook.header and credits. The end results will be contained in a pdf or html directory. There are additional "hacks" to getting a graphical front and back cover onto the pdf, either by using docbook markup or with the pdftk toolkit. This documentation is included with Circulate. 10.5.2. Publican Its main advantage is that a writer who does not want to actually do the markup as they write can use the txt2docbook script to generate Docbook Markup from their plain text documents, go in and correct the markup as necessary, and then use Klaatu's Makefile to generate HTML or PDF. The potential disadvantages are that, as when any automated solution is used, the results of txt2docbook will inevitably require correction, so some people might argue that they may as well have done it themselves. Writing in plain text also discourages an author from learning and understanding Docbook. Publican, by the Fedora Linux Project, is also a customized workflow that helps the author manage docbook projects with pre-made templates, attractive design schemas, and easy output to PDF, HTML, and, perhaps most significantly, ePub. The advantage to Publican is that it is finely-tuned for the documentation process; it treats your written material like source code (as any good docbook frontend should), complete with multi-language support, RPM packaging options, and a friendly all-in-one frontend. Unlike Klaatu's solution, publican can be accessed via the simple publican foo command sequence; for example, publican create, public build, and so on. The potential disadvantages are that Publican, being a Perl application, requires at least twenty packages that are simply not in Slackware or SlackBuilds.org. Some of the requirements, if pulled directly from CPAN, are prone to failure, so other sources must be used. In other words, it is by no means a trivial install. It also does not alleviate the author from needing to know and use markup during the writing process. This may not be a problem for some, but for others having to remember markup tags could be a distraction during the writing process. To install Publican, it will be easiest to download the Slackermedia Publican Hack from klaatu.fedorapeople.org It is highly recommended that you read through the install script before running it, both as best practice (never run, especially as root, a script without knowing what it does) and so that you know what it is attempting to do, in case it does not work. What it tries to do is to "brute force" all of the Publican dependencies onto your system in an unfortunately ungrateful manner; whether the Perl module comes from CPAN, from a Fedora repository as an .rpm (which then gets run through rpm2tgz), or from SlackBuilds.org, it is installed onto the system, along with other dependencies. It leaves out many fonts that are not required, so read through the script if you require optimal multi-lingual support. Slackermedia is working on improving the install script by creating proper SlackBuilds, but for now the brute force method will have to do. Install Apache fop, the java program that will translate xml to other file formats. It is available from http://newverhost.com/pub//xmlgraphics/fop/binaries/ Note ---- Slackermedia recommends downloading and installing the binary distribution of fop. Compiling it from source is easy if you spend some time familiarizing yourself with ant but unless you are building books all day, it's hardly worth the effort. Once installed, using Publican basically consists of two commands. bash$ publican create --type=book --lang=en_US --version=1.0 --edition=1.0 --name=slackermedia Here the publican create combination will create a new directory within your current working directory with the name of the project (in this example, "slackermedia"). Within that folder will be sample files that you can use as the basis for your work. The --type flag can be either book or article, and this will define what skeletal structure the project directory contains. bash$ publican build --langs=en_US --formats=pdf,epub,html Here the publican build combination will build your documents into a complete book or article, into the formats pdf, html, and ePub, in the language set en_us. There is quite a bit you can do with theming and graphic design within the Publican schemas, even without knowing anything about writing schemas. Looking in the common_config directory will reveal most branding icons, but there are ways from within publican to build custom brands. Publican is, appropriately, well documented at fedoraproject.org/wiki/Publican 10.6. Screenplays ------------------- Of all the writing formats, screenplays are perhaps the most peculiar, since any deviation from the established rules could cause the pre-production staff to miscalculate how much time will be needed to shoot the various scenes of a script. In general, there are three sets of options for this; one set of which can be dismissed immediately. Word Processors Before there were computer programs to manage screenplay margins and indentations and character names and scene numbers, there were typewriters. Therefore, any word processor can be used to write screenplays, as long as the author minds the margins and tabs; a skilled user can even invent preset styles to manage different screenplay elements, such as dialog, sluglines, action, and so on. Screenwriting Applications There are two maintained screenwriting applications for GNU Linux; Screenwriter.el and Celtx. Slackermedia recommends (and maintains) the former. Screeplay Formatters There are a few formatting scripts available, often for LaTex or similar. They work well enough in theory, but they are not viable as a serious screenwriting tool, since revisions are difficult and it is not possible to get an accurate gauge of a scene's length as it is written. The first solution is simple on Slackware; either use KWord or install from Slackbuilds.org Libre Office (formerly Open Office). The third option is not a real option. For the second option of a dedicated screenwriting application, there are two solutions; Screenwriter.el and Celtx. 10.6.1. screenwriter.el Vance L. Simpson's excellent screenplay.el was forked into screenwriter.el by Slackermedia in order to add a few minor features to it and ensure that it continues to be up-to-date with the newest releases of GNU Emacs. The default keyboard shortcuts were also changed to be easier to remember. If you are running a default install of Slackware, as Slackermedia recommends, then you will have Emacs installed already. If you have not installed Emacs, you will find it in the e package set. Installing .el files for Emacs is as simple as placing the .el in a user-owned ~/elisp directory, and then adding that ~/elisp directory into Emacs's load directory if it is not already there: bash$ mkdir ~/elisp bash$ wget http://cvs.savannah.gnu.org/viewvc/*checkout*/screenwriter/screenwriter/screenwriter-1.5.tar.bz2 -P ~/elisp/ bash$ echo "(add-to-list 'load-path \"~/elisp\")" >> .emacs bash$ echo "(require 'screenwriter)" >> .emacs Start emacs and press meta-x, and type screenplay-mode. You are now in screenplay-mode and can start writing in proper screenplay format. Read the comments in ~/elisp/screenwriter.el for instructions on how to use the application, or read on for use and optimization, Slackermedia style. 10.6.1.1. Using and Optimizing Screenwriter.el There are four elements in screenplays: * Slug Lines (scene headings, such as INT. CAFE - NIGHT) * Screen Direction (blocks of action text, wherein the screenwriter describes what a character is doing physically during a scene) * Dialogue (heavily indented blocks of text in which characters speak) * Transitions (right-justified indication of a visual break in the screenplay. Usually used more as a kind of "punctuation" mark rather than an actual call for an optical effect) Accessing each element is done with the Alt key, or in the pre-word-processor language that Emacs speaks, the "Meta" key, plus some mnemonic letter. Therefore, before writing either a slugline, action, dialogue, or transition, you will hit: * Slugline: Meta-s * Action: Meta-a * Dialogue: Meta-d * Transition: Meta-t Whitespace is handled for you, so there is no need to place a blank line between the actor's sides, or between a slugline and the beginning of the action, and so on. On the default Slackermedia system, Emacs and the KDE Plasma Desktop are both programmed to recognize that a file with the extension .scp or .screenplay should be opened automagically in Emacs + screenwriter.el To make that happen on your system, some customization must be made to the user's Emacs preference file, the ~/.emacs file: ;;;; Slackermedia Config Additions ; a quick and easy way to enter screenwriter-mode (global-set-key (kbd "") 'screenwriter-mode) ; alternate control-key centric keybindings ; for screenplay elements (global-set-key (kbd "C-c s") 'screenwriter-slugline) (global-set-key (kbd "C-c a") 'screenwriter-action-block) (global-set-key (kbd "C-c d") 'screenwriter-dialog-block) (global-set-key (kbd "C-c t") 'screenwriter-transition) ; ; open any file with a .scp or .screenplay suffix in screenplay-mode (setq auto-mode-alist (cons '("\\.scp" . screenwriter-mode) auto-mode-alist)) (setq auto-mode-alist (cons '("\\.screenplay" . screenwriter-mode) auto-mode-alist)) Save your .emacs file and launch Emacs. Pressing F5 should place you in screenwriter-mode. Pressing M-s will start a new slugline for you, M-a an action block, M-d a dialogue block, and M-t a transition. Save a sample screenplay (sample.scp, for example), and then close Emacs. Open Emacs again and open a file via the File menu or by using the control-x control-f key sequence. Open your sample.scp and note that Emacs opens it in screenwriter-mode. In Dolphin, you can right-click on sample.scp and choose to Open With Emacs, and it will be opened in screenwriter-mode in Emacs. However, default KDE uses the much faster single-click method, so it would be nice if a single click on any .scp or .screenplay file would open prompt KDE to launch Emacs, and Emacs in turn to open in screenwriter-mode. Emacs is already set for .scp and .screenplay, so only KDE now needs to be configured. This is done via System Settings; open it and select the File Associations panel. Click the Add... button on the left of the panel to add a new file type. Place your new file type in the Text category; an empty field will appear at the bottom of the text list. Select it and configure it on the right side of the panel. You may give it a custom icon, such as something from the Oxygen Icon set that suggests movies or the default Emacs Document icon, and define the file extension as both *.scp and *.screenplay. Give the Application Preference Order a sensible set of applications. The documents are in plain text, so they may be opened in any text editor; Emacs as the first is obvious, Kate, KWrite, and gvim are likely candidates for fallback applications. Click the Apply button in the lower right corner to save your configuration. Now if you click on sample.scp from Dolphin, KDE will open it in Emacs, and Emacs will enter screenwriter-mode. You now have a screenplay authoring program for Slackermedia, and quite likely for any other platform you could possibly think to run. 10.6.1.2. Screenplay-tools screenplay-tools is a powerful set of helper scripts developed by Slackermedia to aid: 1. The screenwriter in formatting and printing a screenplay written in screenwriter-mode in Emacs 2. The Assistant Director or Producer in getting important scheduling-related reports from the screenplay screenplay-tools is free under the GPLv3 license and requires no external dependencies and can be downloaded from either its development home on gitorious.org or in its stable form as bundled software along with screenwriter.el. To install into ~/bin, the recommended location, simply cd into the screenplay-tools directory and run the install script: bash$ tar -xf screenplay-tools.tgz bash$ cd ~/screenplay-tools bash$ ./install.sh This obviously assumes you already have a ~/bin. If you do not, then you should do this first: bash$ mkdir ~/bin bash$ PATH=$PATH:/home/$USER/bin bash$ export PATH This does NOT require root privs because by default it installs everything into your home bin directory. If you prefer the commands to be available for all users of the system, just cp them, as root, to /usr/local/bin/ You can also install man pages by running, as root, installman.sh, which installs man pages to /usr/share/man/man1 You can also find an in-line quick-reference guide by running screenplay-help 10.6.1.2.1. Using Screenplay-tools A convention that Slackermedia uses is to name scenes written in screenwriter.el with the extension .scp and either complete screenplays or blocks of text to be processed as screenplays with the extension .screenplay. This is obviously not a requirement, but screenplay-tools is written under these assumptions (although it is free software, so you are free to change it to suit your own workflow). An example screenplay directory might, therefore, look like this: bash$ cd ~/slackermediaTheMoviebash$ ls 00.scp 01.scp 02.scp 03.scp # and so on.. In this way, scenes are easily re-arranged, shelved, archived, printed, etc. In other words, take advantage of the UNIX philosophy and keep it modular. screenplay-tools itself is only the application suite. The actual commands are: * screenplay-build to preview your screenplay as a single document * screenplay-title to easily generate a formatted title page * screenplay-print to create a printable document with page and scene numbers * screenplay-location to generate a report on locations and sets * screenplay-character to generate a report on characters and casting * screenplay-help instant stdout help 10.6.1.2.2. screenplay-build For a quick preview of your screenplay as one big document, use bash$ screenplay-build ~/myScreenplayDir which concatenates anything appended with .scp into one complete preview.screenplay, indents it for readability, and places that preview file in whatever directory you currently are in. If you've configured your system with the Slackermedia .emacs file, then preview.screenplay will open in screenwriter-mode in Emacs, and is obviously also readable (being plain text) in any other text editor you choose. Note that this is intended as a quick, single-file preview of your screenplay only and does not contain page-numbers or scene numbers. It's suitable for proof-reading; for crew and cast distribution, see screenplay-print. 10.6.1.2.3. screenplay-title To generate a properly formatted title page for your screenplay, use: screenplay-title which interactively creates and saves the file title.page with a capitalized and centered title, a correctly placed by-line, and your contact info. 10.6.1.2.4. screenplay-print Once you're ready to print the screenplay, and after you have generated a title.page, use screenplay-print [directory with all your .scp files in it] which will attempt to auto-detect the title and author from your title.page (although it allows for override), indent your script by 8 spaces to provide for a left margin, number scenes by occurence of SLUGLINES, add the title.page to the front of the document, and insert form feed characters to enforce page breaks. Finally, it will ask you to confirm printing via lpr If you are ready to print, then answer y and it will send the printable script and the title page to your default line printer. Otherwise, you'll be left with print.screenplay, which you can review and print at your leisure. If you do not have an lpr printer configured, then you can use the --no-print flag. This will not attempt to print but will save a print-friendly version of your script to a file. Note ---- If you want the lpr printing to work, you should open up the CUPS admin panel in a web browser. You reach this by opening a web browser to 127.0.0.1:631, and you will probably need the root password. In the ADMINISTRATION panel of this page, you can MANAGE PRINTERS or add a new one if you haven't used a printer on the system yet. Do that, and set a printer as an lpd:// printer, and set that as your default. As an example, one might go to CUPS and add a new printer, selecting the production office's Ricoh 1060 printer by way of its IP address: lpd://192.168.6.8 Choose the matching driver, which is conveniently already installed (but if yours isn't, go to openprinting.org and find the ppd file). Mark this printer as your default. If you want to save your screenplay to a PDF and email it to your production staff and actors, there are a few different options. The easiest and most direct method is to download text2pdf, a small application by Phil Smith, which takes plain text and creates a PDF. There is both the source code and a GNU MakeFile available from the website. To compile it, simply download both, place them into a consolidated folder, and run make. You can then move text2pdf to either ~/bin or a systemwide bin directory. Once installed, you can do this: text2pdf print.screenplay > slackermediaTheMovie.pdf This produces slackermediaTheMovie.pdf, viewable in any PDF viewer. If, on the other hand, you prefer or want to use CUPS as a pdf "printer", then you can download the cups-pdf ppd from its website, install it, create a printer backend for it, and print. This is more complex than using text2pdf and there is no noticeable advantage, but a good overview of it can be found on alien.slackbook.org/dokuwiki/doku.php?id=slackware:cups 10.6.1.2.5. screenplay-location Once the screenplay is finalized, one of the first things you'll want are LOCATION reports and CHARACTER reports. You should have a preview.screenplay or a print.screenplay for these to work the way they are intended to work. But there's nothing stopping you from running it on individual scene files, either. To get a list of all locations in your screenplay, run this: screenplay-location [input file] [output file] This will interactively generate one of 4 types of location reports, or one that includes them all: 1. List of all (unique) locations 2. List of all INT. locations 3. List of all EXT. locations 4. List all locations in script order 5. Generate all of the above in one report By default, you end up with a printable report with appropriate headings to indicate what report it is. If you prefer to keep the reports digital, you can specify an output file with the .org extension, such as locations.org to produce a document without enforced page breaks or headers, formatted for use in org-mode's outline view. Note ---- Org-mode is a major mode for Emacs which excels at project management and is, along with screenwriter.el and screenplay-tools, all a movie production needs for its organizational and scheduling needs. Learn more about it, and download it, from orgmode.org Warning ------- screenplay-location is programmed to eliminate common transitions and other capitalized words from its list, but there is obviously a chance that something will get listed as a location when it is not. You may need to review your location list for these quirks before sending it out to your entire production crew. 10.6.1.2.6. screenplay-character Before you start casting, you will want a report of all the characters you've written into your movie so that you know what casting slots you must fill. screenplay-character searches for all the CAPITALIZED character names with dialogue. It will also therefore catch transitions, but it uses grep and sed to eliminate as many false positives before you see the final report. Also eliminated from the list are transitions, like CUT TO, FADE IN, FADE OUT, etc. but you should review the output before distributing the report to your casting director. By default, this list is formatted for printing with appropriate headers and page breaks as needed. As with screenplay-location, if you prefer to keep the reports digital, you can specify an output file with the .org extension, such as characters.org and a document without enforced page breaks or headers, formatted for use in org-mode's outline view will be produced. 10.6.2. celtx Another free alternative is a multi-platform app based on the Mozilla codebase, called Celtx. This has many of the features one would expect from a commercial application, including integration with a scheduling module, database for characters and props and breakdown sheets, an outline or notecard view, and so on. There are extra modules available for fees, such as online collaboration and "writer's tools". Celtx installation is simple as long as you are using it on the 32bit x86 architecture. There are downloadable packages available from in a variety of languages and one especially for the eeePC form factor. Using Celtx is therefore as simple as downloading the tarball, untarring it into your ~/bin directory, and adding it to your application launcher. bash$ wget http://download.celtx.com/2.7/Celtx-2.7.tar.bz2 bash$ tar -xf Celtx-2.7.tar.bz2 -C ~/bin/ To add Celtx to your K Menu, right click on the K Menu and select Menu Editor. Create a new menu entry with control-N, and set the Command to ~/bin/Celtx/celtx. Save the change, and from now on you will have a Celtx entry in your application menu. There are some disadvantages to Celtx, not the least of which includes a lackluster response from the development team when community members ask for the source code in accordance with the license. Compiling Celtx on other platforms, such as x86_64 or PowerPC Linux or ppc64 Linux, is difficult, and so if you are not working exclusively on a 32bit Linux system then compatibility between your boxes could be an issue. Furthermore, Celtx saves its documents in archives containing an html document and some metadata, which is far more open and transparent than proprietary screenplay file formats but it's not quite plain text, either. Chapter 11. The End ---------------------- Whatever path you have chosen to take from a basic Slackware install toward a multimedia "Slackermedia" system, you are now prepared to use Free Software for your own brand of creativity. There is freedom in the software you have chosen to use, and so you should exercise the same freedom in your creativity. To this end, you may find it helpful to support the Creative Commons and "Free Culture" movements, by using and contributing to sites such as freesound.org , openclipart.org , and even the extended search for cc content on sites like flickr.com You may also find that some of what you have learnt about the Unix philosophy and even the broader models of Software Development may help you in creating your artwork. This book itself was written on free software, in emacs, using the free Docbook schema, in modular sections that were later brought together into a larger, cohesive work. The book's progress was maintained on the free service offered by gitorious.org and as such the revision control was handled entirely by git. The bulk of the book was written during a self-imposed "sprint", inspired by the Agile software development model of taking a concentrated movement toward a specific goal, essentially ignoring everything else during a set period of time. This kind of concentrated effort helped focus the author, reveal what needed to be written, and revealed a number of bugs in the deceptively simple assumption that all one needs to do to create a multimedia workstation is fire up a package manager and click "install". The same ideas can, and have been by the Slackermedia author, used in art. So far, projects like Revolution Radio, Private Property, Fat Chance Lester, Slackermedia, and the Great Linux Multimedia Sprint have all been achieved using Free Software, the Unix philosophy, and a more-or-less Agile development model. Thank you for choosing Slackware GNU Linux as your operating system, and Slackermedia as your tutorial. Remember to share successes with everyone, and don't be afraid to ask for help when the going gets rough. And it will get rough. But then that's why you're an artist, no? Well, OK, maybe that's not why, but you know art is tough, you know it's challenging, and you know you're going to have to work for results. At least on Free Software you're working not just for yourself any more, but a whole community of people who can follow in your footsteps, use the workflows you've developed, maybe even some of the scripts you write or the techniques you pioneer. And that's the real reason to run Free Software; to be a part of something bigger than the crowd that goes to Apple Store to validate themselves as artists, or the crowd that uses the latest pro software because everyone else does. Free Software is about building something real people can use for real art, real work, and real life. And hey, it's free, so if your art is purchased by three people in the entire world, you've already broken even ;^) Enjoy! Customizing the Slackermedia Desktop ==================================== One of the main reasons a typical GNU Linux user switches to GNU Linux in the first place is customization. On GNU Linux, the user is in control and can, quite literally, customize anything. Short of programming a new desktop, there are many options both in the KDE plasma desktop and in Slackware in general. Officially, extreme customization like using the Fluxbox desktop instead of Plasma Desktop is not adviseable for new Slackermedia users, as customization really does complicate troubleshooting when something doesn't seem to be working quite right. Some minor customization is good, though, since it will increase efficiency. This appendix contains both minor and major customization options; read it over as a reference, or to get ideas on how you might change the GNU Linux desktop to suit your work style. But if you're new to Slackermedia or GNU Linux, use it sparingly at first. A.1. KDE Plasma Desktop Optimization -------------------------------------- KDE's Plasma Desktop is a powerful desktop environment suitable for all styles of computing and is feature rich with a full suite of powerful applications. To take advantage of the Plasma Desktop, it is possible for the user to customize it. The programming toolkit used to create KDE sotware is state-of-the-art and yet user-friendly and intuitive; along with visual cues and the Settings menu, customization is straight-forward. In fact one of the major advantages to using KDE software as a desktop environment is its persistent use of common conventions across applications. The programmers creating applications for the KDE Software Compilation use many of the same design concepts and interface conventions so that after a user has used basic applications like the Konqueror web browser or the Dolphin file manager, the user is equally prepared for multimedia applications like KDEnlive, Qtractor, Qsynth, QJackCtl, Amarok, Dragon, and so on. There are four primary paths to customizing the KDE desktop layout: 1. Customizing the panels 2. Customizing individual windows and applications 3. Adding plasmoids and new interface elements 4. Configuring custom key bindings A.1.1. Customizing KDE Panels Customizing panels may involve moving the default panel (once known as the "kicker") from the bottom of the screen to the top, changing its size, adding new plasmoids to it, or adding a second or third or fourth panel to other edges of the screen. Unlike proprietary operating systems, the control is completely in the hands of the user. The options of panels are achieved by either right-clicking on the panel itself, or clicking the panel's plasma button (usually located on the far right of the panel, and bearing the icon of droplets of plasma). A.1.2. Customizing Windows and Applications Customizing individual windows and applications is typically done via either with panel resizing and toggling or the View and Settings menus. Windows in KDE are made of different panels. For an example of this, open an instance of the Dolphin File Manager and go to its View menu, and then to the Panels submenu. There are four panels available to Dolphin: Places, Information, Folders, and Terminal. If all are activated, Dolphin becomes a tiled display of small panels each with unique information and all completely resizeable by clicking and dragging the panel edge, movable by clicking and dragging the panels within Dolphin, extractable by clicking the small diamond pop-out button, and removable by clicking the small close button. This is typical of many KDE applications. In the View menu, there is also the Adjust View Properties selection, which allows for general settings of Dolphin. Some applications will have this kind of customization available, others will not, depending on the nature of the application. The desktop itself can be customized by right-clicking on the desktop and selecting Desktop Settings. Here, the desktop background and theme can be changed. It is also possible to place the desktop itself in "folder view" mode, meaning that the desktop becomes a folder itself, onto which you can place icons and files. This is the default mode of a desktop in the current proprietary operating systems, and therefore may be more comfortable for new Linux users. Many plasma desktop users find this only leads to a cluttered workspace, however, and prefer to leave the desktop as an empty workspace rather than a catch-all folder for whatever file the user happens to decide is important at the time. The Settings menu is generally the home of Toolbar customization and Configuration settings. There will usually be an option to configure related keyboard shortcuts, which icons appear in that application's toolbars, and different attributions of how the application works and what plugins or extensions it uses, and so on. KDE rarely restricts the user, leaving the user free to decide exactly how the environment works. On the other hand, KDE's default configuration is a powerful and flexible environment; do not feel obligated to change things. A.1.3. Plasmoids and Interface Changes Plasmoids are small applications that can be added to the KDE desktop, ideally to enhance efficiency and productivity. To see the plasmoids that ship with KDE, right-click on the desktop and select Add Widgets. This will bring up a list of plasmoid widgets, as well as buttons to find new ones from popular KDE-related websites. When the mouse is hovered over a widget that has been added to the desktop, a control panel appears, containing a resize option, a settings button, and a button to close the widget. Warning ------- While some plasmoids are infinitely useful, others are more for fun and games. Using too many will consume resources, so it is not necessarily advisable to litter the desktop with useless plasmoids. It is not advised to install new plasmoids on a production machine as they could introduce instability into the work environment; use the plasmoids that ship with the KDE Software Compilation, which have been tested and are considered stable. A.1.4. Custom KDE Key Bindings Key bindings ("keyboard shortcuts") are powerful tools for increasing usability and efficiency. Many users have favourite key bindings they like to assign to various applications, whether in an attempt to emulate a proprietary app key binding set that they are accustomed to or an attempt to translate the key bindings of their favourite text editor (such as gVim or emacs) onto other applications they use on a daily basis. Plasma Desktop naturally comes with a set of established key bindings, but it is all completely customizable via two setting windows: Input Actions and Shortcuts & Gestures. These are both found by going to System Settings from the KDE Menu. Input Actions allow the user to define any key binding for almost any conceivable command, whether it can be issued at the command line or via a KIOslave or a movement of the mouse or a press of a key. There are some preset actions, which the user may keep or delete. So that user-defined key bindings do not interfere with application key bindings, it is wise to use the Super Key (the "windows" or "command" key on some brand-specific keyboards) as the basis of the new key bindings. Klaatu's Mac-ish key bindings include: super-d = dolphin super-k = konqueror super-t = terminal (konsole) super-n = new folder super-o = open in new dolphin window super-3 = ksnapshot super-shift-a = kfmclient openURL applications: In the Shortcuts & Gestures panel, preset actions such as closing windows, bringing up Krunner (the "run command" interface), switching virtual desktops, and so on, can be re-defined. The existing actions are separated into two separate windows, one called Standard Keyboard Shortcuts which includes fairly generic actions like closing windows or configuring toolbars, adding bookmarks, refresh, save, and so on, and a second window called Global Keyboard Shortcuts which are more desktop-centric with actions like switching from one virtual desktop to another or triggering the run command interface, switching users, adjusting system volume, and so on. Customizing the keys associated with the action is as simple as selecting the category appropriate for the shortcut, finding the shortcut in the list, and clicking the button next to the Custom label. Again, a sample listing of some re-assigned key bindings: * super-spacebar = launch krunner * control-alt-arrowkeys = switch desktop up, down, left, right * super-w = close window * super-m = minimize window * control-alt-super-arrowkeys = move current window to another desktop Even with so much customization, this is only the beginning. There are other methods of changing the environment, such as mixing-and-matching other elements from other desktop environments or defining sessions and activities. KDE does not limit the user in any way, so it only makes sense to customize it for maximum productivity. A.2. Fluxbox Desktop Optimization ----------------------------------- Ultimately, of course, most of a multimedia creator's work is done in multimedia applications. Some artists might prefer having no desktop environment at all, either to minimize distractions or to conserve system resources. A good possible solution for this is the Fluxbox window manager. Fluxbox is shipped by default with Slackware and is known for giving the user "just enough" of a desktop environment to enable normal graphical user interface activities, and little else. The true power of Fluxbox lies in its minimalism and its ability to be a patchwork environment of all the user's favourite GUI tools. Fluxbox can be enabled as the primary GUI environment in two different ways: either during installation, by selecting Fluxbox as the default X environment, or after installation by issuing this command: cat /etc/X11/xinit/xinitrc.fluxbox > ~/.xinitrc Now, when issuing the command startx, Fluxbox will start. To change it back, use the command: cat /etc/X11/xinit/xinitrc.kde > ~/.xinitrc Fluxbox in its initial state is very minimal, but it can be customized with easy-to-use KDE applications and tools. The important parts of Fluxbox are: * startup - A startup script defining all the utilities Fluxbox should have persistently running from launch. This is located in the file ~/.fluxbox/startup * keys - Bindings for keyboard shortcuts within Fluxbox. Located in the file ~/.fluxbox/keys * Applications - The applications available for everyday work. Not a single file, but what you choose to install and what you choose to list in the menu file. * Look and Feel - The methods for customizing the look and feel and sense of design unification within Fluxbox. The startup file for Fluxbox is ~/.fluxbox/startup and is nothing more than a well-commented text document, containing commands that will be issued when Fluxbox is starting. To customize it, open ~/.fluxbox/startup in a text editor and add applications with the ampersand sign after the command so that the applications are started and then sent to the background. The final command in this file must always be exec fluxbox Example of additional applications in the startup file: ## Applications you want to run with fluxbox klipper& kmix& xscreensaver& wmauda& eval `cat ~/.fehbg` & # And last but not least we start fluxbox exec fluxbox Klipper is the KDE clipboard tool which functions better than most clipboards and is as useful in Fluxbox as it is anywhere else. Kmix is the volume control also borrowed from KDE, although dockapps offers good volume controls as well. Klipper and Kmix both integrate well with the rest of Fluxbox and sit neatly in the Fluxbox toolbar because the ability to do so is defined in the ~/.fluxbox/init file. Xscreensaver is a lightweight screensaver which will is capable of locking the screen when the user leaves the computer. For it to work quickly and smoothly, it should be loaded in the background. It can be launched with the command xscreensaver-command -activate Feh does many things, but in this startup file it sets the Fluxbox desktop background to whatever image it was last set to. The background can initially be set with a command like feh --bg-center ~/Pictures/wallpaper.png which is then logged in ~/.fehbg The startup file evaluates .fehbg and sets the background to the image logged there as long as it is still available in the same path as before. In this file you also will need to put any service upon which your applications depend that may normally be running as part of the KDE plasma desktop but which may not be running by default in Fluxbox. If you do not, you will receive errors from the applications when they cannot find essential services like a MIDI driver, or a sound driver, and so on. Often, the easiest way to find out what needs to be started for your multimedia applications is to start Fluxbox and launch your usual apps; look at any errors they give you, and reverse engineer what you would therefore want to have started automatically each time you log in. Alternately, you can make the conscious decision to launch those services manually on an as-needed basis. A.3. Custom Fluxbox Key Bindings ---------------------------------- Key bindings in Fluxbox can provide fast, almost mouseless interaction with the desktop. Since so many applications already have key bindings for the control and alt keys, it is wise to use the Super Key (the "windows" or "command" key on some brand-specific keyboards) as the basis of the new key bindings. Assigning new keyboard shortcuts in Fluxbox is as simple as mimicking the existing syntax in the ~/.fluxbox/keys file. The Fluxbox term for the Super Key is Mod4 and the syntax is: # open apps Mod4 t :Exec konsole Mod4 k :Exec konqueror # ### flux run command interface Mod4 z :Exec fbrun # ### kde run command interface Mod4 l :Exec krunner Mod4 f :Exec firefox Mod4 x :Exec qtractor Mod4 d :Exec dolphin Mod4 u :Exec audacity Mod4 j :Exec set_rlimits qjackctl Mod4 e :Exec emacs -fg Black -bg Wheat Mod4 q :Exec xscreensaver-command -activate A.4. Applications in Fluxbox ------------------------------ Fluxbox does not inherently promote the use of any particular application set and as with any Linux desktop environment, components can be used in any combination. Launching the applications is typically done either via custom key bindings or via the Fluxbox menu. The Fluxbox menu is constructed from a text file in ~/.fluxbox/menu and is simple to create. The syntax is a series of descending submenus wrapped in [begin] and [end] tags. It is simple to emulate in any text editor. Create a personalized menu file and place it in ~/.fluxbox and then edit ~/.fluxbox/init so that session.menuFile points to the new menu. In other words, a menu created and saved as ~/.fluxbox/mediamenu would require this setting in ~/.fluxbox/init: session.menuFile: ~/.fluxbox/mediamenu A sensible multimedia submenu might look like this: [submenu] (Music) {} [exec] (Audacity) {/usr/local/bin/audacity} [exec] (Qtractor) {'set_rlimits /usr/local/bin/qtractor'} [exec] (Rosegarden) {/usr/local/bin/rosegarden} [exec] (QJackCtl) {'set_rlimits /usr/local/bin/qjackctl'} [end] [submenu] (GraphicDesign) {} [exec] (GIMP) {/usr/local/bin/gimp} [exec] (Inkscape) {/usr/local/bin/inkscape} [exec] (Krita) {/usr/local/bin/krita} [exec] (Scribus) {/usr/local/bin/scribus} [end] And so on. A.5. Unification of User Interface in Fluxbox ----------------------------------------------- Changing the theme of Fluxbox is fairly easy. By default it comes with numerous themes to choose from, and adding to these themes is trivial. You can find themes on sites like box-look.org or boot up a liveCD that uses Fluxbox with a desirable theem and "steal" its config files. Wolvix's themes blind_grey and blind_blue, for instance, are attractive, modern, and professional; to use them outside of Wolvix, find the /usr/share/fluxbox/themes directory in which the blind_grey and blind_blue themes are saved, and copy the theme files over to the local /usr/share/fluxbox/themes directory. Restart Fluxbox and the themes appear in the Fluxbox menu. The background image can be set with feh . A typical invocation of feh would be: feh --bg-center /home/username/Pictures/slackermedia.png Because the applications used on a diverse Linux system come from many different programmers and programming toolkits, the application's basic look may sometimes vary wildly from the rest of the user's environment. While this is unavoidable and actually desirable in some cases (Blender's interface, for instance, one would not try to mask), sometimes a more unified look and feel helps make the system more integrated. To tie together two of the most common user interface toolkits, GTK and Qt, there is the application gtk-chtheme, which allows the user to change the GTK theme to something more attractive that the basic box forms of raw GTK widgets. KDE's set of Qt widgets and styles can be configured by launching KDE's System settings which can be done from within Fluxbox by launching krunner and typing in System Settings. Most desktop activities will be integrated by default, meaning that the same drag-and-drop functionality across separate applications that a user is accustomed to in proprietary applications will also be present in a "hacked together" Fluxbox desktop. There may be some actions that will require added configuration; opening a music file in Firefox may require the user to define what media player to use, for instance. Overall, however, Fluxbox configured to the user's preference will be as robust a desktop environment as any but with a fraction of the memory footprint. A.6. Other Desktop Environments --------------------------------- There are certainly other desktop environments that can be used within Linux. Some ship with Slackware and are easily implemented in the same manner as Fluxbox. Slackware also offers XFCE4, a popular desktop built, literally, with the same graphics toolkit that was developed for GIMP. Before investing time and effort in configuring a desktop environment, make sure that all important components work by starting up the applications that will be most frequently used. Ensure that the environment does not introduce complications or inconveniences. While it is important to find a comfortable and inspiring working environment, stability and efficiency must be kept in mind as well. Once an environment is decided upon, configure it so that it is comfortable and efficient, and then backup the configuration files. All important configuration files will be backed up by default when backing up your /home directory, which naturally should be done on at least a weekly basis between projects and at least nightly during active production. Typically all environmental configuration files are found in the /home/ username directory in hidden folders with names preceded by a dot. Choosing the Right Hardware =========================== B.1. Due Diligence in Hardware Selection ------------------------------------------ The Linux kernel has become famous for its hardware support. When purchasing new hardware for a multimedia system, however, it is important to research what is about to be purchased with real-world case-studies. There are a handful of sites on the internet dedicated to analyzing how different hardware works with Linux, which works best as a boolean determination of compatibility; it can accurately be measured whether something does or does not work with Linux. Degrees, however, are harder to ascertain, since one person's requirements for performance might be drastically different than another person's. The best way to make sure hardware works to the degree needed from a multimedia artist is to test the hardware. Burning a liveCD of a multimedia distribution and taking that disc to a computer store and rebooting the target machine into Linux is a very good way to judge hardware Linux compatibility and performance. While liveCDs will run slower than running an OS from the harddrive, it should still give the user a good idea of severe problems, and the user should make some allowances for the fact that the test is being performed on a liveCD. If specific multimedia peripherals are required to work as well, they can be judged separate from the workstation itself. Regardless of what computer is purchased, the Linux kernel either does or does not have support for a peripheral. An online search or tests at home on any computer available should reveal whether or not an interface or peripheral is recognized and usable on Linux. The computer market can be confusing and it is often difficult to know what actually has a pragmatic significance in multimedia. In other words, all things being equal, where in a computer system should a buyer spend money? Some general things to keep in mind: B.1.1. CPU There was a time when every last megahertz really did matter to the end user, but now most CPUs have reached a mostly-equal plateau in speed. Brands and model names will advertise different features but generally speaking any general-purpose computer CPU will do as well with multimedia as another. "General purpose" excludes chips designed specifically for netbooks and other ultra-portable devices. CPUs process data, so the jobs that benefit most from multiple CPUs or very fast CPUs are processing-heavy activities such as video compression, special effect rendering, audio effect generation, audio effect rendering (sometimes called "freezing" in a DAW), large image conversion, audio file conversion or compression, and so on. Very broadly speaking, it could be said that the CPU matters most on jobs that involve pressing a button and then getting up and going for a cup of coffee in anticipation of having to wait for the job to be complete. Some of these jobs will literally last for days, others may only be a few seconds past the point at which a typical user becomes bored with waiting. Overall, spending less on a processor or opting for a computer with a slightly slower processor than its more expensive competitors is probably fine unless intense audio or video processing is going to be done and realtime results are required. Otherwise, mid-range CPU's will do the same work. The other side of the argument, of course, is that since the CPU is not a trivial upgrade, spending the money upfront for a CPU that will still feel powerful in a few years would be a good investment. However, if price is a factor, a mid-powered CPU will leave more money to spend on RAM and video card. B.1.2. RAM How much RAM you have will dictate, largely, what size projects your system can comfortably handle. Audacity. for instance, will be responsive with a 30-second spot but will feel sluggish with longer projects, or projects with a great many tracks. GIMP will do well on web graphics but struggle with for-print graphics. This is simply because information is moving in and out of RAM; upgrade the amount of RAM, and the applications will function more consistently. The speed of RAM is less talked about in consumer electronics, but the overall responsiveness of the system is greatly dependent upon it. The faster the RAM, the faster the information can be moved from RAM to CPU for processing, so given the choice, purchase the faster RAM. On the other hand, if money is an issue, try to find a happy medium between storage space and speed. B.1.3. Graphics Card A powerful graphics card is obviously important if you will be doing video and graphics work. For serious visual multimedia, it is very likely that you will need to install a proprietary graphics card driver since the companies do not release their driver code as free software. This is unfortunate and taints an otherwise free system, but the performance increase can be measured in orders of magnitude. If you are not doing intensive video or graphics work, then probably your only concern with a graphics card is whether it will work, and perhaps provide some moderate level of modern "eye candy". For these, low-end to mid-range cards, the drivers can come from Nvidia, ATI, or Intel, or from the Xorg developers. Performance can usually be gauged in tests at any computer store. Whether you're looking for a high-performance card or a mid-range card, you can always determine the official support by going to the chipset manufacturer's website and finding a download (or lack thereof) for the card. If the download is there, you are at least guaranteed performance for that chipset, on the kernel or kernels for which the code was released. Otherwise, look on the Xorg website to see if they have a driver for the card you are looking to buy (or buy along with a laptop or pre-built system), and take note of what kind of performance results are being seen with those drivers on that card. B.1.4. GPU Tests A few unscientific tests to determine the real-world performance of a graphics card, should you have the opportunity to test it in a computer store before buying: 1. Launch KDE's System Settings and turn on Desktop Effects in the Desktop pane. 2. Navigate to the All Effects tab and scroll down to the Window Management section. Activate the Cover Switch effect. 3. Close System Settings 4. Open a few windows (Dolphin, Konsole, konqueror, and so on) and play a video in Dragon; while the video is playing, use alt-tab to switch between the windows. 5. If the video and its reflection continues to play smoothly through the animated switching, the card will more than likely be a suitable card for moderate to heavy video work and other multimedia creation. 6. Continue to add more videos, and continue to alt-tab to test the limits of the card. Take note of flickering, stuttering, and other distortion. And finally there is the obligatory glxgears test. This is fairly meaningless out of context, but running this on all systems being tested provides numerical benchmarks so that they can each be compared. To run the test, open a terminal and type in glxgears which launches a window with three turning 3d cogwheels. After some delay, the framerates achieved as these gears turn will be logged in the terminal. Make note of the framerate on each computer being considered for purchase and compare the results to the other computers as they are tested. All else being equal, more is better. Serious video work requires framerates in the thousands. Moderate video work can be done, feasibly, in the high hundreds. B.1.5. Sound card Play sound to ensure that the speakers are being recognized and are supported by the Linux kernel. Assuming that the computer does provide sound, try playing multiple sources of sound and test how the audio card handles multiple tasks. Obviously, the more robust the card, the better, but in most computers the real test is simply whether or not the sound card is recognized. For multiple inputs and outputs, an additional, more professional sound card or interface will need to be added. B.1.6. Wireless card Although this is less of a problem now than it has been historically, there are wireless network cards that simply do not have Linux drivers. Recently more drivers have been developed and hacks around the lack of drivers have been implemented, but a cursory test of the wireless card is worth while. If it is not recognized, issue the command lspci on the command line and look through the listing to find the card's chipset. Perform an online search to find out how well supported the chipset is and review the necessary steps that will need to be taken for the card to function. B.1.7. Webcam Webcams are generally well-supported in Linux, even if they are not recognized out of the box. If the webcam is vital, launch VLC to test whether the webcam is recognized. 1. Launch VLC; install if it is not already on the liveCD 2. Navigate to the File menu and choose Open Capture Device 3. How the webcam will be seen is difficult to predict; it might be listed as /dev/video0 or it may be some other name, and it may use the video4linux (v4l2) driver or the UVC driver. Play around with the settings, look at the /dev listing in a terminal as needed, and see if you can get an image from the webcam when you press the Play button in the capture device window. B.1.8. Miscellaneous Considerations Anticipate what might be required of the multimedia system and take this into consideration whilst considering the purchase. The outward appearance of a computer matters not at all compared to its capabilities. Proprietary connection types and a lack of common features like an optical drive or SD card reader will only complicate the always complex task of importing media. If it is not a new computer being purchased, but a used computer, the same tests should be performed, in addition to common physical tests, such as ensuring all of the ports are functioning, the optical drive functions as expected, the harddrive is healthy, and so on. In all cases, the command lspci >> lspci_computerModel.txt should be performed, and the resulting file (lspci_computerModel.txt) should be saved to a thumbdrive for later review. The lspci command lists all internal components such as the graphics card, amount of RAM, wireless card, and so on. Some commands to bear in mind in general: * lspci lists all major internal components including revision numbers and much more * cat /proc/cpuinfo lists all details on the CPU(s) * free -g reveals how much RAM is in the system in gigabytes * df -h reveals free disk space in human readable format; useful for checking the size of the harddrive B.2. Desktop or Laptop? ------------------------- It's financially advantageous for computer manufacturers to claim that their laptops are as powerful as traditional desktop computers; it encourages people to buy laptops, which feature lower-specs for higher prices. These claims seem true at first glance. After all, if someone is editing a video clip on a laptop then the marketing must have been right. The truth, of course, is that laptops have lower-specs than a desktop that is even a fraction of its price, so for the same amount of money as one might spend on a good laptop, an amazing desktop could be purchased. And for every professional artist you see working on their masterpiece on a laptop in either a glossy magazine ad or in a trendy cafe, there are ten real artists working on actual productions at their desktops. If it is horsepower you seek, then you should invest in a desktop machine. If you are more flexible with how much raw power you have at your immediate disposal and value mobility, then obviously a laptop is probably a better choice. B.3. Building Your Own System, and Ideal Specs ------------------------------------------------ Building your own system from parts is the best possible option you have in terms of finances and control. Useless parts are not forced upon you, you can achieve a perfect balance of all the different features and capabilities you need, and there always room for expansion. A computer consists of a few main parts that can be bought individually from any good computer store. You must ensure that all of the parts fit together properly, which can be tricky for beginners, but if you read the descriptions of the items carefully and match all of the part numbers and types together, then you will be able to assemble it with success. If you are unsure about what you've chosen, find an IRC server where you can chat with Linux geeks, and ask them about the parts you've chosen. Slackermedia itself maintains an open IRC channel on the irc.freenode.net network. Balancing cost with performance is obviously an eternal struggle. Keep in mind what you really want from your computer, and spend your money accordingly. For graphics and video, concentrate on the graphics card; for audio, lean toward the CPU and audio card features, and for writing, well, buy a second-hand netbook and save your money for coffee. In any case, consider purchasing an SSD drive (solid state harddrive) for your system. The performance increase is mind-boggling and a small 16gb SSD drive can easily hold the system partitions for Slackware 13.37; simply place the /home and /tmp and /var partitions on traditional harddrives. In every case, try to re-use parts from other computers; if you can recycle an optical drive, save yourself the expense. Find an old keyboard you can use, pull a network card from a discarded neighbour's computer. Offer to rescue a poor Window's users data in exchange for the parts of their dead computer. Building your own box makes re-directing cashflow quite easy! The State of Multimedia on GNU Linux ==================================== Multimedia on GNU Linux is still a developing field. On one hand, there are distinct advantages to creating multimedia on GNU Linux, while on the other there are compromises one must make. Compromises must be weighed against benefits and since these are probably the most influential factors in deciding whether to switch your production to an exclusive GNU Linux solution, they will be examined first. The correct method of converting to GNU Linux will be to convert one application at a time, and to audition each application as you would audition any other new software or piece of hardware. In people's haste and excitement to change to GNU Linux, or in an evangelist's haste to encourage people to change, there is often the assumption that the "equivalent" Free Software solution to a creative process is equal to its non-free counterpart. This is as realistic an expectation as blindly assuming Sony Vegas is a drop-in replacement for Final Cut Pro. Without proper evaluation, you would never make such an assumption, so you should not make the assumption for Free Software. Introduce one application or set of applications, test them, evaluate them, and if you see that they are equal to or better than your current solution, make the replacement final. It is important to keep in mind the requirements of an application and the conveniences of an application. While, for instance, your current application may have a nicer Type Tool than the free software replacement, but you never use that application to do Type Setting, then it can be assumed that future improvements to free software will eventually fix the Type Tool but there will be no need to delay making the replacement final if in all other aspects the application is equal. If, however, the free software lacks a vital feature such as realtime previews of effects and you cannot work without the feature, then you will probably be wiser to delay making this replacement. Learning Curve If you have already an established workflow with a set of standard tools that all members of your production team know, then changing the toolset to a GNU Linux workflow will bring production to a halt for an inordinate amount of time as everyone learns the new tools and learns how to integrate all of these tools into a new workflow. Convenience Similar to a learning curve, the convenience of existing software solutions should not be discounted. If your existing workflow works well for you now, it is probably largely because of your investment of fine-tuning it such that the applications more or less the way you want them to work (to the extent that blackbox proprietary software can be fine-tuned) and that they more or less work together the way you need. Implementing a new set of software will require a new investment and will mean temporarily forsaking certain conviences that you and your team may take for granted now. Conventions There are conventions that different vendors build upon over time. These are unique ideas or ways of doing things that, if used exclusively, become the accepted way things are done. If a user is then presented a new way of doing the same task, it seems wrong to them. Conventions like this should not be adopted as the "right" way of doing something, but that if the tendency among most users. If you replace an application with even a drastic update of the same application, much less a Free alternative, which changes a convention, it becomes an inconvenience to the user and slows production. Keep this in mind and make sure that you and your team is prepared to learn new conventions and approach problems with sometimes a drastically different approach. Compatibility If your workflow relies on sharing detailed final edits, elaborate graphics with layers, masks, effect layers, or paths saved in non-standard form, and so on, then changing to an application that may not be able to fully support all of those proprietary features may not be wise. Continuity Since so many production teams do use very specific proprietary solutions for their work, there has arisen a kind of mass-produced "look" to many creative works. A classic example is the Adobe solar flare, which was distinctively over-used in artwork spanning from still photography retouched in Photoshop and motion photography retouched in After Effects. After a few years it had proliferated to such a degree that even the most casual of audiences could spot this cheap effect. The opposite side of this pre-fabricated coin is that there is an aesthetic comfort-level that can be satisfied by using old, familiar effects such that your work (or your clients's work) looks like all the other work being produced. It ensures a level of comfortable conformity that you or your clients may not be comfortable either giving up. While many Free Software solutions will have very good emulations of all the most common effects, it may be just different enough to substract from the comfort of precise conformity. There may also be a technical need to have the exact same effect; if you are trying to match something that was produced entirely in Photoshop with all the classic Photoshop bevels, shadows, light effects, and so on, then the best way to duplicate it may just be to re-produce it in Photoshop. if these tasks are a significant portion of your production needs, then changing to CinePaint or Gnu Image Manipulation Program (GIMP) may be unwise and counter-productive. Ubiquity Pragmatically speaking, proprietary applications are the de facto standard in many areas of the creative industry. This means that however miserable you may be, you are not alone. Free Software will alleviate some of the arbitrary blockades that applications impose, but they will introduce new issues certainly, and you will still struggle with creative decisions that no software can make for you. In other words, you may still find yourself miserable, but without the company. Conversely, tutorials, instructional videos, and ebooks about working with Free Software applications proliferate both online and in stores, so the support structure does exist; it's just a different one than the ones you already have bookmarked. These are all valid concerns and depending on the urgency and importance of changing your existing production to Free Software, they each may influence your decision to different degrees. Now that you have seen the reasons not to change your studio to a Free Software studio, the rest of this chapter will largely be about why you should take the steps now to convert every element of your production workflow, from the web browsers to the office applications to video editors to audio mixers to graphic workstations to the Operating System itself, to a Free Software solution based on Slackware GNU Linux and why the initial inconveniences of converting to Free Software are outweighed by its many benefits. C.1. What Free Software Is Not -------------------------------- A typical expectation of many computerists investigating Free Software is that popular Free Software terms are "free versions" of a software term they used previously. It is, after all, common online to see popular Free Software presented as proprietary replacements; ie, "GIMP, the free version of Photoshop", or "Inkscape", the free version of Illustrator", and so on. Such comparisons do neither Free Software or the proprietary software "equivalents" justice, since it ignores the fact that, for instance, Inkscape is a masterpiece of programming, a practical, efficient, magically intuitive, and infinitely powerful application, and that Illustrator is an albatross of bloated, confusing, over-thought and under-designed excuse for a professional artist's platform that has skillfully and effectively fooled an entire industry into believing it is the only solution to the very simple task of creating vector graphics. The fact is that Free Software does not need to replace any software. It does not need to replicate how other software terms handle tasks, or design their interfaces. Free Software has the rare luxury of being able to re-invent paradigms, explore new methods of working, or to choose not to do something that other software packages do. Free Software is a diverse and self-sustaining system. It is free to join, and even free to contribute, but it is not a movement centered around copying what already exists and ensuring that no-one need ever pay for software or software-related services again. It's a movement dedicated to progress and innovation, to code that is free to use and modify, and re-distribute. If you want a system that is monetarily free and is an exact duplicate of proprietary systems, then use proprietary software with "illegal" licenses. This will ensure that you are not paying for the software or support, and remain entrenched in the proprietary model. If you want control over your data, your environment, and you wish to use a self-sustaining, non-consumer model, then investigate Free Software. C.2. Benefits of Free Software Multimedia ------------------------------------------- Free Software has many benefits which eventually any production studio has a right to profit from in their own workflow. It is not uncommon for Free Software enthusiasts and evangelists to speak very highly of anything that bears the mark of Free Software, which is not the point or intent of this chapter. However, Free Software, and the philosophy that is its driving force, does have a number of advantages over the idea behind Proprietary "black box" software solutions. This is no secret, which is why in the high-dollar special effects world GNU Linux is an important and major platform. This section examines the benefits that industry leaders have already recognized, and hopefully the rest of the industry will see soon. Modularity A deceptively simple concept, the fact that unix-based Free Software systems are written religiously with modularity in mind is a powerful foundation for an entire philosophy that expands into even defining production workflow. By keeping the software components small and self-reliant, unix programmers are able to isolate small problems, solve them efficiently with small programs such that it is done quickly, taking up few system resources, and with less potential for failure. For larger problems, many of these smaller programs can be strung together to create a new solution consisting of pre-existing and known-working programs. Improved Troubleshooting When processes do fail, it is often unclear to the multimedia artist wether the root of the problem is the media itself, the program being used to process or effect it, a plugin, or some combination thereof. Blackbox systems are just that: black boxes into which the user cannot see, and for fear of being copied or revealing "trade secrets" these kinds of applications provide very little output when errors do occur, fearing that a descriptive error message will indicate inner processes that they wish to keep secret. Worse still, companies often feel that imperfections in software reveal problems in with their product, and since clients have paid thousands of dollars for that product, it does not financially benefit the company to admit to any imperfection. A company cannot very well support an imperfection that does not exist. Free Software has no such concern, and when a process fails, Free Software is able to tell the user exactly why it has failed. Depending on the technical proficiency of the user, the errors may or may not be helpful, but they might be very helpful to their techinical support. It is the difference between receiving "Error 3639" but having no reference to what Error 3639 is, and receiving the error "xvid-devel not installed" where the solution is most likely obvious to even the least technical of users. Furthermore, Free Software applications seek to find errors and invite their users to report bugs when they have been found on public bug reporting sites. Free Software does not hide problems or solutions; they openly seek both. Scripting The modularity of Free Software applications often provides a great flexibility in how the programs are executed. Many Free Software programs can literally be run entirely from a text command prompt, without ever requiring that a user interface be loaded. This means that complex, multi-step, and long processes may be scripted and executed automatically. This goes well beyond simple Action Scripts and Batch Files, and enables the user to walk away from the office secure in the knowledge that the processes will be run, and that the status of the processes can be checked remotely at any time. In fact, it can even be scripted so that a process emails the user when it has been completed successfully. Customization Vendors providing expensive, locked-down software spend a lot of time and money on establishing a unique brand and convention for their product. As such, their software must always identify itself clearly so that every time it is run, it is also an advertisement for itself. If you sit down in front of Photoshop, Adobe wants you to know that it is Photoshop. If you look over someone's shoulder and they are using Final Cut Pro, Apple wants you to know that it is Final Cut Pro. It is a "franchise" mentality; the company must ensure that their product and logo is recognized, that the interface remains the same across all implementations so that to sit in front of one workstation is basically the same as sitting in front of another. While this seems sensible on one level, it is completely restrictive in other ways. If the user wishes to change the way they use an application, most blackbox programs are very limited in their ability to be customized. They would rather the user conform to the company's way of doing things, not break the branding of their product and make the application become foreign to other potential customers. Free Software has no such agenda. If a user wishes to change how they interface with an application, the user has complete freedom to do so. They may change the look and feel of an application, the keyboard shortcuts, potentially even more beyond that (depending on the technical resources available). Other users may not be familiar with the way such a "hacked" version of the application works, but a standard configuration of that same application is usually an easy thing to create by making a new user account with the default configuration of the application. In this way, you gain the flexibility of customizable applications but do not lose the advantage of standardized interfaces. Participatory Culture Free Software exists because people, programmers and end users alike, use and maintain it and contribute to it. While proprietary software companies do generally encourage a community around their products, the community involvement is entirely superficial, since the community has no real say in the product's direction or purpose. Free Software is quite literally built by its community; you needn't be a programmer to help build Free Software, you simply need to participate. Progressive Almost any technical group can be argued to be "progressive" or "innovative" in one way or another, but Free Software excels in a number of realms that are of particular interest to multimediaticians. Delivery When it comes to getting content to as many people as possible, Free Software sets the pace to the extent that traditional vendors simply cannot compete. Peer-to-peer file sharing, bit torrent, free video codecs taht will compile and install on every operating system imaginable, open audio codecs, generic vector formats with animation, open web standards for all kinds of content delivery to all kinds of devices, and so much more. The ability of Free Software to proliferate content is unmatched, oft imitated, and sometimes downright reviled. Networking The internet itself is based upon open standards developed for large UNIX data centers, and largely "runs", essentially, Linux. The syntax and structure of URLs that people use every day to get to their favourite websites are simply ways of expressing locations in a unix networked filesystem. Technologies such as HTTP, FTP, ssh, ssl, and a dozen others that few people really think about are in fact very mundane and common to unix and Linux users, and yet they have each revolutionized the level of communication across the globe. Other operating systems use these technologies but they were and are developed on Free Software. Alternatives Free Software is known for its myriad choices. If one solution does not fit your workflow, then surely there is at least one good alternative way of getting something done. These are important not only for the user's sense of freedom, but it is important for progressive technological development. Just because one technology company might design a new system that does things one way, it hardly means that this is the only or best way. Free Software is often the driving force behind finding alternative ways, and often better ways, of achieving the same end goal as a current solution. Sometimes the alternative remains only available in the Free Software realm but frequently it becomes the motivation for improvements in a major company's product. Investment Security Software that is owned by a software vendor means that the user is entirely at the mercy of that vendor. Should the vendor decide to make drastic changes to the software, then the user is forced to change along with it. Should the vendor go out of business, then the software may disappear forever, making the user's data files suddenly obsolete. Likewise, if a production studio has designed custom scripts or plugins for a software that they use but do not own, then they are putting resources into a black box that they have no real access to or ownership over. The immediate return on investment is clear; the custom scripts or plugins make a job easier in that moment, but over the course of time these may become obsolete when the platform they are intended to run on disappears. Contrast these two scenarios: The non-Free compositing software Shake ran on Linux in special effects houses for years and allowed companies to purchase any hardware they wanted to purchase and run a Free operating system to power the application. Then Apple purchased Shake and gave users two choices: they could purchase Apple's expensive hardware in order to run Shake with a per-license fee of $500, or they could continue to run Shake on GNU Linux with a per-license fee of $5000 (sic). The Free Software package Blender, featuring a powerful compositing interface, belongs to anyone who downloads it, and they can use it on any hardware they choose and for as long as the need. No one can purchase it and put restrictions upon it, and anyone can improve and modify it to fit their needs. They can upgrade with every release or never upgrade at all. The user is in complete control. Forkable When using Free Software, the user literally owns the application, part and parcel. They are free to download all of the source code that makes the software run, and they could, if they felt it was important enough, hire a programmer to modify and improve that software to fit their exact needs. The benefit is clear; rather than sinking thousands of dollars into hardware required to run a vendor's software plus a version-specific license to use that software, a company could instead sink the same amount into modifying an existing software solution to fit their production needs, and they retain all ownership of the software and require no licensing fees and no special hardware. They are bound to no vendor and they are at no vendor's mercy. If this sounds too good to be true, or too theoretical, then consider that in fact this is precisely what companies (especially in special effects, computer animation, experimental music production, and so on) are doing today. No Agenda Free Software has no real agenda aside from (sometimes) ensuring that Free Software remains Free. This means that there are no arbitrary decisions to exclude a file format or specific competing codec or a diable a feature in order to enable that same feature in a "pro" edition of the same software. Free Software concentrates on getting the most out of current technology, and allowing the user to decide what to use, how to use it, and what to do with it. Potential While it's not something you can take to the bank, there is an enormous amount of potential in Free Software. Much of it is being developed and adopted at a breakneck speed, with exciting improvements rippling through its software selection every month. The potential for Free Software to displace the blackbox vendor-lock-in closed-source model has been frightening the established industry (and thereby pushing the industry forward) for years. The even more exciting part about this is that the more people who use Free Software, the quicker the pace will become. Conversely, proprietary software companies at some point reach a peak in their product life cycle after which they have no place to go, but the product has brand-recognition, industry respect, and is making the company loads of cash. So the company, instead of innovating in a logical direction, or to stop developing it in a useless direction, will do whatever it takes to perpetuate the brand. Not the software, but the brand. This often means radical, pointless changes to the application or its file formats (to force upgrades), left-field additions in functionality, re-structuring of how the terms are sold in relation to one another, and all the usual tricks you yourself have surely seen in your computing lifetime. Idealism There is an element in many (although not all) free software communities that champions idealistic concepts having to do with freedom of technology, of making sure that technology is accessible to everyone regardless of geographic location or wealth or upbringing, that technology should benefit first and foremost the people using it and not the companies producing it, that technology should improve quality of life not frustrate or pollute it. There can be political idealism behind it as well, such as a preference for lack of central and dictatorial control (such as a CEO) that inspires many technological decisions without regard to what effect it might have on the people using it or the world in which is being produced. And there is also a powerful sense of community, since much of the Free Software itself is being developed because individual programmers have a passion for writing code just as much as a painter loves to paint, or a singer loves to make music. This is where the arts and technology truly intersect, and a collaboration between the two communities is long overdue. C.3. Multimedia as a Moving Target ------------------------------------ Multimedia itself is an ever-changing industry, with new formats, new trends, new delivery methods, new platforms, new hardware and gear. Any toolset an artist uses for multimedia content creation is forced to update catch up to the industry's requirements. Free Software sometimes does this astonishingly quickly, and other times lags behind, just as any other platform does. Free Software is no more a "magic bullet" than any other software package, but for those who value technological advancement, equality, freedom, solidarity, and community, Free Software offers powerful rewards, and a powerful platform upon which to build a multimedia studio. Revision History ================ Revision History Revision 0-2 Tue 23 2011 Seth Kenlon, Klaatu la Terible finished updates for Slackware 13.37, including a port of screenplay.el, some new slackbuilds, a publican install hack, and a lot more Revision 0-1 Wed Feb 23 2011 Seth Kenlon, Klaatu la Terible ported book to publican schemas, much prettier Revision 0-1 Wed Feb 23 2011 Seth Kenlon, Klaatu la Terible ported book to publican schemas, much prettier Revision 0-0 Wed Jan 15 2011 Seth Kenlon, Klaatu la Terible official release Index ----- F feedback contact information for this manual, We Need Feedback!