diff --git a/bin/v0.1-4/fxwinwrap-0-1-4-x64.deb b/bin/v0.1-4/fxwinwrap-0-1-4-x64.deb
new file mode 100644
index 0000000..d003487
Binary files /dev/null and b/bin/v0.1-4/fxwinwrap-0-1-4-x64.deb differ
diff --git a/bin/v0.1-4/fxwinwrap-0-1-4-x86.deb b/bin/v0.1-4/fxwinwrap-0-1-4-x86.deb
new file mode 100644
index 0000000..d003487
Binary files /dev/null and b/bin/v0.1-4/fxwinwrap-0-1-4-x86.deb differ
diff --git a/src/debs/fxwinwrap-0-1-4-x64/DEBIAN/control b/src/debs/fxwinwrap-0-1-4-x64/DEBIAN/control
new file mode 100644
index 0000000..8968cc1
--- /dev/null
+++ b/src/debs/fxwinwrap-0-1-4-x64/DEBIAN/control
@@ -0,0 +1,8 @@
+Package: fxwinwrap
+Version: 0.1-3
+Section: base
+Priority: optional
+Architecture: i386
+Depends: openjdk-8-jre (>= 8u45-b14-1), openjfx (>= 8u60-b27-4), ffmpegthumbnailer (>= 2.0.10-0.1), mplayer2 (>=2.0-728-g2c378c7-4), gifsicle (>=1.86-1), nitrogen (>=1.5.2-2)
+Maintainer: Maxim Stewart 1itdominator@gmail.com
+Description: A GUI to handle setting XWinWrap options.
diff --git a/src/debs/fxwinwrap-0-1-4-x64/DEBIAN/postrm b/src/debs/fxwinwrap-0-1-4-x64/DEBIAN/postrm
new file mode 100755
index 0000000..4e2c455
--- /dev/null
+++ b/src/debs/fxwinwrap-0-1-4-x64/DEBIAN/postrm
@@ -0,0 +1,16 @@
+#!/bin/bash
+#postrm (script executed after uninstalling the package)
+#set -e
+
+if [ -f /bin/fxwinwrap ]; then
+ rm /bin/fxwinwrap
+fi
+
+if [ -d /opt/FXWinWrap ]; then
+ rm -rf /opt/FXWinWrap
+fi
+
+if [ -x "`which xdg-desktop-menu 2>/dev/null`" ]; then
+ xdg-desktop-menu uninstall /usr/share/applications/FXWinWrap.desktop
+ xdg-desktop-menu forceupdate --mode user
+fi
diff --git a/src/debs/fxwinwrap-0-1-4-x64/bin/fxwinwrap b/src/debs/fxwinwrap-0-1-4-x64/bin/fxwinwrap
new file mode 100755
index 0000000..99efd97
Binary files /dev/null and b/src/debs/fxwinwrap-0-1-4-x64/bin/fxwinwrap differ
diff --git a/src/debs/fxwinwrap-0-1-4-x64/bin/xwinwrap b/src/debs/fxwinwrap-0-1-4-x64/bin/xwinwrap
new file mode 100755
index 0000000..854eba6
Binary files /dev/null and b/src/debs/fxwinwrap-0-1-4-x64/bin/xwinwrap differ
diff --git a/src/debs/fxwinwrap-0-1-4-x64/opt/FXWinWrap/Controller$1.class b/src/debs/fxwinwrap-0-1-4-x64/opt/FXWinWrap/Controller$1.class
new file mode 100644
index 0000000..51f4170
Binary files /dev/null and b/src/debs/fxwinwrap-0-1-4-x64/opt/FXWinWrap/Controller$1.class differ
diff --git a/src/debs/fxwinwrap-0-1-4-x64/opt/FXWinWrap/Controller$2.class b/src/debs/fxwinwrap-0-1-4-x64/opt/FXWinWrap/Controller$2.class
new file mode 100644
index 0000000..00b2640
Binary files /dev/null and b/src/debs/fxwinwrap-0-1-4-x64/opt/FXWinWrap/Controller$2.class differ
diff --git a/src/debs/fxwinwrap-0-1-4-x64/opt/FXWinWrap/Controller$3.class b/src/debs/fxwinwrap-0-1-4-x64/opt/FXWinWrap/Controller$3.class
new file mode 100644
index 0000000..2154b3b
Binary files /dev/null and b/src/debs/fxwinwrap-0-1-4-x64/opt/FXWinWrap/Controller$3.class differ
diff --git a/src/debs/fxwinwrap-0-1-4-x64/opt/FXWinWrap/Controller.class b/src/debs/fxwinwrap-0-1-4-x64/opt/FXWinWrap/Controller.class
new file mode 100644
index 0000000..224b714
Binary files /dev/null and b/src/debs/fxwinwrap-0-1-4-x64/opt/FXWinWrap/Controller.class differ
diff --git a/src/debs/fxwinwrap-0-1-4-x64/opt/FXWinWrap/XWWMenu.class b/src/debs/fxwinwrap-0-1-4-x64/opt/FXWinWrap/XWWMenu.class
new file mode 100644
index 0000000..e6144e0
Binary files /dev/null and b/src/debs/fxwinwrap-0-1-4-x64/opt/FXWinWrap/XWWMenu.class differ
diff --git a/src/debs/fxwinwrap-0-1-4-x64/opt/FXWinWrap/launch.sh b/src/debs/fxwinwrap-0-1-4-x64/opt/FXWinWrap/launch.sh
new file mode 100644
index 0000000..c9fead3
--- /dev/null
+++ b/src/debs/fxwinwrap-0-1-4-x64/opt/FXWinWrap/launch.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+java XWWMenu
diff --git a/src/debs/fxwinwrap-0-1-4-x64/opt/FXWinWrap/resources/Window.fxml b/src/debs/fxwinwrap-0-1-4-x64/opt/FXWinWrap/resources/Window.fxml
new file mode 100644
index 0000000..de9652b
--- /dev/null
+++ b/src/debs/fxwinwrap-0-1-4-x64/opt/FXWinWrap/resources/Window.fxml
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/debs/fxwinwrap-0-1-4-x64/opt/FXWinWrap/resources/bin/InstallFFMPEGTHUMB.sh b/src/debs/fxwinwrap-0-1-4-x64/opt/FXWinWrap/resources/bin/InstallFFMPEGTHUMB.sh
new file mode 100755
index 0000000..ca173f9
--- /dev/null
+++ b/src/debs/fxwinwrap-0-1-4-x64/opt/FXWinWrap/resources/bin/InstallFFMPEGTHUMB.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+
+function main() {
+ notify-send -u critical "You need to install ffmpegthumbnailer to have FXWinWrap work properly..."
+ xterm -e sudo apt install ffmpegthumbnailer
+}
+main;
diff --git a/src/debs/fxwinwrap-0-1-4-x64/opt/FXWinWrap/resources/bin/StartXWW.sh b/src/debs/fxwinwrap-0-1-4-x64/opt/FXWinWrap/resources/bin/StartXWW.sh
new file mode 100755
index 0000000..e81bcac
--- /dev/null
+++ b/src/debs/fxwinwrap-0-1-4-x64/opt/FXWinWrap/resources/bin/StartXWW.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+### nohup is needed to keep child processes alive from java's
+nohup bash ~/.animatedBGstarter.sh &> /dev/null &
+nohup bash ~/.animatedBGstarter2.sh &> /dev/null &
diff --git a/src/debs/fxwinwrap-0-1-4-x64/opt/FXWinWrap/resources/fxwinwrap.png b/src/debs/fxwinwrap-0-1-4-x64/opt/FXWinWrap/resources/fxwinwrap.png
new file mode 100644
index 0000000..cdd708d
Binary files /dev/null and b/src/debs/fxwinwrap-0-1-4-x64/opt/FXWinWrap/resources/fxwinwrap.png differ
diff --git a/src/debs/fxwinwrap-0-1-4-x64/opt/FXWinWrap/resources/stylesheet.css b/src/debs/fxwinwrap-0-1-4-x64/opt/FXWinWrap/resources/stylesheet.css
new file mode 100644
index 0000000..e91c2fe
--- /dev/null
+++ b/src/debs/fxwinwrap-0-1-4-x64/opt/FXWinWrap/resources/stylesheet.css
@@ -0,0 +1,3 @@
+.root {
+ -fx-background: rgba(68, 68, 68, 0.8); // == #444444;
+}
diff --git a/src/debs/fxwinwrap-0-1-4-x64/usr/share/applications/.FXWinWrap.desktop.swp b/src/debs/fxwinwrap-0-1-4-x64/usr/share/applications/.FXWinWrap.desktop.swp
new file mode 100644
index 0000000..be6e1a1
Binary files /dev/null and b/src/debs/fxwinwrap-0-1-4-x64/usr/share/applications/.FXWinWrap.desktop.swp differ
diff --git a/src/debs/fxwinwrap-0-1-4-x64/usr/share/applications/FXWinWrap.desktop b/src/debs/fxwinwrap-0-1-4-x64/usr/share/applications/FXWinWrap.desktop
new file mode 100644
index 0000000..50fcf7b
--- /dev/null
+++ b/src/debs/fxwinwrap-0-1-4-x64/usr/share/applications/FXWinWrap.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=FXWinWrap
+Comment=JavaFX gui for XWinWrap
+Exec=/bin/fxwinwrap
+Icon=/opt/FXWinWrap/resources/fxwinwrap.png
+Terminal=false
+Type=Application
+Categories=System;
+MimeType=application/fxml;
diff --git a/src/debs/fxwinwrap-0-1-4-x86/DEBIAN/control b/src/debs/fxwinwrap-0-1-4-x86/DEBIAN/control
new file mode 100644
index 0000000..8968cc1
--- /dev/null
+++ b/src/debs/fxwinwrap-0-1-4-x86/DEBIAN/control
@@ -0,0 +1,8 @@
+Package: fxwinwrap
+Version: 0.1-3
+Section: base
+Priority: optional
+Architecture: i386
+Depends: openjdk-8-jre (>= 8u45-b14-1), openjfx (>= 8u60-b27-4), ffmpegthumbnailer (>= 2.0.10-0.1), mplayer2 (>=2.0-728-g2c378c7-4), gifsicle (>=1.86-1), nitrogen (>=1.5.2-2)
+Maintainer: Maxim Stewart 1itdominator@gmail.com
+Description: A GUI to handle setting XWinWrap options.
diff --git a/src/debs/fxwinwrap-0-1-4-x86/DEBIAN/postrm b/src/debs/fxwinwrap-0-1-4-x86/DEBIAN/postrm
new file mode 100755
index 0000000..4e2c455
--- /dev/null
+++ b/src/debs/fxwinwrap-0-1-4-x86/DEBIAN/postrm
@@ -0,0 +1,16 @@
+#!/bin/bash
+#postrm (script executed after uninstalling the package)
+#set -e
+
+if [ -f /bin/fxwinwrap ]; then
+ rm /bin/fxwinwrap
+fi
+
+if [ -d /opt/FXWinWrap ]; then
+ rm -rf /opt/FXWinWrap
+fi
+
+if [ -x "`which xdg-desktop-menu 2>/dev/null`" ]; then
+ xdg-desktop-menu uninstall /usr/share/applications/FXWinWrap.desktop
+ xdg-desktop-menu forceupdate --mode user
+fi
diff --git a/src/debs/fxwinwrap-0-1-4-x86/bin/fxwinwrap b/src/debs/fxwinwrap-0-1-4-x86/bin/fxwinwrap
new file mode 100755
index 0000000..99efd97
Binary files /dev/null and b/src/debs/fxwinwrap-0-1-4-x86/bin/fxwinwrap differ
diff --git a/src/debs/fxwinwrap-0-1-4-x86/bin/xwinwrap b/src/debs/fxwinwrap-0-1-4-x86/bin/xwinwrap
new file mode 100755
index 0000000..854eba6
Binary files /dev/null and b/src/debs/fxwinwrap-0-1-4-x86/bin/xwinwrap differ
diff --git a/src/debs/fxwinwrap-0-1-4-x86/opt/FXWinWrap/Controller$1.class b/src/debs/fxwinwrap-0-1-4-x86/opt/FXWinWrap/Controller$1.class
new file mode 100644
index 0000000..51f4170
Binary files /dev/null and b/src/debs/fxwinwrap-0-1-4-x86/opt/FXWinWrap/Controller$1.class differ
diff --git a/src/debs/fxwinwrap-0-1-4-x86/opt/FXWinWrap/Controller$2.class b/src/debs/fxwinwrap-0-1-4-x86/opt/FXWinWrap/Controller$2.class
new file mode 100644
index 0000000..00b2640
Binary files /dev/null and b/src/debs/fxwinwrap-0-1-4-x86/opt/FXWinWrap/Controller$2.class differ
diff --git a/src/debs/fxwinwrap-0-1-4-x86/opt/FXWinWrap/Controller$3.class b/src/debs/fxwinwrap-0-1-4-x86/opt/FXWinWrap/Controller$3.class
new file mode 100644
index 0000000..2154b3b
Binary files /dev/null and b/src/debs/fxwinwrap-0-1-4-x86/opt/FXWinWrap/Controller$3.class differ
diff --git a/src/debs/fxwinwrap-0-1-4-x86/opt/FXWinWrap/Controller.class b/src/debs/fxwinwrap-0-1-4-x86/opt/FXWinWrap/Controller.class
new file mode 100644
index 0000000..224b714
Binary files /dev/null and b/src/debs/fxwinwrap-0-1-4-x86/opt/FXWinWrap/Controller.class differ
diff --git a/src/debs/fxwinwrap-0-1-4-x86/opt/FXWinWrap/XWWMenu.class b/src/debs/fxwinwrap-0-1-4-x86/opt/FXWinWrap/XWWMenu.class
new file mode 100644
index 0000000..e6144e0
Binary files /dev/null and b/src/debs/fxwinwrap-0-1-4-x86/opt/FXWinWrap/XWWMenu.class differ
diff --git a/src/debs/fxwinwrap-0-1-4-x86/opt/FXWinWrap/launch.sh b/src/debs/fxwinwrap-0-1-4-x86/opt/FXWinWrap/launch.sh
new file mode 100644
index 0000000..c9fead3
--- /dev/null
+++ b/src/debs/fxwinwrap-0-1-4-x86/opt/FXWinWrap/launch.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+java XWWMenu
diff --git a/src/debs/fxwinwrap-0-1-4-x86/opt/FXWinWrap/resources/Window.fxml b/src/debs/fxwinwrap-0-1-4-x86/opt/FXWinWrap/resources/Window.fxml
new file mode 100644
index 0000000..de9652b
--- /dev/null
+++ b/src/debs/fxwinwrap-0-1-4-x86/opt/FXWinWrap/resources/Window.fxml
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/debs/fxwinwrap-0-1-4-x86/opt/FXWinWrap/resources/bin/InstallFFMPEGTHUMB.sh b/src/debs/fxwinwrap-0-1-4-x86/opt/FXWinWrap/resources/bin/InstallFFMPEGTHUMB.sh
new file mode 100755
index 0000000..ca173f9
--- /dev/null
+++ b/src/debs/fxwinwrap-0-1-4-x86/opt/FXWinWrap/resources/bin/InstallFFMPEGTHUMB.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+
+function main() {
+ notify-send -u critical "You need to install ffmpegthumbnailer to have FXWinWrap work properly..."
+ xterm -e sudo apt install ffmpegthumbnailer
+}
+main;
diff --git a/src/debs/fxwinwrap-0-1-4-x86/opt/FXWinWrap/resources/bin/StartXWW.sh b/src/debs/fxwinwrap-0-1-4-x86/opt/FXWinWrap/resources/bin/StartXWW.sh
new file mode 100755
index 0000000..e81bcac
--- /dev/null
+++ b/src/debs/fxwinwrap-0-1-4-x86/opt/FXWinWrap/resources/bin/StartXWW.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+### nohup is needed to keep child processes alive from java's
+nohup bash ~/.animatedBGstarter.sh &> /dev/null &
+nohup bash ~/.animatedBGstarter2.sh &> /dev/null &
diff --git a/src/debs/fxwinwrap-0-1-4-x86/opt/FXWinWrap/resources/fxwinwrap.png b/src/debs/fxwinwrap-0-1-4-x86/opt/FXWinWrap/resources/fxwinwrap.png
new file mode 100644
index 0000000..cdd708d
Binary files /dev/null and b/src/debs/fxwinwrap-0-1-4-x86/opt/FXWinWrap/resources/fxwinwrap.png differ
diff --git a/src/debs/fxwinwrap-0-1-4-x86/opt/FXWinWrap/resources/stylesheet.css b/src/debs/fxwinwrap-0-1-4-x86/opt/FXWinWrap/resources/stylesheet.css
new file mode 100644
index 0000000..e91c2fe
--- /dev/null
+++ b/src/debs/fxwinwrap-0-1-4-x86/opt/FXWinWrap/resources/stylesheet.css
@@ -0,0 +1,3 @@
+.root {
+ -fx-background: rgba(68, 68, 68, 0.8); // == #444444;
+}
diff --git a/src/debs/fxwinwrap-0-1-4-x86/usr/share/applications/.FXWinWrap.desktop.swp b/src/debs/fxwinwrap-0-1-4-x86/usr/share/applications/.FXWinWrap.desktop.swp
new file mode 100644
index 0000000..be6e1a1
Binary files /dev/null and b/src/debs/fxwinwrap-0-1-4-x86/usr/share/applications/.FXWinWrap.desktop.swp differ
diff --git a/src/debs/fxwinwrap-0-1-4-x86/usr/share/applications/FXWinWrap.desktop b/src/debs/fxwinwrap-0-1-4-x86/usr/share/applications/FXWinWrap.desktop
new file mode 100644
index 0000000..50fcf7b
--- /dev/null
+++ b/src/debs/fxwinwrap-0-1-4-x86/usr/share/applications/FXWinWrap.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=FXWinWrap
+Comment=JavaFX gui for XWinWrap
+Exec=/bin/fxwinwrap
+Icon=/opt/FXWinWrap/resources/fxwinwrap.png
+Terminal=false
+Type=Application
+Categories=System;
+MimeType=application/fxml;
diff --git a/src/versions/v0.0.4/Controller.java b/src/versions/v0.0.4/Controller.java
new file mode 100644
index 0000000..4283fe4
--- /dev/null
+++ b/src/versions/v0.0.4/Controller.java
@@ -0,0 +1,260 @@
+import javafx.stage.*;
+import javafx.scene.Scene;
+import javafx.fxml.FXML;
+import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
+import javafx.scene.layout.Pane;
+import javafx.scene.layout.TilePane;
+import javafx.scene.control.*;
+import javafx.event.ActionEvent;
+import javafx.scene.input.KeyEvent;
+import javafx.scene.input.KeyCode;
+import javafx.scene.input.MouseEvent;
+import javafx.geometry.Insets;
+import java.io.*;
+import javafx.beans.value.ChangeListener;
+import javafx.beans.value.ObservableValue;
+import javafx.concurrent.Task;
+import javafx.application.Platform;
+
+
+public class Controller {
+ private DirectoryChooser folderChooser = new DirectoryChooser(); // Selects a dir
+ private FileWriter fileWriter; // Writes to files
+ private File directory, sveFileLoc; // Path to file or dir
+ private File[] fileList;
+ private Image pth = new Image("."); // Path to image
+ private ImageView imgView = new ImageView(pth); // Image view area
+ private Process pb; // Process runner
+ private String tmpPath, resolution, xScreenVal, output,
+ startScrpt = System.getProperty("user.dir") + "/resources/bin/StartXWW.sh", // Gets shell that starts stuff local
+ textAreaPth = "";
+ private int applyType = 1;
+ private Stage fileChooserStage;
+ @FXML private ListView> selXScreenSvr;
+ @FXML private Label dirLbl; // Labels
+ @FXML private TilePane tilePane;
+ @FXML private TextField dirPathField, filePathField; // Text fields
+ @FXML private CheckBox useXSvrn; // Check boxes
+ @FXML private ChoiceBox> playbackResolution, setMonPosOffset, listSaveLoc; // Choice box fields
+ @FXML private Button applyBttn, closeBttn, fileBttn, clear, // Buttons
+ killBttn, saveBttn;
+
+ // This method is called by the FXMLLoader when initialization is complete
+ @FXML void initialize() throws Exception {
+ assert dirPathField != null : "fx:id=\"dirPathField\" was not injected: check your FXML file 'Window.fxml'.";
+ assert clear != null : "fx:id=\"clear\" was not injected: check your FXML file 'Window.fxml'.";
+ assert filePathField != null : "fx:id=\"filePathField\" was not injected: check your FXML file 'Window.fxml'.";
+ assert tilePane != null : "fx:id=\"tilePane\" was not injected: check your FXML file 'Window.fxml'.";
+ assert dirLbl != null : "fx:id=\"dirLbl\" was not injected: check your FXML file 'Window.fxml'.";
+ assert selXScreenSvr != null : "fx:id=\"selXScreenSvr\" was not injected: check your FXML file 'Window.fxml'.";
+ assert closeBttn != null : "fx:id=\"closeBttn\" was not injected: check your FXML file 'Window.fxml'.";
+ assert listSaveLoc != null : "fx:id=\"listSaveLoc\" was not injected: check your FXML file 'Window.fxml'.";
+ assert setMonPosOffset != null : "fx:id=\"setMonPosOffset\" was not injected: check your FXML file 'Window.fxml'.";
+ assert playbackResolution != null : "fx:id=\"playbackResolution\" was not injected: check your FXML file 'Window.fxml'.";
+ assert useXSvrn != null : "fx:id=\"useXSvrn\" was not injected: check your FXML file 'Window.fxml'.";
+ // Initialize your logic here: all @FXML variables will have been injected
+ }
+
+ // Handler for TextArea[fx:id="dirPathField"] onKeyReleased
+ @FXML void setNewDir(MouseEvent event) { newDir(); }
+ @FXML void onEnter(KeyEvent event) {
+ if (event.getCode().equals(KeyCode.ENTER)) {
+ textAreaPth = dirPathField.getText();
+ System.out.println(textAreaPth);
+ newDir();
+ }
+ else {}
+ }
+
+ @FXML void test(ActionEvent event) {
+ newDir();
+ }
+
+ // Scan selected dir
+ public void newDir() {
+ tilePane.getChildren().clear();
+ Stage stage = new Stage();
+ if (textAreaPth != "")
+ directory = new File(textAreaPth);
+ else {
+ directory = folderChooser.showDialog(stage);
+
+ if (directory != null) {
+ System.out.println("Directory: " + directory);
+ }
+ }
+
+ fileList = directory.listFiles();
+ dirPathField.setText("" + directory);
+
+ for (int i=0; i() {
+ @Override public Void call() {
+ newDir2();
+ return null;
+ }};
+
+ new Thread(getDir).start();
+ }
+ public void newDir2() {
+ for (int i=0; i {
+ if (mouse.getClickCount() == 2 && !mouse.isConsumed()) {
+ mouse.consume();
+ try {
+ pb = Runtime.getRuntime().exec(vExec);
+ } catch(IOException vidIOErr) {
+ throw new UncheckedIOException(vidIOErr);
+ }
+ }
+ filePathField.setText(path);
+ });
+ } else if(path.toLowerCase().matches("^.*?(png|jpg|jpeg|gif).*$")) {
+ String title = "" + fileList[i];
+ pth = new Image("file://" + fileList[i]);
+ ImageView view = (ImageView) (tilePane.getChildren().get(i));
+
+ Platform.runLater(new Runnable() {
+ @Override public void run() {
+ view.setImage(pth);
+ }
+ });
+ final ImageView imgViewPoped = new ImageView("file://" + fileList[i]);
+ // image click actions
+ view.setOnMouseClicked(mouse -> {
+ if (mouse.getClickCount() == 2 && !mouse.isConsumed()) {
+ mouse.consume();
+ displayImg(imgViewPoped, title);
+ }
+ filePathField.setText(path);
+ });
+ } else {
+ System.out.println("Not a video or image file.");
+ }
+ }
+ }
+ // Open image in new window
+ public void displayImg(ImageView imgViewPoped, String title) {
+ Stage popOut = new Stage();
+ Pane pane = new Pane();
+ imgViewPoped.setLayoutX(0);
+ imgViewPoped.setLayoutY(0);
+ imgViewPoped.fitWidthProperty().bind(pane.widthProperty());
+ imgViewPoped.fitHeightProperty().bind(pane.heightProperty());
+ pane.getChildren().add(imgViewPoped);
+ Scene scene = new Scene(pane, 1280, 900);
+ popOut.setTitle(title);
+ popOut.setScene(scene);
+ popOut.show();
+ }
+
+ @FXML void toggleXscreenUsageField(MouseEvent event) {
+ if (useXSvrn.isSelected() == true)
+ selXScreenSvr.setDisable(false);
+ else if (useXSvrn.isSelected() == false)
+ selXScreenSvr.setDisable(true);
+ }
+
+ // Kill xwinwrap process
+ @FXML void killXWinWrp(ActionEvent event) throws Exception {
+ pb = Runtime.getRuntime().exec("killall xwinwrap &");
+ pb.waitFor();
+ }
+
+ // Pass resolution values
+ @FXML void passXScreenVal() {
+ xScreenVal = "" + selXScreenSvr.getSelectionModel().getSelectedItem();
+ }
+ // Preliminary setup to save settings to files
+ @FXML void saveToFile(ActionEvent saveEvent) throws Exception {
+
+ // Saves to file with selected and needed settings
+ if(filePathField.getText().toLowerCase().matches("^.*?(png|jpg|jpeg|gif).*$"))
+ sveFileLoc = new File(System.getProperty("user.home") + "/" + ".config/nitrogen/bg-saved.cfg");
+ else
+ sveFileLoc = new File(System.getProperty("user.home") + "/" + listSaveLoc.getValue());
+
+ fileWriter = new FileWriter(sveFileLoc);
+ resolution = "" + playbackResolution.getValue() + "" + setMonPosOffset.getValue();
+ startSave();
+ }
+ // Save settings to files
+ void startSave() throws Exception {
+ // XSCREENSAVER
+ if (useXSvrn.isSelected() == true) {
+ output = "xwinwrap -ov -g " + resolution + " -st -sp -b -nf -s -ni -- /usr/lib/xscreensaver/" + xScreenVal + " -window-id WID -root";
+ fileWriter.write(output);
+ applyType = 1;
+ // GIF
+ } else if (filePathField.getText().toLowerCase().contains(".gif")) {
+ output = "xwinwrap -ov -g " + resolution + " -st -sp -b -nf -s -ni -- gifview -a -w WID " + filePathField.getText();
+ fileWriter.write(output);
+ applyType = 1;
+ // Standard images using nitrogen
+ } else if(filePathField.getText().toLowerCase().contains(".jpg") ||
+ filePathField.getText().toLowerCase().contains(".png")) {
+ output = "[xin_0] \n file=" + filePathField.getText() + "\nmode=0 \nbgcolor=#000000\n" +
+ "[xin_1] \nfile=" + filePathField.getText() + "\nmode=0 \nbgcolor=#000000";
+ fileWriter.write(output);
+ applyType = 2;
+ //VIDEO
+ } else {
+ output = "xwinwrap -ov -g " + resolution + " -st -sp -b -nf -s -ni -- mplayer -wid WID -really-quiet -nosound -loop 0 " + filePathField.getText();
+ fileWriter.write(output);
+ applyType = 1;
+ }
+ fileWriter.close();
+ }
+
+ // Run changes
+ @FXML void applySttngs(ActionEvent event) throws Exception {
+ pb = Runtime.getRuntime().exec("killall xwinwrap &");
+ if (applyType == 1) {
+ pb = Runtime.getRuntime().exec(startScrpt);
+ pb.waitFor();
+ } else if (applyType == 2) {
+ pb = Runtime.getRuntime().exec("nitrogen --restore");
+ pb.waitFor();
+ } else
+ pb = Runtime.getRuntime().exec("nitrogen --restore");
+ pb.waitFor();
+ }
+ // Clean selection to start new search.
+ @FXML void clearBttnClick(ActionEvent event) {
+ tilePane.getChildren().clear();
+ tilePane.getChildren().addAll(dirLbl);
+ dirPathField.setText("");
+ filePathField.setText("");
+ }
+ // Closes program
+ @FXML void closeProg(ActionEvent event) { System.exit(0); }
+}
diff --git a/src/versions/v0.0.4/XWWMenu.java b/src/versions/v0.0.4/XWWMenu.java
new file mode 100644
index 0000000..78afb9b
--- /dev/null
+++ b/src/versions/v0.0.4/XWWMenu.java
@@ -0,0 +1,21 @@
+import javafx.application.Application;
+import javafx.fxml.FXMLLoader;
+import javafx.stage.Stage;
+import javafx.scene.Scene;
+import javafx.scene.layout.AnchorPane;
+
+
+public class XWWMenu extends Application {
+ @Override
+ public void start(final Stage stage) throws Exception {
+ Scene scene = new Scene(FXMLLoader.load(XWWMenu.class.getResource("resources/Window.fxml")));
+ scene.getStylesheets().add("resources/stylesheet.css");
+ stage.setScene(scene);
+ stage.setTitle("FXWinWrap");
+ stage.setMinWidth(800);
+ stage.setMinHeight(600);
+ stage.show();
+ }
+ // needed because you know... it's java.
+ public static void main(String[] args) { launch(args); }
+}
diff --git a/src/versions/v0.0.4/clean.sh b/src/versions/v0.0.4/clean.sh
new file mode 100755
index 0000000..4f850d5
--- /dev/null
+++ b/src/versions/v0.0.4/clean.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+rm *.class
diff --git a/src/versions/v0.0.4/fxwinwrap_exec_bin.cpp b/src/versions/v0.0.4/fxwinwrap_exec_bin.cpp
new file mode 100644
index 0000000..4ea961e
--- /dev/null
+++ b/src/versions/v0.0.4/fxwinwrap_exec_bin.cpp
@@ -0,0 +1,10 @@
+#include
+#include
+#include
+using namespace std;
+
+int main() {
+ chdir("/opt/FXWinWrap/");
+ system("bash launch.sh");
+return 0;
+}
diff --git a/src/versions/v0.0.4/launch.sh b/src/versions/v0.0.4/launch.sh
new file mode 100755
index 0000000..c9fead3
--- /dev/null
+++ b/src/versions/v0.0.4/launch.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+java XWWMenu
diff --git a/src/versions/v0.0.4/resources/Window.fxml b/src/versions/v0.0.4/resources/Window.fxml
new file mode 100644
index 0000000..de9652b
--- /dev/null
+++ b/src/versions/v0.0.4/resources/Window.fxml
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/versions/v0.0.4/resources/bin/InstallFFMPEGTHUMB.sh b/src/versions/v0.0.4/resources/bin/InstallFFMPEGTHUMB.sh
new file mode 100755
index 0000000..ca173f9
--- /dev/null
+++ b/src/versions/v0.0.4/resources/bin/InstallFFMPEGTHUMB.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+
+function main() {
+ notify-send -u critical "You need to install ffmpegthumbnailer to have FXWinWrap work properly..."
+ xterm -e sudo apt install ffmpegthumbnailer
+}
+main;
diff --git a/src/versions/v0.0.4/resources/bin/StartXWW.sh b/src/versions/v0.0.4/resources/bin/StartXWW.sh
new file mode 100755
index 0000000..e81bcac
--- /dev/null
+++ b/src/versions/v0.0.4/resources/bin/StartXWW.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+### nohup is needed to keep child processes alive from java's
+nohup bash ~/.animatedBGstarter.sh &> /dev/null &
+nohup bash ~/.animatedBGstarter2.sh &> /dev/null &
diff --git a/src/versions/v0.0.4/resources/fxwinwrap.png b/src/versions/v0.0.4/resources/fxwinwrap.png
new file mode 100644
index 0000000..cdd708d
Binary files /dev/null and b/src/versions/v0.0.4/resources/fxwinwrap.png differ
diff --git a/src/versions/v0.0.4/resources/stylesheet.css b/src/versions/v0.0.4/resources/stylesheet.css
new file mode 100644
index 0000000..cf3a3b2
--- /dev/null
+++ b/src/versions/v0.0.4/resources/stylesheet.css
@@ -0,0 +1,5 @@
+.root {
+ -fx-background: rgba(68, 68, 68, 0.8); // == #444444;
+}
+.button {
+}