Cleaning: Fixes #85, General tidy up: documentation packaging

This commit is contained in:
Rory Fewell
2021-11-20 21:14:27 +00:00
parent 1db3667ac9
commit d38a91f17c
44 changed files with 1048 additions and 86 deletions

3
.gitignore vendored
View File

@@ -4,5 +4,4 @@
*.kra
*~
[Bb]uild/
packaging/debian
packaging/.sass-cache
.sass-cache/

3
.gitmodules vendored Normal file
View File

@@ -0,0 +1,3 @@
[submodule "submodules/xfce-winxp-tc-panel"]
path = submodules/xfce-winxp-tc-panel
url = https://github.com/rozniak/xfce-winxp-tc-panel

View File

@@ -1,23 +1,23 @@
# xfce-winxp-tc
This is my little chipping-away spot for a Windows XP Total Conversion for XFCE.
![desktop](https://user-images.githubusercontent.com/13258281/142736910-7393327e-5361-4347-a06e-783d23ab936c.png)
## What?
Essentially this repo is a 'project' to replicate the XP experience on XFCE / Linux in general. I'm working on themes at the moment (easier said than done), and potentially programs later down the line.
Essentially this repo is a 'project' to replicate the XP experience on XFCE / Linux in general. This includes everything from desktop themes, icons, cursors, all the way to programs and the shell itself.
## Why?
I used to use Luna theme ports back when Windows 7 was still supported - it's no longer supported and customisability is non-existent on Windows 10 and whilst ports for XP themes do exist for Linux, I don't think they're particularly great. I want the theme to be close to pixel-perfect, limitations with GTK and XFCE notwithstanding.
I used to use Luna theme ports back when Windows 7 was still supported - it's no longer supported and customisability is non-existent on Windows 10. Whilst ports for XP themes do exist for Linux, I don't think they're particularly great. I want to replicate the Windows XP experience, as close to pixel perfect as possible.
The ports I've seen do a very minimal job leaving most of the UI looking very GNOME-ish, I want a clearly XP-style look. The themes here should be comprehensive.
As part of my aim this includes writing programs and panel plugins to achieve this goal, such as the Start menu shown in the screenshot above.
## Building / Installation
Right now the build process targets Debian (as a `.deb`) - I have an issue open #35 to resolve this in future for other package managers.
Make sure to clone this repository recursively so that `/submodules` is populated! (use `git clone <url> --recurse-submodules`)
For now - Debian users can use these steps to build and install:
```
cd packaging
./build-deb.sh
sudo dpkg -i debian.deb
```
The build process involves packaging for each component, and then installing those packages. At the moment, I have only implemented `.deb` packaging, though I have [issue #35](https://github.com/rozniak/xfce-winxp-tc/issues/35) open to sort out other package managers eventually.
The packaging is, of course, [found under `/packaging`](https://github.com/rozniak/xfce-winxp-tc/tree/master/packaging) (except for `/submodules`), with each directory explaining how to use the relevant script. In general, have a poke around in this repository, there are `README`s in each directory that will explain what things are, and how to install them. 😁
## The theme(s) are buggy!
This is almost certainly true, especially seeing as [theming GTK isn't really a supported feature](https://stopthemingmy.app/). If you're using themes from this repository and programs look broken, you should file issues here rather than pestering the developers of said program.
@@ -27,11 +27,15 @@ I hope to cover theming for standard GTK widgets across the board, but there wil
The theme is now based directly from Adwaita to hopefully maximise compatibility and make it easier to fix theme bugs. A refactored form of Adwaita from the upstream GTK 3 sources exists in this repo to make it easier to base themes from/fix problems.
## Roadmap?
I don't have a fancy looking roadmap document for this repo - like I said I am just chipping away here and there. Where I remember to I have been creating issues for things I will or would like to do in future. Most of which is related to theming but it would be nice to have some programs / `xfce-panel` plugins one day as well.
I don't have a fancy looking roadmap document for this repo - there's too much to list really. Essentially, if something was in Windows XP, it's on my mind.
As part of that, user-friendliness is always a target - besides themes and programs, I aim to one day have a nice setup application/process akin to XP's. And perhaps an OOBE if I can figure that out (mostly for the nostalgic music).
## Screenshots?
It's still early days, whilst I do use the in-progress `Luna (Blue)` theme as my daily, it is by no means complete. It's usable, but not 'pretty'.
These screenshots are quite old, but generally reflect the current status of the desktop theme (due to working on things like the Start menu). I will be resuming the theming work shortly, so keep an eye out. 😉
In any case, here are some screenshots of the current state (as of 2021-07-19):
![image](https://user-images.githubusercontent.com/13258281/126234957-171b12a4-36c7-43ad-ba85-ddbfe4758acb.png)

37
cursors/README.MD Normal file
View File

@@ -0,0 +1,37 @@
# Cursors
This directory contains the source files used to generate cursor themes.
## Structure
For each cursor theme (eg. `standard`), there are two variants: one with a pointer shadow, and one without. The reason for separate themes for the variants is to replicate the `Enable pointer shadows` option in Windows XP.
Within each directory (eg. `with-shadow/standard`), these are the contents:
`cfg/` - contains config files that are passed to `xcursorgen` for each cursor ([see the man page for details](https://www.x.org/releases/current/doc/man/man1/xcursorgen.1.xhtml))
`res/` - contains the actual PNG images for each cursor, which are passed to `xcursorgen`
`debian-control` - the `control` file used in Debian packaging to provide metadata about the package
`index.theme` - the actual freedesktop theme config file (that gets deployed to `/usr/share/icons`)
`mappings` - since there are lots of X cursors that are basically the same, the mappings file maps X cursor names to the cursor names found under `cfg/` and `res/` (formatted as `(xcursor name)-->(cusor filename minus extension)`)
## Installation
See the `README.MD` under `/packaging/deb/cursors` for packaging and installation.
## Developing a cursor theme
Armed with the above info it should make sense to you how to create a cursor theme:
- Choose a name appropriate for the theme, create directories under `with-shadow` and `without-shadow` (create both `/with-shadow/<theme>` and `/without-shadow/<theme>`)
- Create a PNG image for each cursor under `<theme>/res` (eg. `/without-shadow/<theme>/res/<cursorname>.png`)
- (if you're working on the `with-shadows` variant, use the Krita settings below to generate the shadow)
- Create the `xcursorgen` configuration for each cursor under `<theme>/cfg` (eg. `/without-shadow/<theme>/res/<cursorname>.cfg`)
- Create the `index.theme` file for both variants, please keep the naming/description uniform with the `standard` theme
- Basically the `with-shadow` variant should have an identical name/description to `without-shadow`, except the name should have `(with pointer shadows)` appended, and the description should have `, with pointer shadows` appended
- Create the `mappings` file to map each X cursor name to the theme's cursor names, use the `standard` theme as a guide
Once this is all done, you should be able to package using the script. The structure of theme sources allows the script to work without any specific configuration.
### (Useful) Generating an XP-accurate pointer shadow in Krita
You should be able to replicate an XP-accurate pointer shadow using Krita on the cursor images. Add a `Drop Shadow` layer style and use these settings:
![image](https://user-images.githubusercontent.com/13258281/141696896-bcce7f12-90b2-444a-acc9-fd91ef4fcad6.png)

View File

@@ -0,0 +1,5 @@
# Standard Cursor Theme (no pointer shadows)
This directory contains the source files for the standard cursor theme, without pointer shadows.
## Preview
<img src="https://raw.githubusercontent.com/rozniak/xfce-winxp-tc/master/cursors/no-shadow/standard/res/arrow.png"> <img src="https://raw.githubusercontent.com/rozniak/xfce-winxp-tc/master/cursors/no-shadow/standard/res/arrow-wait.png"> <img src="https://raw.githubusercontent.com/rozniak/xfce-winxp-tc/master/cursors/no-shadow/standard/res/busy.png"> <img src="https://raw.githubusercontent.com/rozniak/xfce-winxp-tc/master/cursors/no-shadow/standard/res/hand.png"> <img src="https://raw.githubusercontent.com/rozniak/xfce-winxp-tc/master/cursors/no-shadow/standard/res/text-select.png"> <img src="https://raw.githubusercontent.com/rozniak/xfce-winxp-tc/master/cursors/no-shadow/standard/res/handwriting.png"> <img src="https://github.com/rozniak/xfce-winxp-tc/blob/master/cursors/no-shadow/standard/res/unavailable.png">

View File

@@ -0,0 +1,6 @@
Package: cursor-theme-standard-no-shadows
Version: 0.0.1
Maintainer: Rory Fewell <roryf@oddmatics.uk>
Architecture: all
Section: non-free
Description: The standard Windows XP cursor theme.

View File

@@ -0,0 +1,5 @@
# Standard Cursor Theme (with pointer shadows)
This directory contains the source files for the standard cursor theme, with pointer shadows.
## Preview
<img src="https://raw.githubusercontent.com/rozniak/xfce-winxp-tc/master/cursors/with-shadow/standard/res/arrow.png"> <img src="https://raw.githubusercontent.com/rozniak/xfce-winxp-tc/master/cursors/with-shadow/standard/res/arrow-wait.png"> <img src="https://raw.githubusercontent.com/rozniak/xfce-winxp-tc/master/cursors/with-shadow/standard/res/busy.png"> <img src="https://raw.githubusercontent.com/rozniak/xfce-winxp-tc/master/cursors/with-shadow/standard/res/hand.png"> <img src="https://raw.githubusercontent.com/rozniak/xfce-winxp-tc/master/cursors/with-shadow/standard/res/text-select.png"> <img src="https://raw.githubusercontent.com/rozniak/xfce-winxp-tc/master/cursors/with-shadow/standard/res/handwriting.png"> <img src="https://raw.githubusercontent.com/rozniak/xfce-winxp-tc/master/cursors/with-shadow/standard/res/unavailable.png">

View File

@@ -0,0 +1,6 @@
Package: cursor-theme-standard-with-shadows
Version: 0.0.1
Maintainer: Rory Fewell <roryf@oddmatics.uk>
Architecture: all
Section: non-free
Description: The standard Windows XP cursor theme, with pointer shadows.

25
icons/README.MD Normal file
View File

@@ -0,0 +1,25 @@
# Icons
This directory contains the source files used to generate icon themes.
## Under Construction
Icon themes are still under construction - checkout branch `feat-72` if you would like to be *cutting edge* and use the latest work (until that work is done and merged into `master`, at least).
## Structure
Within each directory (eg. `luna`) these are the contents:
`res/` - contains the PNG images for each icon, divided into subfolders based on the icon size
`debian-control` - the `control` file used in Debian packaging to provide metadata about the package
`index.theme` - the actual freedesktop theme config file (that gets deployed to `/usr/share/icons`)
`mappings` - since there are lots of Freedesktop icon names that map to the same icon, the mappings file maps those Freedesktop icon names to the icons found under `/res` (formatted as `(freedesktop icon name)-->(icon filename minus extension)`)
## Installation
If you would like to install the icon theme (bearing in mind it's incomplete!) you should:
- `git checkout feat-72` (to get yourself on the feature branch with the icons)
- `cd` over to the `/packaging/deb/icons` directory
- `./packicon.sh luna` (to build the Luna icon package)
- `sudo dpkg -i <the package>.deb` (to install the package)
Sorry this is very rough, it will be updated once I finish the `feat-72` branch. Which may be some time because there are a LOT of icons to get through...

10
packaging/README.MD Normal file
View File

@@ -0,0 +1,10 @@
# Packaging
This directory contains scripts for creating packages for all the various components found in this repository.
## Structure
Each 'type' of component has its own packaging script, in a subdirectory with appropriate notes (cursors, desktop theme, programs etc.). Explore the contents below here and you should find `README`s explaining how to use the scripts and install the components.
## Support?
At the moment you'll notice there is only a `deb` subdirectory. I personally use Debian, so I have got package scripts that generate `.deb` packages so far - if you're also a Debian user, or you use a derivative such as Ubuntu, then you should be good to go.
For users on Linux distributions that use other package managers, I will get around to supporting those one day, it just takes a lot of work and a lot of testing. This `README` will be updated to reflect the status of package manager support when the work is done.

View File

@@ -1,30 +0,0 @@
#!/bin/bash
# Luna (Blue) Package
#
SOURCE_ROOT='../themes/luna/blue'
TARGET_ROOT='debian'
DEBIAN_ROOT="${TARGET_ROOT}/DEBIAN"
LUNA_BLUE_ROOT="${TARGET_ROOT}/usr/share/themes/Luna"
if [ -d $TARGET_ROOT ]
then
rm -rf $TARGET_ROOT
fi
mkdir -p $DEBIAN_ROOT
mkdir -p $LUNA_BLUE_ROOT
mkdir -p "${LUNA_BLUE_ROOT}/gtk-3.0"
cp "${SOURCE_ROOT}/debian-control" "${TARGET_ROOT}/DEBIAN/control"
cp -r "${SOURCE_ROOT}/gtk-2.0" "${LUNA_BLUE_ROOT}/gtk-2.0"
cp -r "${SOURCE_ROOT}/Resources" "${LUNA_BLUE_ROOT}/Resources"
cp -r "${SOURCE_ROOT}/xfwm4" "${LUNA_BLUE_ROOT}/xfwm4"
scss "${SOURCE_ROOT}/gtk-3.0/main.scss" "${LUNA_BLUE_ROOT}/gtk-3.0/gtk.css" --sourcemap=none
fakeroot dpkg-deb -v --build $TARGET_ROOT
echo "Package has been built."

View File

@@ -0,0 +1,18 @@
# Cursor Theme Packaging (.deb)
This directory contains the cursor theme packaging script for Debian and derivatives (e.g. Ubuntu).
## Usage
Simply run the script, and pass in the path of the theme(s) you would like to build, relative to the `/cursors` directory.
For example:
```bash
./packcurs.sh no-shadow/standard shadow/standard
```
This will build and output packages for the standard cursor theme with, and without, pointer shadows. You can then install the package(s) with:
```bash
sudo dpkg -i <cursor-theme-xxx-yyy.deb>
```
## Any Problems?
If you have problems running the script, feel free to [submit an issue](https://github.com/rozniak/xfce-winxp-tc/issues) and include the generated log file. 😁

View File

@@ -83,6 +83,31 @@ do
theme_shadows="${BASH_REMATCH[1]}"
theme_scheme="${BASH_REMATCH[2]}"
log_path="${CURDIR}/${theme_scheme}-${theme_shadows}.log"
if [[ ! -d "${theme_cfg_dir}" ]]
then
echo "Cannot find xcursorgen configs for ${themestr}, skipping."
continue
fi
if [[ ! -f "${theme_map_path}" ]]
then
echo "Cannot find mappings file for ${themestr}, skipping."
continue
fi
if [[ -f "${log_path}" ]]
then
rm -f "${log_path}"
if [[ $? -gt 0 ]]
then
echo "Failed to delete ${log_path}, skipping."
continue
fi
fi
# Set up our package's working directory
#
pkg_theme_dir="${PKG_DIR}/usr/share/icons/${theme_scheme}-${theme_shadows}"
@@ -95,17 +120,18 @@ do
rm -rf "${PKG_DIR}"
fi
mkdir "${PKG_DIR}"
mkdir -p "${PKG_DIR}"
mkdir -p "${pkg_cursor_dir}"
mkdir -p "${pkg_curres_dir}"
mkdir "${pkg_debian_dir}"
mkdir -p "${pkg_debian_dir}"
# Generate X cursors, shift them to our working dir and remove the '.out' ext
#
cd "${theme_dir}"
find "${theme_cfg_dir}" -type f -exec xcursorgen '{}' '{}.out' \; > /dev/null 2>&1
mv "${theme_cfg_dir}"/*.out "${pkg_curres_dir}"
find "${pkg_curres_dir}" -type f -execdir rename 's/(.*)\.cfg\.out/\1/' '{}' \; > /dev/null 2>&1
find "${theme_cfg_dir}" -type f -exec xcursorgen '{}' '{}.out' \; > "${log_path}" 2>&1
mv "${theme_cfg_dir}"/*.out "${pkg_curres_dir}" > "${log_path}" 2>&1
find "${pkg_curres_dir}" -type f -execdir rename 's/(.*)\.cfg\.out/\1/' '{}' \; > "${log_path}" 2>&1
# Create symbolic links
#
@@ -123,45 +149,52 @@ do
pkg_res_target="res/${resname}"
pkg_xcur_source="${pkg_cursor_dir}/${xcurname}"
ln -s "${pkg_res_target}" "${pkg_xcur_source}"
ln -s "${pkg_res_target}" "${pkg_xcur_source}" > "${log_path}" 2>&1
if [[ $? -gt 0 ]]
then
"Failed to create symlink for ${xcurname} in ${themestr}."
continue
fi
else
echo "Invalid mapping '${mapping}' in ${theme_map_path}."
continue
fi
done
# Copy across index.theme
# Copy files
#
cp "${theme_dir}/index.theme" "${pkg_theme_dir}"
pkg_setup_result=0
# Create CONTROL file
cp "${theme_dir}/index.theme" "${pkg_theme_dir}" >> "${log_path}" 2>&1
((pkg_setup_result+=$?))
cp "${theme_dir}/debian-control" "${pkg_debian_dir}/control" >> "${log_path}" 2>&1
((pkg_setup_result+=$?))
# Check package setup good
#
# FIXME: One day this should probably read the description and maintainer(?)
# from a file in the cursor theme's directory
#
debian_control=`cat <<EOF
Package: cursor-theme-${theme_shadows}-${theme_scheme}
Version: 0.0.1
Maintainer: Rory Fewell <roryf@oddmatics.uk>
Architecture: all
Section: non-free
Description: A Windows XP cursor theme.
EOF
`
echo "${debian_control}" > "${pkg_debian_dir}/control"
if [[ $pkg_setup_result -gt 0 ]]
then
echo "Failed to copy files for ${themestr}, see ${log_path} for output."
rm -rf "${PKG_DIR}"
continue
fi
# Compile package
#
cd "${CURDIR}"
fakeroot dpkg-deb -v --build "${PKG_DIR}" > /dev/null 2>&1
fakeroot dpkg-deb -v --build "${PKG_DIR}" >> "${log_path}" 2>&1
if [[ $? -gt 0 ]]
then
"Failed to build package for ${themestr}."
"Failed to build package for ${themestr}, see ${log_path} for output."
continue
fi
# Tidy
#
mv "${PKG_DIR}.deb" "cursor-theme-${theme_shadows}-${theme_scheme}.deb"
rm -rf "${PKG_DIR}"

View File

@@ -0,0 +1,20 @@
# Shared Library Packaging (.deb)
This directory contains the shared library packaging script for Debian and derivatives (e.g. Ubuntu).
## Usage
Simply run the script, and pass in the name of the library/libraries you would like to build.
For example:
```bash
./packlibs.sh comgtk exec
```
This will build and output packages for `libwintc-comgtk` and `libwintc-exec`. You can then install the package(s) with:
```bash
sudo dpkg -i <libname.deb>
```
## Any Problems?
You may encounter issues if you have not already installed dependencies for the library/libraries you are building. A log file is generated as part of the script's build process, review it, and see if you are missing dependencies.
If you have any other problems, feel free to [submit an issue](https://github.com/rozniak/xfce-winxp-tc/issues) and include the generated log file. 😁

View File

@@ -85,7 +85,7 @@ do
fi
fi
# Set up working directory
# Set up build directory
#
build_dir="${lib_dir}/build"
@@ -121,6 +121,13 @@ do
pkg_lib_dir="${PKG_DIR}${libdir}"
pkg_pkgconfig_dir="${PKG_DIR}${pkgconfigdir}"
if [[ -d "${PKG_DIR}" ]]
then
rm -rf "${PKG_DIR}"
fi
cd "${CURDIR}"
mkdir -p "${pkg_debian_dir}"
mkdir -p "${pkg_include_dir}"
mkdir -p "${pkg_lib_dir}"
@@ -128,12 +135,28 @@ do
# Copy files
#
cd "${CURDIR}"
pkg_setup_result=0
cp "${build_dir}/debian-control" "${pkg_debian_dir}/control"
cp "${build_dir}/"*.h "${pkg_include_dir}"
cp "${build_dir}/"*.so* "${pkg_lib_dir}"
cp "${build_dir}/"*.pc "${pkg_pkgconfig_dir}"
cp "${build_dir}/debian-control" "${pkg_debian_dir}/control" >> "${log_path}" 2>&1
((pkg_setup_result+=$?))
cp "${build_dir}/"*.h "${pkg_include_dir}" >> "${log_path}" 2>&1
((pkg_setup_result+=$?))
cp "${build_dir}/"*.so* "${pkg_lib_dir}" >> "${log_path}" 2>&1
((pkg_setup_result+=$?))
cp "${build_dir}/"*.pc "${pkg_pkgconfig_dir}" >> "${log_path}" 2>&1
((pkg_setup_result+=$?))
# Check package setup good
#
if [[ $pkg_setup_result -gt 0 ]]
then
echo "Failed to copy files for ${libstr}, see ${log_path} for output."
rm -rf "${PKG_DIR}"
exit 1
fi
# Compile package
#

View File

@@ -0,0 +1,20 @@
# XFCE Panel Plugin Packaging (.deb)
This directory contains the XFCE panel plugin packaging script for Debian and derivatives (e.g. Ubuntu).
## Usage
Simply run the script, and pass in the name of the panel plugin you would like to build, relative to the repository's root.
For example:
```bash
./packplug.sh shell/start shell/systray
```
This will build and output packages for the Start menu and notification area panel plugins. You can then install the package(s) with:
```bash
sudo dpkg -i <xxx-yyy-plugin.deb>
```
## Any Problems?
You may encounter issues if you have not already installed dependencies for the panel plugins you are building. A log file is generated as part of the script's build process, review it, and see if you are missing dependencies.
If you have any other problems, feel free to [submit an issue](https://github.com/rozniak/xfce-winxp-tc/issues) and include the generated log file. 😁

194
packaging/deb/panel/packplug.sh Executable file
View File

@@ -0,0 +1,194 @@
#!/bin/bash
#
# packplug.sh - XFCE Panel Plugin Packaging Script (Debian)
#
# This source-code is part of Windows XP stuff for XFCE:
# <<https://www.oddmatics.uk>>
#
# Author(s): Rory Fewell <roryf@oddmatics.uk>
#
#
# CONSTANTS
#
CORE_COUNT=`nproc`
CURDIR=`realpath -s "./"`
PKG_DIR=`realpath -s "./tmp.plug-pkg"`
REQUIRED_PACKAGES=(
'cmake'
'fakeroot'
'make'
)
SCRIPTDIR=`dirname "$0"`
REPO_ROOT=`realpath -s "${SCRIPTDIR}/../../.."`
#
# PRE-FLIGHT CHECKS
#
for package in "${REQUIRED_PACKAGES[@]}"
do
dpkg -s $package > /dev/null 2>&1
if [[ $? -gt 0 ]]
then
echo "You are missing package: ${package}"
exit 1
fi
done
#
# ARGUMENTS
#
if [[ $# -eq 0 ]]
then
echo 'Usage: packplug.sh [<name>]...'
exit 1
fi
#
# MAIN SCRIPT
#
# The arguments passed to this script should specify the panel plugins to build, for
# example:
#
# ./packplug.sh shell/start shell/systray
#
for plugstr in "$@"
do
plug_dir="${REPO_ROOT}/${plugstr}"
plug_safename=${plugstr/\//-}
log_path="${CURDIR}/${plug_safename}-build.log"
if [[ ! -d "${plug_dir}" ]]
then
echo "Can't find plugin: ${plugstr}."
continue
fi
if [[ -f "${log_path}" ]]
then
rm -f "${log_path}"
if [[ $? -gt 0 ]]
then
echo "Failed to delete ${log_path}, skipping."
continue
fi
fi
# Set up build directory
#
build_dir="${plug_dir}/build"
cd "${plug_dir}"
if [[ -d "${build_dir}" ]]
then
rm -rf "${build_dir}"
if [[ $? -gt 0 ]]
then
echo "Failed to delete ${build_dir}, skipping."
continue
fi
fi
mkdir "${build_dir}"
cd "${build_dir}"
# Compile the source
#
cmake .. >> "${log_path}" 2>&1
make -j${CORE_COUNT} >> "${log_path}" 2>&1
if [[ $? -gt 0 ]]
then
echo "Compilation failed for ${plugstr}, see ${log_path} for output."
continue
fi
# Set up our package's working directory
#
pkg_debian_dir="${PKG_DIR}/DEBIAN"
pkg_desktop_dir="${PKG_DIR}/usr/share/xfce4/panel/plugins"
pkg_plug_dir="${PKG_DIR}/usr/lib/x86_64-linux-gnu/xfce4/panel/plugins"
pkg_res_dir="${PKG_DIR}/usr/share/winxp/shell-res"
if [[ -d "${PKG_DIR}" ]]
then
rm -rf "${PKG_DIR}"
if [[ $? -gt 0 ]]
then
echo "Failed to clear temp dir: ${PKG_DIR}, see ${log_path} for output."
continue
fi
fi
cd "${CURDIR}"
mkdir -p "${PKG_DIR}"
mkdir -p "${pkg_debian_dir}"
mkdir -p "${pkg_desktop_dir}"
mkdir -p "${pkg_plug_dir}"
# Copy files
#
pkg_setup_result=0
cp "${plug_dir}/debian-control" "${pkg_debian_dir}/control" >> "${log_path}" 2>&1
((pkg_setup_result+=$?))
cp "${plug_dir}/"*.desktop "${pkg_desktop_dir}" >> "${log_path}" 2>&1
((pkg_setup_result+=$?))
cp "${build_dir}/"*.so "${pkg_plug_dir}" >> "${log_path}" 2>&1
((pkg_setup_result+=$?))
if [[ -d "${plug_dir}/res" ]]
then
mkdir -p ${pkg_res_dir}
cp "${plug_dir}/res/"* "${pkg_res_dir}" >> "${log_path}" 2>&1
((pkg_setup_result+=$?))
fi
# Check package setup good
#
if [[ $pkg_setup_result -gt 0 ]]
then
echo "Failed to copy files for ${plugstr}, see ${log_path} for output."
rm -rf "${PKG_DIR}"
continue
fi
# Compile package
#
fakeroot dpkg-deb -v --build "${PKG_DIR}" >> "${log_path}" 2>&1
if [[ $? -gt 0 ]]
then
echo "Failed to build package for ${plugdir}, see ${log_path} for output."
rm -rf "${PKG_DIR}"
continue
fi
# Tidy
#
mv "${PKG_DIR}.deb" "${plug_safename}-plugin.deb"
rm -rf "${PKG_DIR}"
echo "Built ${plugstr}."
done
echo "Packaging complete."

View File

@@ -0,0 +1,20 @@
# Program Packaging (.deb)
This directory contains the program packaging script for Debian and derivatives (e.g. Ubuntu).
## Usage
Simply run the script and pass in the name of the program you would like to build, relative to the repository's root.
For example:
```bash
./packprog.sh shell/run shell/winver
```
This will build and output packages for the `run` and `winver` programs. You can then install the package(s) with:
```bash
sudo dpkg -i <xxx-yyy.deb>
```
## Any Problems?
You may encounter issues if you have not already installed dependencies for the progams you are building. A log file is generated as part of the script's build process, review it, and see if you are missing dependencies.
If you have any other problems, feel free to [submit an issue](https://github.com/rozniak/xfce-winxp-tc/issues) and include the generated log file. 😁

View File

@@ -0,0 +1,207 @@
#!/bin/bash
#
# packprog.sh - Program Packaging Script (Debian)
#
# This source-code is part of Windows XP stuff for XFCE:
# <<https://www.oddmatics.uk>>
#
# Author(s): Rory Fewell <roryf@oddmatics.uk>
#
#
# CONSTANTS
#
CORE_COUNT=`nproc`
CURDIR=`realpath -s "./"`
PKG_DIR=`realpath -s "./tmp.prog-pkg"`
REQUIRED_PACKAGES=(
'cmake'
'fakeroot'
'make'
)
SCRIPTDIR=`dirname "$0"`
REPO_ROOT=`realpath -s "${SCRIPTDIR}/../../.."`
#
# PRE-FLIGHT CHECKS
#
for package in "${REQUIRED_PACKAGES[@]}"
do
dpkg -s $package > /dev/null 2>&1
if [[ $? -gt 0 ]]
then
echo "You are missing package: ${package}"
exit 1
fi
done
#
# ARGUMENTS
#
if [[ $# -eq 0 ]]
then
echo 'Usage: packprog.sh [<name>]...'
exit 1
fi
#
# MAIN SCRIPT
#
# The arguments passed to this script should specify the program to build, for
# example:
#
# ./packprog.sh shell/run windows/paint
#
for progstr in "$@"
do
prog_dir="${REPO_ROOT}/${progstr}"
prog_name=""
prog_safename=${progstr/\//-}
prog_section=""
log_path="${CURDIR}/${prog_safename}-build.log"
if [[ ! -d "${prog_dir}" ]]
then
echo "Can't find program: ${progstr}."
continue
fi
if [[ -f "${log_path}" ]]
then
rm -rf "${log_path}"
if [[ $? -gt 0 ]]
then
echo "Failed to delete ${log_path}, skipping."
continue
fi
fi
if [[ "$progstr" =~ ([A-Za-z0-9._-]+)/([A-Za-z0-9._-]+) ]]
then
prog_section="${BASH_REMATCH[1]}"
prog_name="${BASH_REMATCH[2]}"
else
echo "Unrecognised program: ${progstr}"
continue
fi
# Set up build directory
#
build_dir="${prog_dir}/build"
cd "${prog_dir}"
if [[ -d "${build_dir}" ]]
then
rm -rf "${build_dir}"
if [[ $? -gt 0 ]]
then
echo "Failed to delete ${build_dir}, skipping."
continue
fi
fi
mkdir "${build_dir}"
cd "${build_dir}"
# Compile the source
#
cmake .. >> "${log_path}" 2>&1
make -j${CORE_COUNT} >> "${log_path}" 2>&1
if [[ $? -gt 0 ]]
then
echo "Compilation failed for ${progstr}, see ${log_path} for output."
continue
fi
# Set up our packages working directory
#
pkg_debian_dir="${PKG_DIR}/DEBIAN"
pkg_desktop_dir="${PKG_DIR}/usr/share/applications"
pkg_prog_dir="${PKG_DIR}/usr/bin"
pkg_res_dir="${PKG_DIR}/usr/share/winxp/shell-res"
if [[ -d "${PKG_DIR}" ]]
then
rm -rf "${PKG_DIR}"
if [[ $? -gt 0 ]]
then
echo "Failed to clear temp dir: ${PKG_DIR}, see ${log_path} for output."
continue
fi
fi
cd "${CURDIR}"
mkdir -p "${PKG_DIR}"
mkdir -p "${pkg_debian_dir}"
mkdir -p "${pkg_prog_dir}"
# Copy files
#
pkg_setup_result=0
cp "${prog_dir}/debian-control" "${pkg_debian_dir}/control" >> "${log_path}" 2>&1
((pkg_setup_result+=$?))
cp "${build_dir}/${prog_name}" "${pkg_prog_dir}" >> "${log_path}" 2>&1
((pkg_setup_result+=$?))
if [[ -f "${prog_dir}/${prog_name}.desktop" ]]
then
mkdir -p "${pkg_desktop_dir}"
cp "${prog_dir}/${prog_name}.desktop" "${pkg_desktop_dir}" >> "${log_path}" 2>&1
((pkg_setup_result+=$?))
fi
if [[ -d "${prog_dir}/res" ]]
then
mkdir -p "${pkg_res_dir}"
cp "${prog_dir}/res/"* "${pkg_res_dir}" >> "${log_path}" 2>&1
((pkg_setup_result+=$?))
fi
# Check package setup was good
#
if [[ $pkg_setup_result -gt 0 ]]
then
echo "Failed to copy files for ${progstr}, see ${log_path} for output."
rm -rf "${PKG_DIR}"
continue
fi
# Compile package
#
fakeroot dpkg-deb -v --build "${PKG_DIR}" >> "${log_path}" 2>&1
if [[ $? -gt 0 ]]
then
echo "Failed to build package for ${progstr}, see ${log_path} for output."
rm -rf "${PKG_DIR}"
continue
fi
# Tidy
#
mv "${PKG_DIR}.deb" "${prog_safename}.deb"
rm -rf "${PKG_DIR}"
echo "Built ${progstr}"
done

View File

@@ -0,0 +1,18 @@
# Desktop Theme Packaging (.deb)
This directory contains the desktop theme packaging script for Debian and derivatives (e.g. Ubuntu).
## Usage
Simply run the script. At the moment it will specifically build the Luna (Blue) theme.
```bash
./packthem.sh
```
This will build and output the Luna (Blue) theme. You can then install the package with:
```bash
sudo dpkg -i xfce-theme-luna-blue.deb
```
## Any Problems?
The theme is still a WIP, and a lot of work is due (along with other themes). It's usable though.
If you come across a bug, [check the issues](https://github.com/rozniak/xfce-winxp-tc/issues), and if your particular problem is not there then file a new issue. 😁

128
packaging/deb/themes/packthem.sh Executable file
View File

@@ -0,0 +1,128 @@
#!/bin/bash
#
# packthem.sh - Desktop Theme Packaging Script (Debian)
#
# This source-code is part of Windows XP stuff for XFCE:
# <<https://www.oddmatics.uk>>
#
# Author(s): Rory Fewell <roryf@oddmatics.uk>
#
#
# CONSTANTS
#
CURDIR=`realpath -s "./"`
PKG_DIR=`realpath -s "./tmp.theme-pkg"`
REQUIRED_PACKAGES=(
'fakeroot'
'ruby-sass'
)
SCRIPTDIR=`dirname "$0"`
REPO_ROOT=`realpath -s "${SCRIPTDIR}/../../.."`
#
# PRE-FLIGHT CHECKS
#
for package in "${REQUIRED_PACKAGES[@]}"
do
dpkg -s $package > /dev/null 2>&1
if [[ $? -gt 0 ]]
then
echo "You are missing package: ${package}"
exit 1
fi
done
#
# ARGUMENTS
#
if [[ $# -gt 0 ]]
then
echo 'This script only builds Luna (Blue) currently! No args needed.'
exit 1
fi
#
# MAIN SCRIPT
#
# This script is simply a reworking of the old build-deb.sh for now. We just build a
# package for Luna (Blue).
#
# This will change once themes are improved to separate base XP structure vs. the
# visual style specific stuff (bitmaps, colours, etc.)
#
# Prepare working dir
#
debian_dir="${PKG_DIR}/DEBIAN"
theme_dir="${PKG_DIR}/usr/share/themes/Luna"
theme_gtk3_dir="${theme_dir}/gtk-3.0"
if [[ -d "${PKG_DIR}" ]]
then
rm -rf "${PKG_DIR}"
fi
mkdir "${PKG_DIR}"
mkdir -p "${debian_dir}"
mkdir -p "${theme_dir}"
mkdir -p "${theme_gtk3_dir}"
# Copy static content straight into package
#
pkg_setup_result=0
theme_root="${REPO_ROOT}/themes/luna/blue"
cp -r "${theme_root}/gtk-2.0" "${theme_dir}/gtk-2.0"
((pkg_setup_result+=$?))
cp -r "${theme_root}/Resources" "${theme_dir}/Resources"
((pkg_setup_result+=$?))
cp -r "${theme_root}/xfwm4" "${theme_dir}/xfwm4"
((pkg_setup_result+=$?))
# Compile SASS for GTK 3 theme
#
scss "${theme_root}/gtk-3.0/main.scss" "${theme_gtk3_dir}/gtk.css" --sourcemap=none >> "luna-blue.log" 2>&1
((pkg_setup_result+=$?))
# Add CONTROL file
#
cp "${theme_root}/debian-control" "${debian_dir}/control"
((pkg_setup_result+=$?))
# Check package setup is good
#
if [[ $pkg_setup_result -gt 0 ]]
then
echo "Failed to copy files for Luna (Blue), see ${log_path} for output."
rm -rf "${PKG_DIR}"
exit 1
fi
# Compile package
#
fakeroot dpkg-deb -v --build "${PKG_DIR}" >> "luna-blue.log" 2>&1
if [[ $? -gt 0 ]]
then
echo "Failed to build package for Luna (Blue), see luna-blue.log for output."
rm -rf "${PKG_DIR}"
exit 1
fi
# Tidy
#
mv "${PKG_DIR}.deb" "xfce-theme-luna-blue.deb"
rm -rf "${PKG_DIR}"
echo "Build Luna (Blue)"

25
shared/README.MD Normal file
View File

@@ -0,0 +1,25 @@
# Shared Libraries
This directory contains source code for the shared libraries used by various components.
## Structure
Each library has its own directory in here. CMake is used as the build process, and there are a few input files dotted around that are filled in by variables set in the CMakeLists.txt files.
`debian-control.in` is a template file for the `CONTROL` document used by Debian packages - it's filled in by CMake.
Inside each directory are the following things:
`public/` - contains the public API header(s)
`src/` - contains the source code for the library
`CMakeLists.txt` - CMake instructions
`wintc-<lib>.pc.in` - template file for generating the PkgConfig document for the library
## Installation
See the`README.MD` under `/packaging/deb/libs` for packaging and installation.
## Developing a library
The needs for library APIs and/or new libraries altogether should be discussed in an issue beforehand. Forward planning to decide what common APIs will be needed and how best to implement them in future has to be thought out.
As for writing a library, it is just a case of working with the codebase as they are written in C and use CMake for building. There isn't much reason to make a start from library code - these libraries are developed when it makes sense based on other features. You should only really need to poke around in here to build, or if directed by an issue.

View File

@@ -11,6 +11,8 @@ else()
message(FATAL_ERROR "No install dir defined for ${CMAKE_SYSTEM_PROCESSOR}!")
endif()
set(DEB_DEPENDENCIES "libglib2.0-dev, libgtk-3-dev")
find_package(PkgConfig REQUIRED)
pkg_check_modules(GLIB REQUIRED glib-2.0)

7
shared/comgtk/README.MD Normal file
View File

@@ -0,0 +1,7 @@
# libwintc-comgtk
This directory contains the source code for the Common GLib/GTK Utilities library.
## Purpose
This library provides convenience methods for various things across GLib and GTK. This includes things like macros for logging, some string (`gchar*`) manipulation functions, user profile methods etc.
Generally, common small GLib/GTK code snippets that works *with* the code rather than providing large things like full dialogs or features. These utility methods don't really need their own home, so they're collected in this library.

View File

@@ -3,10 +3,6 @@
#include "strings.h"
//
// FORWARD DECLARATIONS
//
//
// PUBLIC FUNCTIONS
//

View File

@@ -4,3 +4,4 @@ Maintainer: Rory Fewell <roryf@oddmatics.uk>
Architecture: @ARCH_NAME@
Section: free
Description: @PROJECT_DESCRIPTION@
Depends: @DEB_DEPENDENCIES@

View File

@@ -11,6 +11,8 @@ else()
message(FATAL_ERROR "No install dir defined for ${CMAKE_SYSTEM_PROCESSOR}!")
endif()
set(DEB_DEPENDENCIES "libglib2.0-dev, libgtk-3-dev, libwintc-comgtk-1.0")
find_package(PkgConfig REQUIRED)
pkg_check_modules(GDK REQUIRED gdk-3.0)

13
shared/exec/README.MD Normal file
View File

@@ -0,0 +1,13 @@
# libwintc-exec
This directory contains the source code for the Launcher library.
## Purpose
This library provides code for launching programs and utility methods to help with doing so (such as looking up MIME types and associated programs). Various parts of the shell are able to launch programs, so this library implements functionality that would be expected to support that.
The reason for an entire library instead of just using `g_spawn_async`:
- Support for URI schemes (eg. `http://example.org`)
- Support for UNC paths (eg. `\\MYPC\Stuff$` translates to `smb://MYPC/Stuff$`)
- Support for opening files & folders (detects MIME type for files)
Any other requirements related to launching programs are to be implemented in this library rather than in components themselves.

20
shell/README.MD Normal file
View File

@@ -0,0 +1,20 @@
# Shell Components
This directory contains source code for the shell components.
## Structure
Generally the structure under each subdirectory is that of a typical CMake project. In addition there are the following files:
`debian-control` - the `control` file used in Debian packaging to provide metadata about the package
`<name>.desktop` - for programs this file is optional, if included it will be added to `/usr/share/applications` to appear in the application launcher (which isn't relevant for all programs, like `run`). For panel plugins this is required and will be deployed to `/usr/share/xfce4/panel/plugins` so that the plugin is available to use.
## Installation
This directory contains both XFCE panel plugins, and individual programs. Have a look in each directory, and check the `README.MD` on how to install the component.
## Developing Shell Components
If you're planning to contribute by developing a program or plugin, then you should consider the following:
- If you plan on writing a program, check that it is a shell component - things considered shell components are those that are typically part of explorer (including explorer itself) that are not really a program in their own right
- This may sound vague, examples of this is: the run dialog, the autorun dialog, `winver`, explorer file browser, control panel (as part of explorer), etc.
- If unsure, [check the issues page](https://github.com/rozniak/xfce-winxp-tc/issues?q=is%3Aissue+is%3Aopen+label%3Aadditional-program) for `additional-programs` tag to see if what you want to work on is there, if not, open a new issue and it can be discussed where it belongs
- If you plan on writing a panel plugin, it is always considered a shell component, as the panel is part of the shell
- If the program is not a shell component, it belongs under `/windows` rather than `/shell`

26
shell/run/README.MD Normal file
View File

@@ -0,0 +1,26 @@
# run
This directory contains the source code for the *Run* application.
![image](https://user-images.githubusercontent.com/13258281/141702484-5c6698e3-63f2-4f53-a231-6e77aafcc8e0.png)
## Installation
See the `README.MD` under `/packaging/deb/programs` for packaging and installation.
## Building
Standard CMake build:
- `mkdir build`
- `cd build`
- `cmake ..`
- (if you're missing libraries they will be mentioned here)
- `make`
## Keyboard Shortcut
You can add `run` to a keyboard shortcut on `Win`+`R`/`super`+`R` as follows:
- Open *XFCE settings* (if using the Start menu, opening *Control Panel* will take you there)
- Open the *Keyboard* section
- Select the *Application Shortcuts* tab
- Click *Add* (bottom left)
- Type or browse for `/usr/bin/run`
- Press the keyboard combination you would like to bind it with (typically `Win`+`R` / `super`+`R`)
Once done you should be able to press the keyboard shortcut, and the Run dialog will appear in the bottom left as expected.

7
shell/run/debian-control Normal file
View File

@@ -0,0 +1,7 @@
Package: wintc-shell-run
Version: 0.0.1
Maintainer: Rory Fewell <roryf@oddmatics.uk>
Architecture: amd64
Section: non-free
Description: Windows shell 'Run' application.
Depends: libglib2.0-0, libgtk-3-0, libwintc-comgtk-1.0, libwintc-exec-1.0

View File

@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 2.8)
project(startbutton-plugin)
project(startmenu-plugin)
find_package(PkgConfig REQUIRED)
@@ -33,7 +33,7 @@ link_directories(
${XFCE4PANEL_LIBRARY_DIRS}
${XFCE4UTIL_LIBRARY_DIRS})
add_library(startbutton-plugin MODULE
add_library(startmenu-plugin MODULE
src/action.h
src/action.c
src/placeslist.h
@@ -51,7 +51,7 @@ add_library(startbutton-plugin MODULE
src/util.h
src/util.c)
target_link_libraries(startbutton-plugin
target_link_libraries(startmenu-plugin
PRIVATE ${GARCON_LIBRARIES}
PRIVATE ${GARCON_GTK3_LIBRARIES}
PRIVATE ${GDK_LIBRARIES}

25
shell/start/README.MD Normal file
View File

@@ -0,0 +1,25 @@
# libstartmenu-plugin
This directory contains the source code for the Start menu XFCE panel plugin.
![image](https://user-images.githubusercontent.com/13258281/141834450-cc629c05-7d97-45c9-aa0d-ff20d1c69880.png)
## Installation
See the `README.MD` under `/packaging/deb/panel` for packaging and installation.
## Building
Standard CMake build for the plugin:
- `mkdir build`
- `cd build`
- `cmake ..`
- (if you're missing libraries they will be mentioned here)
- `make`
Then you must put the files in the right places in the filesystem:
- Put the compiled `libstartmenu-plugin.so` in `/usr/lib/x86_64-linux-gnu/xfce4/panel/plugins` (adjust for your architecture)
- Put `startmenu.desktop` in `/usr/share/xfce4/panel/plugins`
- Copy files under `/res/*` to `/usr/share/winxp/shell-res` (you may need to create this directory)
Of course, with subsequent builds you will need to replace `libstartmenu.so` in the directory specified above, if you're developing.
## Keyboard Shortcut
At the moment there is no ability to open the Start menu with the `super`/`Win` key - there is an issue open for this however: [#86](https://github.com/rozniak/xfce-winxp-tc/issues/86)

View File

@@ -0,0 +1,7 @@
Package: xfce4-start-menu-plugin
Version: 0.0.1
Maintainer: Rory Fewell <roryf@oddmatics.uk>
Architecture: amd64
Section: non-free
Description: Windows XP Start menu for XFCE.
Depends: exo-utils, libgarcon-1-0, libgarcon-gtk3-1-0, libglib2.0-0, libgtk-3-0, libxfce4panel-2.0-4, libxfce4util7, xfce4-panel

View File

@@ -2,8 +2,8 @@
Type=X-XFCE-PanelPlugin
Encoding=UTF-8
Name=Start button
Comment=Windows XP Start button
Comment=Windows XP Start menu
Icon=start-logo
X-XFCE-Module=startbutton-plugin
X-XFCE-Module=startmenu-plugin
X-XFCE-Internal=false
X-XFCE-API=2.0

View File

@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 2.8)
project(systray-plugin)
project(xpsystray-plugin)
find_package(PkgConfig REQUIRED)
@@ -33,13 +33,13 @@ link_directories(
${XFCE4PANEL_LIBRARY_DIRS}
${XFCE4UTIL_LIBRARY_DIRS})
add_library(systray-plugin MODULE
add_library(xpsystray-plugin MODULE
src/clock.h
src/clock.c
src/plugin.h
src/plugin.c)
target_link_libraries(systray-plugin
target_link_libraries(xpsystray-plugin
PRIVATE ${GARCON_LIBRARIES}
PRIVATE ${GARCON_GTK3_LIBRARIES}
PRIVATE ${GDK_LIBRARIES}

21
shell/systray/README.MD Normal file
View File

@@ -0,0 +1,21 @@
# libxpsystray-plugin
This directory contains the source code for the Notification Area XFCE panel plugin.
![image](https://user-images.githubusercontent.com/13258281/141838891-0b94b957-c745-48cf-8c2c-1b06abfc1122.png)
## Installation
See the `README.MD` under `/packaging/deb/panel` for packaging and installation.
## Building
Standard CMake build for the plugin:
- `mkdir build`
- `cd build`
- `cmake ..`
- (if you're missing libraries they will be mentioned here)
- `make`
Then you must put the files in the right places in the filesystem:
- Put the compiled `libxpsystray-plugin.so` in `/usr/lib/x86_64-linux-gnu/xfce4/panel/plugins` (adjust for your architecture)
- Put `xpsystray.desktop` in `/usr/share/xfce4/panel/plugins`
Of course, with subsequent builds you will need to replace `libxpsystray-plugin.so` in the directory specified above, if you're developing.

View File

@@ -0,0 +1,7 @@
Package: xfce4-xp-systray-plugin
Version: 0.0.1
Maintainer: Rory Fewell <roryf@oddmatics.uk>
Architecture: amd64
Section: non-free
Description: Windows XP notification area for XFCE.
Depends: libglib2.0-0, libgtk-3-0, libxfce4panel-2.0-4, libxfce4util7, xfce4-panel

View File

@@ -4,6 +4,6 @@ Encoding=UTF-8
Name=Notification Area
Comment=Windows XP notification area
Icon=start-logo
X-XFCE-Module=systray-plugin
X-XFCE-Module=xpsystray-plugin
X-XFCE-Internal=false
X-XFCE-API=2.0

15
shell/winver/README.MD Normal file
View File

@@ -0,0 +1,15 @@
# winver
This directory contains the source code for the `winver` application.
![image](https://user-images.githubusercontent.com/13258281/141839706-36637718-de93-4d57-87c3-b60dff4914c2.png)
## Installation
See the `README.MD` under `/packaging/deb/programs` for packaging and installation.
## Building
Standard CMake build:
- `mkdir build`
- `cd build`
- `cmake ..`
- (if you're missing libraries they will be mentioned here)
- `make`

View File

@@ -0,0 +1,7 @@
Package: wintc-shell-winver
Version: 0.0.1
Maintainer: Rory Fewell <roryf@oddmatics.uk>
Architecture: amd64
Section: non-free
Description: Windows shell 'winver' application.
Depends: libglib2.0-0, libgtk-3-0

21
submodules/README.MD Normal file
View File

@@ -0,0 +1,21 @@
# Submodules / Forks
This directory contains submodules referenced by this repository. Mostly forks of existing software tweaked to patch things to fix certain problems.
## Note about cloning
If you simply `git clone`'d this repository these directories may be empty. If so, run `git submodule update --init --recursive` to make sure these submodules are also cloned.
## xfce-winxp-tc-panel
This is a fork of `xfce4-panel` which patches a few things such as removing borders and fixing external plugin backgrounds. It is recommended to install this so that the Start button looks correct.
To install this fork:
- `cd` into `xfce-winxp-tc-panel/packaging` (it should already be on the `test-borders` branch, but you can check with `git status`)
- Build the packages by running these scripts:
- `./pack-libxfce4panel-2.0.sh`
- `./pack-xfce4-panel.sh`
- Install the generated packages with:
- `sudo dpkg -i libxfce4panel-2.0-4.deb`
- `sudo dpkg -i xfce4-panel.deb`
You must then restart the panel, logging off and back on is sufficient to do this.
(In future I will hopefully tidy up the fork and see if the patches can be merged with upstream)

8
themes/README.MD Normal file
View File

@@ -0,0 +1,8 @@
# Themes
This directory contains the source files used to generate desktop themes (aka *visual styles*).
## Installation
See the `README.MD` under `/packaging/deb/themes` for packaging and installation.
## Under construction
Theme architecture will soon change, so there are no structure docs for the time being.