Compare commits

..

72 commits

Author SHA1 Message Date
0bda550e3b add LICENSE 2024-09-27 18:51:20 +02:00
adee0c95d9 add ifstat pkg to install_base no-recommends 2024-01-03 00:47:36 +01:00
ad42d8eb2a add imagemagick pkg to install_base no-recommends 2024-01-03 00:41:28 +01:00
a4ed8568fe update README 2023-12-12 03:04:31 +01:00
0aace9c02c updated screenshots 2023-12-12 02:56:08 +01:00
b1500796e0 nanodesk-menumaker is far away from being usable. its just an experiment 2023-10-26 18:30:33 +02:00
DeltaLima
d3c5faf205 first try of own menumaker to get rid of the xdgmenumaker package 2023-10-24 17:40:36 +02:00
9179806421 remove generating hardcoded iconlist for jwm config 2023-10-24 01:46:37 +02:00
92e76f1a94 use nanodesk-gen-iconlist in jwm config 2023-10-24 01:42:14 +02:00
e676582a1e nanodesk-gen-iconlist helperscript
to create iconlist dynamic at start and not hardcoded when building the iso
2023-10-24 01:39:45 +02:00
1e1c9dedac typo fixed 2023-10-23 16:17:43 +02:00
b0b8f6d793 typo fixed 2023-10-23 16:01:34 +02:00
4524ebf944 replace connman-gtk with nm-applet 2023-10-23 15:11:14 +02:00
1eb344ffd3 ask if root password should be changed 2023-10-23 12:23:32 +02:00
f92e632b0a keep ifupdown package 2023-10-23 12:14:29 +02:00
9e48937e3c use network-manager instead of connman
connman does not work probably and i havent found out why yet (havent searched that much).
a short test and comparison shows up, that the memory consumption of both is close to identical.

So I choose now network-manager, which is much more common and comes with a much better support and feature set.
2023-10-23 12:13:24 +02:00
71f45b7a80 fix welcome.md 2023-10-22 22:27:41 +02:00
a536a60140 remove installer files from target 2023-10-22 21:50:05 +02:00
aa3680b401 time for the first testbuild with nanodesk-installer-gxm 2023-10-22 21:38:52 +02:00
8a68da5414 time for the first testbuild with nanodesk-installer-gxm 2023-10-22 21:25:03 +02:00
dc935dafc1 time for the first testbuild with nanodesk-installer-gxm 2023-10-22 21:17:15 +02:00
326c9bce8e time for the first testbuild with nanodesk-installer-gxm 2023-10-22 20:35:46 +02:00
879d8ea922 time for the first testbuild with nanodesk-installer-gxm 2023-10-22 20:29:21 +02:00
a00f01e4b1 commit ongoing progress with nanodesk-installer-gxm 2023-10-22 19:57:47 +02:00
f3bbf59cee commit ongoing progress with nanodesk-installer-gxm 2023-10-22 19:56:21 +02:00
75367d72e2 commit ongoing progress with nanodesk-installer-gxm 2023-10-22 19:41:13 +02:00
b61b79c4e9 time for the first testbuild with nanodesk-installer-gxm 2023-10-22 18:22:26 +02:00
a980a1c44a first steps with nanodesk-installer-gxm gxmessage 2023-10-22 16:54:14 +02:00
885ad3f228 remove ifupdown to solve conflict with connman 2023-10-22 16:05:26 +02:00
ccc971979e moved gtkrc for gtk-2.0 from etc/skel to etc/gtk-2.0, makes more sense 2023-10-22 14:37:59 +02:00
9f9605e666 add gnome-icon-theme and others so we can remove applications-multimedia icon workaround 2023-10-22 14:17:03 +02:00
523a8eddd0 update README 2023-10-22 10:57:10 +02:00
5fdb421d99 update README 2023-10-22 10:50:17 +02:00
3773286569 update screenshots 2023-10-22 10:46:52 +02:00
af4b748699 fix typo 2023-10-22 10:25:21 +02:00
ef0b4eb887 fix typo 2023-10-22 10:13:49 +02:00
efcea4b7d6 fix missing multimedia menu icon - dirty workaround 2023-10-22 10:05:55 +02:00
84801cf5e6 typo fixed 2023-10-22 09:25:19 +02:00
81e3987d34 typo fixed 2023-10-22 09:23:44 +02:00
45017d2132 use icon for show desktop button 2023-10-22 09:16:07 +02:00
750728dab9 typo fixed 2023-10-22 08:06:53 +02:00
00c5562607 typo fixed 2023-10-22 08:01:38 +02:00
5777e35c09 changed README.md 2023-10-22 07:54:05 +02:00
bc473cf9ac move nanodesk-installer to /usr/sbin, changed welcome.md 2023-10-22 07:47:15 +02:00
fe11c67cea add qpdfview pdf viewer 2023-10-22 07:25:24 +02:00
f66d489735 seperated nanodesk pcmanfm profile into own one 2023-10-22 06:50:22 +02:00
77cf855026 rename netcat pkg 2023-10-22 06:13:54 +02:00
7a22d39616 introducing nanodesk-first-start, renaming stuff 2023-10-22 06:10:08 +02:00
599498ff59 add xdg-user-dirs package 2023-10-22 05:38:31 +02:00
99795b5d43 fixed wrong names , paths , etc 2023-10-22 05:06:03 +02:00
5d0d3b0616 rename system.jwmrc to system.nanodesk.jwmrc 2023-10-22 04:52:13 +02:00
a308ad0d47 removed sudoers from nanodesk-files, add nanodesk jwm config beside the original from the pkg 2023-10-22 04:42:08 +02:00
e5d7ee0d3d changed nanodesk pixmaps 2023-10-22 04:05:04 +02:00
791b68714b remove root user password, add debian user to sudo group 2023-10-22 03:37:08 +02:00
f7fa7a2779 replace rsync with unsquashfs in nanodesk-installer.sh 2023-10-22 03:26:11 +02:00
270f0bc3f3 add squashfs-tools for the installer to use unsquashfs instead rsyncing the running environment 2023-10-22 03:20:01 +02:00
8d5f997ef0 add bash-completion pkg, set lxterminal as x-terminal-emulator 2023-10-22 03:15:45 +02:00
3884886c7c add lxpolkit to jwm Startup
with lxpolkit pcmanfm can mount devices and ask for privilege escalation
2023-10-22 02:49:29 +02:00
18f2f698c4 removed some packages in hope to fix connman not working right 2023-10-22 01:06:44 +02:00
db6b61aaf6 delete some nonsense 2023-10-21 20:33:26 +02:00
a0f9525f97 fix user creation. now /etc/skel gets copied recursive 2023-10-21 20:32:15 +02:00
43b63058f7 use pcmanfm as desktop (consumes ~+20MB RAM but gets more comfort) 2023-10-21 20:07:56 +02:00
f353e4b842 replace firefox with falkon browser, it consumes much less ram (~200mb) 2023-10-21 18:00:40 +02:00
f0e6a3abbe change download url 2023-09-10 23:31:43 +02:00
71cb2e77e7 change download url 2023-09-10 23:31:12 +02:00
c8bef2e84e in debian 12 the absolute path for mkfs.vfat is needed 2023-06-14 12:34:06 +02:00
874093fc98 merge no-recommends 2023-06-12 00:10:01 +02:00
4e14e21f96 add compression packages 2023-05-06 23:09:30 +02:00
2fb02e6ef6 „nanodesk-files/etc/jwm/system.jwmrc“ ändern 2023-05-06 21:46:45 +02:00
7279ccab24 removed ipw2x00 firmware, it wants license agreement and breaks noninteractive installation. its quite old too, so i dont include it 2023-05-05 00:03:40 +02:00
f0313ccba7 b43 packages fails during install, i dont care for now 2023-05-04 23:59:15 +02:00
22100ed7e9 add firmware-packages i think are useful for a desktop system 2023-05-04 23:56:00 +02:00
33 changed files with 2542 additions and 1724 deletions

9
LICENSE Normal file
View file

@ -0,0 +1,9 @@
MIT License
Copyright (c) 2024 DeltaLima
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View file

@ -1,22 +1,36 @@
# nanodesk - leightweight linux (live) desktop # nanodesk - lightweight linux (live) desktop
Origin: https://git.la10cy.net/DeltaLima/nanodesk Origin: https://git.la10cy.net/DeltaLima/nanodesk
nanodesk is a less resources consuming debian linux "distribution" using the nanodesk is a lightweight debian linux flavor/distribution, using the
jwm window manager, which I made for fun and learning. jwm window manager.
"distribution" because, it is just a debootstrap with some extra packages and This is just a fun and learning project. My goal is to have a (live) system
custom jwm config, baked together with live-boot and a little installer script which is very lightweight and still usable too as daily driver.
for installing nanodesk on a harddrive.
My goal is to have a (live) system which is very lightweight and still usable too.
This is for a VM where you need a basic graphical environment or for an old computer This is for a VM where you need a basic graphical environment or for an old computer
with less resources. with less resources.
## The Operating System
Actual nanodesk uses **Debian 12 bookworm** as base. It comes with following
programs preinstalled by default
- JWM Window Manager
- Falkon Web browser
- PCManFM Filemanager
- Connman Network Manager
- X File Explorer Suite
- qpdfview PDF and Image Viewer
- GParted Partition Manager
- Synaptic Package Manager
- LXTerminal Terminal Emulator
See [Customize nanodesk](#customize-nanodesk) to learn more about how to add
your own packages and so on.
## Screenshots ## Screenshots
The most important thing about a completely useless linux distro are the screenshots. The most important thing about a linux distro are the screenshots. :p
Here you go! Here you go!
@ -33,50 +47,62 @@ Here you go!
![nanodesk_6](screenshots/nanodesk_6.png) ![nanodesk_6](screenshots/nanodesk_6.png)
![nanodesk_7-n-i-gxm](screenshots/nanodesk_7-n-i-gxm.png)
![nanodesk_7](screenshots/nanodesk_7.png) ![nanodesk_7](screenshots/nanodesk_7.png)
![nanodesk_7](screenshots/nanodesk_8.png)
## Build it your own! ## Build it your own!
If you want to build nanodesk by your own, maybe with your own customisations - `makeanything.sh` will cover you. If you want to build nanodesk by your own, maybe with your own customisations - `makeanything.sh` will cover you.
This script will perform all tasks which are necessary to build nanodesk from scratch, including installing packages on your host machine where you build nanodesk. This script will perform all tasks which are necessary to build nanodesk from scratch, including installing packages on your host machine where you build nanodesk.
The script is tested running with Ubuntu 22.04. The script is tested running with Ubuntu 22.04, Debian 11 and Debian 12.
Simply run `./makeanything.sh` and the show will start! Simply run `./makeanything.sh` and the show will start!
Your .iso file will be in `build/nanodesk-vX.Y.Z`. Git tags are used for versioning. Your .iso file will be generated in `build`, named like `nanodesk-vX.Y.Z.iso`.
Git tags and commit count are used for versioning.
You can give the script a custom debian-mirror, if your prefer e.g. `./makeanything.sh http://ftp.debian.org/debian/` You can give the script a custom debian-mirror, if your prefer e.g.
`./makeanything.sh http://ftp.debian.org/debian/`
## customize nanodesk ## customize nanodesk
Of course you can customize nanodesk to fit your needs! Of course you can customize nanodesk to fit your needs!
The simplest way is to add your favorite packages to the nanodesk live-image. Just add them to The simplest way is to add your favorite packages to the nanodesk live-image.
the file `templates/install_base.custompkg.tpl.sh` Just add them to the file `templates/install_base.customsteps.sh`
For example, let's add Abiword and Pidgin to nanodesk, the file would look like For example, let's add Abiword and Pidgin to nanodesk, the file would look like
```bash ```bash
apt install -y \ apt install -y \
audacious \ audacious \
vlc \
abiword \ abiword \
pidgin pidgin
``` ```
Now run `makeanything.sh` and you will have both programs on your live-linux. Now run `makeanything.sh` and you will have both programs on your live-linux.
You can also jump into the chroot with `chroot build/chroot/ /bin/bash` and do customizations by hand. Just run `makeanything.sh` afterwards to recreate the .iso You can also jump into the chroot with `chroot build/chroot/ /bin/bash` and do
customizations by hand. Just run `makeanything.sh` afterwards to recreate the
.iso
Keep in mind that the chroot does not get recreated everytime you run `makeanything.sh`. Keep in mind that the chroot does not get recreated everytime you run
While experimenting around it could be helpful to delete your complete `build/` directory `makeanything.sh`.
While experimenting around it could be helpful to delete your complete `build/`
directory
```bash ```bash
sudo rm -Rf build sudo rm -Rf build
``` ```
keeping a fresh copy of `build/chroot/` after the first debootstrap is also a good idea to save bandwidth :) keeping a fresh copy of `build/chroot/` after the first debootstrap is also a
good idea to save bandwidth :)
```bash ```bash
sudo cp -a build/chroot build/chroot.bak sudo cp -a build/chroot build/chroot.bak
@ -84,11 +110,15 @@ sudo cp -a build/chroot build/chroot.bak
## install nanodesk on harddrive ## install nanodesk on harddrive
When you booted nanodesk from the iso, then you can install nanodesk to your harddrive. In the homefolder of `root` ist the installerscript `install_nanodesk.sh` When you booted nanodesk from the iso, then you can install nanodesk to your
harddrive. The installer is called `nanodesk-installer`.
Before doing so, you have to create, if not already existing, a partition with a formatted linux compatible filesystem (e.g. ext4). Before doing so, you have to create, if not already existing, a partition with
a formatted linux compatible filesystem (e.g. ext4).
nanodesk comes with fdisk, so you can create it very quick and format the partition afterwards. When you decide to create a swap-partiotion, do not forget to run mkswap. nanodesk comes with fdisk, so you can create it very quick and format the
partition afterwards. When you decide to create a swap-partiotion, do not
forget to run mkswap.
Then the installer will detect it automatically (I hope so!) and use it. Then the installer will detect it automatically (I hope so!) and use it.
This is an example, how to do the partitioning and formatting. This is an example, how to do the partitioning and formatting.
@ -163,7 +193,7 @@ root@nanodesk:~# ./install_nanodesk.sh /dev/sda1
Yeah, you can download the .iso file. Yeah, you can download the .iso file.
Download: [http://retro.la10cy.net/nanodesk/](http://retro.la10cy.net/nanodesk/) Download: [http://pub.la10cy.net/nanodesk/](http://pub.la10cy.net/nanodesk/)
## Resources ## Resources
@ -171,3 +201,4 @@ Download: [http://retro.la10cy.net/nanodesk/](http://retro.la10cy.net/nanodesk/)
- xdgmenumaker deb package: https://bgstack15.wordpress.com/2020/03/03/package-for-devuan-xdgmenumaker/ - xdgmenumaker deb package: https://bgstack15.wordpress.com/2020/03/03/package-for-devuan-xdgmenumaker/
- How To debootstrap a small desktop system: https://git.la10cy.net/DeltaLima/devnull/src/branch/main/debootstrap_minimal_dekstop_from_scratch.md - How To debootstrap a small desktop system: https://git.la10cy.net/DeltaLima/devnull/src/branch/main/debootstrap_minimal_dekstop_from_scratch.md
- How To create a linux live cd: https://www.willhaley.com/blog/custom-debian-live-environment/ - How To create a linux live cd: https://www.willhaley.com/blog/custom-debian-live-environment/
- Tux: https://archive.org/details/linuxmandrake7.2chipedition

View file

@ -1,3 +1,4 @@
apt install -y --no-install-recommends \ apt install -y \
transmission \ transmission \
audacious audacious \
vlc \

View file

@ -53,91 +53,101 @@ apt update || error
### install base packages --no-install-recommends ### install base packages --no-install-recommends
message "install nanodesk minimal base packages (apt install --no-install-recommends)" message "install nanodesk minimal base packages (apt install --no-install-recommends)"
#apt install -y \
apt install -y --no-install-recommends \ apt install -y --no-install-recommends \
linux-image-amd64 \ linux-image-amd64 \
firmware-linux \ firmware-linux \
firmware-linux-nonfree \ firmware-linux-nonfree \
firmware-zd1211 firmware-ti-connectivity firmware-realtek-rtl8723cs-bt \ firmware-zd1211 firmware-ti-connectivity firmware-realtek-rtl8723cs-bt \
firmware-realtek firmware-netxen firmware-netronome firmware-myricom \ firmware-realtek firmware-netxen firmware-netronome firmware-myricom \
firmware-libertas firmware-iwlwifi \ firmware-libertas firmware-iwlwifi \
firmware-intel-sound firmware-cavium firmware-brcm80211 firmware-bnx2x \ firmware-intel-sound firmware-cavium firmware-brcm80211 firmware-bnx2x \
firmware-bnx2 firmware-atheros firmware-ath9k-htc \ firmware-bnx2 firmware-atheros firmware-ath9k-htc \
live-boot \ live-boot \
dialog \ dialog \
sudo \ sudo \
console-data \ console-data \
locales \ bash-completion \
man \ locales \
unzip \ man \
zip \ unzip \
bzip2 \ zip \
unrar \ bzip2 \
p7zip-full \ zstd \
xz-utils \ grub-pc \
zstd \ host \
wpagui \ wireless-tools \
connman-gtk \ unrar \
xserver-xorg \ p7zip-full \
xscreensaver \ xz-utils \
xfonts-75dpi \ wpagui \
xfonts-100dpi \ xserver-xorg \
x11-apps \ xscreensaver \
x11-utils \ xfonts-75dpi \
xdg-utils \ xfonts-100dpi \
xterm \ fonts-noto-color-emoji \
xdm \ x11-apps \
jwm \ x11-utils \
mc \ xdg-utils \
wget \ xdg-user-dirs \
curl \ xterm \
less \ xdm \
rsync \ jwm \
vim \ mc \
links2 \ wget \
ncdu \ curl \
htop \ less \
git \ openssh-client \
gxmessage \ rsync \
gsimplecal \ vim \
alsa-utils \ links2 \
volumeicon-alsa \ ncdu \
arandr \ htop \
xfe \ git \
xarchiver \ telnet \
lxterminal \ netcat-traditional \
gparted \ gxmessage \
dillo \ gsimplecal \
firefox-esr \ alsa-utils \
/tmp/xdgmenumaker*.deb || error volumeicon-alsa \
arandr \
xfe \
xarchiver \
qpdfview \
lxterminal \
lxpolkit \
gparted \
dillo \
falkon \
gtk2-engines \
gnome-themes-extra \
adwaita-qt \
adwaita-icon-theme \
gnome-icon-theme \
lxde-icon-theme \
tango-icon-theme \
squashfs-tools \
synaptic \
imagemagick \
ifstat \
/tmp/xdgmenumaker*.deb || error
message "install nanodesk base packages with recommends" message "install nanodesk base packages with recommends"
apt install -y \ apt install -y \
grub-pc \ grub-pc \
ifupdown \ network-manager \
net-tools \ network-manager-gnome \
isc-dhcp-client \ net-tools \
host \ isc-dhcp-client \
wireless-tools \ host \
gvfs-common \ wireless-tools \
pcmanfm \ gvfs-common \
pcmanfm \
#message "install linux-kernel from backports" #message "install linux-kernel from backports"
#apt install -t bullseye-backports -y linux-image-amd64 #apt install -t bullseye-backports -y linux-image-amd64
### set root password
message "set root password to 'debian'"
echo -e "debian\ndebian" | (passwd root)
### add debian user
message "create user debian"
useradd -m -U -s /bin/bash debian
### set password
message "set password for user debian to 'debian'"
echo -e "debian\ndebian" | (passwd debian)
### Configure timezone and locale ### Configure timezone and locale
#dpkg-reconfigure locales #dpkg-reconfigure locales
#dpkg-reconfigure console-data #dpkg-reconfigure console-data
@ -161,7 +171,7 @@ echo "Europe/Berlin" > /etc/timezone && \
#### ####
###### ######
message "run custom steps from /tmp/install_base.customsteps.tpl.sh" message "run custom steps from /tmp/install_base.customsteps.sh"
. /tmp/install_base.customsteps.sh . /tmp/install_base.customsteps.sh
###### ######

View file

@ -114,17 +114,31 @@ done
message "copy build/nanodesk-files/ to build/chroot/" message "copy build/nanodesk-files/ to build/chroot/"
sudo cp -r build/nanodesk-files/* build/chroot/ sudo cp -r build/nanodesk-files/* build/chroot/
message "generate icon path list for jwm config"
find build/chroot/usr/share/icons/ -type d | sed 's/build\/chroot//g' > build/tmp/jwm.iconlist
sed -i -e 's/^/\ \ \ \ <IconPath>/g' -e 's/$/<\/IconPath>/g' build/tmp/jwm.iconlist
sudo cp build/tmp/jwm.iconlist build/chroot/tmp/ || error
message "putting generated icon path list to /etc/jwm/system.jwmrc"
$CHROOTCMD sed -i '/<\!-- GENERATED ICONLIST -->/r /tmp/jwm.iconlist' /etc/jwm/system.jwmrc || error
message "correct file permissions" message "correct file permissions"
$CHROOTCMD /usr/bin/chmod 440 /etc/sudoers || error #$CHROOTCMD /usr/bin/chmod 440 /etc/sudoers || error
$CHROOTCMD /usr/bin/chmod 755 /root/nanodesk-installer.sh || error $CHROOTCMD /usr/bin/chmod 755 /usr/sbin/nanodesk-installer || error
$CHROOTCMD /usr/bin/chmod 755 /usr/bin/nanodesk-installer-gxm || error
$CHROOTCMD /usr/bin/chmod 755 /usr/bin/nanodesk || error
$CHROOTCMD /usr/bin/chmod 755 /usr/bin/nanodesk-first-start || error
$CHROOTCMD /usr/bin/chmod 755 /usr/bin/nanodesk-gen-iconlist || error
message "set x-terminal-emulator to lxterminal"
$CHROOTCMD /usr/bin/update-alternatives --set x-terminal-emulator /usr/bin/lxterminal
message "set x-window-manager to jwm-nanodesk"
$CHROOTCMD /usr/bin/update-alternatives --install /usr/bin/x-window-manager x-window-manager /usr/bin/nanodesk 25
$CHROOTCMD /usr/bin/update-alternatives --set x-window-manager /usr/bin/nanodesk
### set root password
#message "set root password to 'debian'"
#echo -e "debian\ndebian" | $CHROOTCMD /usr/bin/passwd root
### add debian user
message "create user debian, password 'debian'"
echo -e "debian\ndebian\nDebian\n\n\n\n\y\n" | $CHROOTCMD /usr/sbin/adduser debian
message "add user debian to group sudo"
$CHROOTCMD /usr/sbin/usermod -a -G sudo debian
message "clear /tmp" message "clear /tmp"
$CHROOTCMD /usr/bin/rm -Rf /tmp/* || error $CHROOTCMD /usr/bin/rm -Rf /tmp/* || error
@ -179,7 +193,7 @@ grub-mkstandalone -O x86_64-efi \
(cd build/staging && \ (cd build/staging && \
dd if=/dev/zero of=efiboot.img bs=1M count=20 && \ dd if=/dev/zero of=efiboot.img bs=1M count=20 && \
mkfs.vfat efiboot.img && \ /usr/sbin/mkfs.vfat efiboot.img && \
mmd -i efiboot.img ::/EFI ::/EFI/BOOT && \ mmd -i efiboot.img ::/EFI ::/EFI/BOOT && \
mcopy -vi efiboot.img \ mcopy -vi efiboot.img \
../../build/staging/EFI/BOOT/BOOTIA32.EFI \ ../../build/staging/EFI/BOOT/BOOTIA32.EFI \

View file

@ -0,0 +1 @@
gtk-theme-name="Adwaita"

View file

@ -45,28 +45,26 @@
<!-- Tray at the bottom. --> <!-- Tray at the bottom. -->
<Tray x="0" y="0" height="25" autohide="off"> <Tray x="0" y="0" height="25" autohide="off">
<TrayButton icon="/usr/share/nanodesk/images/linux_button.svg">root:1</TrayButton> <TrayButton icon="/usr/share/nanodesk/images/linux_button.svg">root:1</TrayButton>
<Spacer width="2"/> <Spacer width="2"/>
<TrayButton label="_" popup="Show desktop">showdesktop</TrayButton> <TrayButton icon="desktop" popup="Show desktop">showdesktop</TrayButton>
<Spacer width="2"/> <Spacer width="2"/>
<!-- custom TrayButton -->
<TrayButton popup="LXTerminal" icon="lxterminal">exec:lxterminal </TrayButton>
<Spacer width="2"/>
<TrayButton popup="Falkon Webbrowser" icon="falkon">exec:falkon</TrayButton>
<Spacer width="2"/>
<TrayButton popup="PCManFM" icon="system-file-manager">exec:pcmanfm</TrayButton>
<Spacer width="2"/>
<!-- custom TrayButton --> <Pager labeled="true"/>
<TrayButton popup="LXTerminal" icon="lxterminal">exec:lxterminal </TrayButton>
<Spacer width="2"/>
<TrayButton popup="Firefox" icon="firefox-esr">exec:firefox</TrayButton>
<Spacer width="2"/>
<TrayButton popup="PCManFM" icon="system-file-manager">exec:pcmanfm</TrayButton>
<Spacer width="2"/>
<TaskList maxwidth="256"/>
<Pager labeled="true"/> <Dock/>
<Clock format="%H:%M"><Button mask="123">exec:gsimplecal</Button></Clock>
<TaskList maxwidth="256"/> </Tray>
<Dock/>
<Clock format="%H:%M"><Button mask="123">exec:gsimplecal</Button></Clock>
</Tray>
<!-- Visual Styles --> <!-- Visual Styles -->
<WindowStyle> <WindowStyle>
@ -138,8 +136,8 @@
<IconPath> <IconPath>
/usr/local/share/jwm /usr/local/share/jwm
</IconPath> </IconPath>
<!-- the comment below is important for nanodesk to put in the actual IconPaths of the system generated by makeanything.sh --> <!-- List of IconPath gets generated by nanodesk-gen-iconlist helperscript -->
<!-- GENERATED ICONLIST --> <Include>exec:nanodesk-gen-iconlist</Include>
<!-- Virtual Desktops --> <!-- Virtual Desktops -->
@ -193,10 +191,13 @@
<Key mask="A" key="Up">udesktop</Key> <Key mask="A" key="Up">udesktop</Key>
<Key mask="A" key="Down">ddesktop</Key> <Key mask="A" key="Down">ddesktop</Key>
<StartupCommand>nanodesk-first-start</StartupCommand>
<StartupCommand>$(find ~/.screenlayout/ -type f -executable|head -n 1)</StartupCommand> <StartupCommand>$(find ~/.screenlayout/ -type f -executable|head -n 1)</StartupCommand>
<StartupCommand>lxpolkit</StartupCommand>
<StartupCommand>pcmanfm --desktop -p nanodesk</StartupCommand>
<StartupCommand>xscreensaver -no-splash</StartupCommand> <StartupCommand>xscreensaver -no-splash</StartupCommand>
<StartupCommand>volumeicon</StartupCommand> <StartupCommand>volumeicon</StartupCommand>
<StartupCommand>connman-gtk</StartupCommand> <StartupCommand>nm-applet</StartupCommand>
<StartupCommand>dillo -f -g 640x480 /usr/share/doc/nanodesk/welcome/welcome.html</StartupCommand>
</JWM> </JWM>

View file

@ -0,0 +1,13 @@
[*]
wallpaper_mode=center
wallpaper_common=1
wallpaper=/usr/share/nanodesk/pixmaps/nanodesk-installed.xpm
desktop_bg=#666999
desktop_fg=#ffffff
desktop_shadow=#000000
desktop_font=Sans 12
show_wm_menu=0
sort=mtime;ascending;
show_documents=0
show_trash=1
show_mounts=1

View file

@ -1,27 +0,0 @@
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# Host alias specification
# User alias specification
debian ALL=(ALL) NOPASSWD: ALL
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "@include" directives:
@includedir /etc/sudoers.d

View file

@ -0,0 +1,2 @@
#!/bin/sh
jwm -f /etc/jwm/system.nanodesk.jwmrc

View file

@ -0,0 +1,8 @@
#!/bin/sh
if [ ! -d ${HOME}/.config/nanodesk ]
then
mkdir -p ${HOME}/.config/nanodesk
xdg-user-dirs-update
dillo -f -g 640x480 /usr/share/doc/nanodesk/welcome/welcome.html &
fi

View file

@ -0,0 +1,4 @@
#!/bin/sh
echo "<JWM>"
find /usr/share/icons/ -type d | sed -e 's/^/\ \ \ \ <IconPath>/g' -e 's/$/<\/IconPath>/g'
echo "</JWM>"

View file

@ -0,0 +1,328 @@
#!/bin/bash
TITLE="nanodesk-installer-gxm"
VERSION=$(cat /usr/share/nanodesk/version)
HEADER=" ----==== nanodesk-installer-gxm ====----
nanodesk ${VERSION}
"
GXMCMD="gxmessage -name $TITLE -center -geometry 669x420 -wrap -font mono,10 -file -"
GXMINFO="gxmessage -name $TITLE -center -buttons Close -default Close -font mono,13 -file -"
DOCROOT="/usr/share/doc/nanodesk-installer"
DILLOCMD="dillo -f -g 640x480 $DOCROOT"
TARGET=""
ERRORFILE="/tmp/nanodesk-installer.error"
SUCCESSFILE="/tmp/nanodesk-installer.success"
# initialize RETURN with a high value
RETURN=255
#####
#
# DIALOGES
#
#####
gxm-abort() {
if gxm-confirm
then
echo "Installation aborted!"| $GXMINFO
exit 1
fi
}
gxm-confirm() {
echo "Are you sure you want abort?" | $GXMINFO -buttons "Yes:0,No:1"
return $?
}
gxm-cleanup() {
echo "!! An old Errorfile
!! $ERRORFILE
!! was found
Last message: $(cat $ERRORFILE)
It is necessary to delete it if you want to continue.
When deleting it, you will be asked for your password.
Delete $ERRORFILE ?" | $GXMINFO -buttons "Yes:0,No:1" -default Yes -geometry 640x320
return $?
}
gxm-welcome() {
echo "$HEADER
This is a gxmessage based Installation assistant for nanodesk.
To install nanodesk you need a partitioned and formated drive.
You can do the partioning and formating with 'GParted'. (Close 'GParted'
when you are done)
If you need help how to do so, click on 'Help'.
When you are done partitioning and your installation target is formated,
go ahead with 'Install'.
When asked for a password, type in 'debian', which is the nanodesk live
default." |
$GXMCMD -buttons "Abort:1,Help:2,GParted:10,Install:0"
return $?
}
gxm-select-target() {
echo "$HEADER
Please enter the target and press 'Install'.
For example: /dev/sda1" |
$GXMCMD -entry -buttons "Abort:1,Help:2,Install:0"
return $?
}
gmx-start-cli-installer() {
echo "$HEADER
The commandline nanodesk-installer will now open in a new xterm
window.
Target device: $1
Please follow the instructions there and see you later again..." |
$GXMCMD -buttons "Abort:1,open nanodesk-installer CLI:0" -default "open nanodesk-installer CLI"
return $?
}
gxm-success() {
echo "$HEADER
Installation complete! :)
You can now reboot or continue using nanodesk live." | $GXMCMD -buttons Continue:0,Reboot:2 -default Continue
return $?
}
gxm-error() {
echo "$HEADER
Installation FAILED!! :(
Last message was: $(cat $ERRORFILE)" | $GXMCMD -buttons Close -default Close
return $?
}
#####
#
# HELP
#
#####
help-gparted() {
cat <<EOF | $GXMCMD
$HEADER
# Partitioning Help
## You have an empty drive
Cool, easiest way! When you have an empty drive, just start GParted
and select in the right up corner your correct drive you want to install
nanodesk on.
After that click in the upper Menu the entry 'Drive' and select
'create partitiontable'.
In the upcoming dialoge select 'ms-dos' abd 'Apply'.
Now right click in the empty bar representing your drive and select
'New'.
First we create your root filesystem. It gets most of the space, just
let around 4-8GB space left after free for a swap partition we create
afterwards.
Create as 'Primary' and select 'ext4' as filesystem. Confirm that with
'OK' and repeat the steps with the leftover diskspace and create a
partition with the 'linux-swap' filesystem.
When you done all this we need to activate our changes. Select 'Edit'
from the upper Menu and choose 'Apply All Operations' and confirm.
When all operations are done successfully, close GParted and click on
'Install' in the nanodesk-installer.
EOF
}
help-select-target() {
cat <<EOF | $GXMCMD
$HEADER
# target device
Here you have to enter the path to your drive with the
'ext4' filesystem on it. This could be in most cases for example
/dev/sda1
Which says it's the first drive in the system (sdA) and the first
partition on it (sda1).
If you are not sure, you can abort here and open nanodesk-installer
again. Open again GParted to verify that you choose the correct drive.
# commandline nanodesk-installer
In the next step the core of the installer, the commandline tool
`/usr/sbin/nanodesk-installer` opens up in a new xterm window.
Confirm the start of the installation by typing 'YES' all upper case
and confirm it by pressing [ENTER].
When the base system is installed, you can choose if you want to keep
the default user 'debian' with its password 'debian' (press [K])
or you also can remove this default user and create your own new one
(press [U]).
# when something goes wrong
If the installation proccess exits with an error, you can clean up
everything by hand:
sudo su -
umount /mnt/
rm -Rf /tmp/nanodesk-installer.*
mkfs.ext4 [TARGET]
# you can re-run the GUI again
nanodesk-installer-gxm
# or the cli nanodesk-installer directly
nanodesk-installer [TARGET]
EOF
}
#####
#
# EXEC
#
#####
exec-gparted() {
pkexec /usr/sbin/gparted
}
exec-nanodesk-installer() {
# run the installer within xterm
xterm -e /bin/bash -c "pkexec /usr/sbin/nanodesk-installer $1 true || echo 'pkexec auth failed' >> $ERRORFILE"
}
#####
#
# MAIN
#
#####
# cleanup old errorfile
if [ -f "$ERRORFILE" ]
then
RETURN=255
while [ $RETURN -gt 0 ]
do
gxm-cleanup
RETURN=$?
if [ $RETURN -gt 0 ]
then
gxm-abort
else
pkexec rm -f $ERRORFILE || RETURN=255
fi
done
fi
RETURN=255
# welcome screen
while [ $RETURN -gt 0 ]
do
gxm-welcome
RETURN=$?
echo CODE $RETURN
case $RETURN in
1) gxm-abort ;;
2) help-gparted ;;
10) exec-gparted ;;
esac
done
# target select
RETURN=255
while [ $RETURN -gt 0 ]
do
TARGET=$(gxm-select-target)
RETURN=$?
echo CODE $RETURN
echo TARGET $TARGET
# if RC = 1, then user clicked "abort"
case $RETURN in
1) gxm-abort ;;
2) help-select-target ;;
0) echo test if blockdevice
if [ ! -b "$TARGET" ]
then
RETURN=255
echo no
echo -e "Error!\n'${TARGET}' does not exist or is not a blockdevice!" | $GXMINFO
fi
;;
esac
done
# start cli nanodesk-installer
RETURN=255
while [ $RETURN -gt 0 ]
do
gmx-start-cli-installer $TARGET
RETURN=$?
test $RETURN -eq 1 && gxm-abort
echo CODE $RETURN
done
exec-nanodesk-installer $TARGET
if [ -f "$ERRORFILE" ]
then
gxm-error
exit 1
elif [ -f "$SUCCESSFILE" ]
then
gxm-success
RETURN=$?
case $RETURN in
2) systemctl reboot ;;
*) exit 0 ;;
esac
else
echo "Unexpected Error! Exit here." | $GXMINFO -buttons Close -default Close
exit 1
fi
#if [ $RETURN != 0 ]
#then
# echo "ERROR!" | $GXMINFO
# exit 1
#else
# echo "SUCCESS!" | $GXMINFO
# exit 0
#fi

View file

@ -0,0 +1,89 @@
#!/bin/bash
#
# nanodesk-menumaker - generate menu from .desktop files for jwm
#
# WORK IN PROGRESS
#
# DOES NOT WORK ATM
declare -A APPS_NAME
declare -A APPS_ICON
declare -A APPS_EXEC
declare -A CATEGORIES_APPS
# excluding 'Audio' and 'Video' because they are kind of redundant with 'AudioVideo'
FREEDESKTOP_CATEGORIES="AudioVideo Development Education Game Graphics Network Office Science Settings System Utility"
get_desktop_entry() {
# only get [Desktop Entry] section
# explanation https://stackoverflow.com/a/52957039
sed -n '/\[Desktop Entry\]/,/.*:\[.*\]/ {//!p}'
}
# Main freedesktop categories we iterate through later
# https://specifications.freedesktop.org/menu-spec/latest/apa.html
# put filename in front of its content with awk
# https://www.unix.com/302929136-post4.html?s=5d91d8bbc9c7a884772b0b84b3ca6c3f
#
# dumping all files into a variable is much faster then grepping each file by file
# sed for remove path from filename: sed 's/^\/.*\/\(.*\.desktop:\)/\1/'
# awk remove path from filename: https://stackoverflow.com/a/55149591
DESKTOPFILES="$(awk '{n=split(FILENAME,array,"/"); split(array[n],arraym,"."); print arraym[1]":" $0 }' /usr/share/applications/*.desktop $HOME/.local/share/applications/*.desktop | get_desktop_entry |grep -E ':Name=|:Icon=|:Categories=|:NoDisplay=|:Exec=' )"
APPS_NODISPLAY="$(echo "$DESKTOPFILES" | grep "NoDisplay=true" | cut -d : -f1 | xargs | tr ' ' '|')"
APPS="$(echo "$DESKTOPFILES" | grep -vE "$APPS_NODISPLAY" | cut -d : -f1 | uniq)"
# put the apps into the freedesktop categories
for category in $FREEDESKTOP_CATEGORIES
do
# echo === CATEGORY $category ===
CATEGORIES_APPS[$category]="$(echo "$DESKTOPFILES" | grep -i $category | cut -d : -f1 | uniq | xargs)"
# echo ${CATEGORIES_APPS[$category]}
done
for appname in $APPS
do
APPS_NAME[$appname]="$(echo "$DESKTOPFILES" | grep -E "^$appname.*Name=" | cut -d = -f2)"
APPS_ICON[$appname]="$(echo "$DESKTOPFILES" | grep -E "^$appname.*Icon=" | cut -d = -f2)"
APPS_EXEC[$appname]="$(echo "$DESKTOPFILES" | grep -E "^$appname.*Exec=" | cut -d = -f2)"
done
#
#echo "$APPS"
#echo ${!APPS_NAME[@]}
#echo ${APPS_NAME[xfce4-web-browser]}
#echo ${APPS_ICON[xfce4-web-browser]}
#echo ${APPS_EXEC[xfce4-web-browser]}
#echo ${APPS_CAT[xfce4-web-browser]}
#echo "$DESKTOPFILES"
# jwm config output
cat <<EOF
<?xml version="1.0"?>
<JWM>
EOF
for category in $FREEDESKTOP_CATEGORIES
do
# test "$category" == "AudioVideo" && category="Multimedia"
#echo -e "appname: $appname \nName: ${APPS_NAME[$appname]}\nIcon: ${APPS_ICON[$appname]}\nExec: ${APPS_EXEC[$appname]}\nCategories: ${APPS_CAT[$appname]}\n---"
test -n "${CATEGORIES_APPS[$category]}" && cat <<EOF
<Menu icon="applications-${category,,}" label="${category}">
EOF
for app in ${CATEGORIES_APPS[$category]}
do
echo " <Program icon=\""${APPS_ICON[$app]}"\" label=\""${APPS_NAME[$app]}"\">"${APPS_EXEC[$app]}"</Program>"
done
test -n "${CATEGORIES_APPS[$category]}" && echo "</Menu>"
done
echo "</JWM>"

View file

@ -7,8 +7,16 @@
### this is just a hobby, nothing serious. i know the debian installer and other ### this is just a hobby, nothing serious. i know the debian installer and other
### exist, but i wanted to try some handcrafted installation. ### exist, but i wanted to try some handcrafted installation.
if [ -n "$2" ] && [ "$2" == true ]
then
GXMINSTALLER=true
else
GXMINSTALLER=false
fi
CHROOTCMD="chroot /mnt/" CHROOTCMD="chroot /mnt/"
ERRORFILE="/tmp/nanodesk-installer.error"
SUCCESSFILE="/tmp/nanodesk-installer.success"
##message () { ##message () {
## echo "== " $1 ## echo "== " $1
@ -44,16 +52,18 @@ function message() {
} }
error () { error () {
echo "Error at: $MESSAGE" >> $ERRORFILE
message error "ERROR!" message error "ERROR!"
test "$GXMINSTALLER" == true && read -p "Press [ENTER] to continue..."
exit 1 exit 1
} }
finish () { finish () {
message "removing firststart dialoge from jwm config"
$CHROOTCMD /usr/bin/sed -i '/doc\/nanodesk\/welcome\/welcome\.html/d' /etc/jwm/system.jwmrc || error
message "removing installer files from target" message "removing installer files from target"
$CHROOTCMD /usr/bin/rm -Rf /root/nanodesk-installer.sh || error $CHROOTCMD /usr/bin/rm -Rf /usr/sbin/nanodesk-installer || error
$CHROOTCMD /usr/bin/rm -Rf /usr/bin/nanodesk-installer-gxm || error
$CHROOTCMD /usr/bin/rm -Rf /usr/share/applications/nanodesk-installer-gxm.desktop || error
message "removing live-packages from target" message "removing live-packages from target"
$CHROOTCMD /usr/bin/apt -y purge 'live-boot*' 'live-tools*' $CHROOTCMD /usr/bin/apt -y purge 'live-boot*' 'live-tools*'
@ -63,6 +73,7 @@ finish () {
message "we are now ready to boot from $target" message "we are now ready to boot from $target"
touch $SUCCESSFILE
exit 0 exit 0
} }
@ -107,7 +118,10 @@ message "mounting $target to /mnt/"
mount $target /mnt || error mount $target /mnt || error
message "copy systemfiles" message "copy systemfiles"
rsync -aHx / /mnt/ || error # rsync is dumb
#rsync -aHx / /mnt/ || error
unsquashfs -d /mnt/ /run/live/medium/live/filesystem.squashfs || error
message "bind mount dev proc sys" message "bind mount dev proc sys"
for m in dev proc sys for m in dev proc sys
@ -163,8 +177,28 @@ while [ $STEPFINISH != 1 ]
do do
case $USERSTEP in case $USERSTEP in
u|U) u|U)
message "please change root pw"
$CHROOTCMD /usr/bin/passwd root || error CONTINUESTEP=false
while [ $CONTINUESTEP != true ]
do
message "Do you want to set a password for '${RED}root${ENDCOLOR}'?"
read -p "[y/n] > " ROOTPASSCHANGE
case ${ROOTPASSCHANGE,,} in
y|yes)
message "please change root pw"
$CHROOTCMD /usr/bin/passwd root || error
CONTINUESTEP=true
;;
n|no)
message "leaving root password empty"
CONTINUESTEP=true
;;
*)
message warn "Unrecognized answers, please try again..."
;;
esac
done
message "deleting user 'debian'" message "deleting user 'debian'"
$CHROOTCMD /usr/bin/id -u debian && $CHROOTCMD /usr/sbin/userdel -f debian || error $CHROOTCMD /usr/bin/id -u debian && $CHROOTCMD /usr/sbin/userdel -f debian || error
@ -177,7 +211,7 @@ do
$CHROOTCMD /usr/sbin/adduser $NEWUSER || error $CHROOTCMD /usr/sbin/adduser $NEWUSER || error
message "adding $NEWUSER to sudo group" message "adding $NEWUSER to sudo group"
$CHROOTCMD /usr/sbin/usermod -G sudo $NEWUSER || error $CHROOTCMD /usr/sbin/usermod -a -G sudo $NEWUSER || error
$CHROOTCMD /usr/bin/ln -s -f /usr/share/nanodesk/pixmaps/nanodesk-installed.xpm /usr/share/nanodesk/pixmaps/nanodesk.xpm || error $CHROOTCMD /usr/bin/ln -s -f /usr/share/nanodesk/pixmaps/nanodesk-installed.xpm /usr/share/nanodesk/pixmaps/nanodesk.xpm || error
$CHROOTCMD /usr/bin/ln -s -f /usr/share/nanodesk/pixmaps/nanodesk-bw-installed.xpm /usr/share/nanodesk/pixmaps/nanodesk-bw.xpm || error $CHROOTCMD /usr/bin/ln -s -f /usr/share/nanodesk/pixmaps/nanodesk-bw-installed.xpm /usr/share/nanodesk/pixmaps/nanodesk-bw.xpm || error

View file

@ -0,0 +1,8 @@
[Desktop Entry]
Name=nanodesk-installer
Comment=installer gxmessage script for nanodesk live
Exec=/usr/bin/nanodesk-installer-gxm
Icon=/usr/share/icons/Tango/scalable/apps/system-installer.svg
Terminal=true
Type=Application
Categories=System;

View file

@ -1,39 +1,38 @@
# Welcome to nanodesk # Welcome to nanodesk
`nanodesk` is yet another lightweight Debian flavor/distribution,
that comes with the `jwm` window manager.
nanodesk is a debian base linux "distribution". I put distribution in "" This is just a fun project for learning purposes.
becuase it is just a minimal debian debootstrap installation, which you
can boot from a DVD or usb-stick and install it to disk, with well picked
packages I like and a customized jwm config. Taddaa - a new distribution.
Visit the git repository at
[git.la10cy.net/DeltaLima/nanodesk](https://git.la10cy.net/DeltaLima/nanodesk)
Everything done with having the goal to consume as less ram as possible. ## install to disk: nanodesk-installer
## install to disk
You can install nanodesk to your harddrive. Before doing so, You can install nanodesk to your harddrive. Before doing so,
you have to get your drive partitioned and formated. you have to get your drive partitioned and formated.
Partiotioning on an empty drive is simple, you need two partitions Under `Menu -> System -> nanodesk-installer` you find the GUI
of the nanodesk-installer. It will guide you through the first basic
partitioning steps and formating your drive with `GParted`.
The installation process itself is done by the `nanodesk-installer` cli.
- partition1: ext4 , mainfilesystem. You can also just run the cli directly running
- partition2 (optional, but recommended): swap `sudo nanodesk-installer [TARGET]`
You can use `gparted` or `fdisk` for this. Please read their manuals. Keep in Mind, that `[TARGET]` needs to be a (ext4) preformated
blockdevice and should be a partition.
This done, just run `sudo /root/nanodesk-installer.sh /dev/sdXY` from the terminal
and the installation will start. (change /dev/sdXY to your drive)
## installing software ## installing software
There is no GUI tool for installing software. You have to use `apt` from the There is `Menu -> System -> Synaptic` for installing software as GUI.
terminal. Alternatively you can use `apt` from the terminal.
## getting root ## getting root
In the LiveCD mode you can just do `sudo su -` without being asked for a password. When booting as livesystem, the default user is `debian` and the
Depending on your choice by the installation, you will have to enter a password, password is `debian` as well.
when you created your own using by the installer.
So or so good old `su - ` works fine as well, just type in the root password. In some cases you get asked by the GUI to enter your password. (e.g. GParted)
On commandline you can enter `sudo su - ` to get root access.

View file

@ -1,370 +1,393 @@
/* XPM */ /* XPM */
static char * nanodesk_bw_xpm[] = { static char * nanodesk_bw_installed_xpm[] = {
"114 200 218 2", "114 200 241 2",
" g #6C6C6C", " c #6C6C6C",
". g #888888", ". c #616161",
"+ g #585858", "+ c #606060",
"@ g #010101", "@ c #5B5B5B",
"# g #939393", "# c #5A5A5A",
"$ g #727272", "$ c #5D5D5D",
"% g #202020", "% c #3E3E3E",
"& g #000000", "& c #636363",
"* g #9A9A9A", "* c #545454",
"= g #979797", "= c #6A6A6A",
"- g #8C8C8C", "- c #4D4D4D",
"; g #646464", "; c #575757",
"> g #2A2A2A", "> c #696969",
", g #020202", ", c #2F2F2F",
"' g #9E9E9E", "' c #767676",
") g #919191", ") c #808080",
"! g #787878", "! c #797979",
"~ g #595959", "~ c #454545",
"{ g #383838", "{ c #121212",
"] g #151515", "] c #666666",
"^ g #030303", "^ c #929292",
"/ g #1C1C1C", "/ c #7D7D7D",
"( g #A1A1A1", "( c #595959",
"_ g #8D8D8D", "_ c #3D3D3D",
": g #707070", ": c #000000",
"< g #434343", "< c #2A2A2A",
"[ g #1F1F1F", "[ c #878787",
"} g #0D0D0D", "} c #8E8E8E",
"| g #060606", "| c #939393",
"1 g #101010", "1 c #8F8F8F",
"2 g #272727", "2 c #757575",
"3 g #2D2D2D", "3 c #404040",
"4 g #222222", "4 c #1B1B1B",
"5 g #8F8F8F", "5 c #090909",
"6 g #6E6E6E", "6 c #818181",
"7 g #3B3B3B", "7 c #969696",
"8 g #191919", "8 c #868686",
"9 g #0A0A0A", "9 c #727272",
"0 g #1B1B1B", "0 c #202020",
"a g #868686", "a c #0D0D0D",
"b g #232323", "b c #020202",
"c g #0B0B0B", "c c #262626",
"d g #7E7E7E", "d c #9A9A9A",
"e g #6D6D6D", "e c #7E7E7E",
"f g #2E2E2E", "f c #303030",
"g g #090909", "g c #171717",
"h g #282828", "h c #030303",
"i g #1E1E1E", "i c #010101",
"j g #2B2B2B", "j c #060606",
"k g #656565", "k c #0F0F0F",
"l g #3E3E3E", "l c #2C2C2C",
"m g #212121", "m c #515151",
"n g #8B8B8B", "n c #989898",
"o g #CFCFCF", "o c #565656",
"p g #BDBDBD", "p c #252525",
"q g #5F5F5F", "q c #050505",
"r g #3A3A3A", "r c #101010",
"s g #BEBEBE", "s c #232323",
"t g #D5D5D5", "t c #343434",
"u g #AEAEAE", "u c #777777",
"v g #343434", "v c #3A3A3A",
"w g #535353", "w c #0B0B0B",
"x g #4C4C4C", "x c #323232",
"y g #ACACAC", "y c #1D1D1D",
"z g #FFFFFF", "z c #747474",
"A g #F4F4F4", "A c #040404",
"B g #D2D2D2", "B c #333333",
"C g #CDCDCD", "C c #4F4F4F",
"D g #313131", "D c #2D2D2D",
"E g #484848", "E c #828282",
"F g #0E0E0E", "F c #383838",
"G g #929292", "G c #414141",
"H g #FCFCFC", "H c #A2A2A2",
"I g #AAAAAA", "I c #848484",
"J g #121212", "J c #282828",
"K g #404040", "K c #0A0A0A",
"L g #373737", "L c #555555",
"M g #DDDDDD", "M c #676767",
"N g #505050", "N c #4B4B4B",
"O g #E4E4E4", "O c #DDDDDD",
"P g #F6F6F6", "P c #FFFFFF",
"Q g #C6C6C6", "Q c #CECECE",
"R g #EFEFEF", "R c #E3E3E3",
"S g #525252", "S c #D9D9D9",
"T g #F9F9F9", "T c #5C5C5C",
"U g #E9E9E9", "U c #141414",
"V g #424242", "V c #353535",
"W g #333333", "W c #EFEFEF",
"X g #4F4F4F", "X c #FDFDFD",
"Y g #EDEDED", "Y c #F2F2F2",
"Z g #FDFDFD", "Z c #0E0E0E",
"` g #A9A9A9", "` c #B4B4B4",
" . g #6B6B6B", " . c #212121",
".. g #D1D1D1", ".. c #F4F4F4",
"+. g #080808", "+. c #B6B6B6",
"@. g #DBDBDB", "@. c #B8B8B8",
"#. g #F3F3F3", "#. c #F0F0F0",
"$. g #E5E5E5", "$. c #E6E6E6",
"%. g #5C5C5C", "%. c #F6F6F6",
"&. g #A2A2A2", "&. c #A6A6A6",
"*. g #363636", "*. c #DEDEDE",
"=. g #BABABA", "=. c #373737",
"-. g #494949", "-. c #4E4E4E",
";. g #464646", ";. c #8B8B8B",
">. g #696969", ">. c #C4C4C4",
",. g #E8E8E8", ",. c #BBBBBB",
"'. g #797979", "'. c #6E6E6E",
"). g #636363", "). c #E7E7E7",
"!. g #959595", "!. c #242424",
"~. g #969696", "~. c #1F1F1F",
"{. g #D6D6D6", "{. c #4A4A4A",
"]. g #4B4B4B", "]. c #AAAAAA",
"^. g #131313", "^. c #BFBFBF",
"/. g #444444", "/. c #BEBEBE",
"(. g #141414", "(. c #E4E4E4",
"_. g #4A4A4A", "_. c #444444",
":. g #7F7F7F", ":. c #1E1E1E",
"<. g #757575", "<. c #FBFBFB",
"[. g #CACACA", "[. c #8C8C8C",
"}. g #686868", "}. c #919191",
"|. g #7C7C7C", "|. c #CCCCCC",
"1. g #9F9F9F", "1. c #393939",
"2. g #353535", "2. c #E1E1E1",
"3. g #1A1A1A", "3. c #B0B0B0",
"4. g #4E4E4E", "4. c #DADADA",
"5. g #B5B5B5", "5. c #B9B9B9",
"6. g #D0D0D0", "6. c #313131",
"7. g #A3A3A3", "7. c #D0D0D0",
"8. g #C2C2C2", "8. c #717171",
"9. g #CBCBCB", "9. c #909090",
"0. g #474747", "0. c #AEAEAE",
"a. g #8E8E8E", "a. c #A8A8A8",
"b. g #CCCCCC", "b. c #EDEDED",
"c. g #D3D3D3", "c. c #F9F9F9",
"d. g #B0B0B0", "d. c #2B2B2B",
"e. g #A7A7A7", "e. c #191919",
"f. g #D4D4D4", "f. c #C0C0C0",
"g. g #B4B4B4", "g. c #C7C7C7",
"h. g #3F3F3F", "h. c #C1C1C1",
"i. g #B7B7B7", "i. c #9D9D9D",
"j. g #BCBCBC", "j. c #D1D1D1",
"k. g #0C0C0C", "k. c #ACACAC",
"l. g #171717", "l. c #585858",
"m. g #050505", "m. c #424242",
"n. g #3C3C3C", "n. c #686868",
"o. g #565656", "o. c #C2C2C2",
"p. g #2F2F2F", "p. c #D4D4D4",
"q. g #7B7B7B", "q. c #949494",
"r. g #2C2C2C", "r. c #ABABAB",
"s. g #7D7D7D", "s. c #A7A7A7",
"t. g #111111", "t. c #CDCDCD",
"u. g #878787", "u. c #D3D3D3",
"v. g #767676", "v. c #BDBDBD",
"w. g #818181", "w. c #D2D2D2",
"x. g #414141", "x. c #D5D5D5",
"y. g #F0F0F0", "y. c #CBCBCB",
"z. g #A6A6A6", "z. c #464646",
"A. g #040404", "A. c #CFCFCF",
"B. g #0F0F0F", "B. c #5E5E5E",
"C. g #5D5D5D", "C. c #8A8A8A",
"D. g #4D4D4D", "D. c #525252",
"E. g #EAEAEA", "E. c #181818",
"F. g #B8B8B8", "F. c #9C9C9C",
"G. g #070707", "G. c #1A1A1A",
"H. g #C1C1C1", "H. c #111111",
"I. g #E2E2E2", "I. c #434343",
"J. g #A0A0A0", "J. c #D6D6D6",
"K. g #FEFEFE", "K. c #070707",
"L. g #F1F1F1", "L. c #151515",
"M. g #3D3D3D", "M. c #ADADAD",
"N. g #323232", "N. c #2E2E2E",
"O. g #D8D8D8", "O. c #5F5F5F",
"P. g #F2F2F2", "P. c #3B3B3B",
"Q. g #FAFAFA", "Q. c #C5C5C5",
"R. g #F8F8F8", "R. c #C6C6C6",
"S. g #E6E6E6", "S. c #222222",
"T. g #181818", "T. c #DFDFDF",
"U. g #9C9C9C", "U. c #7F7F7F",
"V. g #C8C8C8", "V. c #626262",
"W. g #D9D9D9", "W. c #C9C9C9",
"X. g #E7E7E7", "X. c #272727",
"Y. g #F7F7F7", "Y. c #131313",
"Z. g #737373", "Z. c #1C1C1C",
"`. g #999999", "`. c #4C4C4C",
" + g #A8A8A8", " + c #888888",
".+ g #D7D7D7", ".+ c #6D6D6D",
"++ g #DADADA", "++ c #484848",
"@+ g #DCDCDC", "@+ c #7B7B7B",
"#+ g #CECECE", "#+ c #474747",
"$+ g #C5C5C5", "$+ c #0C0C0C",
"%+ g #B6B6B6", "%+ c #7A7A7A",
"&+ g #848484", "&+ c #D7D7D7",
"*+ g #989898", "*+ c #292929",
"=+ g #828282", "=+ c #535353",
"-+ g #6F6F6F", "-+ c #6B6B6B",
";+ g #5B5B5B", ";+ c #E0E0E0",
">+ g #747474", ">+ c #B1B1B1",
",+ g #808080", ",+ c #080808",
"'+ g #777777", "'+ c #999999",
")+ g #717171", ")+ c #363636",
"!+ g #242424", "!+ c #F8F8F8",
"~+ g #5E5E5E", "~+ c #505050",
"{+ g #626262", "{+ c #959595",
"]+ g #262626", "]+ c #EAEAEA",
"^+ g #606060", "^+ c #A0A0A0",
"/+ g #252525", "/+ c #3F3F3F",
"(+ g #303030", "(+ c #494949",
"_+ g #5A5A5A", "_+ c #BCBCBC",
":+ g #6A6A6A", ":+ c #9F9F9F",
"<+ g #1D1D1D", "<+ c #787878",
"[+ g #666666", "[+ c #E9E9E9",
"}+ g #555555", "}+ c #F1F1F1",
"|+ g #545454", "|+ c #ECECEC",
"1+ g #616161", "1+ c #838383",
"2+ g #454545", "2+ c #B5B5B5",
"3+ g #676767", "3+ c #7C7C7C",
"4+ g #292929", "4+ c #A3A3A3",
"5+ g #575757", "5+ c #A1A1A1",
" ", "6+ c #9B9B9B",
" ", "7+ c #CACACA",
" ", "8+ c #EEEEEE",
" ", "9+ c #EBEBEB",
" ", "0+ c #707070",
" ", "a+ c #6F6F6F",
" ", "b+ c #B3B3B3",
" ", "c+ c #898989",
" ", "d+ c #C3C3C3",
" ", "e+ c #C8C8C8",
" ", "f+ c #AFAFAF",
" ", "g+ c #8D8D8D",
" ", "h+ c #D8D8D8",
" ", "i+ c #DBDBDB",
" ", "j+ c #A9A9A9",
" ", "k+ c #B7B7B7",
" ", "l+ c #A5A5A5",
" ", "m+ c #979797",
" ", "n+ c #9E9E9E",
" ", "o+ c #858585",
" ", "p+ c #3C3C3C",
" ", "q+ c #646464",
" ", "r+ c #656565",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" . + @ ", " . + ",
" # $ % & ", " @ # $ % ",
" * = - ; > & , ", " & * = - ; ",
" ' ) ! ~ { ] ^ & , / ", " > , # ",
" ( ' _ : < [ } ^ & & | 1 2 3 4 ", " ' ) ! ~ { ] ",
" 5 6 7 8 9 @ & & & & , } 0 [ } ", " ^ / ( _ : < ",
" a ; b | & & & & & & & & & , } c @ ", " ' [ } | 1 2 3 4 5 : _ ",
" d e f g & } h i , & [ j 8 & & , 9 & @ ", " 6 | 7 8 9 ( _ 0 a b : : c # ",
" k l } & m n o p q r s t u v & & , @ & | ", " ^ d e * f g a h : : : i j k l m ",
" w x 8 @ 0 y z z z A B z z z C D & & & & , ", " e n [ o p a b : : : : : : : q r 0 s t ",
" E 7 F F G z z z z z z z z H z I J & & & & / ", " ^ u v r b : : : : : : : : : : b w { r 0 ",
" K f g L M z n N O P Q R ; S T U V & & & & / ", " 8 9 x w : : : : : : : : : : : : : : h a q y ",
" W b , X Y Z ] & ` Q ...& +.@.#.w & & & & i ", " z 9 v a : : : : : : : : : : A : : : : : h 5 : B ",
" h 8 , r $.z %.v &.*.] =.-.E H O > & & & & m ;. ", " > C { i : : D e } E F : G } H I J : : : : b : K L ",
" m ] , ^ >.,.U '.).!.~.. ( {.t ].9 ^.& & & b /. ", " M * < h : : N O P P P Q 2 R P P P S T : : : i : : t ",
" / (.1 _.~.p :.<.Q a ~.[.y }.S |.1.2.& & @ 2 ;. ", " $ ~ U : : V W P P P P P X P P P P P Y V : : : : : { ",
" ] ^.3.4.5.{.6...6.7.8.C B C 9.{.y 2 & & @ h 0. ", " m v a : Z ` P P P P P P P P P P P P P H a : : i : : ; ",
" J ^.F -.a.b.c.....c.c.....B t d.N J & & @ 2 ;. ", " 3 D K : .X P ..+.@.P #.$.P %.@.&.W P *.0 : : : : : - ",
" ^.(.9 0 /.e.c.............f.g.< 1 & & & @ b ;. ", " =.s h : -.P P ;.: : >.*.E W ,.: : '.P ).!.: : : : : ~ ",
" ] (.c & 1 h.i.f.........f.j._.k.& & & & & 4 0. ", " t ~.b : {.P P M : : ].` k ^./.: : C P (.!.: : : : : _. ",
" J } & & & /.i.f.c.c.6.7.E | & & & & & & 0 ;. ", " t ~.b : :.<.P O [.}.|.g : 1.2.3.[ 4.P 5.r : : : : : C ",
" 3.J @ & & & j * s j.6 9 & & & & & & & & l.;. ", " 6.:.b : K ^ X P P 7.8.9.0.7 a.b.P P c.L : b : : : : ; ",
" v m m.& & & & | h.n.& & & & & & & & & & 1 h. ", " d.e.b 0 N [ f.g.'.e h.0./ i.j.k.6 ; l.) &.m.b : : : ; ",
" o.f | & & } p.~ <.q.).*.i | & & & & & & ^ r. ", " D U b n.D o.p.j.j.p.g.q.r.s.t.u.j.j.j.4.v.~.K : : : ; ",
" |.k 2 ^ & } s.#.z z z z Z 9.).t.& & & @ & & J ", " V U j f @ ].4.w.w.w.u.x.p.x.w.w.w.w.x.y.8 z.: : : : ; ",
" u.q.E 1 @ k.v.z z z z z z z z z !.[ & & & @ & ^ m ", " % g w j u ' A.p.w.w.w.w.w.w.w.w.w.u.x.[ z.a : : : : ; ",
" w.%.0 , & x.y.z z z z z z z z z z z.l.& & @ ^ & A. ", " N e.a : k B.C.4.w.w.w.w.w.w.w.w.p.u.i.* k : : : : : l. ",
" d ; 3 c @ B.1.Z z z z z z z z z z z Z & & & , c @ , ", " D.g a : : E.* s.4.u.w.w.w.w.w.p.u.F.% k : : : : : : - ",
" }.C.{ 1 , & D.E.z z z z z z z z z z z z F.l.& & & , , & G. ", " ( G.Z : : : H.3 r.4.p.w.w.w.S Q 8 % k : : : : : : : I. ",
" E r 0 c , @ ~.Z z z z z z z z z z z z z A .@ & & & & & @ ", " . s r i : : : : D k.4.4.J.4.>.> H.K.: : : : : : : : , ",
" f b 1 | @ ] H.z z z z z z z z z z z z z z I.n.& & & & & , } ", " f L.h : : : : b r 2 M.,.7 N.K : : : : : : : : : : G. ",
" ^.1 c , & ;.U z z z z z z z z z z z z z z z J.J & & & @ ^ 1 ", " {.J w : : : : : : : t N r : : : : : : : : : : : : b O. ",
" , @ & & ^ - H K.z z z z z z z z z z z z z z L.M.& & & , c / ", " + P.a : : : : j & 0.g.Q.R.` 9 U : : : : : : : : : : I. ",
" ^ , @ & N.O.Z K.K.K.z z z z z z z z z z K.K.Z n } & @ A.1 r.x. ", " z F 5 : : : S.` %.P P P P P <.T.U.Z : : : : : : : : e. ",
" | ^ +.:.P.Q.Z Z K.K.K.K.K.K.K.K.K.K.K.Z H R.S.f & ^ F [ r < ", " E 1 V.4 b : b s W.P P P P P P P P P P t.V : : : : : i : b -. ",
" 9 T.z.M Y #.T H H Z Z Z Z Z Z Z Z H T P.S..._.G.} 8 W V ", " E ^ = X.j : : Y.u.P P P P P P P P P P P P ).* : : : : : i : E. ",
" / U.g.V.W.X.R #.P Y.R.R.R.P A P.R S.{.s ' Z.T.8 D < 0. ", " E }.M s q : : : -.P P P P P P P P P P P P P P W B : : : : i q : y ",
" d a.`. +F.V....+++@.@+@..+c.#+$+%+J.!.- q.W L < ;. ", " 6 1 M s q : : : a +.P P P P P P P P P P P P P P P o.b : : : : h a K Z. ",
" ).'.&+- # = `.* * * * * `.*+~.# - =+-+;+< < ;. ", " [.n.s q : : : : D <.P P P P P P P P P P P P P P P X `.: : : : : h a b . ",
" + ).>+'.s.,+,+=+w.,+d |.'+)+>.+ ;././.;. ", " +.+< j : : : : : i.P P P P P P P P P P P P P P P P P J.r : : : : : h K : B ",
" /.;./.;./.;.;.;.;.;.;./.;.0./.;. ", " I u V w : : : : : Y.W P P P P P P P P P P P P P P P P P P E : : : : : : h h : ++ ",
" 0.;./.0.;.0./.;././. !+& & x. ;+& & & ). ", " @+@+#+k : : : : : : [ P P P P P P P P P P P P P P P P P P P R B : : : : : : q : $+] ",
" !+& & x. ;+& & & ). ", " %+( g b : : : : : r &+P P P P P P P P P P P P P P P P P P P P } : : : : : : i b : *+ ",
" !+& & x. ;+& & & ). ", " ' = D q : : : : : : > <.P P P P P P P P P P P P P P P P P P P P O ~.: : : : : : b : h =+ ",
" !+& & x. ;+& & & ). ", " -+`.k : : : : : : j ^.P P P P P P P P P P P P P P P P P P P P P P V.: : : : : : : : : l ",
" ;+& & & ).~+2.J T.n.). {+& & & & A.8 N.4.>. ;+& & & ).~+2.J T.n.). q x.!+F ^.r.E k .4.2 k.]+4. .!+& & x. ^+V /+F ^.3 ].}. ;+7 [ 9 0 (+;.~+ ;+& & & ). _+9 & & n.:+ ", " $ J b : : : : : : z.#.P P P P P P P P P P P P P P P P P P P P P P |.Y.: : : : : : : : { O. ",
" ;+& & & -., & & & & [ >. {+& & & & & & & & h }. ;+& & & -., & & & & [ >. x & & & & & & & ^.;+ 7 & & & & & M.b & & x. x , & & & & & & i {+ w & & & & & & & & ^+ ;+& & & ). _+9 & & K . ", " V.++r : : : : : : : }.P P P P P P P P P P P P P P P P P P P P P P P P ' : : : : : : i : : #+ ",
" ;+& & & ^.~ >.S & & & S >.%.<+& & ]. ;+& & & ^.~ >.S & & & S + & & & E }.; *.& & t.[+ }+& & & -.}.).f & & & x. + & & m.|+>.[+M.& & b :+ h & & N >.>.).|+*.1+ ;+& & & )._+9 & & 2+ ", " l.V K : : : : : : :.x.P P P P P P P P P P P P P P P P P P P P P P P P ;+U : : : : : : : : F ",
" ;+& & & ]. 8 & & 2+ /.& & (+ ;+& & & ]. 8 & & 2+ f & & h k A.& & -. p.& & 2 ^+& & & x. f & & V 3+& & & + 3.& & o. ;+& & & 4.9 & & -. ", " & m p h : : : : : : M P P P P P P P P P P P P P P P P P P P P P P P P P P 8.: : : : : : : : p ",
" ;+& & & ~+ 2 & & h. %.h.]+t.& & & & & % ;+& & & ~+ 2 & & h. >.& & & 2+ /+& & N. .A.& & /. F & & x. >.& & & & & & & & & & & _. L & & & t.f K w }. ;+& & & & & & D. ", " @ z.g i : : : : : Z >+P P P P P P P P P P P P P P P P P P P P P P P P P P &+A : : : : : : : 4 ",
" ;+& & & ). 4+& & h. N & & & & & & & & & 0 ;+& & & ). 4+& & h. [+& & & ]. N.& & h }.& & & _. % & & x. [+& & & & & & & & & & & ;. {+8 & & & & & & (.1+ ;+& & & & & , 5+ ", " #+v Z : : : : : : *+..P P P P P P P P P P P P P P P P P P P P P P P P P P <.F : : : : : : : a ( ",
" ;+& & & ). 4+& & h. .(.& & p.). . < & & 0 ;+& & & ). 4+& & h. >.& & & 2+ ]+& & N. .A.& & /. F & & x. >.& & & ]. >.}+/.2.0 & & & *. ;+& & & j & & m.+ ", " =.< j : : : : : : O.P P P P P P P P P P P P P P P P P P P P P P P P P P P P ;.: : : : : : : ,+; ",
" ;+& & & ). 4+& & h. [+& & & S r.& & 0 ;+& & & ). 4+& & h. 3 & & h k A.& & -. p.& & h ^+& & & x. f & & r. . _.& & i ;+& & & 1+v & & +.;+ ", " l :.b : : : : : K '+P P P P P P P P P P P P P P P P P P P P P P P P P P P P >.A : : : : : : ,+; ",
" ;+& & & ). 4+& & h. :+B.& & *.3+}.0.& & & 0 ;+& & & ). 4+& & h. 5+& & & -.}.k *.& & B.k |+& & & _.}.).p.& & & x. + & & & K ; .[+q D.f }. M._.q [+ .3+l & & f ;+& & & ).>.3 & & k.%. ", " .r : : : : : : r p.P P P P P P P P P P P P P P P P P P P P P P P P P P P P *.U : : : : : : $+l. ",
" ;+& & & ). 4+& & h. ].& & & & & 4 M.& & 0 ;+& & & ). 4+& & h. _.& & & & & & & J ;+ r & & & & & M.b & & x. x , & & & & & & & & }. (+& & & & & & & A.~ ;+& & & ). 3+2 & & B.~+ ", " < i : : : : : : { %.P P P P P P P P P P P P P P P P P P P P P P P P P P P P ).t : : : : : : Z. ",
" ;+& & & ). 4+& & h. o.f J <+V 3+;.& & 0 ;+& & & ). 4+& & h. q K b k.J > E k .4.]+k.]+4. .!+& & x. 1+< h t.t.]+L X ). 3+|+7 h t.k.!+K ^+ ;+& & & ). k m & & J q ", " `.a i : : : : : )+P P P P P P P P P P P P P P P P P P P P P P P P P P P P P 2.0 : : : : : : =. ",
" /././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././. ", " B { h : : : : N P P P P P P P P P P P P P P P P P P P P P P P P P P P P P W.A : : : : : : F ",
" C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C. ", " % X.K : : : : 4 !+P P P P P P P P P P P P P P P P P P P P P P P P P P P P }.: : : : : : : l ",
" ", " G < K : : : : a +.P P P P P P P P P P P P P P P P P P P P P P P P P P P P m.: : : : : : : e. ",
" ", " z.J 5 : : : : : ~+W P P P P P P P P P P P P P P P P P P P P P P P P P P @.K : : : : : : : H.$ ",
" ", " _.J j : : : : : : +P P P P P P P P P P P P P P P P P P P P P P P P P ).U : : : : : : : : 5 ; ",
" ", " . _ s q : : : : : : !.O P P P P P P P P P P P P P P P P P P P P P P P P 2 : : : : : : : : : b o ",
" ", " $ 6.4 h : : : : : : : {+P P P P P P P P P P P P P P P P P P P P P P P ]+s : : : : : : : : : : C ",
" ", " B.*+L.b : : : : : : : m ..P P P P P P P P P P P P P P P P P P P P P P ^+w : : : : : : : : : : -. ",
" ", " < Y.h : : : : : : : { x.P P P P P P P P P P P P P P P P P P P P P X # : : : A : : : : : : : -. ",
" ", " x { q : : : : A j : : '+X P P P P P P P P P P P P P P P P P P P P O !.: w $ K : : : : : : : -. ",
" ", " /+r 5 : : : : A /+_ : $ %.P P P P P P P P P P P P P P P P P P P P 3.: a }.+.: : : : : : : : m ",
" ", " N H.w : : : : : ~ 2.m & ..P P P P P P P P P P P P P P P P P P P P @.f ].P : : : : : : : q ; ",
" ", " ( H.a : : : : : r y.W $.X P P P P P P P P P P P P P P P P P P P P ..(.P !+d.: : : : : : : { O. ",
" ", " Y.a : : : : : : e P P P P P P P P P P P P P P P P P P P P P P P P P P x.b : : : : : : : ~. ",
" ", " J a i : : : : : % W P P P P P P P P P P P P P P P P P P P P P P P P P I : : : : : : : : =. ",
" ", " /+w q : : : : : Z >+P P P P P P P P P P P P P P P P P P P P P P P P P D : : : : : : : b (+ ",
" ", " o q q : : : : : : -.Y P P P P P P P P P P P P P P P P P P P P P P P _+w : : : : : : : L. ",
" ", " r b : : : : : : K ^.P P P P P P P P P P P P P P P P P P P P P P P m : : : : : : : : 6. ",
" ", " V i : : : : : : : ~+..P P P P P P P P P P P P P P P P P P P P P :+K : : : : : : : A N ",
" ", " ~+: : : : : : : : b ,.P P P P P P P P P P P P P P P P P P P P |.4 : : : : : : : : H. ",
" ", " E.: : : : : : : : *+W P P P P P P P P P P P P P P P P P P R )+: : : : : : : : : l ",
" ", " 3 : : : : : : : : : 9 P P P P P P P P P P P P P P P P P Y m : : : : : : : : : b ; ",
" ", " # a : : : : : : : : w s.P P P P P P P P P P P P P P P R =+: : : : : : : : : : G. ",
" ", " P.: : : : : : : : : r ` P P P P P P P P P P P P P u.V : : : : : : : : : : : ~+ ",
" ", " g : : : : : : : : : k +.P P P P P P P P P P P s.4 : : : : : : : : : : : ~. ",
" ", " =.g Z j : : : : : : j <+[+%.!+..}+}+Y |+j.`.j : : : : : : : : : : : A o ",
" ", " 1+:+2+|.+.M.3+e.: : : : : w a V 1+4+5+d d @+f : : : : : : : : : : : : K U F ",
" ", " 6+7+8+9+).2.4.J.4.` ; t t -..+}.d q.0+% L O.6.I.; * a+u u `.)+S.k ,+: K.3+/.|./.b+5+} / ",
" ", " c+d+]+2.A.,._+g.Q j.w.S 4.7+e+w.y.g.g.y.A.o.F.' = = ^+u.x.|.g.o.>._+f+n g+9 [.u.4.h+i+O O O t.@.:+1+ ",
" ", " 7+g.].:+i.1 ;.j+^.y.Q y.W.o.k+l+:+:+:+:+l+0.+.` C.@.A.k+4+:+:+:+:+5+r.@.h.g.|.W.e+Q.k+H :+n d 4+&.m+ ",
" ", " 3+U.6 ! / ].0.r.&.:+:+n+d C.<+<+o+1 7 7 7 U.) [.[.[.C.E @+[.d :+:+:+^+5+:+:+{+! ",
" ", " o+6+6+d | +! e [ [.}.}.c+ ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ",
" ",
" ",
" ",
" ",
" ",
" !.: : G @ : : : ",
" !.: : G @ : : : ",
" !.: : G @ : : : ",
" !.: : G @ : : : ",
" @ : : : & V { E.p+ : : : : A e.x -. @ : : : & V { E.p+ M G !.Z Y.l ++ -.X.$+c -. !.: : G > m.p Z Y.D N @ P.~.K 4 f z.& @ : : : # K : : p+ ",
" @ : : : (+b : : : : ~. : : : : : : : : J @ : : : (+b : : : : ~. `.: : : : : : : Y.@ P.: : : : : _ s : : G `.b : : : : : : :. =+: : : : : : : : = @ : : : # K : : 3 ",
" @ : : : Y.( > D.: : : D. $ y : : N @ : : : Y.( > D.: : : D. l.: : : ++n.q+)+: : H. L : : : (+n.& N.: : : G l.: : q * > ] _ : : s J : : ~+ * )+ @ : : : # K : : ~ ",
" @ : : : N e.: : ~ _.: : f @ : : : N e.: : ~ N.: : J r+A : : (+ , : : X. + : : : G N.: : m. M : : : l. G.: : o @ : : : -.K : : (+ ",
" @ : : : B. X.: : /+ $ /+c H.: : : : : 0 @ : : : B. X.: : /+ : : : ~ p : : x A : : _. Z : : G : : : : : : : : : : : {. =.: : : H.N.3 =+ @ : : : : : : - ",
" @ : : : & *+: : /+ ~+: : : : : : : : : 4 @ : : : & *+: : /+ : : : N x : : J : : : {. 0 : : G : : : : : : : : : : : z. e.: : : : : : U -+ @ : : : : : b ; ",
" @ : : : & *+: : /+ U : : , & -+ I.: : 4 @ : : : & *+: : /+ : : : ~ c : : x A : : _. Z : : G : : : N L _.V 4 : : : )+ @ : : : d.: : q l. ",
" @ : : : & *+: : /+ : : : D. l : : 4 @ : : : & *+: : /+ D : : J r+A : : (+ , : : J + : : : G N.: : l {.: : :. @ : : : . t : : ,+@ ",
" @ : : : & *+: : /+ k : : )+M n.#+: : : 4 @ : : : & *+: : /+ ; : : : (+n.r+)+: : k * : : : {.n.& , : : : G l.: : : 3 M - N. _ {.M % : : N. @ : : : & > D : : $+$ ",
" @ : : : & *+: : /+ N : : : : : S._ : : 4 @ : : : & *+: : /+ {.: : : : : : : { @ v : : : : : _ s : : G `.b : : : : : : : : f : : : : : : : A ( @ : : : & M X.: : k & ",
" @ : : : & *+: : /+ o N.{ y m.M z.: : 4 @ : : : & *+: : /+ r+3 s $+{ < ++ -.c $+c -.-+!.: : G -+I.J H.H.c =.C * P.J H.$+!.3 > @ : : : & r+ .: : { M ",
" _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._. ",
" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -1,227 +1,227 @@
/* XPM */ /* XPM */
static char * nanodesk_bw_xpm[] = { static char * nanodesk_bw_live_xpm[] = {
"114 200 221 2", "114 200 221 2",
" g #6C6C6C", " c #6C6C6C",
". g #888888", ". c #888888",
"+ g #585858", "+ c #585858",
"@ g #010101", "@ c #010101",
"# g #939393", "# c #939393",
"$ g #727272", "$ c #727272",
"% g #202020", "% c #202020",
"& g #000000", "& c #000000",
"* g #9A9A9A", "* c #9A9A9A",
"= g #979797", "= c #979797",
"- g #8C8C8C", "- c #8C8C8C",
"; g #646464", "; c #646464",
"> g #2A2A2A", "> c #2A2A2A",
", g #020202", ", c #020202",
"' g #9E9E9E", "' c #9E9E9E",
") g #919191", ") c #919191",
"! g #787878", "! c #787878",
"~ g #595959", "~ c #595959",
"{ g #383838", "{ c #383838",
"] g #151515", "] c #151515",
"^ g #030303", "^ c #030303",
"/ g #1C1C1C", "/ c #1C1C1C",
"( g #A1A1A1", "( c #A1A1A1",
"_ g #8D8D8D", "_ c #8D8D8D",
": g #707070", ": c #707070",
"< g #434343", "< c #434343",
"[ g #1F1F1F", "[ c #1F1F1F",
"} g #0D0D0D", "} c #0D0D0D",
"| g #060606", "| c #060606",
"1 g #101010", "1 c #101010",
"2 g #272727", "2 c #272727",
"3 g #2D2D2D", "3 c #2D2D2D",
"4 g #222222", "4 c #222222",
"5 g #8F8F8F", "5 c #8F8F8F",
"6 g #6E6E6E", "6 c #6E6E6E",
"7 g #3B3B3B", "7 c #3B3B3B",
"8 g #191919", "8 c #191919",
"9 g #0A0A0A", "9 c #0A0A0A",
"0 g #1B1B1B", "0 c #1B1B1B",
"a g #868686", "a c #868686",
"b g #232323", "b c #232323",
"c g #0B0B0B", "c c #0B0B0B",
"d g #7E7E7E", "d c #7E7E7E",
"e g #6D6D6D", "e c #6D6D6D",
"f g #2E2E2E", "f c #2E2E2E",
"g g #090909", "g c #090909",
"h g #282828", "h c #282828",
"i g #1E1E1E", "i c #1E1E1E",
"j g #2B2B2B", "j c #2B2B2B",
"k g #656565", "k c #656565",
"l g #3E3E3E", "l c #3E3E3E",
"m g #212121", "m c #212121",
"n g #8B8B8B", "n c #8B8B8B",
"o g #CFCFCF", "o c #CFCFCF",
"p g #BDBDBD", "p c #BDBDBD",
"q g #5F5F5F", "q c #5F5F5F",
"r g #3A3A3A", "r c #3A3A3A",
"s g #BEBEBE", "s c #BEBEBE",
"t g #D5D5D5", "t c #D5D5D5",
"u g #AEAEAE", "u c #AEAEAE",
"v g #343434", "v c #343434",
"w g #535353", "w c #535353",
"x g #4C4C4C", "x c #4C4C4C",
"y g #ACACAC", "y c #ACACAC",
"z g #FFFFFF", "z c #FFFFFF",
"A g #F4F4F4", "A c #F4F4F4",
"B g #D2D2D2", "B c #D2D2D2",
"C g #CDCDCD", "C c #CDCDCD",
"D g #313131", "D c #313131",
"E g #484848", "E c #484848",
"F g #0E0E0E", "F c #0E0E0E",
"G g #929292", "G c #929292",
"H g #FCFCFC", "H c #FCFCFC",
"I g #AAAAAA", "I c #AAAAAA",
"J g #121212", "J c #121212",
"K g #404040", "K c #404040",
"L g #373737", "L c #373737",
"M g #DDDDDD", "M c #DDDDDD",
"N g #505050", "N c #505050",
"O g #E4E4E4", "O c #E4E4E4",
"P g #F6F6F6", "P c #F6F6F6",
"Q g #C6C6C6", "Q c #C6C6C6",
"R g #EFEFEF", "R c #EFEFEF",
"S g #525252", "S c #525252",
"T g #F9F9F9", "T c #F9F9F9",
"U g #E9E9E9", "U c #E9E9E9",
"V g #424242", "V c #424242",
"W g #333333", "W c #333333",
"X g #4F4F4F", "X c #4F4F4F",
"Y g #EDEDED", "Y c #EDEDED",
"Z g #FDFDFD", "Z c #FDFDFD",
"` g #A9A9A9", "` c #A9A9A9",
" . g #6B6B6B", " . c #6B6B6B",
".. g #D1D1D1", ".. c #D1D1D1",
"+. g #080808", "+. c #080808",
"@. g #DBDBDB", "@. c #DBDBDB",
"#. g #F3F3F3", "#. c #F3F3F3",
"$. g #E5E5E5", "$. c #E5E5E5",
"%. g #5C5C5C", "%. c #5C5C5C",
"&. g #A2A2A2", "&. c #A2A2A2",
"*. g #363636", "*. c #363636",
"=. g #BABABA", "=. c #BABABA",
"-. g #494949", "-. c #494949",
";. g #464646", ";. c #464646",
">. g #696969", ">. c #696969",
",. g #E8E8E8", ",. c #E8E8E8",
"'. g #797979", "'. c #797979",
"). g #636363", "). c #636363",
"!. g #959595", "!. c #959595",
"~. g #969696", "~. c #969696",
"{. g #D6D6D6", "{. c #D6D6D6",
"]. g #4B4B4B", "]. c #4B4B4B",
"^. g #131313", "^. c #131313",
"/. g #444444", "/. c #444444",
"(. g #141414", "(. c #141414",
"_. g #4A4A4A", "_. c #4A4A4A",
":. g #7F7F7F", ":. c #7F7F7F",
"<. g #757575", "<. c #757575",
"[. g #CACACA", "[. c #CACACA",
"}. g #686868", "}. c #686868",
"|. g #7C7C7C", "|. c #7C7C7C",
"1. g #9F9F9F", "1. c #9F9F9F",
"2. g #353535", "2. c #353535",
"3. g #1A1A1A", "3. c #1A1A1A",
"4. g #4E4E4E", "4. c #4E4E4E",
"5. g #B5B5B5", "5. c #B5B5B5",
"6. g #D0D0D0", "6. c #D0D0D0",
"7. g #A3A3A3", "7. c #A3A3A3",
"8. g #C2C2C2", "8. c #C2C2C2",
"9. g #CBCBCB", "9. c #CBCBCB",
"0. g #474747", "0. c #474747",
"a. g #8E8E8E", "a. c #8E8E8E",
"b. g #CCCCCC", "b. c #CCCCCC",
"c. g #D3D3D3", "c. c #D3D3D3",
"d. g #B0B0B0", "d. c #B0B0B0",
"e. g #A7A7A7", "e. c #A7A7A7",
"f. g #D4D4D4", "f. c #D4D4D4",
"g. g #B4B4B4", "g. c #B4B4B4",
"h. g #3F3F3F", "h. c #3F3F3F",
"i. g #B7B7B7", "i. c #B7B7B7",
"j. g #BCBCBC", "j. c #BCBCBC",
"k. g #0C0C0C", "k. c #0C0C0C",
"l. g #171717", "l. c #171717",
"m. g #050505", "m. c #050505",
"n. g #3C3C3C", "n. c #3C3C3C",
"o. g #565656", "o. c #565656",
"p. g #2F2F2F", "p. c #2F2F2F",
"q. g #7B7B7B", "q. c #7B7B7B",
"r. g #2C2C2C", "r. c #2C2C2C",
"s. g #7D7D7D", "s. c #7D7D7D",
"t. g #111111", "t. c #111111",
"u. g #878787", "u. c #878787",
"v. g #767676", "v. c #767676",
"w. g #818181", "w. c #818181",
"x. g #414141", "x. c #414141",
"y. g #F0F0F0", "y. c #F0F0F0",
"z. g #A6A6A6", "z. c #A6A6A6",
"A. g #040404", "A. c #040404",
"B. g #0F0F0F", "B. c #0F0F0F",
"C. g #5D5D5D", "C. c #5D5D5D",
"D. g #4D4D4D", "D. c #4D4D4D",
"E. g #EAEAEA", "E. c #EAEAEA",
"F. g #B8B8B8", "F. c #B8B8B8",
"G. g #070707", "G. c #070707",
"H. g #C1C1C1", "H. c #C1C1C1",
"I. g #E2E2E2", "I. c #E2E2E2",
"J. g #A0A0A0", "J. c #A0A0A0",
"K. g #FEFEFE", "K. c #FEFEFE",
"L. g #F1F1F1", "L. c #F1F1F1",
"M. g #3D3D3D", "M. c #3D3D3D",
"N. g #323232", "N. c #323232",
"O. g #D8D8D8", "O. c #D8D8D8",
"P. g #F2F2F2", "P. c #F2F2F2",
"Q. g #FAFAFA", "Q. c #FAFAFA",
"R. g #F8F8F8", "R. c #F8F8F8",
"S. g #E6E6E6", "S. c #E6E6E6",
"T. g #181818", "T. c #181818",
"U. g #9C9C9C", "U. c #9C9C9C",
"V. g #C8C8C8", "V. c #C8C8C8",
"W. g #D9D9D9", "W. c #D9D9D9",
"X. g #E7E7E7", "X. c #E7E7E7",
"Y. g #F7F7F7", "Y. c #F7F7F7",
"Z. g #737373", "Z. c #737373",
"`. g #999999", "`. c #999999",
" + g #A8A8A8", " + c #A8A8A8",
".+ g #D7D7D7", ".+ c #D7D7D7",
"++ g #DADADA", "++ c #DADADA",
"@+ g #DCDCDC", "@+ c #DCDCDC",
"#+ g #CECECE", "#+ c #CECECE",
"$+ g #C5C5C5", "$+ c #C5C5C5",
"%+ g #B6B6B6", "%+ c #B6B6B6",
"&+ g #848484", "&+ c #848484",
"*+ g #989898", "*+ c #989898",
"=+ g #828282", "=+ c #828282",
"-+ g #6F6F6F", "-+ c #6F6F6F",
";+ g #5B5B5B", ";+ c #5B5B5B",
">+ g #747474", ">+ c #747474",
",+ g #808080", ",+ c #808080",
"'+ g #777777", "'+ c #777777",
")+ g #717171", ")+ c #717171",
"!+ g #252525", "!+ c #252525",
"~+ g #5A5A5A", "~+ c #5A5A5A",
"{+ g #626262", "{+ c #626262",
"]+ g #242424", "]+ c #242424",
"^+ g #606060", "^+ c #606060",
"/+ g #676767", "/+ c #676767",
"(+ g #303030", "(+ c #303030",
"_+ g #6A6A6A", "_+ c #6A6A6A",
":+ g #292929", ":+ c #292929",
"<+ g #616161", "<+ c #616161",
"[+ g #545454", "[+ c #545454",
"}+ g #1D1D1D", "}+ c #1D1D1D",
"|+ g #666666", "|+ c #666666",
"1+ g #454545", "1+ c #454545",
"2+ g #262626", "2+ c #262626",
"3+ g #575757", "3+ c #575757",
"4+ g #555555", "4+ c #555555",
"5+ g #5E5E5E", "5+ c #5E5E5E",
"6+ g #515151", "6+ c #515151",
"7+ g #161616", "7+ c #161616",
"8+ g #393939", "8+ c #393939",
" ", " ",
" ", " ",
" ", " ",
@ -335,18 +335,18 @@ static char * nanodesk_bw_xpm[] = {
" ", " ",
" ", " ",
" ", " ",
" 5+& l [ & 3+ >.M.l.& v 8+, {+ ", " ",
" W & ^+ [ & 3+ 4.& (+ . 7 & 0. %.& 7 ", " ",
" {+& !+ [ & 3+ < & K 7 & 0. .i , k ", " ",
" x & ;. f & & 9 :+6+ [ & 3+ S :+1 2+;.|+ }.E h 1 :+_.>. *.& & & & ;. }.E h 1 :+_.>. [ & _.L (.o. [ & _.L (.o.}.E h 1 :+_.>. }.E h 1 :+_.>. r.& & & & 0 x.& 6+ ", " ",
" { & [+ k j & ~+ [ & 3+<+& p.>.|+[+]. .r.& D.>.0.& W < & K .r.& D.>.0.& W [ & 2+). [ & 2+). .r.& D.>.0.& W .r.& D.>.0.& W 7 & 0. 6+& l ", " ",
" j & ~+ E & V [ & 3+5+& 8 w 5+>. ;+& , _+ |+& & q < & K ;+& , _+ |+& & q [ & N [ & N ;+& , _+ |+& & q ;+& , _+ |+& & q 7 & 0. 3+& N. ", " ",
" > & ~+ N r.(.& & & L [ & 3+ .x., & & +.]. w & 7+ .& & + < & K w & 7+ .& & + [ & 3+ [ & 3+ w & 7+ .& & + w & 7+ .& & + 7 & 0. 3+& N. ", " ",
" { & [+ ;+& (.). ;.& *. [ & 3+ >.q ].& & >.;+& , _+ |+& & q < & K ;+& , _+ |+& & q [ & 3+ [ & 3+ ;+& , _+ |+& & q ;+& , _+ |+& & q n.& 0. 6+& l ", " ",
" x & ;. ~ & l.; ).}+& *. [ & 3+<+/.<+_+5+& ] . .j & D.>.0.& N. < & K .j & D.>.0.& N. [ & 3+ [ & 3+ .j & D.>.0.& N. .j & D.>.0.& N. /.& 7 . x.& N ", " ",
" {+& 2+ -.3.0 M.x.& *. [ & 3+ .+ 2.] T.2.5+ }.0.2 B.2 _.>. < & K }.0.2 B.2 _.>. [ & 3+ [ & 3+ }.0.2 B.2 _.>. }.0.2 B.2 _.>. ).(+} & r [ , k ", " ",
" v & ^+ C.& 7 ", " ",
" 5+& l 8+, {+ ", " ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -1,227 +1,227 @@
/* XPM */ /* XPM */
static char * nanodesk_bw_xpm[] = { static char * nanodesk_bw_xpm[] = {
"114 200 221 2", "114 200 221 2",
" g #6C6C6C", " c #6C6C6C",
". g #888888", ". c #888888",
"+ g #585858", "+ c #585858",
"@ g #010101", "@ c #010101",
"# g #939393", "# c #939393",
"$ g #727272", "$ c #727272",
"% g #202020", "% c #202020",
"& g #000000", "& c #000000",
"* g #9A9A9A", "* c #9A9A9A",
"= g #979797", "= c #979797",
"- g #8C8C8C", "- c #8C8C8C",
"; g #646464", "; c #646464",
"> g #2A2A2A", "> c #2A2A2A",
", g #020202", ", c #020202",
"' g #9E9E9E", "' c #9E9E9E",
") g #919191", ") c #919191",
"! g #787878", "! c #787878",
"~ g #595959", "~ c #595959",
"{ g #383838", "{ c #383838",
"] g #151515", "] c #151515",
"^ g #030303", "^ c #030303",
"/ g #1C1C1C", "/ c #1C1C1C",
"( g #A1A1A1", "( c #A1A1A1",
"_ g #8D8D8D", "_ c #8D8D8D",
": g #707070", ": c #707070",
"< g #434343", "< c #434343",
"[ g #1F1F1F", "[ c #1F1F1F",
"} g #0D0D0D", "} c #0D0D0D",
"| g #060606", "| c #060606",
"1 g #101010", "1 c #101010",
"2 g #272727", "2 c #272727",
"3 g #2D2D2D", "3 c #2D2D2D",
"4 g #222222", "4 c #222222",
"5 g #8F8F8F", "5 c #8F8F8F",
"6 g #6E6E6E", "6 c #6E6E6E",
"7 g #3B3B3B", "7 c #3B3B3B",
"8 g #191919", "8 c #191919",
"9 g #0A0A0A", "9 c #0A0A0A",
"0 g #1B1B1B", "0 c #1B1B1B",
"a g #868686", "a c #868686",
"b g #232323", "b c #232323",
"c g #0B0B0B", "c c #0B0B0B",
"d g #7E7E7E", "d c #7E7E7E",
"e g #6D6D6D", "e c #6D6D6D",
"f g #2E2E2E", "f c #2E2E2E",
"g g #090909", "g c #090909",
"h g #282828", "h c #282828",
"i g #1E1E1E", "i c #1E1E1E",
"j g #2B2B2B", "j c #2B2B2B",
"k g #656565", "k c #656565",
"l g #3E3E3E", "l c #3E3E3E",
"m g #212121", "m c #212121",
"n g #8B8B8B", "n c #8B8B8B",
"o g #CFCFCF", "o c #CFCFCF",
"p g #BDBDBD", "p c #BDBDBD",
"q g #5F5F5F", "q c #5F5F5F",
"r g #3A3A3A", "r c #3A3A3A",
"s g #BEBEBE", "s c #BEBEBE",
"t g #D5D5D5", "t c #D5D5D5",
"u g #AEAEAE", "u c #AEAEAE",
"v g #343434", "v c #343434",
"w g #535353", "w c #535353",
"x g #4C4C4C", "x c #4C4C4C",
"y g #ACACAC", "y c #ACACAC",
"z g #FFFFFF", "z c #FFFFFF",
"A g #F4F4F4", "A c #F4F4F4",
"B g #D2D2D2", "B c #D2D2D2",
"C g #CDCDCD", "C c #CDCDCD",
"D g #313131", "D c #313131",
"E g #484848", "E c #484848",
"F g #0E0E0E", "F c #0E0E0E",
"G g #929292", "G c #929292",
"H g #FCFCFC", "H c #FCFCFC",
"I g #AAAAAA", "I c #AAAAAA",
"J g #121212", "J c #121212",
"K g #404040", "K c #404040",
"L g #373737", "L c #373737",
"M g #DDDDDD", "M c #DDDDDD",
"N g #505050", "N c #505050",
"O g #E4E4E4", "O c #E4E4E4",
"P g #F6F6F6", "P c #F6F6F6",
"Q g #C6C6C6", "Q c #C6C6C6",
"R g #EFEFEF", "R c #EFEFEF",
"S g #525252", "S c #525252",
"T g #F9F9F9", "T c #F9F9F9",
"U g #E9E9E9", "U c #E9E9E9",
"V g #424242", "V c #424242",
"W g #333333", "W c #333333",
"X g #4F4F4F", "X c #4F4F4F",
"Y g #EDEDED", "Y c #EDEDED",
"Z g #FDFDFD", "Z c #FDFDFD",
"` g #A9A9A9", "` c #A9A9A9",
" . g #6B6B6B", " . c #6B6B6B",
".. g #D1D1D1", ".. c #D1D1D1",
"+. g #080808", "+. c #080808",
"@. g #DBDBDB", "@. c #DBDBDB",
"#. g #F3F3F3", "#. c #F3F3F3",
"$. g #E5E5E5", "$. c #E5E5E5",
"%. g #5C5C5C", "%. c #5C5C5C",
"&. g #A2A2A2", "&. c #A2A2A2",
"*. g #363636", "*. c #363636",
"=. g #BABABA", "=. c #BABABA",
"-. g #494949", "-. c #494949",
";. g #464646", ";. c #464646",
">. g #696969", ">. c #696969",
",. g #E8E8E8", ",. c #E8E8E8",
"'. g #797979", "'. c #797979",
"). g #636363", "). c #636363",
"!. g #959595", "!. c #959595",
"~. g #969696", "~. c #969696",
"{. g #D6D6D6", "{. c #D6D6D6",
"]. g #4B4B4B", "]. c #4B4B4B",
"^. g #131313", "^. c #131313",
"/. g #444444", "/. c #444444",
"(. g #141414", "(. c #141414",
"_. g #4A4A4A", "_. c #4A4A4A",
":. g #7F7F7F", ":. c #7F7F7F",
"<. g #757575", "<. c #757575",
"[. g #CACACA", "[. c #CACACA",
"}. g #686868", "}. c #686868",
"|. g #7C7C7C", "|. c #7C7C7C",
"1. g #9F9F9F", "1. c #9F9F9F",
"2. g #353535", "2. c #353535",
"3. g #1A1A1A", "3. c #1A1A1A",
"4. g #4E4E4E", "4. c #4E4E4E",
"5. g #B5B5B5", "5. c #B5B5B5",
"6. g #D0D0D0", "6. c #D0D0D0",
"7. g #A3A3A3", "7. c #A3A3A3",
"8. g #C2C2C2", "8. c #C2C2C2",
"9. g #CBCBCB", "9. c #CBCBCB",
"0. g #474747", "0. c #474747",
"a. g #8E8E8E", "a. c #8E8E8E",
"b. g #CCCCCC", "b. c #CCCCCC",
"c. g #D3D3D3", "c. c #D3D3D3",
"d. g #B0B0B0", "d. c #B0B0B0",
"e. g #A7A7A7", "e. c #A7A7A7",
"f. g #D4D4D4", "f. c #D4D4D4",
"g. g #B4B4B4", "g. c #B4B4B4",
"h. g #3F3F3F", "h. c #3F3F3F",
"i. g #B7B7B7", "i. c #B7B7B7",
"j. g #BCBCBC", "j. c #BCBCBC",
"k. g #0C0C0C", "k. c #0C0C0C",
"l. g #171717", "l. c #171717",
"m. g #050505", "m. c #050505",
"n. g #3C3C3C", "n. c #3C3C3C",
"o. g #565656", "o. c #565656",
"p. g #2F2F2F", "p. c #2F2F2F",
"q. g #7B7B7B", "q. c #7B7B7B",
"r. g #2C2C2C", "r. c #2C2C2C",
"s. g #7D7D7D", "s. c #7D7D7D",
"t. g #111111", "t. c #111111",
"u. g #878787", "u. c #878787",
"v. g #767676", "v. c #767676",
"w. g #818181", "w. c #818181",
"x. g #414141", "x. c #414141",
"y. g #F0F0F0", "y. c #F0F0F0",
"z. g #A6A6A6", "z. c #A6A6A6",
"A. g #040404", "A. c #040404",
"B. g #0F0F0F", "B. c #0F0F0F",
"C. g #5D5D5D", "C. c #5D5D5D",
"D. g #4D4D4D", "D. c #4D4D4D",
"E. g #EAEAEA", "E. c #EAEAEA",
"F. g #B8B8B8", "F. c #B8B8B8",
"G. g #070707", "G. c #070707",
"H. g #C1C1C1", "H. c #C1C1C1",
"I. g #E2E2E2", "I. c #E2E2E2",
"J. g #A0A0A0", "J. c #A0A0A0",
"K. g #FEFEFE", "K. c #FEFEFE",
"L. g #F1F1F1", "L. c #F1F1F1",
"M. g #3D3D3D", "M. c #3D3D3D",
"N. g #323232", "N. c #323232",
"O. g #D8D8D8", "O. c #D8D8D8",
"P. g #F2F2F2", "P. c #F2F2F2",
"Q. g #FAFAFA", "Q. c #FAFAFA",
"R. g #F8F8F8", "R. c #F8F8F8",
"S. g #E6E6E6", "S. c #E6E6E6",
"T. g #181818", "T. c #181818",
"U. g #9C9C9C", "U. c #9C9C9C",
"V. g #C8C8C8", "V. c #C8C8C8",
"W. g #D9D9D9", "W. c #D9D9D9",
"X. g #E7E7E7", "X. c #E7E7E7",
"Y. g #F7F7F7", "Y. c #F7F7F7",
"Z. g #737373", "Z. c #737373",
"`. g #999999", "`. c #999999",
" + g #A8A8A8", " + c #A8A8A8",
".+ g #D7D7D7", ".+ c #D7D7D7",
"++ g #DADADA", "++ c #DADADA",
"@+ g #DCDCDC", "@+ c #DCDCDC",
"#+ g #CECECE", "#+ c #CECECE",
"$+ g #C5C5C5", "$+ c #C5C5C5",
"%+ g #B6B6B6", "%+ c #B6B6B6",
"&+ g #848484", "&+ c #848484",
"*+ g #989898", "*+ c #989898",
"=+ g #828282", "=+ c #828282",
"-+ g #6F6F6F", "-+ c #6F6F6F",
";+ g #5B5B5B", ";+ c #5B5B5B",
">+ g #747474", ">+ c #747474",
",+ g #808080", ",+ c #808080",
"'+ g #777777", "'+ c #777777",
")+ g #717171", ")+ c #717171",
"!+ g #252525", "!+ c #252525",
"~+ g #5A5A5A", "~+ c #5A5A5A",
"{+ g #626262", "{+ c #626262",
"]+ g #242424", "]+ c #242424",
"^+ g #606060", "^+ c #606060",
"/+ g #676767", "/+ c #676767",
"(+ g #303030", "(+ c #303030",
"_+ g #6A6A6A", "_+ c #6A6A6A",
":+ g #292929", ":+ c #292929",
"<+ g #616161", "<+ c #616161",
"[+ g #545454", "[+ c #545454",
"}+ g #1D1D1D", "}+ c #1D1D1D",
"|+ g #666666", "|+ c #666666",
"1+ g #454545", "1+ c #454545",
"2+ g #262626", "2+ c #262626",
"3+ g #575757", "3+ c #575757",
"4+ g #555555", "4+ c #555555",
"5+ g #5E5E5E", "5+ c #5E5E5E",
"6+ g #515151", "6+ c #515151",
"7+ g #161616", "7+ c #161616",
"8+ g #393939", "8+ c #393939",
" ", " ",
" ", " ",
" ", " ",
@ -335,18 +335,18 @@ static char * nanodesk_bw_xpm[] = {
" ", " ",
" ", " ",
" ", " ",
" 5+& l [ & 3+ >.M.l.& v 8+, {+ ", " ",
" W & ^+ [ & 3+ 4.& (+ . 7 & 0. %.& 7 ", " ",
" {+& !+ [ & 3+ < & K 7 & 0. .i , k ", " ",
" x & ;. f & & 9 :+6+ [ & 3+ S :+1 2+;.|+ }.E h 1 :+_.>. *.& & & & ;. }.E h 1 :+_.>. [ & _.L (.o. [ & _.L (.o.}.E h 1 :+_.>. }.E h 1 :+_.>. r.& & & & 0 x.& 6+ ", " ",
" { & [+ k j & ~+ [ & 3+<+& p.>.|+[+]. .r.& D.>.0.& W < & K .r.& D.>.0.& W [ & 2+). [ & 2+). .r.& D.>.0.& W .r.& D.>.0.& W 7 & 0. 6+& l ", " ",
" j & ~+ E & V [ & 3+5+& 8 w 5+>. ;+& , _+ |+& & q < & K ;+& , _+ |+& & q [ & N [ & N ;+& , _+ |+& & q ;+& , _+ |+& & q 7 & 0. 3+& N. ", " ",
" > & ~+ N r.(.& & & L [ & 3+ .x., & & +.]. w & 7+ .& & + < & K w & 7+ .& & + [ & 3+ [ & 3+ w & 7+ .& & + w & 7+ .& & + 7 & 0. 3+& N. ", " ",
" { & [+ ;+& (.). ;.& *. [ & 3+ >.q ].& & >.;+& , _+ |+& & q < & K ;+& , _+ |+& & q [ & 3+ [ & 3+ ;+& , _+ |+& & q ;+& , _+ |+& & q n.& 0. 6+& l ", " ",
" x & ;. ~ & l.; ).}+& *. [ & 3+<+/.<+_+5+& ] . .j & D.>.0.& N. < & K .j & D.>.0.& N. [ & 3+ [ & 3+ .j & D.>.0.& N. .j & D.>.0.& N. /.& 7 . x.& N ", " ",
" {+& 2+ -.3.0 M.x.& *. [ & 3+ .+ 2.] T.2.5+ }.0.2 B.2 _.>. < & K }.0.2 B.2 _.>. [ & 3+ [ & 3+ }.0.2 B.2 _.>. }.0.2 B.2 _.>. ).(+} & r [ , k ", " ",
" v & ^+ C.& 7 ", " ",
" 5+& l 8+, {+ ", " ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -1,6 +1,6 @@
/* XPM */ /* XPM */
static char * nanodesk_xpm[] = { static char * nanodesk_live_xpm[] = {
"114 200 544 2", "114 200 536 2",
" c #666999", " c #666999",
". c #8B8785", ". c #8B8785",
"+ c #5B5755", "+ c #5B5755",
@ -537,14 +537,6 @@ static char * nanodesk_xpm[] = {
"I$ c #5D5F8B", "I$ c #5D5F8B",
"J$ c #4D5076", "J$ c #4D5076",
"K$ c #1D1E30", "K$ c #1D1E30",
"L$ c #353753",
"M$ c #30324B",
"N$ c #484A6D",
"O$ c #4C4E74",
"P$ c #353752",
"Q$ c #434567",
"R$ c #30314B",
"S$ c #363854",
" ", " ",
" ", " ",
" ", " ",
@ -658,18 +650,18 @@ static char * nanodesk_xpm[] = {
" ", " ",
" ", " ",
" ", " ",
" z$& $ 7#& k$ ,#K#$#& @# L$f#*# ", " ",
" M$& |# 7#& k$ e$& 0#(# k#& x$ F$& h$ ", " ",
" *#& 2# 7#& k$ )$& s# k#& x$ }#o#f#/# ", " ",
" N$& a$ W#& & 8#l$u$ 7#& k$ u#l$B#.$a#^$ h#^#L#B#g#$$,# {$& & & & a$ h#^#L#B#g#$$,# 7#& e#%$;$n$ 7#& e#%$;$n$h#^#L#B#g#$$,# h#^#L#B#g#$$,# /$& & & & 9# )#& O$ ", " ",
" P$& D# U#]$& c# 7#& k$p#& V#,#J#I#w$ (#/$& n#,#Q$& R$b# )$& s# (#/$& n#,#Q$& R$b# 7#& .$.# 7#& .$.# (#/$& n#,#Q$& R$b#(#/$& n#,#Q$& R$b# k#& x$ u$& 7$ ", " ",
" ]$& # ^#& C$ 7#& k$z$& Q#&$b$,# j#& f#E$ ^$& & '# )$& s# j#& f#E$ ^$& & '# 7#& M# 7#& M# j#& f#E$ ^$& & '#j#& f#E$ ^$& & '# k#& x$ ,$& ;# ", " ",
" c$& # B$]#;$& & & r$ 7#& k$}#)#f#& & _$w$ &$& s$ (#& & x# )$& s# &$& s$ (#& & x# 7#& k$ 7#& k$ &$& s$ (#& & x#&$& s$ (#& & x# k#& x$ ,$& ;# ", " ",
" o$& D# j#& ;$&# a#& {$ 7#& k$ ,#'#w$& & ,#j#& f#E$ ^$& & '# )$& s# j#& f#E$ ^$& & '# 7#& k$ 7#& k$ j#& f#E$ ^$& & '#j#& f#E$ ^$& & '# %#& x$ u$& 7$ ", " ",
" i#& a$ t#& $#z#.#w#& {$ 7#& k$O##$p#d#z$& p$}#(#]$& n#,#Q$& ;#b# )$& s# (#]$& n#,#Q$& ;#b# 7#& k$ 7#& k$ (#]$& n#,#Q$& ;#b#(#]$& n#,#Q$& ;#b# S#& k#}# `@& M# ", " ",
" *#& .$ b#y#Z#9#K#`@& {$ 7#& k$}#x#@#p$-#A#z$ 5#Q$[#:$:#e#,# )$& s# 5#Q$[#:$:#e#,# 7#& k$ 7#& k$ 5#Q$[#:$:#e#,# 5#Q$[#:$:#e#,# &#T#~#& S$ b#7#f#U# ", " ",
" ($& |# F$& h$ ", " ",
" z$& 7$ v$f#*# ", " ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -1,6 +1,6 @@
/* XPM */ /* XPM */
static char * nanodesk_xpm[] = { static char * nanodesk_xpm[] = {
"114 200 544 2", "114 200 536 2",
" c #666999", " c #666999",
". c #8B8785", ". c #8B8785",
"+ c #5B5755", "+ c #5B5755",
@ -537,14 +537,6 @@ static char * nanodesk_xpm[] = {
"I$ c #5D5F8B", "I$ c #5D5F8B",
"J$ c #4D5076", "J$ c #4D5076",
"K$ c #1D1E30", "K$ c #1D1E30",
"L$ c #353753",
"M$ c #30324B",
"N$ c #484A6D",
"O$ c #4C4E74",
"P$ c #353752",
"Q$ c #434567",
"R$ c #30314B",
"S$ c #363854",
" ", " ",
" ", " ",
" ", " ",
@ -658,18 +650,18 @@ static char * nanodesk_xpm[] = {
" ", " ",
" ", " ",
" ", " ",
" z$& $ 7#& k$ ,#K#$#& @# L$f#*# ", " ",
" M$& |# 7#& k$ e$& 0#(# k#& x$ F$& h$ ", " ",
" *#& 2# 7#& k$ )$& s# k#& x$ }#o#f#/# ", " ",
" N$& a$ W#& & 8#l$u$ 7#& k$ u#l$B#.$a#^$ h#^#L#B#g#$$,# {$& & & & a$ h#^#L#B#g#$$,# 7#& e#%$;$n$ 7#& e#%$;$n$h#^#L#B#g#$$,# h#^#L#B#g#$$,# /$& & & & 9# )#& O$ ", " ",
" P$& D# U#]$& c# 7#& k$p#& V#,#J#I#w$ (#/$& n#,#Q$& R$b# )$& s# (#/$& n#,#Q$& R$b# 7#& .$.# 7#& .$.# (#/$& n#,#Q$& R$b#(#/$& n#,#Q$& R$b# k#& x$ u$& 7$ ", " ",
" ]$& # ^#& C$ 7#& k$z$& Q#&$b$,# j#& f#E$ ^$& & '# )$& s# j#& f#E$ ^$& & '# 7#& M# 7#& M# j#& f#E$ ^$& & '#j#& f#E$ ^$& & '# k#& x$ ,$& ;# ", " ",
" c$& # B$]#;$& & & r$ 7#& k$}#)#f#& & _$w$ &$& s$ (#& & x# )$& s# &$& s$ (#& & x# 7#& k$ 7#& k$ &$& s$ (#& & x#&$& s$ (#& & x# k#& x$ ,$& ;# ", " ",
" o$& D# j#& ;$&# a#& {$ 7#& k$ ,#'#w$& & ,#j#& f#E$ ^$& & '# )$& s# j#& f#E$ ^$& & '# 7#& k$ 7#& k$ j#& f#E$ ^$& & '#j#& f#E$ ^$& & '# %#& x$ u$& 7$ ", " ",
" i#& a$ t#& $#z#.#w#& {$ 7#& k$O##$p#d#z$& p$}#(#]$& n#,#Q$& ;#b# )$& s# (#]$& n#,#Q$& ;#b# 7#& k$ 7#& k$ (#]$& n#,#Q$& ;#b#(#]$& n#,#Q$& ;#b# S#& k#}# `@& M# ", " ",
" *#& .$ b#y#Z#9#K#`@& {$ 7#& k$}#x#@#p$-#A#z$ 5#Q$[#:$:#e#,# )$& s# 5#Q$[#:$:#e#,# 7#& k$ 7#& k$ 5#Q$[#:$:#e#,# 5#Q$[#:$:#e#,# &#T#~#& S$ b#7#f#U# ", " ",
" ($& |# F$& h$ ", " ",
" z$& 7$ v$f#*# ", " ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -0,0 +1,12 @@
[Desktop Entry]
Name=nanodesk
Comment=nanodesk configuration for jwm - Minimalistic pure X11 window manager with menu/tray support
Type=Application
Terminal=False
Exec=/usr/bin/nanodesk
TryExec=nanodesk
Icon=/usr/share/nanodesk/images/linux_button.svg
Keywords=X11;floating;windowmanager;
[Window Manager]
SessionManaged=true

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 99 KiB

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 63 KiB

BIN
screenshots/nanodesk_8.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB