Compare commits
463 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
5aa73fb1af | |
|
|
bc5a770d3f | |
|
|
a3bfaccea1 | |
|
|
f02e73e522 | |
|
|
56dc040397 | |
|
|
8678d5f4b5 | |
|
|
b588256382 | |
|
|
81dfba7480 | |
|
|
e552cf09c6 | |
|
|
f43da7b5cf | |
|
|
82555a7ec4 | |
|
|
8db5cb64a2 | |
|
|
c405536126 | |
|
|
9774c4dd1b | |
|
|
7b243f9781 | |
|
|
ecdfe750c8 | |
|
|
103e1eeb13 | |
|
|
ece2224e18 | |
|
|
0010fcde7e | |
|
|
a45ff59376 | |
|
|
2c2e73992f | |
|
|
9e41cd8253 | |
|
|
31c1e64cec | |
|
|
fcc1c91b2b | |
|
|
32afaf7f89 | |
|
|
7bca13b9a6 | |
|
|
5f0ccd3362 | |
|
|
b6569a3d0b | |
|
|
89c08c297a | |
|
|
98cd8e51b4 | |
|
|
7709174535 | |
|
|
73d605d9ad | |
|
|
72de891a3d | |
|
|
05af29f8d1 | |
|
|
93cbaf8c67 | |
|
|
8be589217e | |
|
|
5a06b74174 | |
|
|
6edbe53252 | |
|
|
1257303ef3 | |
|
|
e365ab8859 | |
|
|
41f195da50 | |
|
|
809dc08543 | |
|
|
5e288baafe | |
|
|
0548b30e81 | |
|
|
8852a1062d | |
|
|
95656a4eff | |
|
|
afe634c46a | |
|
|
0d9256ee6a | |
|
|
e38da35316 | |
|
|
0e4c7bf8a3 | |
|
|
8432a942e9 | |
|
|
c7055b1ad1 | |
|
|
4f813d4e87 | |
|
|
a5e44dcc89 | |
|
|
d27460d958 | |
|
|
33cf295438 | |
|
|
ab98b4b526 | |
|
|
d877af9e8b | |
|
|
718a39ccc3 | |
|
|
05df6761f5 | |
|
|
81f424db2f | |
|
|
4cbed3fa34 | |
|
|
76e0c973c0 | |
|
|
e84f3852f0 | |
|
|
ca41faea5b | |
|
|
b137deed92 | |
|
|
cb7ecf8b96 | |
|
|
9cb6a19582 | |
|
|
52c9f07ff4 | |
|
|
abcc1a888d | |
|
|
77907d4abe | |
|
|
32f35a745d | |
|
|
bfba8e64fe | |
|
|
6df62e20b2 | |
|
|
78661a48f9 | |
|
|
d775cf882f | |
|
|
6b463c19c5 | |
|
|
ef233a3d45 | |
|
|
d65b4213dc | |
|
|
1b09965e05 | |
|
|
6669a3cb04 | |
|
|
4e28ff7530 | |
|
|
91058aaafc | |
|
|
c186696b93 | |
|
|
0cb17f9c67 | |
|
|
9d0477876d | |
|
|
da623a0390 | |
|
|
22f2493769 | |
|
|
1e76881664 | |
|
|
af5288c7af | |
|
|
15c130f76a | |
|
|
7cd51df455 | |
|
|
a396c0f5d0 | |
|
|
868d1aac34 | |
|
|
3149f63a99 | |
|
|
edb710c1b3 | |
|
|
5a090f6ac4 | |
|
|
263216ab42 | |
|
|
32f645280c | |
|
|
19320ddaa3 | |
|
|
78abfa1fd4 | |
|
|
a015d67205 | |
|
|
ad1aa1c300 | |
|
|
1d96e84ada | |
|
|
879212b57b | |
|
|
3fd5c6b4de | |
|
|
62e4ef0ffd | |
|
|
7b5c400864 | |
|
|
7c102af221 | |
|
|
1e3fdc1a8b | |
|
|
8971fdb6ca | |
|
|
3eca7a4f07 | |
|
|
56399ef6b9 | |
|
|
7f98976f9d | |
|
|
d323e53782 | |
|
|
25ba737f63 | |
|
|
a662e1b35e | |
|
|
e38a548377 | |
|
|
4655beb5d5 | |
|
|
708c8be176 | |
|
|
32d24f6e63 | |
|
|
8bf62ad5c6 | |
|
|
61a4adfbab | |
|
|
c08530d26a | |
|
|
7d986692ce | |
|
|
f3a44517f9 | |
|
|
2aae7d3330 | |
|
|
55b35b4276 | |
|
|
6a64a5914d | |
|
|
c28af0a10d | |
|
|
f2010c0714 | |
|
|
ed2d6e13ec | |
|
|
ddca39f917 | |
|
|
f5de004395 | |
|
|
bf2c73bb0f | |
|
|
8c7fa04537 | |
|
|
68c10a0bfa | |
|
|
0b31b80c36 | |
|
|
ba37ee2833 | |
|
|
10327c8c1c | |
|
|
a19ebe6b56 | |
|
|
b1ccfb0fce | |
|
|
c153975526 | |
|
|
82a84bd22c | |
|
|
6a917e8d9d | |
|
|
761edab4ee | |
|
|
739c96d096 | |
|
|
14e8bf3b40 | |
|
|
1c16b518ea | |
|
|
104a7384a1 | |
|
|
3a3c5c867a | |
|
|
5e3e15e959 | |
|
|
4d06906e95 | |
|
|
2f5f18b47c | |
|
|
f868d18dc1 | |
|
|
6532e6f566 | |
|
|
0682d53c1f | |
|
|
73b1100fbc | |
|
|
3599b99ad2 | |
|
|
912e6f8f5f | |
|
|
c5eabd4e3c | |
|
|
add1fbd465 | |
|
|
30efd94175 | |
|
|
da725ee880 | |
|
|
b407aed085 | |
|
|
d7a44bc45f | |
|
|
a22ad0de6a | |
|
|
bdcf158d2e | |
|
|
f0fc8f5255 | |
|
|
443a0fcdd2 | |
|
|
8ae5d3186f | |
|
|
5e0099b2ff | |
|
|
9d2a87d912 | |
|
|
61b125cb8b | |
|
|
4d00518f4f | |
|
|
5bf6da2e1e | |
|
|
dab21b93ae | |
|
|
860bdad3ca | |
|
|
51b70c7139 | |
|
|
f047bede59 | |
|
|
9a0f1c1ea7 | |
|
|
cb0039761a | |
|
|
1093026183 | |
|
|
96eecc9058 | |
|
|
08c52c2854 | |
|
|
ac540746dd | |
|
|
5d06eb0335 | |
|
|
c5d74b186c | |
|
|
8430af7327 | |
|
|
f3d8159cfa | |
|
|
dc2c82afc3 | |
|
|
3fceef5583 | |
|
|
25f74c4c0a | |
|
|
382422d39b | |
|
|
b4bef3b878 | |
|
|
0b575ddd20 | |
|
|
225642def5 | |
|
|
e2bd40a138 | |
|
|
08a846f2a7 | |
|
|
4c24e07a52 | |
|
|
9630ecef96 | |
|
|
2441cd20a2 | |
|
|
8840c0f5e3 | |
|
|
6e18e2cb4c | |
|
|
0ce676fca9 | |
|
|
509c99accd | |
|
|
2c0cb2e1f0 | |
|
|
fad74efc08 | |
|
|
52235e5e89 | |
|
|
ba152c129e | |
|
|
d79a197683 | |
|
|
08bbab7ce9 | |
|
|
19a870f0ab | |
|
|
3a1143784a | |
|
|
705413b33a | |
|
|
842ccc1cda | |
|
|
373fb7fc7f | |
|
|
7dcb58b501 | |
|
|
623046ab67 | |
|
|
cddddeb7d5 | |
|
|
a2d4cf9e6e | |
|
|
6a7683f34a | |
|
|
5de4405b68 | |
|
|
c5efc53848 | |
|
|
263912d0ce | |
|
|
dc5adcf05b | |
|
|
371657ce94 | |
|
|
0af58652d2 | |
|
|
4954b169f1 | |
|
|
1c3662f24a | |
|
|
6361bfb52b | |
|
|
04977547aa | |
|
|
446b1b2dd2 | |
|
|
faca2b364d | |
|
|
6da62479e4 | |
|
|
e74cc2e6a9 | |
|
|
88e343b63b | |
|
|
e9076adc5b | |
|
|
9afc5451af | |
|
|
f7424081f2 | |
|
|
dc4c634ebd | |
|
|
1659ecfa9c | |
|
|
b8368a51b6 | |
|
|
6c3bf050e6 | |
|
|
8e421253c2 | |
|
|
e3e714b35d | |
|
|
8072176315 | |
|
|
5f41e205ef | |
|
|
b927395a5d | |
|
|
cc03c1d16c | |
|
|
93f2d65471 | |
|
|
f0e7e31732 | |
|
|
3cea731b77 | |
|
|
4249a32039 | |
|
|
d292f63882 | |
|
|
6ad156bf96 | |
|
|
f0f3f9f852 | |
|
|
5b5f37692a | |
|
|
3a15d6b876 | |
|
|
402df56859 | |
|
|
855a64bfd5 | |
|
|
2421aba595 | |
|
|
6e3ec50c36 | |
|
|
09cb84bda4 | |
|
|
46cecc778a | |
|
|
3ccd071367 | |
|
|
ee75cbc8cc | |
|
|
f4083d292b | |
|
|
c912258000 | |
|
|
47b7a0a2e3 | |
|
|
4865f107f9 | |
|
|
3b7ef06d01 | |
|
|
0023b1b495 | |
|
|
d922695c6f | |
|
|
7bc9131d9a | |
|
|
13ca2cdeaf | |
|
|
2d1ef09922 | |
|
|
7696013557 | |
|
|
087eb008e0 | |
|
|
5ebb97faf5 | |
|
|
c01b2d1f87 | |
|
|
3b79a0a710 | |
|
|
d092a730ee | |
|
|
88f1d94871 | |
|
|
d3392d9e6e | |
|
|
2ecbf6bbe3 | |
|
|
2d82b0233a | |
|
|
cc8d4c7d4f | |
|
|
06b4385e5c | |
|
|
1a4fab456c | |
|
|
5c6d5d810b | |
|
|
361c5930b1 | |
|
|
0dde33dd64 | |
|
|
25a7bab60d | |
|
|
be70b4cc80 | |
|
|
ce19462ccd | |
|
|
d57b4ca243 | |
|
|
193e039233 | |
|
|
fd27c2c569 | |
|
|
e8783fe82d | |
|
|
cf2b7f38fb | |
|
|
83918bf463 | |
|
|
52bb737ff9 | |
|
|
4ad640dcbb | |
|
|
345243b7b4 | |
|
|
a3c294e416 | |
|
|
75b6c2d320 | |
|
|
020b75e973 | |
|
|
e275886e82 | |
|
|
92252edfc9 | |
|
|
82d748fdb8 | |
|
|
26bbb6e296 | |
|
|
81a442d775 | |
|
|
bef2665696 | |
|
|
eb5c96f5b2 | |
|
|
c0f023998c | |
|
|
2cb5f629f4 | |
|
|
911d425e79 | |
|
|
1d00fdc0ba | |
|
|
f27a0e7dba | |
|
|
5fcc92efab | |
|
|
b8355e1e6f | |
|
|
d7ac2867a7 | |
|
|
479691226e | |
|
|
75e5a49b8e | |
|
|
9655869004 | |
|
|
b3d4c1f9b1 | |
|
|
ed7524050d | |
|
|
3f92d8d653 | |
|
|
047fe98c80 | |
|
|
decea6a215 | |
|
|
210abb4bfb | |
|
|
9991310325 | |
|
|
9d56cc6b55 | |
|
|
c883f92b53 | |
|
|
7918712924 | |
|
|
827e237191 | |
|
|
5bea147697 | |
|
|
b3ea9a215a | |
|
|
771fafb2e6 | |
|
|
84fe77c2b2 | |
|
|
389c34e7e4 | |
|
|
b489ee9622 | |
|
|
7800f8530e | |
|
|
6eb14cd603 | |
|
|
fed1bd8781 | |
|
|
436e02aa49 | |
|
|
84ead7218f | |
|
|
7b938853f8 | |
|
|
c1cc0b983f | |
|
|
aad4522327 | |
|
|
0e4e7c97be | |
|
|
6685231834 | |
|
|
7c73195667 | |
|
|
fbb7506621 | |
|
|
7fc97bd7ef | |
|
|
db852e6ed0 | |
|
|
61d3e8be48 | |
|
|
e36b4bde21 | |
|
|
6c868659fc | |
|
|
b71a42e4f9 | |
|
|
0ece615c0d | |
|
|
1690cea610 | |
|
|
ebe447f278 | |
|
|
b5fda18642 | |
|
|
8f02ba4c24 | |
|
|
e70d1b13b8 | |
|
|
e548ecd4b5 | |
|
|
35a639d3cf | |
|
|
d1701004e5 | |
|
|
3192c00bc4 | |
|
|
f8a345e8d2 | |
|
|
547c032754 | |
|
|
07ee535646 | |
|
|
696e0f904e | |
|
|
e93ef3b8f8 | |
|
|
122d705d91 | |
|
|
c01b87c0c8 | |
|
|
4342081e9a | |
|
|
8a23f45d14 | |
|
|
4da9f3f760 | |
|
|
afa0e36de8 | |
|
|
1492df7e90 | |
|
|
03e97aed7b | |
|
|
e1f8ae8290 | |
|
|
86a0ea3d6b | |
|
|
3ba0878518 | |
|
|
cd26bcc1a4 | |
|
|
ca561538ff | |
|
|
9768e11d6b | |
|
|
678bf8a859 | |
|
|
f841c98ce8 | |
|
|
e4afc9b6ab | |
|
|
a35ead1394 | |
|
|
66dc4d5e44 | |
|
|
10f044e3ad | |
|
|
a5a9da6783 | |
|
|
c0d8991c0d | |
|
|
d0fd0f896a | |
|
|
8d5fd1e02d | |
|
|
d28605acb0 | |
|
|
77442083b3 | |
|
|
978bccfe2b | |
|
|
fbe6fd5024 | |
|
|
efb7913a8e | |
|
|
8737f924cc | |
|
|
82dc9057c5 | |
|
|
3c6691ed3f | |
|
|
c5ab475846 | |
|
|
accf72e043 | |
|
|
e1b57bb02d | |
|
|
d8da52eff4 | |
|
|
8fba111e0f | |
|
|
889d2ef218 | |
|
|
ff6f770cac | |
|
|
9df0ace980 | |
|
|
d0d0b28b84 | |
|
|
4ce0d58c5e | |
|
|
7c1313ae04 | |
|
|
33f08bcf58 | |
|
|
bbde3c4ff0 | |
|
|
a3bd955648 | |
|
|
e0d1896a61 | |
|
|
62d6db7e53 | |
|
|
f8eedce7cd | |
|
|
b92c9eaa63 | |
|
|
ccd6cde34a | |
|
|
9c98f90992 | |
|
|
182d6449c1 | |
|
|
4a081ac1c8 | |
|
|
1d2cccdef7 | |
|
|
4e42acd0c5 | |
|
|
7fdcf1bcd2 | |
|
|
fd662790e6 | |
|
|
28917e9dfc | |
|
|
0c233c5ca8 | |
|
|
cf6024417a | |
|
|
35d6b2364f | |
|
|
d9617ee2cd | |
|
|
9489f3ba6d | |
|
|
c154e24f2f | |
|
|
b41b8a3d88 | |
|
|
4eb1378155 | |
|
|
e11484bfe5 | |
|
|
92b9fa13c0 | |
|
|
1e215402a2 | |
|
|
08b9ac91b9 | |
|
|
9b7918c127 | |
|
|
8f1eb29d85 | |
|
|
6a816ccc2e | |
|
|
54dd0a7eb6 | |
|
|
aea9727f0f | |
|
|
0d23cf0cce | |
|
|
94583b4d64 | |
|
|
caa48c22d5 | |
|
|
6901754aa4 | |
|
|
3b5fb7ea3e | |
|
|
481e8cc648 | |
|
|
8853719eba | |
|
|
2f6b450404 | |
|
|
895913cb36 | |
|
|
e4f414c68d | |
|
|
4e2f904136 |
|
|
@ -24,8 +24,8 @@ Special files in bundle filesystem structure:
|
||||||
|
|
||||||
|
|
||||||
/run/requires
|
/run/requires
|
||||||
/run/onmount.sh
|
/run/activate.sh
|
||||||
/run/onumount.sh
|
/run/deactivate.sh
|
||||||
/run/startcmd.sh
|
/run/startcmd.sh ?
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
31
README
|
|
@ -3,16 +3,30 @@ Linux Live Kit
|
||||||
|
|
||||||
Use this set of scripts to turn your existing preinstalled Linux
|
Use this set of scripts to turn your existing preinstalled Linux
|
||||||
distribution into a Live Kit (formely known as Live CD).
|
distribution into a Live Kit (formely known as Live CD).
|
||||||
|
Make sure to extract and use it on a posix-compatible filesystem,
|
||||||
|
since it creates some (sym)links and such.
|
||||||
|
|
||||||
* Before you start building your Kit, edit the file ./.config
|
Note:
|
||||||
|
|
||||||
|
* Store Linux Live kit in a directory which is not going to be included
|
||||||
|
in your live distro, else it would be copied to it. Best practice is to
|
||||||
|
make a directory such as /a and put these scripts there.
|
||||||
|
Be warned, if you put it to /tmp, some distros may erase it on reboot.
|
||||||
|
|
||||||
|
* Before you start building your Kit, edit the file ./config
|
||||||
Most importantly change the LIVEKITNAME variable.
|
Most importantly change the LIVEKITNAME variable.
|
||||||
|
|
||||||
* Make sure your kernel is in /boot/vmlinuz
|
* Make sure your kernel is in /boot/vmlinuz or change the path in ./config
|
||||||
|
Your kernel must support squashfs and aufs. Debian Jessie's kernel does.
|
||||||
|
|
||||||
* You may also wish to replace boot graphics in ./bootfiles/bootlogo.png
|
* You may also wish to replace boot graphics in ./bootfiles/bootlogo.png
|
||||||
and reorganize isolinux.cfg to fit your needs (when editing the file,
|
and reorganize isolinux.cfg to fit your needs (when editing the file,
|
||||||
keep all paths in /boot/, it will be rellocated during LiveKit creation)
|
keep all paths in /boot/, it will be rellocated during LiveKit creation)
|
||||||
|
|
||||||
|
* Linux Live Kit comes with precompiled static binaries in ./initramfs
|
||||||
|
directory. Those may be outdated but will work. You may replace them
|
||||||
|
by your own statically linked binaries, if you know how to compile them.
|
||||||
|
|
||||||
* If you plan to boot your Live Kit from CD, you need to recompile
|
* If you plan to boot your Live Kit from CD, you need to recompile
|
||||||
syslinux.bin else it won't be able to boot your Live Kit from directory
|
syslinux.bin else it won't be able to boot your Live Kit from directory
|
||||||
LIVEKITNAME. There is a script prepared for you which will handle all
|
LIVEKITNAME. There is a script prepared for you which will handle all
|
||||||
|
|
@ -21,9 +35,22 @@ distribution into a Live Kit (formely known as Live CD).
|
||||||
isolinux sources, patching them using your actual LIVEKITNAME and
|
isolinux sources, patching them using your actual LIVEKITNAME and
|
||||||
recompiling. This step is not needed if you plan to boot from USB only.
|
recompiling. This step is not needed if you plan to boot from USB only.
|
||||||
|
|
||||||
|
* If you have tmpfs mounted on /tmp, make sure you have enough RAM
|
||||||
|
since LiveKit will store lots of data there. If you are low on RAM,
|
||||||
|
make sure /tmp is a regular on-disk directory.
|
||||||
|
|
||||||
* When done, run the ./build script to create your Live Kit
|
* When done, run the ./build script to create your Live Kit
|
||||||
- it will create ISO and TAR files for you in /tmp
|
- it will create ISO and TAR files for you in /tmp
|
||||||
- make sure you have enough free space in /tmp to handle it
|
- make sure you have enough free space in /tmp to handle it
|
||||||
|
|
||||||
|
* If you want to use the Live Kit on a USB you have to either
|
||||||
|
- use Windows to execute the bootinst.bat file in the $NAME/boot folder
|
||||||
|
- or use Linux to execute the shellscript bootinst.sh in the $NAME/boot folder.
|
||||||
|
|
||||||
|
* You will need the following packages to be installed:
|
||||||
|
- squashfs-tools
|
||||||
|
- genisoimage or mkisofs
|
||||||
|
- zip
|
||||||
|
|
||||||
|
|
||||||
Author: Tomas M. <http://www.linux-live.org>
|
Author: Tomas M. <http://www.linux-live.org>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
Each directory contains scripts for easier building of minimal OS installation,
|
||||||
|
also known as SLAX - Small Live Auxiliary linuX
|
||||||
|
|
||||||
|
WARNING:
|
||||||
|
|
||||||
|
You should not run this on your system since it auto-installs some packages
|
||||||
|
and removes lots of files from your filesystem.
|
||||||
|
Use only on freshly installed OS. You have been warned.
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
\l
|
||||||
|
_ ____ _____
|
||||||
|
| | / __ \\ / ____|
|
||||||
|
__| |_ __ __ _| | | | (___
|
||||||
|
/ _` | '_ \\ / _` | | | |\\___ \\
|
||||||
|
| (_| | | | | (_| | |__| |____) |
|
||||||
|
\\__,_|_| |_|\\__,_|\\____/|_____/
|
||||||
|
|
||||||
|
powered by Briq
|
||||||
|
|
||||||
|
|
@ -0,0 +1,58 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# Author: Tomas M. <http://www.slax.org/>
|
||||||
|
|
||||||
|
usage()
|
||||||
|
{
|
||||||
|
echo ""
|
||||||
|
echo "Convert directory to .sb compressed module"
|
||||||
|
echo "Usage: $0 [source_directory.sb] [[target_file.sb]]"
|
||||||
|
echo " If source_directory does not have .sb suffix and it is not 'squashfs-root',"
|
||||||
|
echo " then the source_directory itself is included in the module and"
|
||||||
|
echo " then the target_file.sb parameter is required."
|
||||||
|
echo " If target_file.sb is not specified, the source_directory is erased"
|
||||||
|
echo " and replaced by the newly generated module file."
|
||||||
|
}
|
||||||
|
|
||||||
|
P1="$(readlink -f "$1")"
|
||||||
|
P2="$(readlink -f "$2")"
|
||||||
|
|
||||||
|
if [ "$P1" = "$P2" ]; then
|
||||||
|
P2=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
SB=$(echo "$P1" | grep -o "[.]sb/*\$")
|
||||||
|
if [ "$(echo "$P1" | grep -o "/squashfs-root/*\$")" != "" ]; then
|
||||||
|
SB="true"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$SB" = "" ]; then
|
||||||
|
KEEP="-keep-as-directory"
|
||||||
|
if [ "$P2" = "" ]; then
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
KEEP=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d "$P1" ]; then
|
||||||
|
echo "Not a directory: $P1" >&2
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ "$P2" = "" ]; then
|
||||||
|
TARGET="$P1".sb
|
||||||
|
while [ -e "$TARGET" ]; do TARGET="$TARGET"x; done
|
||||||
|
mksquashfs "$P1" "$TARGET" -comp xz -b 1024K -always-use-fragments $KEEP >/dev/null || exit 3
|
||||||
|
umount "$P1" 2>/dev/null
|
||||||
|
rm -Rf "$P1"
|
||||||
|
mv "$TARGET" "$P1"
|
||||||
|
else
|
||||||
|
if [ -e "$P2" ]; then
|
||||||
|
echo "Target exists: $P2" >&2
|
||||||
|
exit 4
|
||||||
|
fi
|
||||||
|
|
||||||
|
mksquashfs "$P1" "$P2" -comp xz -b 1024K -always-use-fragments $KEEP >/dev/null
|
||||||
|
fi
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
#! /bin/bash --
|
||||||
|
|
||||||
|
# Aggrega file di pacchetti installati o aggiornati con Pacman
|
||||||
|
# dall'ultimo avvio di una distribuzione linux-live
|
||||||
|
# (cfr. https://www.linux-live.org/ ) senza persistenza attivata,
|
||||||
|
# creando un unico bundle .sb
|
||||||
|
# I file vengono letti dalla directory changes e da essa filtrati solo
|
||||||
|
# quelli appartenenti ai pacchetti di pacman.
|
||||||
|
#
|
||||||
|
# Autore: Guido Longoni <guidolongoni@gmail.com>
|
||||||
|
|
||||||
|
IFS=$'\n'
|
||||||
|
OUTLST="/tmp/added_files_$$.lst"
|
||||||
|
CACHEDIR=$(sed -n -e '/^[[:space:]]*CacheDir/s|^[^=]*=[[:space:]]*||gp' -e 's|[[:space:]]*$||g' /etc/pacman.conf | head -n1)
|
||||||
|
OUTDIR="/tmp/sb_$$"
|
||||||
|
OUTFILE="$OUTDIR".sb
|
||||||
|
CHGDIR=$(realpath $(mount | sed -n -e '/squashfs/s|.* on \([^ ]*\)/.*|\1|gp' | head -n1)/../changes)
|
||||||
|
|
||||||
|
mkdir -p '/tmp'
|
||||||
|
mkdir -p "$OUTDIR"
|
||||||
|
rm -rf "$OUTLST"
|
||||||
|
touch "$OUTLST"
|
||||||
|
for i in $(find "$CACHEDIR" -iname '*.pkg.tar.xz'); do
|
||||||
|
tar t -f $i >> "$OUTLST" 2>/dev/null
|
||||||
|
done
|
||||||
|
sort -u "$OUTLST" | grep -v '^\.' > "$OUTLST".tmp
|
||||||
|
mv "$OUTLST".tmp "$OUTLST"
|
||||||
|
rsync -av --old-d --files-from="$OUTLST" "$CHGDIR" "$OUTDIR"
|
||||||
|
dir2sb "$OUTDIR" "$OUTFILE"
|
||||||
|
rm -rf "$OUTDIR"
|
||||||
|
rm -rf "$OUTLST"
|
||||||
|
|
||||||
|
|
@ -0,0 +1,86 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# Rebuild initial ramdisk with full network drivers,
|
||||||
|
# start DHCP and TFTP server in order to provide PXE service
|
||||||
|
#
|
||||||
|
# Author: Tomas M <www.slax.org>
|
||||||
|
|
||||||
|
LIVE=/run/initramfs
|
||||||
|
FTPROOT=/var/state/dnsmasq/root
|
||||||
|
|
||||||
|
# find out our own IP address. If more interfaces are available, use the first one
|
||||||
|
IP="$(hostname -I | cut -d " " -f 1)"
|
||||||
|
GW=$(ip route show | grep default | grep -o "via.*" | head -n 1 | cut -d " " -f 2)
|
||||||
|
|
||||||
|
# if no IP is assigned to this computer, setup private address randomly
|
||||||
|
if [ "$IP" = "" ]; then
|
||||||
|
killall dhclient 2>/dev/null
|
||||||
|
IP="10."$(($RANDOM/130+1))"."$(($RANDOM/130+1))".1"
|
||||||
|
ifconfig $(ls -1 /sys/class/net | egrep -v '^lo$' | sort | head -n 1) $IP netmask 255.255.255.0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# if gateway is not recognized, lets make our IP a gateway and enable forwarding
|
||||||
|
if [ "$GW" = "" ]; then
|
||||||
|
GW="$IP"
|
||||||
|
echo 1 > /proc/sys/net/ipv4/conf/all/forwarding
|
||||||
|
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo Starting PXE server on $IP ...
|
||||||
|
|
||||||
|
# calculate C class range
|
||||||
|
RANGE=$(echo $IP | cut -d "." -f 1-3)
|
||||||
|
|
||||||
|
# make sure dnsmasq can be started
|
||||||
|
killall dnsmasq 2>/dev/null
|
||||||
|
killall busybox 2>/dev/null
|
||||||
|
rm -Rf $FTPROOT 2>/dev/null
|
||||||
|
mkdir -p $FTPROOT/{pxelinux.cfg,tmp}/
|
||||||
|
|
||||||
|
# create root filesystem for ftfp
|
||||||
|
cd $LIVE
|
||||||
|
( find . -print | grep -v "memory"
|
||||||
|
cd /
|
||||||
|
find /lib/modules/$(uname -r)/kernel/drivers/net | grep -v wireless
|
||||||
|
) | cpio -pvd $FTPROOT/tmp 2>/dev/null
|
||||||
|
|
||||||
|
cp /lib/modules/$(uname -r)/modules.* $FTPROOT/tmp/lib/modules/$(uname -r)
|
||||||
|
depmod -b $FTPROOT/tmp
|
||||||
|
rm $FTPROOT/tmp/lib/initramfs_escaped
|
||||||
|
|
||||||
|
# pack root in initramfs
|
||||||
|
cd $FTPROOT/tmp
|
||||||
|
find . -print | cpio -o -H newc 2>/dev/null | gzip -f --fast >../initrfs.img
|
||||||
|
cd ..
|
||||||
|
rm -Rf tmp
|
||||||
|
|
||||||
|
# link files here since copying is not necessary
|
||||||
|
ln -s $(find $LIVE/memory/{data,iso,toram} 2>/dev/null | grep vmlinuz | head -n 1) $FTPROOT/vmlinuz
|
||||||
|
ln -s $(find $LIVE/memory/{data,iso,toram} 2>/dev/null | grep pxelinux.0 | head -n 1) $FTPROOT/pxelinux.0
|
||||||
|
ln -s $(find $LIVE/memory/{data,iso,toram} 2>/dev/null | grep ldlinux.c32 | head -n 1) $FTPROOT/ldlinux.c32
|
||||||
|
|
||||||
|
find $LIVE/memory/{data,iso,toram} 2>/dev/null | egrep "[.]sb\$" | sort -n | while read LINE; do
|
||||||
|
BAS="$(basename "$LINE")"
|
||||||
|
ln -s $LINE "$FTPROOT/$BAS"
|
||||||
|
echo $BAS >> "$FTPROOT/PXEFILELIST"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "This is <a href=http://www.slax.org/>Slax</a> PXE data server. PXE clients will download <a href=PXEFILELIST>file list</a>" > "$FTPROOT/index.html"
|
||||||
|
|
||||||
|
# default pxelinux configuration. Keep xmode selection for clients the same like for the server
|
||||||
|
echo "
|
||||||
|
PROMPT 0
|
||||||
|
DEFAULT slax
|
||||||
|
LABEL slax
|
||||||
|
KERNEL /vmlinuz
|
||||||
|
IPAPPEND 1
|
||||||
|
APPEND initrd=/initrfs.img load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 $(cat /proc/cmdline | egrep -o 'slax.flags=[^ ]+' | sed -r 's:[,=]pxe::' | sed -r 's:[,=]toram::')
|
||||||
|
" > $FTPROOT/pxelinux.cfg/default
|
||||||
|
|
||||||
|
# start the DHCP server and TFTP server
|
||||||
|
dnsmasq --enable-tftp --tftp-root=/var/state/dnsmasq/root \
|
||||||
|
--dhcp-boot=pxelinux.0,"$IP",$IP \
|
||||||
|
--dhcp-option=3,$GW \
|
||||||
|
--dhcp-range=$RANGE.2,$RANGE.250,infinite --log-dhcp
|
||||||
|
|
||||||
|
# start HTTP server at port 7529 (that are the numbers you type on your phone to write 'slax')
|
||||||
|
busybox httpd -p 7529 -h /var/state/dnsmasq/root
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# Author: Tomas M. <http://www.slax.org/>
|
||||||
|
|
||||||
|
if [ ! -e "$1" ]; then
|
||||||
|
echo
|
||||||
|
echo "Erase module directory created by sb2dir"
|
||||||
|
echo "Usage: $0 [source_directory.sb]"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d "$1" ]; then
|
||||||
|
echo "Directory does not exist: $1" >&2
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
umount "$1" 2>/dev/null
|
||||||
|
rm -Rf "$1"
|
||||||
|
|
@ -0,0 +1,46 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
TMP=/tmp/changes$$
|
||||||
|
EXCLUDE="^\$|/\$|[.]wh[.][.]wh[.]orph/|^[.]wh[.][.]wh[.]plnk/|^[.]wh[.][.]wh[.]aufs|^var/cache/|^var/backups/|^var/tmp/|^var/log/|^var/lib/apt/|^var/lib/dhcp/|^var/lib/systemd/|^sbin/fsck[.]aufs|^etc/resolv[.]conf|^root/[.]Xauthority|^root/[.]xsession-errors|^root/[.]fehbg|^root/[.]fluxbox/lastwallpaper|^root/[.]fluxbox/menu_resolution|^etc/mtab|^etc/fstab|^boot/|^dev/|^mnt/|^proc/|^run/|^sys/|^tmp/"
|
||||||
|
CHANGES=/run/initramfs/memory/changes
|
||||||
|
|
||||||
|
if [ "$1" = "" ]; then
|
||||||
|
echo ""
|
||||||
|
echo "savechanges - save all changed files in a compressed filesystem bundle"
|
||||||
|
echo " - excluding some predefined files such as /etc/mtab,"
|
||||||
|
echo " temp & log files, empty directories, apt cache, and such"
|
||||||
|
echo ""
|
||||||
|
echo "Usage:"
|
||||||
|
echo " $0 [ target_file.sb ] [ changes_directory ]"
|
||||||
|
echo ""
|
||||||
|
echo "If changes_directory is not specified, /run/initramfs/memory/changes is used."
|
||||||
|
echo ""
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! "$2" = "" ]; then
|
||||||
|
CHANGES="$2"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# exclude the save_file itself of course
|
||||||
|
EXCLUDE="$EXCLUDE|^""$(readlink -f "$1" | cut -b 2- | sed -r "s/[.]/[.]/")""\$"
|
||||||
|
|
||||||
|
CWD=$(pwd)
|
||||||
|
|
||||||
|
cd $CHANGES || exit
|
||||||
|
|
||||||
|
mkdir -p $TMP
|
||||||
|
mount -t tmpfs tmpfs $TMP
|
||||||
|
|
||||||
|
find \( -type d -printf "%p/\n" , -not -type d -print \) \
|
||||||
|
| sed -r "s/^[.]\\///" | egrep -v "$EXCLUDE" \
|
||||||
|
| while read FILE; do
|
||||||
|
cp --parents -afr "$FILE" "$TMP"
|
||||||
|
done
|
||||||
|
|
||||||
|
cd $CWD
|
||||||
|
|
||||||
|
mksquashfs $TMP "$1" -comp xz -b 1024K -always-use-fragments -noappend
|
||||||
|
|
||||||
|
umount $TMP
|
||||||
|
rmdir $TMP
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ "$1" = "rm" ]; then
|
||||||
|
shift
|
||||||
|
rmsbdir "$@"
|
||||||
|
exit $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" = "rmdir" ]; then
|
||||||
|
shift
|
||||||
|
rmsbdir "$@"
|
||||||
|
exit $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" = "conv" ]; then
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -r "$1" ]; then
|
||||||
|
echo File not found "$1"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -d "$1" ]; then
|
||||||
|
dir2sb "$@"
|
||||||
|
exit $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
sb2dir "$@"
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# Author: Tomas M. <http://www.slax.org/>
|
||||||
|
|
||||||
|
if [ ! -e "$1" ]; then
|
||||||
|
echo
|
||||||
|
echo "Convert .sb compressed module into directory with the same name"
|
||||||
|
echo "Usage: $0 [source_file.sb] [[optional output_directory]]"
|
||||||
|
echo " If the output_directory is specified, it must exist"
|
||||||
|
echo " If the output_directory is not specified, the name source_file.sb"
|
||||||
|
echo " is used and the directory is overmounted with tmpfs"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -r "$1" ]; then
|
||||||
|
echo "File does not exist: $1" >&2
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$2" = "" ]; then
|
||||||
|
SOURCE="$1".x
|
||||||
|
while [ -e "$SOURCE" ]; do SOURCE="$SOURCE"x; done
|
||||||
|
mv "$1" "$SOURCE" || exit
|
||||||
|
mkdir "$1"
|
||||||
|
mount -t tmpfs tmpfs "$1"
|
||||||
|
unsquashfs -f -dest "$1" "$SOURCE" >/dev/null || exit
|
||||||
|
rm "$SOURCE"
|
||||||
|
else
|
||||||
|
if [ ! -d "$2" ]; then
|
||||||
|
echo "Directory does not exist: $2" >&2
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
unsquashfs -f -dest "$2" "$1" >/dev/null
|
||||||
|
fi
|
||||||
|
|
@ -0,0 +1,178 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# Slax management and control script
|
||||||
|
# Author: Tomas M <http://www.slax.org/>
|
||||||
|
|
||||||
|
# activate
|
||||||
|
# deactivate
|
||||||
|
# list
|
||||||
|
|
||||||
|
|
||||||
|
LIVE=/run/initramfs/memory
|
||||||
|
RAMSTORE=$LIVE/modules
|
||||||
|
|
||||||
|
# Print error message and exit
|
||||||
|
# $1 = error message
|
||||||
|
#
|
||||||
|
die()
|
||||||
|
{
|
||||||
|
echo "$1" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
print_branches()
|
||||||
|
{
|
||||||
|
local SI BUNDLE LOOP CWD
|
||||||
|
|
||||||
|
SI="/sys/fs/aufs/$(cat /proc/mounts | grep 'aufs / aufs' | egrep -o 'si=([^,) ]+)' | tr = _)"
|
||||||
|
CWD="$(pwd)"
|
||||||
|
cd "$SI"
|
||||||
|
ls -v1 | grep -v xi_path | egrep 'br[0-9]+' | xargs cat | grep memory/bundles | rev | cut -b 4- | rev | while read BUNDLE; do
|
||||||
|
if mountpoint -q "$BUNDLE"; then
|
||||||
|
LOOP=$(cat /proc/mounts | fgrep " $BUNDLE squashfs" | cut -d " " -f 1)
|
||||||
|
echo -n "$BUNDLE"
|
||||||
|
echo -ne "\t"
|
||||||
|
losetup $LOOP | sed -r "s:.*[(]|[)].*::g"
|
||||||
|
fi
|
||||||
|
done | tac
|
||||||
|
cd "$CWD"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Activate Slax Bundle
|
||||||
|
# $1 = file to activate
|
||||||
|
#
|
||||||
|
activate()
|
||||||
|
{
|
||||||
|
local SB TGT BAS
|
||||||
|
|
||||||
|
SB="$(readlink -f "$1")"
|
||||||
|
BAS="$(basename "$SB")"
|
||||||
|
|
||||||
|
# check if file exists
|
||||||
|
if [ ! -r "$SB" ]; then
|
||||||
|
usage
|
||||||
|
die "file not found $SB"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# check if the file is part of aufs union, if yes we need to copy it outside
|
||||||
|
if df "$SB" | cut -d " " -f 1 | grep -q aufs; then
|
||||||
|
TGT="$RAMSTORE"
|
||||||
|
mkdir -p "$TGT"
|
||||||
|
if [ -r $TGT/$BAS ]; then die "File exists: $TGT/$BAS"; fi
|
||||||
|
cp -n "$SB" "$TGT/$BAS"
|
||||||
|
if [ $? -ne 0 ]; then die "Error copying file to $TGT/$BAS. Not enough free RAM or disk space?"; fi
|
||||||
|
SB="$TGT/$BAS"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# check if this particular file is already activated
|
||||||
|
if print_branches | cut -f 2 | fgrep -q "$SB"; then
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
# mount remount,add
|
||||||
|
TGT="$LIVE/bundles/$BAS"
|
||||||
|
mkdir -p "$TGT"
|
||||||
|
|
||||||
|
mount -n -o loop,ro "$SB" "$TGT"
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
die "Error mounting $SB to $TGT, perhaps corrupted download"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# add current branch to aufs union
|
||||||
|
mount -t aufs -o remount,add:1:"$TGT" aufs /
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
umount "$TGT"
|
||||||
|
rmdir "$TGT"
|
||||||
|
die "Error attaching bundle filesystem to Slax"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Slax Bundle activated: $BAS"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Deactivate Slax bundle of the given name
|
||||||
|
# $1 = path to bundle file, or its name
|
||||||
|
#
|
||||||
|
deactivate()
|
||||||
|
{
|
||||||
|
local BUNDLES SB MATCH LOOP LOOPFILE
|
||||||
|
|
||||||
|
BUNDLES=$LIVE/bundles
|
||||||
|
MODULES=$LIVE/modules
|
||||||
|
SB="$(basename "$1")"
|
||||||
|
|
||||||
|
rmdir "$BUNDLES/$SB" 2>/dev/null # this fails unless the dir is
|
||||||
|
rmdir "$BUNDLES/$SB.sb" 2>/dev/null # forgotten there empty. It's safe this way
|
||||||
|
|
||||||
|
if [ ! -d "$BUNDLES/$SB" ]; then
|
||||||
|
# we don't have real filename match, lets try to add .sb extension
|
||||||
|
if [ ! -d "$BUNDLES/$SB.sb" ]; then
|
||||||
|
# no, still no match. Lets use some guesswork
|
||||||
|
SB=$(print_branches | cut -f 2 | egrep -o "/[0-9]+-$SB.sb\$" | tail -n 1 | xargs -r basename)
|
||||||
|
else
|
||||||
|
SB="$SB.sb"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$SB" = "" -o ! -d "$BUNDLES/$SB" ]; then
|
||||||
|
die "can't find active slax bundle $1"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Attempting to deactivate Slax bundle $SB..."
|
||||||
|
mount -t aufs -o remount,verbose,del:"$BUNDLES/$SB" aufs / 2>/dev/null
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
die "Unable to deactivate Slax Bundle - still in use. See dmesg for more."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# remember what loop device was the bundle mounted to, it may be needed later
|
||||||
|
LOOP="$(cat /proc/mounts | fgrep " $BUNDLES/$SB " | cut -d " " -f 1)"
|
||||||
|
LOOPFILE="$(losetup "$LOOP" | cut -d " " -f 3 | sed -r 's:^.|.$::g')"
|
||||||
|
|
||||||
|
umount "$BUNDLES/$SB" 2>/dev/null
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
die "Unable to umount Slax bundle loop-mount $BUNDLES/$SB"
|
||||||
|
fi
|
||||||
|
rmdir "$BUNDLES/$SB"
|
||||||
|
|
||||||
|
# free the loop device manually since umount fails to do that if the bundle was activated on boot
|
||||||
|
losetup -d "$LOOP" 2>/dev/null
|
||||||
|
|
||||||
|
if echo "$LOOPFILE" | grep -q $RAMSTORE; then
|
||||||
|
rm -f $LOOPFILE
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Slax Bundle deactivated: $SB"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
usage()
|
||||||
|
{
|
||||||
|
echo "Usage: $0 [ activate | deactivate | list ] [ file.sb ]" >&2
|
||||||
|
if [ "$1" != "" ]; then
|
||||||
|
echo "$1" >&2
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if [ "$1" = "" ]; then
|
||||||
|
usage
|
||||||
|
die
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" = "activate" ]; then
|
||||||
|
activate "$2"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" = "deactivate" ]; then
|
||||||
|
deactivate "$2"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" = "list" ]; then
|
||||||
|
print_branches
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" = "savechanges" ]; then
|
||||||
|
shift
|
||||||
|
savechanges "$@"
|
||||||
|
fi
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
For more updated changelog and todo, visit
|
||||||
|
https://www.slax.org/next.php
|
||||||
|
|
||||||
|
TODO:
|
||||||
|
|
||||||
|
make persistent changes default when booting from writable media
|
||||||
|
(and offer "fresh start" in boot menu instead)
|
||||||
|
add @ntfs-3g support, add ext4 support for bootable device
|
||||||
|
update syslinux
|
||||||
|
add wicd as wifi configurator
|
||||||
|
make keyboard layout persistent
|
||||||
|
make xlunch refresh on start to see newly installed apps
|
||||||
|
fb keys: OnDesktop Mouse1 :MacroCmd {WindowMenu} {HideMenus}
|
||||||
|
reimplement xrandr screen resolution change, use --mode somehow
|
||||||
|
consider gsettings-desktop-schemas
|
||||||
|
add thunar or pcmanfm
|
||||||
|
review uefi support - does it work or not? don't have uefi device here
|
||||||
|
maybe consider pxe server again
|
||||||
|
use debootstrap for slax build
|
||||||
|
|
||||||
|
|
||||||
|
* Slax 9.3.0
|
||||||
|
|
||||||
|
|
||||||
|
added wireless tools
|
||||||
|
added firmware (free and nonfree)
|
||||||
|
added contrib and nonfree repositories
|
||||||
|
fixed apt-get alias parameters handling
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
* Slax 9.2.1
|
||||||
|
|
||||||
|
initial release of Slax based on Debian
|
||||||
|
|
@ -0,0 +1,101 @@
|
||||||
|
#!/bin/sh
|
||||||
|
exec /bin/bash "$(dirname "$0")"/bootinst.sh
|
||||||
|
exec /bin/sh "$(dirname "$0")"/bootinst.sh
|
||||||
|
|
||||||
|
@echo off
|
||||||
|
COLOR 2F
|
||||||
|
cls
|
||||||
|
echo ===============================================================================
|
||||||
|
echo.
|
||||||
|
echo ________.__
|
||||||
|
echo / ____/^| ^| _____ ___ ___
|
||||||
|
echo \____ \ ^| ^| \__ \ \ \/ /
|
||||||
|
echo / \^| ^|__/ __ \_^> ^<
|
||||||
|
echo /______ /^|____(____ /__/\_ \
|
||||||
|
echo \/ \/ \/
|
||||||
|
echo.
|
||||||
|
echo ===============================================================================
|
||||||
|
echo.
|
||||||
|
|
||||||
|
set DISK=none
|
||||||
|
set BOOTFLAG=boot666s.tmp
|
||||||
|
|
||||||
|
:checkPrivileges
|
||||||
|
mkdir "%windir%\AdminCheck" 2>nul
|
||||||
|
if '%errorlevel%' == '0' rmdir "%windir%\AdminCheck" & goto gotPrivileges else goto getPrivileges
|
||||||
|
|
||||||
|
:getPrivileges
|
||||||
|
ECHO.
|
||||||
|
ECHO Administrator Rights are required
|
||||||
|
ECHO Invoking UAC for Privilege Escalation
|
||||||
|
ECHO.
|
||||||
|
runadmin.vbs %0
|
||||||
|
goto end
|
||||||
|
|
||||||
|
:gotPrivileges
|
||||||
|
CD /D "%~dp0"
|
||||||
|
|
||||||
|
echo This file is used to determine current drive letter. It should be deleted. >\%BOOTFLAG%
|
||||||
|
if not exist \%BOOTFLAG% goto readOnly
|
||||||
|
|
||||||
|
echo.|set /p=wait please
|
||||||
|
for %%d in ( C D E F G H I J K L M N O P Q R S T U V W X Y Z ) do echo.|set /p=. & if exist %%d:\%BOOTFLAG% set DISK=%%d
|
||||||
|
echo . . . . . . . . . .
|
||||||
|
del \%BOOTFLAG%
|
||||||
|
if %DISK% == none goto DiskNotFound
|
||||||
|
|
||||||
|
wscript.exe samedisk.vbs %windir% %DISK%
|
||||||
|
if %ERRORLEVEL% == 99 goto refuseDisk
|
||||||
|
|
||||||
|
echo Setting up boot record for %DISK%: ...
|
||||||
|
|
||||||
|
if %OS% == Windows_NT goto setupNT
|
||||||
|
goto setup95
|
||||||
|
|
||||||
|
:setupNT
|
||||||
|
\slax\boot\syslinux.exe -maf -d /slax/boot/ %DISK%:
|
||||||
|
if %ERRORLEVEL% == 0 goto setupDone
|
||||||
|
goto errorFound
|
||||||
|
|
||||||
|
:setup95
|
||||||
|
\slax\boot\syslinux.com -maf -d /slax/boot/ %DISK%:
|
||||||
|
if %ERRORLEVEL% == 0 goto setupDone
|
||||||
|
goto errorFound
|
||||||
|
|
||||||
|
:setupDone
|
||||||
|
echo Installation finished.
|
||||||
|
goto pauseit
|
||||||
|
|
||||||
|
:errorFound
|
||||||
|
color 4F
|
||||||
|
echo.
|
||||||
|
echo Error installing boot loader
|
||||||
|
goto pauseit
|
||||||
|
|
||||||
|
:refuseDisk
|
||||||
|
color 4F
|
||||||
|
echo.
|
||||||
|
echo Directory %DISK%:\slax\boot\ seems to be on the same physical disk as your Windows.
|
||||||
|
echo Installing bootloader would harm your Windows and thus is disabled.
|
||||||
|
echo Please use different drive and try again.
|
||||||
|
goto pauseit
|
||||||
|
|
||||||
|
:readOnly
|
||||||
|
color 4F
|
||||||
|
echo.
|
||||||
|
echo You're starting this installer from a read-only media, this will not work.
|
||||||
|
goto pauseit
|
||||||
|
|
||||||
|
:DiskNotFound
|
||||||
|
color 4F
|
||||||
|
echo.
|
||||||
|
echo Error: can't discover current drive letter
|
||||||
|
|
||||||
|
:pauseit
|
||||||
|
if "%1" == "auto" goto end
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo Press any key...
|
||||||
|
pause > nul
|
||||||
|
|
||||||
|
:end
|
||||||
|
|
@ -0,0 +1,154 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# This script will setup booting from disk (USB or harddrive)
|
||||||
|
#
|
||||||
|
# If you see this file in a text editor instead of getting it executed,
|
||||||
|
# then it is missing executable permissions (chmod). You can try to set
|
||||||
|
# exec permissions for this file by using: chmod a+x bootinst.sh
|
||||||
|
# Alternatively, you may try to run bootinst.bat file instead
|
||||||
|
#
|
||||||
|
# Scrolling down will reveal the actual code of this script.
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# if we're running this from X, re-run the script in konsole or xterm
|
||||||
|
if [ "$DISPLAY" != "" ]; then
|
||||||
|
if [ "$1" != "--rex" -a "$2" != "--rex" ]; then
|
||||||
|
konsole --nofork -e /bin/sh $0 --rex 2>/dev/null || xterm -e /bin/sh $0 --rex 2>/dev/null || /bin/sh $0 --rex 2>/dev/null
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# make sure I am root
|
||||||
|
if [ "$UID" != "0" -a "$UID" != "" ]; then
|
||||||
|
echo ""
|
||||||
|
echo "You are not root. You must run bootinst script as root."
|
||||||
|
echo "The bootinst script needs direct access to your boot device."
|
||||||
|
echo "Use sudo or kdesudo or similar wrapper to execute this."
|
||||||
|
read junk
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# change working directory to dir from which we are started
|
||||||
|
CWD="$(pwd)"
|
||||||
|
BOOT="$(dirname "$0")"
|
||||||
|
BOOT="$(realpath "$BOOT" 2>/dev/null || echo $BOOT)"
|
||||||
|
cd "$BOOT"
|
||||||
|
|
||||||
|
# find out device and mountpoint
|
||||||
|
PART="$(df . | tail -n 1 | tr -s " " | cut -d " " -f 1)"
|
||||||
|
DEV="$(echo "$PART" | sed -r "s:[0-9]+\$::" | sed -r "s:([0-9])[a-z]+\$:\\1:i")" #"
|
||||||
|
|
||||||
|
# check if disk is already bootable. Mostly for Windows discovery
|
||||||
|
if [ "$(fdisk -l "$DEV" | fgrep "$DEV" | fgrep "*")" != "" ]; then
|
||||||
|
echo ""
|
||||||
|
echo "Partition $PART seems to be located on a physical disk,"
|
||||||
|
echo "which is already bootable. If you continue, your drive $DEV"
|
||||||
|
echo "will boot only Slax by default."
|
||||||
|
echo "Press [Enter] to continue, or [Ctrl+C] to abort..."
|
||||||
|
read junk
|
||||||
|
fi
|
||||||
|
|
||||||
|
ARCH=$(uname -m)
|
||||||
|
if [ "$ARCH" = "x86_64" ]; then ARCH=64; else ARCH=32; fi
|
||||||
|
EXTLINUX=extlinux.x$ARCH
|
||||||
|
|
||||||
|
if [ ! -x ./$EXTLINUX ]; then
|
||||||
|
# extlinux is not executable. There are two possible reasons:
|
||||||
|
# either the fs is mounted with noexec, or file perms are wrong.
|
||||||
|
# Try to fix both, no fail on error yet
|
||||||
|
mount -o remount,exec $DEV
|
||||||
|
chmod a+x ./$EXTLINUX
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -x ./$EXTLINUX ]; then
|
||||||
|
# extlinux is still not executable. As a last try, copy it to .exe
|
||||||
|
# because the partition may be mounted with showexec option, from which
|
||||||
|
# we probably can't escape by remount
|
||||||
|
cp -f ./$EXTLINUX ./extlinux.exe
|
||||||
|
EXTLINUX=extlinux.exe
|
||||||
|
fi
|
||||||
|
|
||||||
|
# install syslinux bootloader
|
||||||
|
echo "* attempting to install bootloader to $BOOT..."
|
||||||
|
|
||||||
|
./"$EXTLINUX" --install "$BOOT"
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "Error installing boot loader."
|
||||||
|
echo "Read the errors above and press enter to exit..."
|
||||||
|
read junk
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$DEV" != "$PART" ]; then
|
||||||
|
# Setup MBR on the first block
|
||||||
|
echo "* setup MBR on $DEV"
|
||||||
|
dd bs=440 count=1 conv=notrunc if="$BOOT/mbr.bin" of="$DEV" 2>/dev/null
|
||||||
|
|
||||||
|
# Toggle bootable flags
|
||||||
|
echo "* set bootable flag for $PART"
|
||||||
|
PART="$(echo "$PART" | sed -r "s:.*[^0-9]::")"
|
||||||
|
(
|
||||||
|
fdisk -l "$DEV" | fgrep "*" | fgrep "$DEV" | cut -d " " -f 1 \
|
||||||
|
| sed -r "s:.*[^0-9]::" | xargs -I '{}' echo -ne "a\n{}\n"
|
||||||
|
echo a
|
||||||
|
echo $PART
|
||||||
|
echo w
|
||||||
|
) | fdisk $DEV >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Boot installation finished."
|
||||||
|
echo "Press Enter..."
|
||||||
|
read junk
|
||||||
|
cd "$CWD"
|
||||||
|
After Width: | Height: | Size: 22 KiB |
|
|
@ -0,0 +1,19 @@
|
||||||
|
|
||||||
|
Welcome
|
||||||
|
|
||||||
|
If you need to edit boot command line (for advanced users), hit [Tab].
|
||||||
|
When finished, press [Enter].
|
||||||
|
|
||||||
|
|
||||||
|
Keep changes persistent
|
||||||
|
|
||||||
|
Save all filesystem modifications to 'changes' directory and restore
|
||||||
|
those changes next time you boot. Only usable while running from a
|
||||||
|
writable media such as USB device or hard disk.
|
||||||
|
|
||||||
|
|
||||||
|
Copy to RAM
|
||||||
|
|
||||||
|
Copies all data to memory during startup so you can eject the boot device.
|
||||||
|
Requires enough RAM to store all modules and to run the system.
|
||||||
|
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
Set UAC = CreateObject("Shell.Application")
|
||||||
|
Set args = WScript.Arguments
|
||||||
|
UAC.ShellExecute args.Item(0), "", "", "runas", 1
|
||||||
|
|
@ -0,0 +1,68 @@
|
||||||
|
' This script compares two given parameters (just first letter, so you can pass in full paths as well)
|
||||||
|
' and returns exit code 99 if both disk drives are on the same physical drive
|
||||||
|
' Run it as: wscript.exe samedisk.vbs c:\ d:\
|
||||||
|
' Author: Tomas M <http://www.linux-live.org/>
|
||||||
|
' Inspired by: http://www.activexperts.com/activmonitor/windowsmanagement/adminscripts/disk/drives/
|
||||||
|
' -------------------------------------------
|
||||||
|
|
||||||
|
drive1 = ""
|
||||||
|
drive2 = ""
|
||||||
|
phys1 = ""
|
||||||
|
phys2 = ""
|
||||||
|
|
||||||
|
Set args = WScript.Arguments
|
||||||
|
|
||||||
|
if args.Length > 0 then
|
||||||
|
drive1 = args.Item(0)
|
||||||
|
end if
|
||||||
|
if args.Length > 1 then
|
||||||
|
drive2 = args.Item(1)
|
||||||
|
end if
|
||||||
|
|
||||||
|
if drive1 = "" then
|
||||||
|
WScript.Quit(1)
|
||||||
|
end if
|
||||||
|
|
||||||
|
if drive2 = "" then
|
||||||
|
WScript.Quit(2)
|
||||||
|
end if
|
||||||
|
|
||||||
|
|
||||||
|
ComputerName = "."
|
||||||
|
Set wmiServices = GetObject _
|
||||||
|
("winmgmts:{impersonationLevel=Impersonate}!//" & ComputerName)
|
||||||
|
Set wmiDiskDrives = wmiServices.ExecQuery _
|
||||||
|
("SELECT Caption, DeviceID FROM Win32_DiskDrive")
|
||||||
|
|
||||||
|
For Each wmiDiskDrive In wmiDiskDrives
|
||||||
|
|
||||||
|
strEscapedDeviceID = _
|
||||||
|
Replace(wmiDiskDrive.DeviceID, "\", "\\", 1, -1, vbTextCompare)
|
||||||
|
Set wmiDiskPartitions = wmiServices.ExecQuery _
|
||||||
|
("ASSOCIATORS OF {Win32_DiskDrive.DeviceID=""" & _
|
||||||
|
strEscapedDeviceID & """} WHERE " & _
|
||||||
|
"AssocClass = Win32_DiskDriveToDiskPartition")
|
||||||
|
|
||||||
|
For Each wmiDiskPartition In wmiDiskPartitions
|
||||||
|
Set wmiLogicalDisks = wmiServices.ExecQuery _
|
||||||
|
("ASSOCIATORS OF {Win32_DiskPartition.DeviceID=""" & _
|
||||||
|
wmiDiskPartition.DeviceID & """} WHERE " & _
|
||||||
|
"AssocClass = Win32_LogicalDiskToPartition")
|
||||||
|
|
||||||
|
For Each wmiLogicalDisk In wmiLogicalDisks
|
||||||
|
|
||||||
|
if UCase(Left(drive1,1)) = UCase(Left(wmiLogicalDisk.DeviceID,1)) then
|
||||||
|
phys1=wmiDiskDrive.DeviceID
|
||||||
|
end if
|
||||||
|
|
||||||
|
if UCase(Left(drive2,1)) = UCase(Left(wmiLogicalDisk.DeviceID,1)) then
|
||||||
|
phys2=wmiDiskDrive.DeviceID
|
||||||
|
end if
|
||||||
|
|
||||||
|
Next
|
||||||
|
Next
|
||||||
|
Next
|
||||||
|
|
||||||
|
if phys1 = phys2 then
|
||||||
|
WScript.Quit(99)
|
||||||
|
end if
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
UI /slax/boot/vesamenu.c32
|
||||||
|
|
||||||
|
PROMPT 0
|
||||||
|
TIMEOUT 40
|
||||||
|
|
||||||
|
MENU CLEAR
|
||||||
|
MENU HIDDEN
|
||||||
|
MENU HIDDENKEY Enter default
|
||||||
|
MENU BACKGROUND /slax/boot/bootlogo.png
|
||||||
|
|
||||||
|
MENU WIDTH 80
|
||||||
|
MENU MARGIN 20
|
||||||
|
MENU ROWS 5
|
||||||
|
MENU TABMSGROW 9
|
||||||
|
MENU CMDLINEROW 9
|
||||||
|
MENU HSHIFT 0
|
||||||
|
MENU VSHIFT 19
|
||||||
|
|
||||||
|
MENU COLOR BORDER 30;40 #00000000 #00000000 none
|
||||||
|
MENU COLOR SEL 47;30 #FF000000 #FFFFFFFF none
|
||||||
|
MENU COLOR UNSEL 37;40 #FFFFFFFF #FF000000 none
|
||||||
|
MENU COLOR TABMSG 32;40 #FF60CA00 #FF000000 none
|
||||||
|
|
||||||
|
F1 help.txt /slax/boot/zblack.png
|
||||||
|
|
||||||
|
MENU AUTOBOOT Press Esc for options, automatic boot in # second{,s} ...
|
||||||
|
MENU TABMSG [F1] help [Tab] cmdline >
|
||||||
|
|
||||||
|
LABEL default
|
||||||
|
MENU LABEL Run Slax (Persistent changes)
|
||||||
|
KERNEL /slax/boot/vmlinuz
|
||||||
|
APPEND vga=normal initrd=/slax/boot/initrfs.img load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 consoleblank=0 slax.flags=perch,automount
|
||||||
|
|
||||||
|
LABEL perch
|
||||||
|
MENU LABEL Run Slax (Fresh start)
|
||||||
|
KERNEL /slax/boot/vmlinuz
|
||||||
|
APPEND vga=normal initrd=/slax/boot/initrfs.img load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 consoleblank=0 slax.flags=automount
|
||||||
|
|
||||||
|
LABEL toram
|
||||||
|
MENU LABEL Run Slax (Copy to RAM)
|
||||||
|
KERNEL /slax/boot/vmlinuz
|
||||||
|
APPEND vga=normal initrd=/slax/boot/initrfs.img load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 consoleblank=0 slax.flags=toram
|
||||||
|
After Width: | Height: | Size: 6.3 KiB |
|
|
@ -0,0 +1,34 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
THIS=$(dirname $(readlink -f $0))
|
||||||
|
|
||||||
|
sed -i -r 's/^LIVEKITNAME.*/LIVEKITNAME="slax"/' $THIS/../../config
|
||||||
|
sed -i -r 's/^NETWORK.*/NETWORK=true/' $THIS/../../config
|
||||||
|
|
||||||
|
. ./copy
|
||||||
|
. ./install
|
||||||
|
. ./cleanup
|
||||||
|
. ./copy
|
||||||
|
|
||||||
|
# now run build script
|
||||||
|
SKIPINITRFS=true
|
||||||
|
cd ../../
|
||||||
|
. ./build
|
||||||
|
|
||||||
|
# setup initrd now, to include aufs
|
||||||
|
apt-get update
|
||||||
|
apt-get install aufs-dkms linux-headers-$(uname -r) --yes
|
||||||
|
|
||||||
|
cd initramfs
|
||||||
|
. ./initramfs_create
|
||||||
|
|
||||||
|
# unpack the sb archive and add aufs modules to /lib/modules
|
||||||
|
cd $LIVEKITDATA/$LIVEKITNAME
|
||||||
|
unsquashfs 01-core.$BEXT
|
||||||
|
cp -a /$LMK/kernel/fs/aufs squashfs-root/$LMK/kernel/fs
|
||||||
|
rm -f 01-core.$BEXT
|
||||||
|
mksquashfs squashfs-root 01-core.$BEXT -comp xz -b 1024K -always-use-fragments || exit
|
||||||
|
rm -Rf squashfs-root
|
||||||
|
|
||||||
|
mv -f $INITRAMFS.img $LIVEKITDATA/$LIVEKITNAME/boot/initrfs.img
|
||||||
|
cp -vf $THIS/bootfiles/* $LIVEKITDATA/$LIVEKITNAME/boot/
|
||||||
|
|
@ -0,0 +1,91 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
rm -f /etc/fstab
|
||||||
|
rm -f /etc/mtab
|
||||||
|
rm -f /etc/apt/sources.list~
|
||||||
|
rm -Rf /etc/systemd/system/timers.target.wants
|
||||||
|
rm -f /etc/systemd/system/multi-user.target.wants/ssh.service
|
||||||
|
rm -f /etc/systemd/system/multi-user.target.wants/dnsmasq.service
|
||||||
|
|
||||||
|
rm -f /etc/ssh/ssh_host*
|
||||||
|
|
||||||
|
rm -f /var/backups/*
|
||||||
|
rm -f /var/cache/ldconfig/*
|
||||||
|
rm -f /var/cache/debconf/*
|
||||||
|
rm -f /var/cache/fontconfig/*
|
||||||
|
rm -f /var/lib/apt/extended_states
|
||||||
|
rm -f /var/lib/systemd/random-seed
|
||||||
|
rm -f /var/lib/apt/lists/deb.*
|
||||||
|
rm -Rf /root/.local/share/mc
|
||||||
|
rm -Rf /root/.cache
|
||||||
|
rm -f /root/.wget-hsts
|
||||||
|
|
||||||
|
rm -f /var/lib/dpkg/*-old
|
||||||
|
rm -f /var/log/*
|
||||||
|
rm -f /var/log/*/*
|
||||||
|
rm -f /var/log/*/*/*
|
||||||
|
rm -f /var/cache/apt/archives/*.deb
|
||||||
|
rm -f /var/cache/apt/*.bin
|
||||||
|
rm -f /var/cache/debconf/*-old
|
||||||
|
rm -f /var/lib/dhcp/dhclient.leases
|
||||||
|
rm -f /root/.bash_history
|
||||||
|
rm -f /root/.wget-hsts
|
||||||
|
rm -Rf /usr/share/doc/*
|
||||||
|
rm -Rf /usr/share/info/*
|
||||||
|
rm -f /usr/share/images/fluxbox/debian-squared.jpg
|
||||||
|
rm -Rf /usr/share/fluxbox/nls/??*
|
||||||
|
rm -Rf /usr/share/gnome/help
|
||||||
|
|
||||||
|
rm -Rf /usr/share/locale/??
|
||||||
|
rm -Rf /usr/share/locale/??_*
|
||||||
|
rm -Rf /usr/share/locale/??@*
|
||||||
|
rm -Rf /usr/share/locale/???
|
||||||
|
rm -Rf /usr/share/i18n/locales/*_*
|
||||||
|
rm -Rf /usr/share/man/??
|
||||||
|
rm -Rf /usr/share/man/*_*
|
||||||
|
|
||||||
|
rm -Rf /usr/share/icons/elementaryXubuntu-dark
|
||||||
|
rm -Rf /usr/share/icons/gnome/256x256
|
||||||
|
|
||||||
|
rm /usr/share/applications/compton.desktop
|
||||||
|
rm /usr/share/applications/debian-uxterm.desktop
|
||||||
|
rm /usr/share/applications/debian-xterm.desktop
|
||||||
|
rm /usr/share/applications/htop.desktop
|
||||||
|
rm /usr/share/applications/mc.desktop
|
||||||
|
rm /usr/share/applications/mcedit.desktop
|
||||||
|
rm /usr/share/applications/pcmanfm-desktop-pref.desktop
|
||||||
|
rm /usr/share/applications/python2.7.desktop
|
||||||
|
rm /usr/share/applications/python3.7.desktop
|
||||||
|
rm /usr/share/applications/vim.desktop
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Unzip gzipped files (man pages), so LZMA can compress 2times better.
|
||||||
|
# First we fix symlinks, then uncompress files
|
||||||
|
# $1 = search directory
|
||||||
|
uncompress_files()
|
||||||
|
{
|
||||||
|
local LINK LINE
|
||||||
|
|
||||||
|
find "$1" -type l -name "*.gz" | while read LINE; do
|
||||||
|
LINK="$(readlink "$LINE" | sed -r 's/.gz$//')"
|
||||||
|
FILE="$(echo "$LINE" | sed -r 's/.gz$//')"
|
||||||
|
ln -sfn "$LINK" "$FILE"
|
||||||
|
rm -f "$LINE"
|
||||||
|
done
|
||||||
|
find "$1" -type f -name "*.gz" | xargs -r gunzip
|
||||||
|
}
|
||||||
|
|
||||||
|
uncompress_files /etc/alternatives
|
||||||
|
uncompress_files /usr/share/man
|
||||||
|
|
||||||
|
# remove broken links
|
||||||
|
# $1 = search directory
|
||||||
|
remove_broken_links()
|
||||||
|
{
|
||||||
|
find "$1" -type l -exec test ! -e {} \; -print | xargs rm -vf
|
||||||
|
}
|
||||||
|
|
||||||
|
remove_broken_links /etc/alternatives
|
||||||
|
remove_broken_links /usr/share/man
|
||||||
|
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
(cd rootcopy && cp --parents -afr * /)
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
CURRENT="$(ls -1 /boot)"
|
||||||
|
|
||||||
|
apt-get update
|
||||||
|
apt-get dist-upgrade --yes
|
||||||
|
|
||||||
|
NEW="$(ls -1 /boot)"
|
||||||
|
|
||||||
|
if [ "$CURRENT" != "$NEW" ]; then
|
||||||
|
echo "It looks like your kernel has been upgraded."
|
||||||
|
echo "You should reboot and restart the build process."
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
# if kernel was upgraded, you may need to reboot
|
||||||
|
apt-get install --yes --no-install-recommends mc squashfs-tools genisoimage zip unzip psmisc net-tools \
|
||||||
|
alsa-utils man less xz-utils ca-certificates openssl acpid acpi-support-base powermgmt-base bzip2 gpart \
|
||||||
|
hdparm sdparm mdadm smartmontools dosfstools lsof htop gddrescue rsync netcat ssh gpm wireless-tools \
|
||||||
|
ntfs-3g rfkill file dnsmasq ntpdate dvd+rw-tools usb-modeswitch pm-utils wget
|
||||||
|
|
||||||
|
ln -sf bash /bin/sh
|
||||||
|
|
||||||
|
apt-get remove --yes vim* grub* debconf-i18n installation-report
|
||||||
|
|
||||||
|
CWD="$(pwd)"
|
||||||
|
cd /tmp
|
||||||
|
apt-get download acpi-support
|
||||||
|
dpkg -x acpi-support*.deb /tmp/acpisupport
|
||||||
|
cd /tmp/acpisupport
|
||||||
|
cp -aR * /
|
||||||
|
cd "$CWD"
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
apt update
|
||||||
|
apt install --yes --no-install-recommends \
|
||||||
|
firmware-linux-free \
|
||||||
|
firmware-linux-nonfree \
|
||||||
|
firmware-atheros \
|
||||||
|
firmware-iwlwifi \
|
||||||
|
firmware-zd1211 \
|
||||||
|
firmware-realtek \
|
||||||
|
firmware-bnx2 \
|
||||||
|
firmware-brcm80211 \
|
||||||
|
firmware-cavium \
|
||||||
|
firmware-ipw2x00 \
|
||||||
|
firmware-libertas \
|
||||||
|
firmware-ti-connectivity \
|
||||||
|
firmware-b43-installer
|
||||||
|
|
||||||
|
. ../../cleanup
|
||||||
|
|
||||||
|
savechanges /01-firmware.sb
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
apt-get update
|
||||||
|
apt-get install --yes --no-install-recommends \
|
||||||
|
xserver-xorg xserver-xorg-video-all xserver-xorg-video-intel \
|
||||||
|
xinit \
|
||||||
|
xterm \
|
||||||
|
blackbox \
|
||||||
|
libxcursor1 \
|
||||||
|
breeze-cursor-theme \
|
||||||
|
x11-utils \
|
||||||
|
wmctrl \
|
||||||
|
xdotool \
|
||||||
|
libdrm-intel1 \
|
||||||
|
libgl1-mesa-dri \
|
||||||
|
libglu1-mesa
|
||||||
|
|
||||||
|
# Set setuid bit on xorg binary, so it can be started by guest user
|
||||||
|
chmod u+s /usr/lib/xorg/Xorg
|
||||||
|
|
||||||
|
# use only white cursors. There were some troubles if the other cursors
|
||||||
|
# was left behind, installing gtk apps reverted the cursor from white to gray,
|
||||||
|
# so we're going to nuke it to leave only Snow cursors active.
|
||||||
|
rm -Rf /usr/share/icons/breeze_cursors
|
||||||
|
mv /usr/share/icons/Breeze_Snow /usr/share/icons/breeze_cursors
|
||||||
|
|
||||||
|
(cd rootcopy && cp --parents -afr * /)
|
||||||
|
|
||||||
|
cp ../../cleanup /tmp
|
||||||
|
# install x11 server utils, apt-get would add cpp dependency, bullshit!
|
||||||
|
cd /tmp
|
||||||
|
apt-get download x11-xserver-utils
|
||||||
|
dpkg -x x11-xserver-utils*.deb /tmp/x11utils
|
||||||
|
cd /tmp/x11utils
|
||||||
|
cp -aR * /
|
||||||
|
|
||||||
|
update-alternatives --set x-terminal-emulator /usr/bin/xterm
|
||||||
|
|
||||||
|
. /tmp/cleanup
|
||||||
|
|
||||||
|
savechanges /02-xorg.sb
|
||||||
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
/lib/systemd/system/xorg.service
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
! this are Xresources to make xterm look good
|
||||||
|
! put into ~/.Xresources
|
||||||
|
! after changing contents, run xrdb -merge .Xresources
|
||||||
|
! gentoo has a bug so that it doesnt read it when X starts, so add above
|
||||||
|
! command to /etc/xfce4/xinitrc (top) and be happy.
|
||||||
|
|
||||||
|
XTerm*foreground: white
|
||||||
|
XTerm*background: rgb:22/22/22
|
||||||
|
XTerm*cursorColor: rgb:00/ff/00
|
||||||
|
XTerm*borderColor: black
|
||||||
|
XTerm*scrollColor: black
|
||||||
|
XTerm*visualBell: true
|
||||||
|
XTerm*saveLines: 50000
|
||||||
|
XTerm*allowSendEvents: True
|
||||||
|
XTerm*sessionMgt: false
|
||||||
|
XTerm*rightScrollBar: true
|
||||||
|
XTerm*eightBitInput: false
|
||||||
|
XTerm*faceName:fixed:size=11
|
||||||
|
XTerm*boldFont:fixed:size=11
|
||||||
|
XTerm*activeIcon: true
|
||||||
|
XTerm*iconPixmap: /usr/share/icons/locolor/16x16/apps/xterm.xbm
|
||||||
|
XTerm*fullscreen: never
|
||||||
|
|
||||||
|
Xft.antialias: true
|
||||||
|
Xft.hinting: true
|
||||||
|
Xft.hintstyle: hintfull
|
||||||
|
Xft.lcdfilter: lcdlegacy
|
||||||
|
Xft.rgba: rgb
|
||||||
|
|
||||||
|
XTerm*selectToClipboard: true
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
[begin] ( Menu )
|
||||||
|
[exec] (Terminal) { xterm -ls -title Terminal }
|
||||||
|
[exec] (Web browser) { chromium }
|
||||||
|
[exit] (Exit)
|
||||||
|
[end]
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
session.screen0.toolbar.widthPercent: 100
|
||||||
|
session.screen0.strftimeFormat: %H:%M
|
||||||
|
session.edgeSnapThreshold: 10
|
||||||
|
session.menuFile: /root/.blackbox-menu
|
||||||
|
session.styleFile: /usr/share/blackbox/styles/Slax
|
||||||
|
session.changeWorkspaceWithMouseWheel: False
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
[Unit]
|
||||||
|
Description=X-Window
|
||||||
|
ConditionKernelCommandLine=!text
|
||||||
|
After=systemd-user-sessions.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=/bin/su --login -c "/usr/bin/startx -- :0 vt7 -ac -nolisten tcp"
|
||||||
|
|
@ -0,0 +1,79 @@
|
||||||
|
*.appearance: flat solid
|
||||||
|
|
||||||
|
*button.pressed.appearance: sunken solid
|
||||||
|
*button.pressed.backgroundColor: rgb:69/c1/f1
|
||||||
|
*button.appearance: parentrelative
|
||||||
|
|
||||||
|
*.focus.backgroundColor: rgb:69/c1/f1
|
||||||
|
*.unfocus.backgroundColor: rgb:28/28/28
|
||||||
|
|
||||||
|
*font: Bitstream Vera Sans-9
|
||||||
|
|
||||||
|
menu.title.appearance: flat solid
|
||||||
|
menu.title.backgroundColor: rgb:69/c1/f1
|
||||||
|
menu.title.textColor: rgb:28/28/28
|
||||||
|
menu.title.alignment: center
|
||||||
|
menu.title.marginWidth: 6
|
||||||
|
|
||||||
|
menu.frame.appearance: flat gradient border
|
||||||
|
menu.frame.textColor: rgb:28/28/28
|
||||||
|
menu.frame.foregroundColor: grey40
|
||||||
|
menu.frame.borderColor: rgb:69/c1/f1
|
||||||
|
menu.frame.borderWidth: 6
|
||||||
|
menu.frame.disabledColor: darkgrey
|
||||||
|
menu.frame.alignment: left
|
||||||
|
menu.frame.marginWidth: 2
|
||||||
|
|
||||||
|
menu.active.appearance: flat solid border
|
||||||
|
menu.active.backgroundColor: rgb:69/c1/f1
|
||||||
|
menu.active.borderWidth: 4
|
||||||
|
menu.active.borderColor: rgb:69/c1/f1
|
||||||
|
menu.active.textColor: rgb:38/38/38
|
||||||
|
|
||||||
|
rootCommand: bsetroot -solid rgb:77/90/aa
|
||||||
|
|
||||||
|
slit.appearance: raised solid
|
||||||
|
slit.backgroundColor: rgb:77/90/aa
|
||||||
|
slit.marginWidth: 3
|
||||||
|
|
||||||
|
toolbar.appearance: flat gradient border
|
||||||
|
toolbar.alignment: center
|
||||||
|
toolbar*textColor: rgb:28/28/28
|
||||||
|
toolbar.label.appearance: parentrelative
|
||||||
|
toolbar.clock.appearance: parentrelative
|
||||||
|
toolbar.windowLabel.appearance: parentrelative
|
||||||
|
|
||||||
|
window.title.focus.appearance: flat solid
|
||||||
|
window.title.focus.backgroundColor: rgb:69/c1/f1
|
||||||
|
window.title.unfocus.appearance: flat solid
|
||||||
|
window.title.unfocus.backgroundColor: rgb:d6/d6/d6
|
||||||
|
window.title.marginWidth: 5
|
||||||
|
|
||||||
|
window.label.focus.appearance: parentrelative
|
||||||
|
window.label.focus.textColor: rgb:28/28/28
|
||||||
|
window.label.unfocus.appearance: parentrelative
|
||||||
|
window.label.unfocus.textColor: rgb:28/28/28
|
||||||
|
window.label.marginWidth: 1
|
||||||
|
|
||||||
|
window.button.focus.appearance: parentrelative
|
||||||
|
window.button.focus.foregroundColor: white
|
||||||
|
|
||||||
|
window.button.unfocus.appearance: parentrelative
|
||||||
|
window.button.unfocus.foregroundColor: darkgrey
|
||||||
|
|
||||||
|
window.handle.focus.appearance: flat solid
|
||||||
|
window.handle.focus.backgroundColor: rgb:69/c1/f1
|
||||||
|
window.handle.unfocus.appearance: flat solid
|
||||||
|
window.handle.unfocus.backgroundColor: rgb:d6/d6/d6
|
||||||
|
|
||||||
|
window.grip.focus.appearance: flat solid
|
||||||
|
window.grip.focus.backgroundColor: rgb:69/c1/f1
|
||||||
|
window.grip.unfocus.appearance: flat solid
|
||||||
|
window.grip.unfocus.backgroundColor: rgb:d6/d6/d6
|
||||||
|
|
||||||
|
window*alignment: center
|
||||||
|
|
||||||
|
window.handleHeight: 7
|
||||||
|
window.frame.borderWidth: 7
|
||||||
|
window.frame.focus.borderColor: rgb:69/c1/f1
|
||||||
|
window.frame.unfocus.borderColor: rgb:d6/d6/d6
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
#define command2_width 16
|
||||||
|
#define command2_height 16
|
||||||
|
static unsigned char command2_bits[] = {
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xe7, 0xff, 0xcf, 0xff,
|
||||||
|
0x9f, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x9f, 0xff, 0xcf, 0xff, 0xe7, 0xc1,
|
||||||
|
0xf7, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
|
||||||
|
|
@ -0,0 +1,117 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
CWD=$(dirname $(readlink -f $0))
|
||||||
|
|
||||||
|
NAME=fluxbox
|
||||||
|
VERSION=1.3.5
|
||||||
|
|
||||||
|
# first install stock version
|
||||||
|
|
||||||
|
apt-get update
|
||||||
|
apt-get install --no-install-recommends --yes \
|
||||||
|
$NAME \
|
||||||
|
feh \
|
||||||
|
compton \
|
||||||
|
volumeicon-alsa \
|
||||||
|
murrine-themes \
|
||||||
|
libnotify4 \
|
||||||
|
scrot
|
||||||
|
|
||||||
|
. ../../cleanup
|
||||||
|
|
||||||
|
(cd rootcopy && cp --parents -afr * /)
|
||||||
|
chown guest.users /home/guest
|
||||||
|
chown -R guest.users /home/guest/.gtkrc-2.0
|
||||||
|
chown -R guest.users /home/guest/.config
|
||||||
|
|
||||||
|
savechanges /$NAME-stock.sb
|
||||||
|
|
||||||
|
cd /
|
||||||
|
unsquashfs /$NAME-stock.sb
|
||||||
|
|
||||||
|
# create user directories
|
||||||
|
for dir in Desktop Documents Downloads Music Pictures Public Templates Videos; do
|
||||||
|
mkdir -p /squashfs-root/home/guest/$dir
|
||||||
|
mkdir -p /squashfs-root/root/$dir
|
||||||
|
done
|
||||||
|
chown -R guest.users /squashfs-root/home/guest
|
||||||
|
|
||||||
|
# then, we want to patch it to implement window resizing!
|
||||||
|
# so we will recompile whole package
|
||||||
|
|
||||||
|
REBUILD=/tmp/$NAME-rebuild-$$
|
||||||
|
|
||||||
|
apt-get update
|
||||||
|
apt-get --yes build-dep $NAME
|
||||||
|
|
||||||
|
mkdir -p $REBUILD
|
||||||
|
cd $REBUILD
|
||||||
|
|
||||||
|
apt-get source $NAME
|
||||||
|
|
||||||
|
cd $NAME-$VERSION
|
||||||
|
|
||||||
|
cat $CWD/patches/fluxbox-slax.diff > debian/patches/fluxbox-slax.diff
|
||||||
|
echo fluxbox-slax.diff >> debian/patches/series
|
||||||
|
|
||||||
|
dpkg-buildpackage -us -uc
|
||||||
|
|
||||||
|
rm -Rf debian/$NAME/DEBIAN
|
||||||
|
rm -Rf debian/$NAME/usr/share/doc
|
||||||
|
rm -Rf debian/$NAME/usr/share/images
|
||||||
|
|
||||||
|
cp debian/$NAME/usr/bin/fluxbox /squashfs-root/usr/bin
|
||||||
|
|
||||||
|
|
||||||
|
# add xlunch from sources
|
||||||
|
wget -O /tmp/xlunch.tar.gz https://github.com/Tomas-M/xlunch/archive/v4.5.3.tar.gz
|
||||||
|
cd /tmp
|
||||||
|
tar -xf xlunch.tar.gz
|
||||||
|
cd xlunch-4.5.3
|
||||||
|
make
|
||||||
|
cp xlunch /squashfs-root/usr/bin
|
||||||
|
cp extra/gentriesquick /squashfs-root/usr/bin/xlunch_genquick
|
||||||
|
mkdir -p /squashfs-root/usr/share/icons/hicolor/48x48/apps/
|
||||||
|
cp extra/ghost.png /squashfs-root/usr/share/icons/hicolor/48x48/apps/xlunch_ghost.png
|
||||||
|
|
||||||
|
# add tray icon launcher
|
||||||
|
wget -O /tmp/systrayiconlauncher.tar.gz https://github.com/Tomas-M/SystrayIconLauncher/archive/master.tar.gz
|
||||||
|
cd /tmp
|
||||||
|
tar -xf systrayiconlauncher.tar.gz
|
||||||
|
cd SystrayIconLauncher-master
|
||||||
|
apt-get install --yes libgtk2.0-dev
|
||||||
|
make
|
||||||
|
cp systrayicon /squashfs-root/usr/bin
|
||||||
|
|
||||||
|
|
||||||
|
# add gtkdialog
|
||||||
|
wget -O /tmp/gtkdialog.tar.gz https://github.com/Tomas-M/GTKdialog/archive/master.tar.gz
|
||||||
|
cd /tmp
|
||||||
|
tar -xf gtkdialog.tar.gz
|
||||||
|
cd GTKdialog-master
|
||||||
|
make
|
||||||
|
cp gtkdialog /squashfs-root/usr/bin
|
||||||
|
|
||||||
|
|
||||||
|
# battery icon app
|
||||||
|
cd /tmp
|
||||||
|
wget https://github.com/valr/cbatticon/archive/1.6.7.tar.gz
|
||||||
|
tar -xf 1.6.7.tar.gz
|
||||||
|
cd cbatticon-1.6.7
|
||||||
|
cp -R /usr/include/glib-2.0/* /usr/include
|
||||||
|
cp -R /usr/include/gtk-2.0/* /usr/include
|
||||||
|
apt install --yes libnotify-dev
|
||||||
|
sed -i "s/WITH_GTK3 = 1/WITH_GTK3 = 0/" Makefile
|
||||||
|
CFLAGS="-O2 \
|
||||||
|
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include/ \
|
||||||
|
-I/usr/lib/x86_64-linux-gnu/gtk-2.0/include/ \
|
||||||
|
-I/usr/include/gdk-pixbuf-2.0/ \
|
||||||
|
-I/usr/include/atk-1.0/ \
|
||||||
|
-I/usr/include/cairo \
|
||||||
|
-I/usr/include/pango-1.0 \
|
||||||
|
-I/usr/include/glib-2.0 \
|
||||||
|
-I/usr/include/gtk-2.0" \
|
||||||
|
make
|
||||||
|
cp cbatticon /squashfs-root/usr/bin
|
||||||
|
|
||||||
|
dir2sb /squashfs-root /03-desktop.sb
|
||||||
|
|
@ -0,0 +1,97 @@
|
||||||
|
--- a/src/Window.cc 2013-02-13 05:04:05.000000000 -0500
|
||||||
|
+++ b/src/Window.cc 2017-11-05 17:31:37.516503305 -0500
|
||||||
|
@@ -2745,6 +2745,14 @@
|
||||||
|
m_button_grab_x = x - frame().x() - frame().window().borderWidth();
|
||||||
|
m_button_grab_y = y - frame().y() - frame().window().borderWidth();
|
||||||
|
|
||||||
|
+ // If mouse clicked on the border, start window resize instead of move
|
||||||
|
+ if (m_button_grab_x <= 0 || m_button_grab_x >= (int)frame().window().width()
|
||||||
|
+ || m_button_grab_y >= (int)frame().window().height() ) {
|
||||||
|
+ ReferenceCorner dir = getResizeDirection(m_button_grab_x,m_button_grab_y,EDGEORCORNERRESIZE,frame().window().borderWidth(),frame().window().borderWidth());
|
||||||
|
+ startResizing(m_button_grab_x, m_button_grab_y, dir);
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
moving = true;
|
||||||
|
|
||||||
|
Fluxbox *fluxbox = Fluxbox::instance();
|
||||||
|
@@ -2752,7 +2760,7 @@
|
||||||
|
// freely map and unmap the window we're moving.
|
||||||
|
grabPointer(screen().rootWindow().window(), False, ButtonMotionMask |
|
||||||
|
ButtonReleaseMask, GrabModeAsync, GrabModeAsync,
|
||||||
|
- screen().rootWindow().window(), frame().theme()->moveCursor(), CurrentTime);
|
||||||
|
+ screen().rootWindow().window(), None, CurrentTime);
|
||||||
|
|
||||||
|
if (menu().isVisible())
|
||||||
|
menu().hide();
|
||||||
|
--- a/src/FbTk/FbDrawable.hh
|
||||||
|
+++ b/src/FbTk/FbDrawable.hh
|
||||||
|
@@ -52,7 +52,8 @@ public:
|
||||||
|
LEFT,
|
||||||
|
RIGHT,
|
||||||
|
UP,
|
||||||
|
- DOWN
|
||||||
|
+ DOWN,
|
||||||
|
+ MENU
|
||||||
|
};
|
||||||
|
|
||||||
|
// x, y, width and height define a space within which we're drawing a triangle
|
||||||
|
--- a/src/ToolFactory.cc 2013-02-13 05:04:05.000000000 -0500
|
||||||
|
+++ b/src/ToolFactory.cc 2017-10-31 12:11:20.000000000 -0400
|
||||||
|
@@ -101,6 +101,8 @@
|
||||||
|
cmd_str += " (workspace=[current])";
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (name.find("menu") != std::string::npos) cmd_str = "Exec fbappselect";
|
||||||
|
+
|
||||||
|
FbTk::RefCount<FbTk::Command<void> > cmd(FbTk::CommandParser<void>::instance().parse(cmd_str));
|
||||||
|
if (cmd == 0) // we need a command
|
||||||
|
return 0;
|
||||||
|
@@ -110,6 +112,9 @@
|
||||||
|
if (name.find("prev") != std::string::npos)
|
||||||
|
arrow_type = FbTk::FbDrawable::LEFT;
|
||||||
|
|
||||||
|
+ if (name.find("menu") != std::string::npos)
|
||||||
|
+ arrow_type = FbTk::FbDrawable::MENU;
|
||||||
|
+
|
||||||
|
ArrowButton *win = new ArrowButton(arrow_type, parent,
|
||||||
|
0, 0,
|
||||||
|
button_size, button_size);
|
||||||
|
--- a/src/FbTk/FbDrawable.cc 2017-10-19 06:06:08.000000000 -0400
|
||||||
|
+++ a/src/FbTk/FbDrawable.cc 2017-10-19 06:06:57.013131070 -0400
|
||||||
|
@@ -96,7 +96,7 @@
|
||||||
|
if (drawable() == 0 || gc == 0 || width == 0 || height == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
- XPoint pts[3];
|
||||||
|
+ XPoint pts[4];
|
||||||
|
|
||||||
|
if (scale < 100) scale = 100; // not bigger than the space allowed
|
||||||
|
else if (scale > 10000) scale = 10000; // not too small...
|
||||||
|
@@ -115,6 +115,26 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (type) {
|
||||||
|
+ case FbTk::FbDrawable::MENU:
|
||||||
|
+ {
|
||||||
|
+ int s=7; int m=2; int d=2; int sh=-1; //size margin distance
|
||||||
|
+ pts[0].x=m+sh; pts[0].y=m+sh; pts[1].x=m+s+sh; pts[1].y=m+sh;
|
||||||
|
+ pts[2].x=m+s+sh; pts[2].y=m+s+sh; pts[3].x=m+sh; pts[3].y=m+s+sh;
|
||||||
|
+ fillPolygon(gc, pts, 4, Convex, CoordModeOrigin);
|
||||||
|
+
|
||||||
|
+ pts[0].x=m+s+d+sh; pts[0].y=m+sh; pts[1].x=m+s+d+s+sh; pts[1].y=m+sh;
|
||||||
|
+ pts[2].x=m+s+d+s+sh; pts[2].y=m+s+sh; pts[3].x=m+s+d+sh; pts[3].y=m+s+sh;
|
||||||
|
+ fillPolygon(gc, pts, 4, Convex, CoordModeOrigin);
|
||||||
|
+
|
||||||
|
+ pts[0].x=m+sh; pts[0].y=m+s+d+sh; pts[1].x=m+s+sh; pts[1].y=m+s+d+sh;
|
||||||
|
+ pts[2].x=m+s+sh; pts[2].y=m+s+d+s+sh; pts[3].x=m+sh; pts[3].y=m+s+d+s+sh;
|
||||||
|
+ fillPolygon(gc, pts, 4, Convex, CoordModeOrigin);
|
||||||
|
+
|
||||||
|
+ pts[0].x=m+s+d+sh; pts[0].y=m+s+d+sh; pts[1].x=m+s+d+s+sh; pts[1].y=m+s+d+sh;
|
||||||
|
+ pts[2].x=m+s+d+s+sh; pts[2].y=m+s+d+s+sh; pts[3].x=m+s+d+sh; pts[3].y=m+s+d+s+sh;
|
||||||
|
+ fillPolygon(gc, pts, 4, Convex, CoordModeOrigin);
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
case FbTk::FbDrawable::LEFT:
|
||||||
|
// start at the tip
|
||||||
|
pts[0].x = (width / 2) - (ax / 2); pts[0].y = height / 2;
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
Terminal;/usr/share/icons/hicolor/128x128/apps/terminal.png;xterm -title Terminal
|
||||||
|
Web Browser;/usr/share/icons/hicolor/128x128/apps/chromium.png;chromium
|
||||||
|
Text Editor;/usr/share/icons/hicolor/128x128/apps/editor.png;leafpad
|
||||||
|
Calculator;/usr/share/icons/hicolor/128x128/apps/calculator.png;qalculate
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
Logout;/usr/share/icons/hicolor/128x128/actions/logout.png;logout
|
||||||
|
Restart;/usr/share/icons/hicolor/128x128/actions/restart.png;restart
|
||||||
|
Shut down;/usr/share/icons/hicolor/128x128/actions/shutdown.png;shutdown
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
{
|
||||||
|
"AudioCaptureAllowed": false,
|
||||||
|
"account_id_migration_state": 2,
|
||||||
|
"account_tracker_service_last_update": "13154004704520013",
|
||||||
|
"alternate_error_pages": {
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"bookmark_bar": {
|
||||||
|
"show_on_all_tabs": false
|
||||||
|
},
|
||||||
|
"browser": {
|
||||||
|
"check_default_browser": false,
|
||||||
|
"has_seen_welcome_page": true,
|
||||||
|
"show_home_button": false,
|
||||||
|
"window_placement": {
|
||||||
|
"bottom": 10,
|
||||||
|
"left": 10,
|
||||||
|
"maximized": true,
|
||||||
|
"right": 10,
|
||||||
|
"top": 10
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"extensions": {
|
||||||
|
"theme": {
|
||||||
|
"use_system": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ntp": {
|
||||||
|
"most_visited_blacklist": {
|
||||||
|
"c8e0afd1da1d9e29511240861f795a5a": null,
|
||||||
|
"eacc8c3ad0b50bd698ef8752d5ee24b6": null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"safebrowsing": {
|
||||||
|
"enabled": false,
|
||||||
|
"scout_group_selected": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
include "/usr/share/themes/MurrinaChrome/gtk-2.0/gtkrc"
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
[StatusIcon]
|
||||||
|
stepsize=5
|
||||||
|
lmb_slider=false
|
||||||
|
mmb_mute=false
|
||||||
|
use_horizontal_slider=false
|
||||||
|
show_sound_level=false
|
||||||
|
onclick=xterm -e 'alsamixer'
|
||||||
|
theme=White Gnome
|
||||||
|
|
||||||
|
[Hotkeys]
|
||||||
|
up_enabled=true
|
||||||
|
down_enabled=true
|
||||||
|
mute_enabled=true
|
||||||
|
up=XF86AudioRaiseVolume
|
||||||
|
down=XF86AudioLowerVolume
|
||||||
|
mute=XF86AudioMute
|
||||||
|
|
||||||
|
[Alsa]
|
||||||
|
card=default
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
[xarchiver]
|
||||||
|
preferred_format=0
|
||||||
|
confirm_deletion=true
|
||||||
|
sort_filename_content=false
|
||||||
|
store_output=false
|
||||||
|
icon_size=0
|
||||||
|
show_archive_comment=false
|
||||||
|
show_sidebar=false
|
||||||
|
show_location_bar=false
|
||||||
|
preferred_temp_dir=/tmp
|
||||||
|
allow_sub_dir=0
|
||||||
|
overwrite=false
|
||||||
|
full_path=true
|
||||||
|
touch=false
|
||||||
|
freshen=false
|
||||||
|
update=false
|
||||||
|
store_path=false
|
||||||
|
recurse=true
|
||||||
|
solid_archive=false
|
||||||
|
remove_files=false
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
[app] (name=fbrun)
|
||||||
|
[Position] (WINCENTER) {0 0}
|
||||||
|
[Layer] {2}
|
||||||
|
[end]
|
||||||
|
|
||||||
|
[app] (name=gtkdialog)
|
||||||
|
[Position] (WINCENTER) {0 0}
|
||||||
|
[Layer] {2}
|
||||||
|
[end]
|
||||||
|
|
||||||
|
[app] (name=xlunch)
|
||||||
|
[DECO] {NONE}
|
||||||
|
[IconHidden] {yes}
|
||||||
|
[end]
|
||||||
|
|
||||||
|
[app] (name=xterm) {1}
|
||||||
|
[Position] (WINCENTER) {0 0}
|
||||||
|
[end]
|
||||||
|
|
@ -0,0 +1,76 @@
|
||||||
|
session.screen0.slit.maxOver: false
|
||||||
|
session.screen0.slit.placement: TopLeft
|
||||||
|
session.screen0.slit.layer: Dock
|
||||||
|
session.screen0.slit.onhead: 0
|
||||||
|
session.screen0.slit.acceptKdeDockapps: true
|
||||||
|
session.screen0.slit.alpha: 255
|
||||||
|
session.screen0.slit.autoHide: false
|
||||||
|
session.screen0.menu.alpha: 255
|
||||||
|
session.screen0.clientMenu.usePixmap: true
|
||||||
|
session.screen0.tab.placement: TopLeft
|
||||||
|
session.screen0.tab.width: 64
|
||||||
|
session.screen0.toolbar.maxOver: false
|
||||||
|
session.screen0.toolbar.tools: RootMenu, iconbar, systemtray, clock
|
||||||
|
session.screen0.toolbar.autoHide: false
|
||||||
|
session.screen0.toolbar.widthPercent: 100
|
||||||
|
session.screen0.toolbar.alpha: 255
|
||||||
|
session.screen0.toolbar.visible: true
|
||||||
|
session.screen0.toolbar.placement: BottomCenter
|
||||||
|
session.screen0.toolbar.layer: Dock
|
||||||
|
session.screen0.toolbar.height: 0
|
||||||
|
session.screen0.toolbar.onhead: 1
|
||||||
|
session.screen0.tabs.usePixmap: true
|
||||||
|
session.screen0.tabs.maxOver: true
|
||||||
|
session.screen0.tabs.intitlebar: true
|
||||||
|
session.screen0.window.focus.alpha: 255
|
||||||
|
session.screen0.window.unfocus.alpha: 255
|
||||||
|
session.screen0.iconbar.usePixmap: true
|
||||||
|
session.screen0.iconbar.alignment: Left
|
||||||
|
session.screen0.iconbar.iconTextPadding: 10
|
||||||
|
session.screen0.iconbar.mode: {static groups} (workspace)
|
||||||
|
session.screen0.iconbar.iconWidth: 128
|
||||||
|
session.screen0.titlebar.left:
|
||||||
|
session.screen0.titlebar.right: Minimize Maximize Close
|
||||||
|
session.screen0.clickRaises: true
|
||||||
|
session.screen0.maxIgnoreIncrement: false
|
||||||
|
session.screen0.workspacewarping: true
|
||||||
|
session.screen0.colPlacementDirection: TopToBottom
|
||||||
|
session.screen0.maxDisableMove: false
|
||||||
|
session.screen0.rowPlacementDirection: LeftToRight
|
||||||
|
session.screen0.focusNewWindows: true
|
||||||
|
session.screen0.autoRaise: true
|
||||||
|
session.screen0.opaqueMove: true
|
||||||
|
session.screen0.maxDisableResize: false
|
||||||
|
session.screen0.tabFocusModel: ClickToTabFocus
|
||||||
|
session.screen0.tooltipDelay: 500
|
||||||
|
session.screen0.fullMaximization: false
|
||||||
|
session.screen0.noFocusWhileTypingDelay: 0
|
||||||
|
session.screen0.strftimeFormat: %H:%M
|
||||||
|
session.screen0.workspaces: 4
|
||||||
|
session.screen0.allowRemoteActions: false
|
||||||
|
session.screen0.focusModel: ClickFocus
|
||||||
|
session.screen0.windowMenu: /root/.fluxbox/windowmenu
|
||||||
|
session.screen0.workspaceNames: Workspace 1 Ctrl+F1,Workspace 2 Ctrl+F2,Workspace 3 Ctrl+F3,Workspace 4 Ctrl+F4,
|
||||||
|
session.screen0.edgeSnapThreshold: 10
|
||||||
|
session.screen0.showwindowposition: false
|
||||||
|
session.screen0.defaultDeco: NORMAL
|
||||||
|
session.screen0.menuDelay: 200
|
||||||
|
session.screen0.windowPlacement: RowMinOverlapPlacement
|
||||||
|
session.screen0.focusSameHead: false
|
||||||
|
session.screen0.workspacewarping: false
|
||||||
|
session.keyFile: ~/.fluxbox/keys
|
||||||
|
session.menuFile: ~/.fluxbox/menu
|
||||||
|
session.styleFile: /usr/share/fluxbox/styles/Slax
|
||||||
|
session.colorsPerChannel: 4
|
||||||
|
session.forcePseudoTransparency: true
|
||||||
|
session.ignoreBorder: false
|
||||||
|
session.doubleClickInterval: 250
|
||||||
|
session.appsFile: /root/.fluxbox/apps
|
||||||
|
session.tabPadding: 0
|
||||||
|
session.cacheLife: 5
|
||||||
|
session.cacheMax: 200
|
||||||
|
session.styleOverlay: /root/.fluxbox/overlay
|
||||||
|
session.autoRaiseDelay: 250
|
||||||
|
session.slitlistFile: /root/.fluxbox/slitlist
|
||||||
|
session.tabsAttachArea: Window
|
||||||
|
session.configVersion: 13
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
en
|
||||||
|
|
@ -0,0 +1,139 @@
|
||||||
|
# click on the desktop to get menus
|
||||||
|
OnDesktop Mouse1 :MacroCmd {WindowMenu} {HideMenus}
|
||||||
|
OnDesktop Mouse2 :WorkspaceMenu
|
||||||
|
OnDesktop Mouse3 :RootMenu
|
||||||
|
|
||||||
|
# scroll on the desktop to change workspaces
|
||||||
|
#OnDesktop Mouse4 :PrevWorkspace
|
||||||
|
#OnDesktop Mouse5 :NextWorkspace
|
||||||
|
|
||||||
|
# scroll on the toolbar to change current window
|
||||||
|
#OnToolbar Mouse4 :PrevWindow {static groups} (iconhidden=no)
|
||||||
|
#OnToolbar Mouse5 :NextWindow {static groups} (iconhidden=no)
|
||||||
|
|
||||||
|
# alt + left/right click to move/resize a window
|
||||||
|
OnWindow Mod1 Mouse1 :MacroCmd {Raise} {Focus} {StartMoving}
|
||||||
|
OnWindowBorder Move1 :StartMoving
|
||||||
|
|
||||||
|
OnWindow Mod1 Mouse3 :MacroCmd {Raise} {Focus} {StartResizing NearestCorner}
|
||||||
|
OnLeftGrip Move1 :StartResizing bottomleft
|
||||||
|
OnRightGrip Move1 :StartResizing bottomright
|
||||||
|
|
||||||
|
# alt + middle click to lower the window
|
||||||
|
OnWindow Mod1 Mouse2 :Lower
|
||||||
|
|
||||||
|
# control-click a window's titlebar and drag to attach windows
|
||||||
|
OnTitlebar Control Mouse1 :StartTabbing
|
||||||
|
|
||||||
|
# double click on the titlebar to shade
|
||||||
|
OnTitlebar Double Mouse1 :Maximize
|
||||||
|
|
||||||
|
# left click on the titlebar to move the window
|
||||||
|
OnTitlebar Mouse1 :MacroCmd {Raise} {Focus} {ActivateTab} {StartMoving}
|
||||||
|
OnTitlebar Move1 :StartMoving
|
||||||
|
|
||||||
|
# middle click on the titlebar to lower
|
||||||
|
OnTitlebar Mouse2 :Lower
|
||||||
|
|
||||||
|
# right click on the titlebar for a menu of options
|
||||||
|
OnTitlebar Mouse3 :WindowMenu
|
||||||
|
|
||||||
|
# alt-tab
|
||||||
|
Mod1 Tab :NextWindow {groups} (workspace=[current])
|
||||||
|
Mod1 Shift Tab :PrevWindow {groups} (workspace=[current])
|
||||||
|
|
||||||
|
# cycle through tabs in the current window
|
||||||
|
Mod4 Tab :NextTab
|
||||||
|
Mod4 Shift Tab :PrevTab
|
||||||
|
|
||||||
|
# go to a specific tab in the current window
|
||||||
|
Mod4 1 :Tab 1
|
||||||
|
Mod4 2 :Tab 2
|
||||||
|
Mod4 3 :Tab 3
|
||||||
|
Mod4 4 :Tab 4
|
||||||
|
Mod4 5 :Tab 5
|
||||||
|
Mod4 6 :Tab 6
|
||||||
|
Mod4 7 :Tab 7
|
||||||
|
Mod4 8 :Tab 8
|
||||||
|
Mod4 9 :Tab 9
|
||||||
|
|
||||||
|
# open a terminal
|
||||||
|
Mod1 F1 :Exec xterm
|
||||||
|
|
||||||
|
# open a dialog to run programs
|
||||||
|
Mod1 F2 :Exec fbappselect
|
||||||
|
|
||||||
|
# volume settings, using common keycodes
|
||||||
|
# if these don't work, use xev to find out your real keycodes
|
||||||
|
176 :Exec amixer sset Master,0 1+
|
||||||
|
174 :Exec amixer sset Master,0 1-
|
||||||
|
160 :Exec amixer sset Master,0 toggle
|
||||||
|
|
||||||
|
# current window commands
|
||||||
|
Mod1 F4 :Close
|
||||||
|
Mod1 F5 :Kill
|
||||||
|
Mod1 F9 :Minimize
|
||||||
|
Mod1 F10 :Maximize
|
||||||
|
Mod1 F11 :Fullscreen
|
||||||
|
|
||||||
|
# open the window menu
|
||||||
|
Mod1 space :WindowMenu
|
||||||
|
|
||||||
|
# exit fluxbox
|
||||||
|
Control Mod1 Delete :Exit
|
||||||
|
|
||||||
|
# change to previous/next workspace
|
||||||
|
Control Mod1 Left :PrevWorkspace
|
||||||
|
Control Mod1 Right :NextWorkspace
|
||||||
|
|
||||||
|
# send the current window to previous/next workspace
|
||||||
|
Mod4 Left :SendToPrevWorkspace
|
||||||
|
Mod4 Right :SendToNextWorkspace
|
||||||
|
|
||||||
|
# send the current window and follow it to previous/next workspace
|
||||||
|
Control Mod4 Left :TakeToPrevWorkspace
|
||||||
|
Control Mod4 Right :TakeToNextWorkspace
|
||||||
|
|
||||||
|
# change to a specific workspace
|
||||||
|
Control F1 :Workspace 1
|
||||||
|
Control F2 :Workspace 2
|
||||||
|
Control F3 :Workspace 3
|
||||||
|
Control F4 :Workspace 4
|
||||||
|
Control F5 :Workspace 5
|
||||||
|
Control F6 :Workspace 6
|
||||||
|
Control F7 :Workspace 7
|
||||||
|
Control F8 :Workspace 8
|
||||||
|
Control F9 :Workspace 9
|
||||||
|
Control F10 :Workspace 10
|
||||||
|
Control F11 :Workspace 11
|
||||||
|
Control F12 :Workspace 12
|
||||||
|
|
||||||
|
# send the current window to a specific workspace
|
||||||
|
Mod4 F1 :SendToWorkspace 1
|
||||||
|
Mod4 F2 :SendToWorkspace 2
|
||||||
|
Mod4 F3 :SendToWorkspace 3
|
||||||
|
Mod4 F4 :SendToWorkspace 4
|
||||||
|
Mod4 F5 :SendToWorkspace 5
|
||||||
|
Mod4 F6 :SendToWorkspace 6
|
||||||
|
Mod4 F7 :SendToWorkspace 7
|
||||||
|
Mod4 F8 :SendToWorkspace 8
|
||||||
|
Mod4 F9 :SendToWorkspace 9
|
||||||
|
Mod4 F10 :SendToWorkspace 10
|
||||||
|
Mod4 F11 :SendToWorkspace 11
|
||||||
|
Mod4 F12 :SendToWorkspace 12
|
||||||
|
|
||||||
|
# send the current window and change to a specific workspace
|
||||||
|
Control Mod4 F1 :TakeToWorkspace 1
|
||||||
|
Control Mod4 F2 :TakeToWorkspace 2
|
||||||
|
Control Mod4 F3 :TakeToWorkspace 3
|
||||||
|
Control Mod4 F4 :TakeToWorkspace 4
|
||||||
|
Control Mod4 F5 :TakeToWorkspace 5
|
||||||
|
Control Mod4 F6 :TakeToWorkspace 6
|
||||||
|
Control Mod4 F7 :TakeToWorkspace 7
|
||||||
|
Control Mod4 F8 :TakeToWorkspace 8
|
||||||
|
Control Mod4 F9 :TakeToWorkspace 9
|
||||||
|
Control Mod4 F10 :TakeToWorkspace 10
|
||||||
|
Control Mod4 F11 :TakeToWorkspace 11
|
||||||
|
Control Mod4 F12 :TakeToWorkspace 12
|
||||||
|
|
||||||
|
Print :Exec fbprintscreen
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
fbsetroot|-foreground #7790aa -solid #7790aa|style|:0.0
|
||||||
|
|
@ -0,0 +1,68 @@
|
||||||
|
[begin] (Desktop menu)
|
||||||
|
[exec] (Terminal) { fbstartupnotify && xterm -ls }
|
||||||
|
[exec] (File Manager) { fbstartupnotify && pcmanfm }
|
||||||
|
[exec] (Web Browser) { fbstartupnotify && fbliveapp chromium }
|
||||||
|
[exec] (Text Editor) { fbstartupnotify && leafpad }
|
||||||
|
[exec] (Calculator) { fbstartupnotify && qalculate }
|
||||||
|
[exec] (Network Manager) { fbstartupnotify && wicd-manager }
|
||||||
|
[exec] (Run) { fbappselect }
|
||||||
|
[separator]
|
||||||
|
[workspaces] (Workspaces ...)
|
||||||
|
[submenu] (Screen resolution ...) {}
|
||||||
|
[include] (~/.fluxbox/menu_resolution)
|
||||||
|
[end]
|
||||||
|
[submenu] (Keyboard layout ...) {}
|
||||||
|
[exec] (Czech) { fbsetkb cz } </usr/share/icons/locolor/16x16/flags/flag_czech_republic.png>
|
||||||
|
[exec] (English) { fbsetkb us } </usr/share/icons/locolor/16x16/flags/flag_usa.png>
|
||||||
|
[exec] (French) { fbsetkb fr } </usr/share/icons/locolor/16x16/flags/flag_france.png>
|
||||||
|
[exec] (German) { fbsetkb de } </usr/share/icons/locolor/16x16/flags/flag_germany.png>
|
||||||
|
[exec] (Italian) { fbsetkb it } </usr/share/icons/locolor/16x16/flags/flag_italy.png>
|
||||||
|
[exec] (Polish) { fbsetkb pl } </usr/share/icons/locolor/16x16/flags/flag_poland.png>
|
||||||
|
[exec] (Portuguese) { fbsetkb pt } </usr/share/icons/locolor/16x16/flags/flag_portugal.png>
|
||||||
|
[exec] (Russian) { fbsetkb ru } </usr/share/icons/locolor/16x16/flags/flag_russia.png>
|
||||||
|
[exec] (Slovak) { fbsetkb sk } </usr/share/icons/locolor/16x16/flags/flag_slovakia.png>
|
||||||
|
[exec] (Spanish) { fbsetkb es } </usr/share/icons/locolor/16x16/flags/flag_spain.png>
|
||||||
|
[exec] (Ukrainian) { fbsetkb ua } </usr/share/icons/locolor/16x16/flags/flag_ukraine.png>
|
||||||
|
[submenu] (Other ...) {}
|
||||||
|
[exec] (Afghani) { fbsetkb af }
|
||||||
|
[exec] (Albanian) { fbsetkb al }
|
||||||
|
[exec] (Arabic [Morocco]) { fbsetkb ma }
|
||||||
|
[exec] (Arabic) { fbsetkb ara }
|
||||||
|
[exec] (Armenian) { fbsetkb am }
|
||||||
|
[exec] (Azerbaijani) { fbsetkb az }
|
||||||
|
[exec] (Belarusian) { fbsetkb by }
|
||||||
|
[exec] (Belgian) { fbsetkb be }
|
||||||
|
[exec] (Berber [Algeria]) { fbsetkb dz }
|
||||||
|
[exec] (Bosnian) { fbsetkb ba }
|
||||||
|
[exec] (Brasil) { fbsetkb br }
|
||||||
|
[exec] (Bulgarian) { fbsetkb bg }
|
||||||
|
[exec] (Croatian) { fbsetkb hr }
|
||||||
|
[exec] (Danish) { fbsetkb dk }
|
||||||
|
[exec] (Dutch) { fbsetkb nl }
|
||||||
|
[exec] (English [Australian]) { fbsetkb au }
|
||||||
|
[exec] (Estonian) { fbsetkb ee }
|
||||||
|
[exec] (Finnish) { fbsetkb fi }
|
||||||
|
[exec] (French [Canada]) { fbsetkb ca }
|
||||||
|
[exec] (German [Austria]) { fbsetkb at }
|
||||||
|
[exec] (German [Switzerland]) { fbsetkb ch }
|
||||||
|
[exec] (Greek) { fbsetkb gr }
|
||||||
|
[exec] (Hebrew) { fbsetkb il }
|
||||||
|
[exec] (Hungarian) { fbsetkb hu }
|
||||||
|
[exec] (Icelandic) { fbsetkb is }
|
||||||
|
[exec] (Indian) { fbsetkb in }
|
||||||
|
[exec] (Iraqi) { fbsetkb iq }
|
||||||
|
[exec] (Irish) { fbsetkb ie }
|
||||||
|
[exec] (Latvian) { fbsetkb lv }
|
||||||
|
[exec] (Lithuanian) { fbsetkb lt }
|
||||||
|
[exec] (Norwegian) { fbsetkb no }
|
||||||
|
[exec] (Persian) { fbsetkb ir }
|
||||||
|
[exec] (Romanian) { fbsetkb ro }
|
||||||
|
[exec] (Serbian) { fbsetkb rs }
|
||||||
|
[exec] (Slovenian) { fbsetkb si }
|
||||||
|
[exec] (Swedish) { fbsetkb se }
|
||||||
|
[exec] (Turkish) { fbsetkb tr }
|
||||||
|
[end]
|
||||||
|
[end]
|
||||||
|
[exec] (Exit / Logout) { fblogout }
|
||||||
|
|
||||||
|
[end]
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
! The following line will prevent styles from setting the background.
|
||||||
|
! background: none
|
||||||
|
|
@ -0,0 +1,111 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# fluxbox startup-script:
|
||||||
|
#
|
||||||
|
# Lines starting with a '#' are ignored.
|
||||||
|
|
||||||
|
# Change your keymap:
|
||||||
|
xmodmap "/root/.Xmodmap"
|
||||||
|
|
||||||
|
# merge xresource settings
|
||||||
|
xrdb -merge ~/.Xresources
|
||||||
|
|
||||||
|
# set keyboard layout
|
||||||
|
fbsetkb $(cat ~/.fluxbox/kblayout)
|
||||||
|
|
||||||
|
# setup bookmarks for file manager
|
||||||
|
gtk-bookmarks-update
|
||||||
|
|
||||||
|
# Share common directories with guest user. This is necessary
|
||||||
|
# because some apps like chromium must be running under guest
|
||||||
|
for dir in Desktop Documents Downloads Music Pictures Public Templates Videos; do
|
||||||
|
if ! mountpoint /root/$dir; then
|
||||||
|
mount --bind /home/guest/$dir /root/$dir
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# set background color and big wait mouse cursor
|
||||||
|
xsetroot -solid '#111111'
|
||||||
|
xsetroot -xcf /usr/share/icons/breeze_cursors/cursors/watch 37
|
||||||
|
|
||||||
|
# disable screen blanking
|
||||||
|
xset s off
|
||||||
|
xset -dpms
|
||||||
|
|
||||||
|
# volume icon in system tray. Can fail if no soundcard is detected
|
||||||
|
volumeicon &
|
||||||
|
|
||||||
|
# preload compton and fluxbox to cache
|
||||||
|
(compton --help; fluxbox --help) >/dev/null 2>&1
|
||||||
|
|
||||||
|
# Keep black screen for first second while the sound plays.
|
||||||
|
# This slows startup a little, but it is nicer effect.
|
||||||
|
SND=/usr/share/sounds/startup.wav
|
||||||
|
if [ -r $SND ]; then
|
||||||
|
cat $SND > /dev/null # preload
|
||||||
|
aplay $SND &
|
||||||
|
sleep 1 &
|
||||||
|
SOUNDPID=$!
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Debian-local change:
|
||||||
|
# - fbautostart has been added with a quick hack to check to see if it
|
||||||
|
# exists. If it does, we'll start it up by default.
|
||||||
|
which fbautostart > /dev/null
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
fbautostart
|
||||||
|
fi
|
||||||
|
|
||||||
|
# We need to postpone compton after fluxbox starts, else it won't set
|
||||||
|
# the transparency of toolbar properly... So we check the fehbg file,
|
||||||
|
# which is created by fluxbox at the phase when it sets background.
|
||||||
|
# Once the file exist, fluxbox-toolbar is already started
|
||||||
|
|
||||||
|
SIGNAL1=~/.fehbg
|
||||||
|
SIGNAL2=~/.fehbg2
|
||||||
|
|
||||||
|
rm -f $SIGNAL1 2>/dev/null
|
||||||
|
rm -f $SIGNAL2 2>/dev/null
|
||||||
|
|
||||||
|
(
|
||||||
|
while [ ! -e $SIGNAL1 ]; do
|
||||||
|
sleep 0.1
|
||||||
|
done
|
||||||
|
touch $SIGNAL2
|
||||||
|
|
||||||
|
(sleep 1; (echo; sleep 10; echo :quit) | xlunch --window --xposition 20 --yposition -30 \
|
||||||
|
--width 195 --height 53 --noscroll --noprompt --backgroundcolor ffffff00 \
|
||||||
|
--multiple --desktop --button "/usr/share/fluxbox/styles/Slax/pixmaps/start-here.png;;0,0;fbappselect" & ) &
|
||||||
|
|
||||||
|
exec compton --sw-opti -e 0.9 --shadow-exclude 'class_g="xlunch-windowed"' --fade-exclude 'role*="fluxbox-toolbar"' --opacity-rule '70:role*="fluxbox-toolbar"' --no-fading-destroyed-argb -D 5 -c -f -l -2 -t -2 -r 0 -o 1 -z --shadow-exclude 'bounding_shaped'
|
||||||
|
) &
|
||||||
|
|
||||||
|
# We want to run systrayicon only after the volumeicon is started
|
||||||
|
# So we have to wait until it is visible to xwinfo
|
||||||
|
# We also wait after background is set and compton is started
|
||||||
|
(
|
||||||
|
while [ ! -e $SIGNAL2 ]; do
|
||||||
|
sleep 0.1
|
||||||
|
done
|
||||||
|
|
||||||
|
rm -f $SIGNAL2
|
||||||
|
|
||||||
|
while ! xwininfo -name volumeicon >/dev/null 2>&1 && pgrep volumeicon >/dev/null 2>&1; do
|
||||||
|
sleep 0.1
|
||||||
|
done
|
||||||
|
|
||||||
|
exec systrayicon --command fblogout --iconfile /usr/share/icons/locolor/16x16/actions/system-shutdown-symbolic.png
|
||||||
|
) &
|
||||||
|
|
||||||
|
# gen screen resolutions to fluxbox menu
|
||||||
|
xrandr 2>/dev/null | fgrep x | fgrep . | sort -n | tr -s " " | cut -d " " -f 2 \
|
||||||
|
| sed -r "s:(.*):[exec] (\\1) {fbscreensize \\1}:" > ~/.fluxbox/menu_resolution
|
||||||
|
|
||||||
|
# In all cases, wait for the sound sleeper.
|
||||||
|
# If startup took longer (sound completed already), no extra wait
|
||||||
|
wait $SOUNDPID
|
||||||
|
|
||||||
|
# And last but not least we start fluxbox.
|
||||||
|
# Because it is the last app you have to run it with ''exec'' before it.
|
||||||
|
|
||||||
|
exec fluxbox
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
[begin]
|
||||||
|
[shade]
|
||||||
|
[stick]
|
||||||
|
[maximize]
|
||||||
|
[iconify]
|
||||||
|
[raise]
|
||||||
|
[lower]
|
||||||
|
[settitledialog]
|
||||||
|
[sendto]
|
||||||
|
[layer]
|
||||||
|
[alpha]
|
||||||
|
[extramenus]
|
||||||
|
[separator]
|
||||||
|
[close]
|
||||||
|
[end]
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
include "/usr/share/themes/MurrinaChrome/gtk-2.0/gtkrc"
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
startfluxbox
|
||||||
|
|
@ -0,0 +1,39 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
COMMAND=$(
|
||||||
|
xlunch_genquick 64 --desktop | \
|
||||||
|
xlunch --border 7% --sideborder 10% --borderratio 100 --sideborderratio 50 \
|
||||||
|
--background /usr/share/wallpapers/slax_wallpaper.jpg --font DejaVuSans/11 \
|
||||||
|
--voidclickterminate --iconpadding 40 --textpadding 10 \
|
||||||
|
--leastmargin 6 --hidemissing --iconsize 64 \
|
||||||
|
--highlight /usr/share/icons/hicolor/128x128/apps/xlunch_highlight.png \
|
||||||
|
--outputonly
|
||||||
|
)
|
||||||
|
|
||||||
|
if [ "$COMMAND" = "" ]; then
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
fbstartupnotify
|
||||||
|
|
||||||
|
# if command is a .desktop file, parse it
|
||||||
|
if [[ "$COMMAND" =~ \.desktop ]]; then
|
||||||
|
NoTerm="$(cat "$COMMAND" | grep Terminal\\s*= | grep -i "Terminal\\s*=\\s*false")"
|
||||||
|
COMMAND="$(cat "$COMMAND" | grep Exec\\s*= | head -n 1 | sed -r s/.*=// | sed -r "s/%[^%]+//g")"
|
||||||
|
fi
|
||||||
|
|
||||||
|
cmd="$(echo $COMMAND | sed -r "s/\\s.*//")"
|
||||||
|
whi="$(which $cmd | head -n 1)"
|
||||||
|
Xdep=$(ldd $whi | grep libX11)
|
||||||
|
Ndep=$(ldd $whi | grep libncurses)
|
||||||
|
|
||||||
|
WAIT='echo "--------------------------------------------------"; read -n 1 -s -r -p "Command finished. Press any key to close window..."'
|
||||||
|
if [ "$Ndep" != "" -o "$cmd" = "man" -o "$cmd" = "mc" ]; then
|
||||||
|
WAIT=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$Xdep" = "" -a "$cmd" != "chromium" -a "$cmd" != "wicd-manager" -a "$cmd" != "fbliveapp" -a "$NoTerm" = "" ]; then
|
||||||
|
exec xterm -ls -e bash --login -c -- "echo $USER@$HOSTNAME:$PWD# '$COMMAND'; $COMMAND; $WAIT"
|
||||||
|
else
|
||||||
|
exec $COMMAND
|
||||||
|
fi
|
||||||
|
|
@ -0,0 +1,83 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ "$1" = "votecoin" ]; then
|
||||||
|
NAME="VoteCoin Wallet"
|
||||||
|
ABOUT="VoteCoin Wallet is a crypto currency wallet,
|
||||||
|
forked from ZCash, which itslef forked from Bitcoin.
|
||||||
|
It supports fully anonymous transactions and voting.
|
||||||
|
Receive free 10 VOT coins for installing the wallet.
|
||||||
|
In the future, VoteCoin will be used for decision
|
||||||
|
funding in Slax."
|
||||||
|
TMP="/tmp/votecoin.tar.gz"
|
||||||
|
EXECUTABLE="/opt/VoteCoin Wallet-linux-x64/VoteCoin Wallet"
|
||||||
|
INSTALL="wget -O $TMP 'https://votecoin.site/download.php?os=linux' && tar -xf $TMP -C /opt && rm -f $TMP && apt install --yes libxss1 libgconf-2-4 libnss3"
|
||||||
|
POSTINSTALL=""
|
||||||
|
ONLY64=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" = "vlc" ]; then
|
||||||
|
NAME="VLC Video Player"
|
||||||
|
ABOUT="VLC Video Player is a free and open source multimedia player
|
||||||
|
and framework that plays most multimedia files as well as DVDs,
|
||||||
|
Audio CDs, CVDs, and various streaming protocols."
|
||||||
|
EXECUTABLE="/usr/bin/vlc"
|
||||||
|
INSTALL="apt install --yes vlc"
|
||||||
|
POSTINSTALL="rm /usr/share/applications/vlc.desktop; mkdir /home/guest/.config/vlc; echo '[qt4]
|
||||||
|
qt-privacy-ask=0' > /home/guest/.config/vlc/vlcrc;"
|
||||||
|
GUEST=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" = "chromium" ]; then
|
||||||
|
NAME="Chromium Web Browser"
|
||||||
|
ABOUT="Chromium is a free and open source version of
|
||||||
|
the famous Chrome browser, developed by Google."
|
||||||
|
EXECUTABLE="/usr/bin/chromium"
|
||||||
|
INSTALL="apt install --yes chromium chromium-sandbox"
|
||||||
|
POSTINSTALL="rm -f /usr/share/applications/chromium.desktop"
|
||||||
|
GUEST=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
shift
|
||||||
|
|
||||||
|
# ------------------------------------------------
|
||||||
|
# do not touch anything below this line
|
||||||
|
# ------------------------------------------------
|
||||||
|
|
||||||
|
if [ "$ABOUT" != "" ]; then
|
||||||
|
ABOUT="$ABOUT
|
||||||
|
|
||||||
|
"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ "$EXECUTABLE" = "" ]; then
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ ! -f "$EXECUTABLE" ]; then
|
||||||
|
|
||||||
|
if [ $(uname -m) != 'x86_64' -a "$ONLY64" = "true" ]; then
|
||||||
|
gtkdialog -i /usr/share/icons/gnome/16x16/status/dialog-warning.png -t Error -m "$NAME only works in 64bit version of Slax" -y OK
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if gtkdialog -i /usr/share/icons/gnome/16x16/status/dialog-question.png -t Question -m "$ABOUT$NAME is not yet installed.
|
||||||
|
Do you like to download and install it now?" -y Yes -n No; then
|
||||||
|
xterm -ls -e bash --login -c -- "$INSTALL; $POSTINSTALL"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ -f "$EXECUTABLE" ]; then
|
||||||
|
|
||||||
|
fbstartupnotify
|
||||||
|
|
||||||
|
if [ "$GUEST" = "true" -a "$EUID" -eq 0 ]; then
|
||||||
|
xhost + >/dev/null 2>/dev/null
|
||||||
|
exec su -c "$EXECUTABLE "$@"" guest
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec "$EXECUTABLE" "$@"
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
COMMAND=$(
|
||||||
|
xlunch --input /etc/xlunch/logout.dsv --noprompt --border auto --sideborder auto --columns 3 --rows 1 \
|
||||||
|
--background /usr/share/wallpapers/slax_wallpaper.jpg --font DejaVuSans/11 \
|
||||||
|
--voidclickterminate --iconpadding 30 --textpadding 10 \
|
||||||
|
--leastmargin 10 --hidemissing --iconsize 128 \
|
||||||
|
--highlight /usr/share/icons/hicolor/128x128/apps/xlunch_highlight.png \
|
||||||
|
--outputonly
|
||||||
|
)
|
||||||
|
|
||||||
|
SND=/usr/share/sounds/shutdown.wav
|
||||||
|
|
||||||
|
if [ "$COMMAND" != "" -a -r $SND ]; then
|
||||||
|
# blank desktop with smooth effect (if compton still running)
|
||||||
|
xlunch --noprompt --input /dev/null --bc 111111ff &
|
||||||
|
# play shutdown sound
|
||||||
|
aplay $SND
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$COMMAND" = "logout" ]; then
|
||||||
|
killall Xorg
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$COMMAND" = "restart" ]; then
|
||||||
|
reboot
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$COMMAND" = "shutdown" ]; then
|
||||||
|
poweroff
|
||||||
|
fi
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
PICTURES=~/Pictures
|
||||||
|
mkdir -p $PICTURES
|
||||||
|
cd $PICTURES
|
||||||
|
|
||||||
|
# make screenshot
|
||||||
|
SCREENSHOT=$(scrot -e 'echo $f')
|
||||||
|
|
||||||
|
if [ "$SCREENSHOT" = "" ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# open screenshot in 2/3 window
|
||||||
|
read W H X <<< $(xrandr 2>/dev/null | fgrep '*' | tr -s " " | tr "x" " ")
|
||||||
|
W=$(($W*2/3))
|
||||||
|
H=$(($H*2/3))
|
||||||
|
exec feh --geometry $W"x"$H $SCREENSHOT
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
SIGNAL=~/.fehbg
|
||||||
|
rm -f $SIGNAL
|
||||||
|
|
||||||
|
OUTPUT=$(xrandr 2>/dev/null | grep -iv disconnected | grep -i 'connected' | head -n 1 | cut -d " " -f 1)
|
||||||
|
MODE=$1
|
||||||
|
|
||||||
|
xrandr --output $OUTPUT --mode $MODE -s $MODE
|
||||||
|
|
||||||
|
while [ -e $SIGNAL ]; do
|
||||||
|
sleep 0.1
|
||||||
|
done
|
||||||
|
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
killall -SIGUSR1 compton
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
setxkbmap $1
|
||||||
|
echo $1 > ~/.fluxbox/kblayout
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
CURSORSDIR=/usr/share/icons/breeze_cursors/cursors/
|
||||||
|
SIZE=16
|
||||||
|
|
||||||
|
# Set cursor to wait. As soon as new window is detected, change cursor back
|
||||||
|
xsetroot -xcf $CURSORSDIR/left_ptr_watch $SIZE
|
||||||
|
export WINDOWS="$(wmctrl -l)"
|
||||||
|
|
||||||
|
(
|
||||||
|
sleep 0.2
|
||||||
|
until diff <(echo "$WINDOWS") <(wmctrl -l) | egrep -q "^[>]"; do
|
||||||
|
sleep 0.5
|
||||||
|
done
|
||||||
|
xsetroot -xcf $CURSORSDIR/left_ptr $SIZE
|
||||||
|
) &
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
[Desktop Entry]
|
||||||
|
Icon=terminal
|
||||||
|
Name=Terminal
|
||||||
|
Exec=xterm -ls
|
||||||
|
Terminal=false
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
[Desktop Entry]
|
||||||
|
Version=1.0
|
||||||
|
Name=Web Browser
|
||||||
|
GenericName=Web Browser
|
||||||
|
Exec=fbliveapp chromium %U
|
||||||
|
Terminal=false
|
||||||
|
X-MultipleArgs=false
|
||||||
|
Type=Application
|
||||||
|
Icon=chromium.png
|
||||||
|
Categories=Network;WebBrowser;
|
||||||
|
MimeType=audio/*;image/*;video/*;application/pdf;application/x-pdf;text/html;text/xml;application/xhtml_xml;application/x-mimearchive;x-scheme-handler/http;x-scheme-handler/https;
|
||||||
|
StartupWMClass=chromium
|
||||||
|
StartupNotify=true
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
[Desktop Entry]
|
||||||
|
Version=1.0
|
||||||
|
Name=Image viewer
|
||||||
|
GenericName=Image viewer
|
||||||
|
Exec=feh %U
|
||||||
|
Terminal=false
|
||||||
|
X-MultipleArgs=false
|
||||||
|
Type=Application
|
||||||
|
Icon=none.png
|
||||||
|
Categories=ImageViewer;
|
||||||
|
MimeType=image/*;
|
||||||
|
StartupWMClass=feh
|
||||||
|
StartupNotify=true
|
||||||
|
Hidden=true
|
||||||
|
|
@ -0,0 +1,132 @@
|
||||||
|
[Default Applications]
|
||||||
|
application/pdf=chromium.desktop;
|
||||||
|
application/x-pdf=chromium.desktop;
|
||||||
|
audio/3gpp=chromium.desktop;
|
||||||
|
audio/ac3=chromium.desktop;
|
||||||
|
audio/flac=chromium.desktop;
|
||||||
|
audio/mp4=chromium.desktop;
|
||||||
|
audio/mpeg=chromium.desktop;
|
||||||
|
audio/mpegurl=chromium.desktop;
|
||||||
|
audio/ogg=chromium.desktop;
|
||||||
|
audio/x-flac=chromium.desktop;
|
||||||
|
audio/x-gsm=chromium.desktop;
|
||||||
|
audio/x-it=chromium.desktop;
|
||||||
|
audio/x-m4a=chromium.desktop;
|
||||||
|
audio/x-matroska=chromium.desktop;
|
||||||
|
audio/x-mod=chromium.desktop;
|
||||||
|
audio/x-mp3=chromium.desktop;
|
||||||
|
audio/x-mpeg=chromium.desktop;
|
||||||
|
audio/x-mpegurl=chromium.desktop;
|
||||||
|
audio/x-pn-wav=chromium.desktop;;
|
||||||
|
audio/x-tta=chromium.desktop;
|
||||||
|
audio/x-vorbis=chromium.desktop;
|
||||||
|
audio/x-vorbis+ogg=chromium.desktop;
|
||||||
|
audio/x-wav=chromium.desktop;
|
||||||
|
audio/x-wavpack=chromium.desktop;
|
||||||
|
audio/x-xm=chromium.desktop;
|
||||||
|
application/ogg=chromium.desktop;
|
||||||
|
application/x-extension-m4a=chromium.desktop;
|
||||||
|
application/x-extension-mp4=chromium.desktop;
|
||||||
|
application/x-flac=chromium.desktop;
|
||||||
|
application/x-flash-video=chromium.desktop;
|
||||||
|
application/x-ogg=chromium.desktop;
|
||||||
|
image/bmp=feh.desktop;
|
||||||
|
image/gif=feh.desktop;
|
||||||
|
image/jpeg=feh.desktop;
|
||||||
|
image/jpg=feh.desktop;
|
||||||
|
image/pjpeg=feh.desktop;
|
||||||
|
image/png=feh.desktop;
|
||||||
|
image/svg+xml=chromium.desktop;
|
||||||
|
image/svg+xml-compressed=chromium.desktop;
|
||||||
|
image/x-bmp=feh.desktop;
|
||||||
|
image/x-gray=chromium.desktop;
|
||||||
|
image/x-icb=chromium.desktop;
|
||||||
|
image/x-ico=chromium.desktop;
|
||||||
|
image/x-pcx=chromium.desktop;
|
||||||
|
image/x-png=feh.desktop;
|
||||||
|
image/x-portable-anymap=chromium.desktop;
|
||||||
|
image/x-portable-bitmap=chromium.desktop;
|
||||||
|
image/x-portable-graymap=chromium.desktop;
|
||||||
|
image/x-portable-pixmap=chromium.desktop;
|
||||||
|
image/x-xbitmap=chromium.desktop;
|
||||||
|
image/x-xpixmap=chromium.desktop;
|
||||||
|
image/vnd.wap.wbmp=chromium.desktop;
|
||||||
|
image/x-fits=gimp.desktop
|
||||||
|
image/x-icon=gimp.desktop
|
||||||
|
image/x-sun-raster=gimp.desktop
|
||||||
|
image/x-tga=gimp.desktop
|
||||||
|
image/x-xcf=gimp.desktop
|
||||||
|
image/x-xwindowdump=gimp.desktop
|
||||||
|
video/3gpp=chromium.desktop;
|
||||||
|
video/dv=chromium.desktop;
|
||||||
|
video/fli=chromium.desktop;
|
||||||
|
video/flv=chromium.desktop;
|
||||||
|
video/mp2t=chromium.desktop;
|
||||||
|
video/mp4=chromium.desktop;
|
||||||
|
video/mp4v-es=chromium.desktop;
|
||||||
|
video/mpeg=chromium.desktop;
|
||||||
|
video/msvideo=chromium.desktop;
|
||||||
|
video/ogg=chromium.desktop;
|
||||||
|
video/quicktime=chromium.desktop;
|
||||||
|
video/vivo=chromium.desktop;
|
||||||
|
video/vnd.divx=chromium.desktop;
|
||||||
|
video/vnd.rn-realvideo=chromium.desktop;
|
||||||
|
video/vnd.vivo=chromium.desktop;
|
||||||
|
video/webm=chromium.desktop;
|
||||||
|
video/x-anim=chromium.desktop;
|
||||||
|
video/x-avi=chromium.desktop;
|
||||||
|
video/x-flc=chromium.desktop;
|
||||||
|
video/x-fli=chromium.desktop;
|
||||||
|
video/x-flic=chromium.desktop;
|
||||||
|
video/x-flv=chromium.desktop;
|
||||||
|
video/x-m4v=chromium.desktop;
|
||||||
|
video/x-matroska=chromium.desktop;
|
||||||
|
video/x-mpeg=chromium.desktop;
|
||||||
|
video/x-ogm+ogg=chromium.desktop;
|
||||||
|
video/x-theora+ogg=chromium.desktop;
|
||||||
|
application/x-flash-video=chromium.desktop;
|
||||||
|
text/plain=leafpad.desktop;
|
||||||
|
text/css=leafpad.desktop;
|
||||||
|
text/javascript=leafpad.desktop;
|
||||||
|
text/mathml=leafpad.desktop;
|
||||||
|
text/x-c++hdr=leafpad.desktop;
|
||||||
|
text/x-c++src=leafpad.desktop;
|
||||||
|
text/x-csrc=leafpad.desktop;
|
||||||
|
text/x-chdr=leafpad.desktop;
|
||||||
|
text/x-dtd=leafpad.desktop;
|
||||||
|
text/x-java=leafpad.desktop;
|
||||||
|
text/x-javascript=leafpad.desktop;
|
||||||
|
text/x-makefile=leafpad.desktop;
|
||||||
|
text/x-moc=leafpad.desktop;
|
||||||
|
text/x-pascal=leafpad.desktop;
|
||||||
|
text/x-patch=leafpad.desktop;
|
||||||
|
text/x-perl=leafpad.desktop;
|
||||||
|
text/x-php=leafpad.desktop;
|
||||||
|
text/x-python=leafpad.desktop;
|
||||||
|
text/x-sql=leafpad.desktop;
|
||||||
|
text/x-tcl=leafpad.desktop;
|
||||||
|
text/x-tex=leafpad.desktop;
|
||||||
|
text/xml=leafpad.desktop;
|
||||||
|
application/javascript=leafpad.desktop;
|
||||||
|
application/x-cgi=leafpad.desktop;
|
||||||
|
application/x-javascript=leafpad.desktop;
|
||||||
|
application/x-perl=leafpad.desktop;
|
||||||
|
application/x-php=leafpad.desktop;
|
||||||
|
application/x-python=leafpad.desktop;
|
||||||
|
application/x-shellscript=leafpad.desktop;
|
||||||
|
application/xml=leafpad.desktop;
|
||||||
|
application/xml-dtd=leafpad.desktop;
|
||||||
|
application/x-bzip=xarchiver.desktop;
|
||||||
|
application/x-bzip-compressed-tar=xarchiver.desktop;
|
||||||
|
application/x-gzip=xarchiver.desktop;
|
||||||
|
application/x-tar=xarchiver.desktop;
|
||||||
|
application/x-zip=xarchiver.desktop;
|
||||||
|
application/x-zip-compressed=xarchiver.desktop;
|
||||||
|
application/zip=xarchiver.desktop;
|
||||||
|
application/x-compressed-tar=xarchiver.desktop;
|
||||||
|
application/x-bzip2=xarchiver.desktop;
|
||||||
|
application/x-bzip2-compressed-tar=xarchiver.desktop;
|
||||||
|
application/x-lzma-compressed-tar=xarchiver.desktop;
|
||||||
|
application/x-lzma=xarchiver.desktop;
|
||||||
|
application/x-xz=xarchiver.desktop;
|
||||||
|
application/x-xz-compressed-tar=xarchiver.desktop;
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
[Desktop Entry]
|
||||||
|
Icon=videoplayer
|
||||||
|
Name=Video Player
|
||||||
|
Exec=fbliveapp vlc
|
||||||
|
Terminal=false
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
[Desktop Entry]
|
||||||
|
Icon=votecoin
|
||||||
|
Name=VoteCoin Wallet
|
||||||
|
Exec=fbliveapp votecoin
|
||||||
|
Terminal=false
|
||||||
|
Hidden=true
|
||||||
|
After Width: | Height: | Size: 197 B |
|
After Width: | Height: | Size: 197 B |
|
After Width: | Height: | Size: 196 B |
|
After Width: | Height: | Size: 171 B |
|
After Width: | Height: | Size: 175 B |
|
After Width: | Height: | Size: 171 B |
|
After Width: | Height: | Size: 152 B |
|
After Width: | Height: | Size: 152 B |
|
After Width: | Height: | Size: 152 B |
|
After Width: | Height: | Size: 8.1 KiB |
|
|
@ -0,0 +1,114 @@
|
||||||
|
! Slax fluxbox theme
|
||||||
|
! (c) Tomas Matejicek <www.slax.org>
|
||||||
|
|
||||||
|
! common settings
|
||||||
|
*font: Bitstream Vera Sans-9
|
||||||
|
|
||||||
|
background: fullscreen
|
||||||
|
background.pixmap: /usr/share/wallpapers/slax_wallpaper.jpg
|
||||||
|
|
||||||
|
toolbar.justify: left
|
||||||
|
toolbar.clock.justify: right
|
||||||
|
window.justify: center
|
||||||
|
menu.title.justify: center
|
||||||
|
menu.frame.justify: left
|
||||||
|
|
||||||
|
! window
|
||||||
|
window.focus.backgroundColor: #63b4fb
|
||||||
|
window.unfocus.backgroundColor: #ebebeb
|
||||||
|
window.focus.borderColor: #63b4fb
|
||||||
|
window.unfocus.borderColor: #ebebeb
|
||||||
|
window.borderWidth: 6
|
||||||
|
window.handleWidth: 0
|
||||||
|
|
||||||
|
! title
|
||||||
|
window.title.height: 18
|
||||||
|
window.title.focus: flat solid
|
||||||
|
window.title.focus.color: #63b4fb
|
||||||
|
window.label.focus: parentrelative
|
||||||
|
window.label.focus.textColor: #282828
|
||||||
|
window.title.unfocus: flat solid
|
||||||
|
window.title.unfocus.color: #ebebeb
|
||||||
|
window.label.unfocus: parentrelative
|
||||||
|
window.label.unfocus.textColor: #282828
|
||||||
|
|
||||||
|
! buttons
|
||||||
|
window.button.focus: flat solid
|
||||||
|
window.button.focus.color: #63b4fb
|
||||||
|
window.button.focus.picColor: #282828
|
||||||
|
window.button.pressed: sunken solid
|
||||||
|
window.button.pressed.color: #63b4fb
|
||||||
|
window.button.pressed.picColor: #000000
|
||||||
|
window.button.unfocus: flat solid
|
||||||
|
window.button.unfocus.color: #ebebeb
|
||||||
|
window.button.unfocus.picColor: #282828
|
||||||
|
|
||||||
|
window.close.pixmap: closefcs.png
|
||||||
|
window.close.unfocus.pixmap: closeunfcs.png
|
||||||
|
window.close.pressed.pixmap: closepr.png
|
||||||
|
window.iconify.pixmap: minfcs.png
|
||||||
|
window.iconify.unfocus.pixmap: minunfcs.png
|
||||||
|
window.iconify.pressed.pixmap: minpr.png
|
||||||
|
window.maximize.pixmap: maxfcs.png
|
||||||
|
window.maximize.unfocus.pixmap: maxunfcs.png
|
||||||
|
window.maximize.pressed.pixmap: maxpr.png
|
||||||
|
|
||||||
|
! taskbar
|
||||||
|
toolbar.height: 18
|
||||||
|
toolbar.bevelWidth: 0
|
||||||
|
toolbar.borderWidth: 3
|
||||||
|
toolbar.borderColor: #222222
|
||||||
|
toolbar: flat solid
|
||||||
|
|
||||||
|
toolbar.color: #222222
|
||||||
|
toolbar.clock: flat solid
|
||||||
|
toolbar.clock.color: #222222
|
||||||
|
toolbar.clock.textColor: white
|
||||||
|
|
||||||
|
toolbar.iconbar.empty: flat
|
||||||
|
toolbar.iconbar.empty.color: #222222
|
||||||
|
|
||||||
|
toolbar.iconbar.focused.borderWidth: 15
|
||||||
|
toolbar.iconbar.focused.borderColor: #222222
|
||||||
|
toolbar.iconbar.focused: flat
|
||||||
|
toolbar.iconbar.focused.color: #dddddd
|
||||||
|
toolbar.iconbar.focused.textColor: #282828
|
||||||
|
toolbar.iconbar.focused.justify: left
|
||||||
|
|
||||||
|
toolbar.iconbar.unfocused.borderWidth: 15
|
||||||
|
toolbar.iconbar.unfocused.borderColor: #222222
|
||||||
|
toolbar.iconbar.unfocused: flat
|
||||||
|
toolbar.iconbar.unfocused.color: #444444
|
||||||
|
toolbar.iconbar.unfocused.textColor: white
|
||||||
|
toolbar.iconbar.unfocused.justify: left
|
||||||
|
|
||||||
|
toolbar.button: flat solid
|
||||||
|
toolbar.button.borderWidth: 13
|
||||||
|
toolbar.button.borderColor: #222222
|
||||||
|
toolbar.button.color: #222222
|
||||||
|
toolbar.button.picColor: #61CA00
|
||||||
|
toolbar.button.pressed: flat solid
|
||||||
|
|
||||||
|
! menu
|
||||||
|
menu.title: flat solid
|
||||||
|
menu.title.color: #63b4fb
|
||||||
|
menu.title.textColor: #282828
|
||||||
|
menu.title.justify: center
|
||||||
|
|
||||||
|
menu.bevelWidth: 4
|
||||||
|
menu.borderWidth: 6
|
||||||
|
menu.borderColor: #63b4fb
|
||||||
|
|
||||||
|
menu.frame: flat solid
|
||||||
|
menu.frame.disableColor: #999999
|
||||||
|
menu.frame.color: #ebebeb
|
||||||
|
menu.frame.textColor: #282828
|
||||||
|
menu.frame.justify: left
|
||||||
|
|
||||||
|
menu.hilite: flat solid
|
||||||
|
menu.hilite.textColor: #ffffff
|
||||||
|
menu.hilite.color: #63b4fb
|
||||||
|
|
||||||
|
menu.bullet: empty
|
||||||
|
menu.bullet.position: right
|
||||||
|
menu.itemHeight: 24
|
||||||
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 5.8 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 543 B |
|
After Width: | Height: | Size: 141 B |
|
|
@ -0,0 +1,6 @@
|
||||||
|
#define command2_width 16
|
||||||
|
#define command2_height 16
|
||||||
|
static unsigned char command2_bits[] = {
|
||||||
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xe7, 0xff, 0xcf, 0xff,
|
||||||
|
0x9f, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x9f, 0xff, 0xcf, 0xff, 0xe7, 0xc1,
|
||||||
|
0xf7, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
|
||||||
|
After Width: | Height: | Size: 536 B |
|
After Width: | Height: | Size: 546 B |