Ray/Charlie,<br>I know you still need some documentation. I posted this on the Ubuntu forums in the Plymouth PPA Thread thats been started ( <a href="http://ubuntuforums.org/showthread.php?p=6892088#post6892088">http://ubuntuforums.org/showthread.php?p=6892088#post6892088</a> ) to help others get involved with the project. Towards the bottom, I figured out how to get a single plugin without neccessarily relying on the rest of the full source, so a one-off makefile shouldn&#39;t be too hard now that I got that working. Most of the info here I collected from the mailing list and my own experimentation. Maybe some of this could go into a readme.ubuntu file?<br>
<br>I&#39;m also planning on making PHENIX (Plymouth Hyper-Extension for *NIX), a plugin creator/switcher/tester. The script below will eventually be part of it. The name deriving from mythology as Plymouth is rising in place of RHGB and Usplash. Extension being somewhat synonymous with plug-in.<br>
<br>Also I do have some more questions:<br>1) I thought I read somewhere that plugins could be combined. By this, I&#39;m assuming that they need to be constructed as separate .cpp/.h files so the creator can pick and choose what to include? Or is there something else in mind later down the road for Plymouth?<br>
2) I thought I read somewhere that OpenGL could be integrated into plymouth. Are there any examples or did I just overlook something. If OpenGL could be used, technically, couldn&#39;t any other lib such as SDL be used also? What limitations are there on other libs?<br>
3) I&#39;m still learning the plymouth API bit by bit. Is there an easy way to poll for keyboard strokes without invoking a prompt? I know the text plugin has something like this but the function is empty? Think Galaxan Plymouth (I hope this doesn&#39;t sound too odd lol but this would be more entertaining at bootup).<br>
4) What about sounds?<br><br><br>Thoughts? Errors? Typos? Bueller?<br><br>-----------------------------------------------------<br><br>[SIZE=&quot;6&quot;][b]Jaunty Plymouth PPA Plugin Development Tutorial[/b][/SIZE]<br>[b]1)[/b] Make sure you have the proper driver installed for your graphics card. <br>
The NVIDIA Blob 180.37 appears to work fine with kernel 2.6.28-9 for 8xxx series GPU&#39;s.<br><br>[b]2)[/b] Create a file in the &quot;/etc/apt/sources.list.d&quot; directory called &quot;PlymouthPPA.list&quot;<br><br>[b]3)[/b] Open up PlymouthPPA.list and add the following lines to it:<br>
[code]<br>## PPA for Plymouth Developers<br>deb <a href="http://ppa.launchpad.net/plymouth-dev/ppa/ubuntu">http://ppa.launchpad.net/plymouth-dev/ppa/ubuntu</a> jaunty main<br>deb-src <a href="http://ppa.launchpad.net/plymouth-dev/ppa/ubuntu">http://ppa.launchpad.net/plymouth-dev/ppa/ubuntu</a> jaunty main<br>
[/code]<br><br>[b]4)[/b] Paste the following text into a file and save it as PlymouthPPA.key (This is for package authentication)<br>[code]<br>-----BEGIN PGP PUBLIC KEY BLOCK-----<br>Version: SKS 1.0.10<br><br>mI0ESZry+wEEALgDkQimObkreCwcP37Cqtn/UFSCFn4/T6yG3+x58O3fQP8Iu7O7krAK9UuC<br>
VqemCdhqIz1SVHsKQXa6uCtMRW0Nx0OD7F1kxH9mNwNCXe52zD0ppRsK//Gjj+MCkZV3Thi1<br>0o2R1Upj6GeAxkvF7Q/5IxRMFWWpUjLShnD3YrhfABEBAAG0JUxhdW5jaHBhZCBQUEEgZm9y<br>IFBseW1vdXRoIERldmVsb3BlcnOItgQTAQIAIAUCSZry+wIbAwYLCQgHAwIEFQIIAwQWAgMB<br>
Ah4BAheAAAoJENLY63m8yx9XV9IEALBEHP+5M+mzzUIbW8WWmYrs/zsKc74kMQ2/M1V0/+Jz<br>jUDKAaDO7IO/spuOwrLldPEyVeJaadhYkuwDUi3/75P6wO56n/NdZxAE4J8eDdurOPTF1OAn<br>pNVpwhf/3dcDOtU2OmyPnQ/8xc9zo4sXqVj3nfl6PK726GOCpsts6vcp<br>=zUTq<br>
-----END PGP PUBLIC KEY BLOCK-----<br>[/code]<br><br>[b]5)[/b] Add the key either through synaptic/adept or with the terminal:<br>[code]<br>sudo apt-key add PlymouthPPA.key<br>[/code]<br><br>[b]6)[/b] Open up synaptic/adept or a terminal and update your package list and install these packages:<br>
[code]<br>sudo apt-get update<br>sudo apt-get install git-core build-essential g++ gcc make automake autoconf libcairo-dev libtool libpango1.0-dev libgtk2.0-dev libgtk2.0-0  <br>sudo apt-get install plymouth libplymouth2 libplymouth-dev<br>
[/code]<br><br>[b]7)[/b] Open up your /boot/grub/menu.list and append vga=XXX to your kernel line, where XXX is the number for your desired resolution. <br>If you don&#39;t know what this should be, you can use vga=ask. If your driver supports KMS, then this step is probably completely unneccesary.<br>
<br>[b]8 )[/b] At this point, you should have plymouth installed and can reboot to see the wacky bizcom/fedora hack. So reboot and when you&#39;re back you can install the plymouth source so you can improve it or create plugins.<br>
<br>[b]9)[/b] Create a directory somewhere that you plan to download the source to. This can be /home/username/plymouth or whatever location you desire. <br><br>[b]10)[/b] Open up a terminal, cd to the plymouth directory you just made, and git the source code :)<br>
[code]<br>git clone git://<a href="http://git.freedesktop.org/git/plymouth">git.freedesktop.org/git/plymouth</a><br>[/code]<br><br>[b]11)[/b] Now go to the newly created plymouth directory and it will have a file called autogen.sh in it. In the terminal type: <br>
[code]<br>./autogen.sh --prefix=/usr --with-logo=/usr/share/plymouth/bizcom.png<br>[/code]<br>replacing bizcom.png with something a little nicer if you like.<br><br>[b]12)[/b] Now if you didn&#39;t get any error messages, you should be ready to type:<br>
[code]<br>make <br>[/code]<br>from there, you can &quot;sudo make install&quot; if you wish but you&#39;re probably better off not doing so unless you are developing for the plymouth library rather than a plugin. If you just want to make your own plugin, then keep reading...<br>
<br>[b]13)[/b] Browse to the &quot;/yourplymouthgitdirectory/plymouth/src/plugins/splash/plugin-name&quot; directory and you will notice that there are Makefiles in each splash directory. Open a terminal here and type:<br>
[code]<br>make<br>[/code]<br>on a successful compilation of the plugin, you will notice a new directory called .libs (if you can&#39;t see it, then enable viewing of hidden files and folders). This directory is where the .so plugin file is stored. To install the built plugin, type:<br>
[code]<br>sudo make install<br>[/code]<br>in the plugin directory where you made it.<br><br>[SIZE=&quot;5&quot;][b]How to change the default plugin for bootup[/b][/SIZE]<br>[code]<br>sudo /usr/sbin/plymouth-set-default-plugin spinfinity<br>
[/code]<br>replace spinfinity with whatever plugin name you want to use. For instance, replace spinfinity with solar.<br><br>[SIZE=&quot;5&quot;][b]How to test a plugin without rebooting[/b][/SIZE]<br><br>If you want to test the plugin without having to restart the machine, save this script and run it in a terminal:<br>
sudo sh phenix-test-plugin.sh [TimeInSeconds]<br>[code]<br>#!/bin/bash<br># Phenix - Plymouth Hyper-Extension for *NIX<br># Plugin Testing Script<br># Copyright (c) 2009 Jonathan Greig (red_team316)<br>#<br># This program is free software; you can redistribute it and/or<br>
# modify it under the terms of the GNU General Public License<br># as published by the Free Software Foundation; either version 2<br># of the License, or (at your option) any later version.<br>#<br># This program is distributed in the hope that it will be useful,<br>
# but WITHOUT ANY WARRANTY; without even the implied warranty of<br># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the<br># GNU General Public License for more details.<br>#<br># You should have received a copy of the GNU General Public License<br>
# along with this program; if not, write to the Free Software<br># Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.<br><br>echo &quot;Testing Plymouth Plugin...&quot;<br>init 3                             # change to runlevel 3 (typical runlevel for text console login)<br>
chvt 8                             # switch to virtual terminal 8<br>plymouthd                          # start the plymouth daemon<br>sleep 1                            # wait a second <br>plymouth --show-splash             # show splash while we...<br>
sleep &quot;$1&quot;                         # wait X amount of seconds before quitting<br>plymouth --quit                    # stop plymouth<br>init 5                             # change to runlevel 5 (typical runlevel for desktop login)<br>
chvt 7                             # switch back to the desktop<br>echo &quot;Done.&quot;<br>[/code]<br><br>[SIZE=&quot;5&quot;][b]The proper way to install a plugin from source[/b][/SIZE]<br>In the &quot;/yourplymouthgitdirectory/plymouth/src/plugins/splash/plugin-name&quot; directory type:<br>
[code]<br>make<br>sudo make install<br>sudo /usr/sbin/plymouth-set-default-plugin the-name-of-the-plugin<br>sudo /usr/libexec/plymouth/plymouth-update-initrd<br>[/code]<br><br>[SIZE=&quot;5&quot;][b]How to make a single plugin[/b][/SIZE]<br>
On Jaunty, with the PPA packages and git source installed, you can copy one of the plugin directories to somewhere else on your drive and work on it from there.<br>[code]<br>pkg-config --cflags plymouth-1<br>[/code]<br>returns &quot;-I/usr/include/plymouth-1&quot;, so you will need to add the extra ply/ or plybootsplash/ in your #include lines. Otherwise you can simply specify them manually at the terminal as such:<br>
[code]<br>gcc -fPIC -I/usr/include/plymouth-1/plybootsplash -I/usr/include/plymouth-1/ply `pkg-config --libs plymouth-1` -shared -o plugin.so plugin.c<br>[/code]<br>You will need to remove the include &quot;config.h&quot; from your plugin. Since you&#39;re working separate of the git source, it isn&#39;t really needed, but it&#39;s still good to take a look at config.h to familiarize yourself with whats in there.<br>
You will also need to add several #defines with the headers at the top of the plugin and manually specify the paths to the required files there. If you are wondering what these #defines originally were, then look at the Makefile <br>
that was generated for the splash in the git source. Once you that done, your splash should build with no problems. plugin.so will be generated in the same directory. You can now manually transfer the .so file to <br>/usr/lib/plymouth/whateveryourpluginnameis.so and the graphics folder to /usr/share/plymouth/whateveryourpluginnameis<br>