Setup jar configuration. New version number too.

This commit is contained in:
Maxim Stewart 2018-04-05 05:33:09 -05:00
parent b29dfbc6e8
commit 3895b24893
44 changed files with 674 additions and 34 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -4,24 +4,29 @@
function main() {
sudo find . -type f -exec chmod 644 {} +
sudo find . -type d -exec chmod 755 {} +
sudo chown -R root:root ./*/
# Set postrm permissions
for i in `find . -name postrm`; do
sudo chmod 555 "${i}"
for i in `find . -name postrm`; do
sudo chmod 755 "${i}"
done
# Set fxwinwrap permissions
for i in `find . -name fxwinwrap`; do
for i in `find . -name fxwinwrap`; do
sudo chmod 755 "${i}"
done
# Set xwinwrap permissions
for i in `find . -name xwinwrap`; do
for i in `find . -name xwinwrap`; do
sudo chmod 755 "${i}"
done
for in in `find . -name *.FXWinWrap.desktop.swp`; do
sudo rm -rf "${i}"
done;
sudo chmod 755 fxwinwrap*/opt/FXWinWrap/resources/bin/*
sudo chown -R root:root ./*/
builder;
}

View File

@ -0,0 +1,8 @@
Package: fxwinwrap64
Version: 0.1-5
Section: java
Priority: optional
Architecture: amd64
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: FXWinWrap is a GUI to handle setting XWinWrap options.

View File

@ -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

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

View File

@ -0,0 +1,6 @@
#!/bin/bash
function main() {
java -Xms32m -Xmx100m -jar FXWinWrap.jar
}
main;

View File

@ -0,0 +1,10 @@
[Desktop Entry]
Encoding=UTF-8
Name=FXWinWrap
Comment=JavaFX gui for XWinWrap
Exec=/bin/fxwinwrap
Icon=/opt/FXWinWrap/FXWinWrap.png
Terminal=false
Type=Application
Categories=System;
MimeType=application/fxml;

View File

@ -0,0 +1,22 @@
FXWinWrap is copyright 2016, 2017 Maxim Stewart.
FXWinWrap is currently developed by ITDominator <1itdominator@gmail.com>.
License: GPLv2+
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
See /usr/share/common-licenses/GPL-2, or
<http://www.gnu.org/copyleft/gpl.txt> for the terms of the latest version
of the GNU General Public License.

View File

@ -0,0 +1,8 @@
Package: fxwinwrap
Version: 0.1-5
Section: java
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: FXWinWrap is a GUI to handle setting XWinWrap options.

View File

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

View File

@ -0,0 +1,6 @@
#!/bin/bash
function main() {
java -Xms32m -Xmx100m -jar FXWinWrap.jar
}
main;

View File

@ -0,0 +1,10 @@
[Desktop Entry]
Encoding=UTF-8
Name=FXWinWrap
Comment=JavaFX gui for XWinWrap
Exec=/bin/fxwinwrap
Icon=/opt/FXWinWrap/FXWinWrap.png
Terminal=false
Type=Application
Categories=System;
MimeType=application/fxml;

View File

@ -25,8 +25,8 @@ import javafx.beans.value.ObservableValue;
public class Controller {
private DirectoryChooser folderChooser = new DirectoryChooser(); // Selects a dir
private FileWriter fileWriter; // Writes to files
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
@ -64,7 +64,7 @@ public class Controller {
textAreaPth = dirPathField.getText();
System.out.println(textAreaPth);
newDir();
} else {}
} else {}
}
// Scan selected dir
@ -84,25 +84,25 @@ public class Controller {
fileList = directory.listFiles();
dirPathField.setText("" + directory);
for (int i=0; i<fileList.length; i++) {
for (int i=0; i<fileList.length; i++) {
String path = "" + fileList[i];
if (path.toLowerCase().matches("^.*?(mp4|mpeg|mpg|wmv|mkv|flv|webm|avi|png|jpg|jpeg|gif).*$")) {
imgView = new ImageView();
imgView.setFitWidth(300); // Need these here to get grid properly.
imgView.setFitHeight(200);
tilePane.getChildren().add(imgView);
imgView = new ImageView();
imgView.setFitWidth(300); // Need these here to get grid properly.
imgView.setFitHeight(200);
tilePane.getChildren().add(imgView);
}
}
Task getDir = new Task<Void>() {
@Override public Void call() {
newDir2();
return null;
newDir2();
return null;
}};
new Thread(getDir).start();
}
public void newDir2() {
for (int i=0; i<fileList.length; i++) {
for (int i=0; i<fileList.length; i++) {
String path = "" + fileList[i], tmpP = "" + fileList[i];
if (tmpP.toLowerCase().matches("^.*?(mp4|mpeg|mpg|wmv|mkv|flv|webm|avi).*$")) {
String movieImg = "ffmpegthumbnailer -w -t='00:30:00' -c png -i " +
@ -122,35 +122,35 @@ public class Controller {
});
view.setOnMouseClicked(mouse -> {
if (mouse.getClickCount() == 2 && !mouse.isConsumed()) {
if (mouse.getClickCount() == 2 && !mouse.isConsumed()) {
mouse.consume();
try {
pb = Runtime.getRuntime().exec(vExec);
} catch(IOException vidIOErr) {
throw new UncheckedIOException(vidIOErr);
}
}
filePathField.setText(path);
try {
pb = Runtime.getRuntime().exec(vExec);
} catch(IOException vidIOErr) {
throw new UncheckedIOException(vidIOErr);
}
}
filePathField.setText(path);
});
} else if(tmpP.toLowerCase().matches("^.*?(png|jpg|jpeg|gif).*$")) {
ImageView view = (ImageView) (tilePane.getChildren().get(i));
String title = "file://" + fileList[i];
String title = "file://" + fileList[i];
pth = new Image(title);
Platform.runLater(new Runnable() {
@Override public void run() { view.setImage(pth); }
});
final ImageView imgViewPoped = new ImageView(title);
// image click actions
final ImageView imgViewPoped = new ImageView(title);
// image click actions
view.setOnMouseClicked(mouse -> {
if (mouse.getClickCount() == 2 && !mouse.isConsumed()) {
mouse.consume();
displayImg(imgViewPoped, title);
}
if (mouse.getClickCount() == 2 && !mouse.isConsumed()) {
mouse.consume();
displayImg(imgViewPoped, title);
}
filePathField.setText(path);
});
} else { System.out.println("Not a video or image file."); }
});
} else { System.out.println("Not a video or image file."); }
}
}
// Open image in new window
@ -187,7 +187,6 @@ public class Controller {
}
// 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");

View File

@ -0,0 +1,9 @@
#!/bin/bash
function main() {
jar cvfm FXWinWrap.jar manifest.txt com/itdominator/fxwinwrap/*.class \
com/itdominator/fxwinwrap/resources
chmod +x FXWinWrap.jar
mv FXWinWrap.jar ../
}
main;

View File

@ -0,0 +1,175 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.String?>
<?import javafx.collections.FXCollections?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.CheckBox?>
<?import javafx.scene.control.ChoiceBox?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.ListView?>
<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.TilePane?>
<?import javafx.scene.paint.Color?>
<?import javafx.scene.text.Font?>
<?scenebuilder-background-color 0x444444ff?>
<AnchorPane minHeight="300.0" minWidth="300.0" prefHeight="600.0" prefWidth="950.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1">
<children>
<TextField id="txtDirPath" fx:id="dirPathField" blendMode="DIFFERENCE" onKeyReleased="#onEnter" prefWidth="880.0" promptText="Directory Path" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="70.0" AnchorPane.topAnchor="5.0" />
<Button fx:id="clear" mnemonicParsing="false" onAction="#clearBttnClick" text="Clear" AnchorPane.rightAnchor="15.0" AnchorPane.topAnchor="5.0" />
<TextField id="txtDirPath" fx:id="filePathField" blendMode="DIFFERENCE" layoutY="33.0" onKeyReleased="#onEnter" prefWidth="950.0" promptText="File Path" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="15.0" />
<ScrollPane id="ScrollPane" layoutX="19.0" layoutY="101.0" minHeight="226.0" minWidth="300.0" prefHeight="490.0" prefViewportHeight="534.0" prefViewportWidth="742.0" prefWidth="637.0" style=" -fx-fit-to-height: true;&#10; -fx-fit-to-width: true;" AnchorPane.bottomAnchor="10.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="315.0" AnchorPane.topAnchor="100.0">
<content>
<TilePane fx:id="tilePane" hgap="15.0" prefHeight="532.0" prefWidth="755.0" vgap="15.0">
<children>
<Label id="dir" fx:id="dirLbl" contentDisplay="CENTER" labelFor="$clear" onMouseClicked="#setNewDir" opacity="0.5" prefHeight="478.0" prefWidth="629.0" text="Choose Image/Video Directory..." textAlignment="LEFT" textOverrun="CLIP" underline="false" wrapText="false" TilePane.alignment="CENTER">
<font>
<Font name="System Bold" size="32.0" />
</font>
<textFill>
<Color blue="0.875" green="0.875" red="0.875" />
</textFill>
<TilePane.margin>
<Insets />
</TilePane.margin>
</Label>
</children>
</TilePane>
</content>
</ScrollPane>
<ListView fx:id="selXScreenSvr" disable="true" layoutX="649.0" layoutY="101.0" onMouseClicked="#passXScreenVal" prefHeight="257.0" prefWidth="283.0" AnchorPane.bottomAnchor="230.0" AnchorPane.rightAnchor="15.0" AnchorPane.topAnchor="100.0">
<items>
<FXCollections fx:factory="observableArrayList">
<String fx:value="electricsheep " />
<String fx:value="atlantis" />
<String fx:value="atunnel " />
<String fx:value="blinkbox " />
<String fx:value="blocktube" />
<String fx:value="bouncingcow " />
<String fx:value="boxfit " />
<String fx:value="bsod" />
<String fx:value="bubble3d " />
<String fx:value="bumps " />
<String fx:value="cage" />
<String fx:value="carousel " />
<String fx:value="cube21 " />
<String fx:value="cubenetic" />
<String fx:value="cubicgrid " />
<String fx:value="cwaves " />
<String fx:value="dangerball" />
<String fx:value="fiberlamp " />
<String fx:value="fireworkx " />
<String fx:value="flipflop" />
<String fx:value="fliptext " />
<String fx:value="flow " />
<String fx:value="flurry" />
<String fx:value="flyingtoasters " />
<String fx:value="gflux " />
<String fx:value="glcells" />
<String fx:value="gleidescope " />
<String fx:value="glknots " />
<String fx:value="glmatrix" />
<String fx:value="glschool " />
<String fx:value="glslideshow " />
<String fx:value="glsnake" />
<String fx:value="hypertorus " />
<String fx:value="hypnowheel " />
<String fx:value="interaggregate" />
<String fx:value="intermomentary " />
<String fx:value="jigglypuff " />
<String fx:value="jigsaw" />
<String fx:value="julia " />
<String fx:value="lament " />
<String fx:value="lockward" />
<String fx:value="metaballs " />
<String fx:value="moebiusgears " />
<String fx:value="molecule" />
<String fx:value="morph3d " />
<String fx:value="noof " />
<String fx:value="phosphor" />
<String fx:value="photopile " />
<String fx:value="pinion " />
<String fx:value="popsquares" />
<String fx:value="ripples " />
<String fx:value="skytentacles " />
<String fx:value="slidescreen" />
<String fx:value="stonerview " />
<String fx:value="strange " />
<String fx:value="substrate" />
<String fx:value="tangram " />
<String fx:value="whirlwindwarp " />
<String fx:value="wormhole" />
<String fx:value="xflame " />
<String fx:value="xrayswarm " />
<String fx:value="companioncube" />
<String fx:value="fuzzyflakes " />
<String fx:value="galaxy " />
<String fx:value="glplanet" />
<String fx:value="penetrate" />
</FXCollections>
</items>
</ListView>
<Label layoutX="804.0" layoutY="374.0" text="Position Offset:" AnchorPane.bottomAnchor="210.0" AnchorPane.rightAnchor="47.0" />
<Label layoutX="654.0" layoutY="429.0" text="Save Path:" AnchorPane.bottomAnchor="155.0" AnchorPane.rightAnchor="226.0" />
<Button id="saveBttn" layoutX="652.0" layoutY="487.0" mnemonicParsing="false" onAction="#saveToFile" prefHeight="50.0" prefWidth="169.0" text="Save Selection" AnchorPane.bottomAnchor="63.0" AnchorPane.rightAnchor="129.0" />
<Button id="applyBttn" layoutX="835.0" layoutY="487.0" mnemonicParsing="false" onAction="#applySttngs" prefHeight="50.0" prefWidth="100.0" text="Apply" AnchorPane.bottomAnchor="63.0" AnchorPane.rightAnchor="15.0" />
<Button id="killBttn" layoutX="652.0" layoutY="540.0" mnemonicParsing="false" onAction="#killXWinWrp" prefHeight="50.0" prefWidth="169.0" text="Kill XWinWrap" AnchorPane.bottomAnchor="10.0" AnchorPane.rightAnchor="129.0" />
<Button fx:id="closeBttn" mnemonicParsing="false" onAction="#closeProg" prefHeight="50.0" prefWidth="100.0" text="Close" AnchorPane.bottomAnchor="10.0" AnchorPane.rightAnchor="15.0" />
<ChoiceBox fx:id="listSaveLoc" layoutX="641.0" layoutY="443.0" prefHeight="29.0" prefWidth="283.0" AnchorPane.bottomAnchor="125.0" AnchorPane.rightAnchor="15.0">
<items>
<FXCollections fx:factory="observableArrayList">
<String fx:value=".animatedBGstarter.sh" />
<String fx:value=".animatedBGstarter2.sh" />
</FXCollections>
</items>
</ChoiceBox>
<ChoiceBox id="listRes" fx:id="setMonPosOffset" layoutX="769.0" layoutY="401.0" prefHeight="29.0" prefWidth="135.0" value="+0+0" AnchorPane.bottomAnchor="180.0" AnchorPane.rightAnchor="12.0">
<items>
<FXCollections fx:factory="observableArrayList">
<String fx:value="Left" />
<String fx:value="-1920+0" />
<String fx:value="-1440+0" />
<String fx:value="-1600+0" />
<String fx:value="-1280+0" />
<String fx:value="-800+0" />
<String fx:value="Right" />
<String fx:value="+1920+0" />
<String fx:value="+1440+0" />
<String fx:value="+1600+0" />
<String fx:value="+1280+0" />
<String fx:value="+800+0" />
<String fx:value="+0+0" />
<String fx:value="Top" />
<String fx:value="+0+1920" />
<String fx:value="+0+1440" />
<String fx:value="+0+1600" />
<String fx:value="+0+1280" />
<String fx:value="+0+800" />
<String fx:value="Bottom" />
<String fx:value="+0-1920" />
<String fx:value="+0-1440" />
<String fx:value="+0-1600" />
<String fx:value="+0-1280" />
<String fx:value="+0-800" />
</FXCollections>
</items>
</ChoiceBox>
<ChoiceBox id="listRes" fx:id="playbackResolution" layoutX="652.0" layoutY="401.0" prefHeight="29.0" prefWidth="135.0" value="1920x1080" AnchorPane.bottomAnchor="180.0" AnchorPane.rightAnchor="163.0">
<items>
<FXCollections fx:factory="observableArrayList">
<String fx:value="1920x1080" />
<String fx:value="1440x720" />
<String fx:value="1600x900" />
<String fx:value="1280x720" />
<String fx:value="800x600" />
</FXCollections>
</items>
</ChoiceBox>
<CheckBox fx:id="useXSvrn" layoutX="724.0" layoutY="75.0" mnemonicParsing="false" onMouseClicked="#toggleXscreenUsageField" prefHeight="18.0" prefWidth="158.0" text="Use XScreenSaver" AnchorPane.rightAnchor="65.0" AnchorPane.topAnchor="75.0" />
<Label layoutX="653.0" layoutY="374.0" text="Playback Resolutions:" AnchorPane.bottomAnchor="210.0" AnchorPane.rightAnchor="155.0" />
<Label layoutX="127.0" layoutY="76.0" prefWidth="382.0" text="Note: Double click an image to view the video or image." AnchorPane.leftAnchor="125.0" AnchorPane.topAnchor="75.0" />
</children>
</AnchorPane>

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

View File

@ -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 &

View File

@ -0,0 +1,5 @@
.root {
-fx-background: rgba(68, 68, 68, 0.8); // == #444444;
}
.button {
}

View File

@ -0,0 +1 @@
Main-Class: com.itdominator.fxwinwrap.FXWinWrap

View File

@ -0,0 +1,275 @@
package com.itdominator.fxwinwrap;
import javafx.stage.Stage;
import javafx.stage.DirectoryChooser;
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 javafx.concurrent.Task;
import javafx.application.Platform;
import java.io.File;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.UncheckedIOException;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
public class Controller {
// Classes
// FXML Stuff
@FXML private ListView<?> selXScreenSvr;
@FXML private Label dirLbl;
@FXML private TilePane tilePane;
@FXML private TextField dirPathField, filePathField;
@FXML private CheckBox useXSvrn;
@FXML private ChoiceBox<?> playbackResolution, setMonPosOffset, listSaveLoc;
@FXML private Button applyBttn, closeBttn, fileBttn, clear, killBttn, saveBttn;
// Generics
private DirectoryChooser folderChooser = new DirectoryChooser();
private FileWriter fileWriter;
private File tempShFile, directory, sveFileLoc;
private File[] fileList;
private Image pth; // Path to image
private ImageView imgView = new ImageView(pth);
private Process pb; // Process runner
private Stage fileChooserStage;
private String tmpPath, resolution, xScreenVal, output, textAreaPth = "";
private int applyType = 1;
@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'.";
try {
tempShFile = File.createTempFile("StartXWW", ".sh", new File("/tmp/"));
tempShFile.setExecutable(true, true);
tempShFile.deleteOnExit();
FileWriter fileWriter = new FileWriter(tempShFile);
InputStream in = getClass().getResourceAsStream("resources/bin/StartXWW.sh");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in));
String line = "";
while((line = bufferedReader.readLine()) != null) {
fileWriter.write(line + "\n");
}
// Always close files.
fileWriter.close();
in.close();
bufferedReader.close();
} catch (Exception e) { }
}
@FXML void setNewDir(MouseEvent event) { newDir(); }
@FXML void onEnter(KeyEvent event) {
if (event.getCode().equals(KeyCode.ENTER)) {
textAreaPth = dirPathField.getText();
newDir();
} else {}
}
// Scan selected dir
public void newDir() {
tilePane.getChildren().clear();
Stage stage = new Stage();
if (textAreaPth != "")
directory = new File(textAreaPth);
else {
directory = folderChooser.showDialog(stage);
}
fileList = directory.listFiles();
dirPathField.setText("" + directory);
for (int i=0; i<fileList.length; i++) {
String path = "" + fileList[i];
if (path.toLowerCase().matches("^.*?(mp4|mpeg|mpg|wmv|mkv|flv|webm|avi|png|jpg|jpeg|gif).*$")) {
imgView = new ImageView();
imgView.setFitWidth(300); // Need these here to get grid properly.
imgView.setFitHeight(200);
tilePane.getChildren().add(imgView);
}
}
Task getDir = new Task<Void>() {
@Override public Void call() {
newDir2();
return null;
}};
new Thread(getDir).start();
}
public void newDir2() {
for (int i=0; i<fileList.length; i++) {
String path = "" + fileList[i], tmpP = "" + fileList[i];
if (tmpP.toLowerCase().matches("^.*?(mp4|mpeg|mpg|wmv|mkv|flv|webm|avi).*$")) {
String movieImg = "ffmpegthumbnailer -w -t='00:30:00' -c png -i " +
fileList[i] + " -s 300 -o /tmp/image.png",
vExec = "mplayer -really-quiet -ao null -loop 0 " + fileList[i];
try {
pb = Runtime.getRuntime().exec(movieImg);
pb.waitFor();
} catch(Throwable imgIOErr) { System.out.println(imgIOErr); }
ImageView view = (ImageView) (tilePane.getChildren().get(i));
pth = new Image("file:///tmp/image.png");
Platform.runLater(new Runnable() {
@Override public void run() { view.setImage(pth); }
});
view.setOnMouseClicked(mouse -> {
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(tmpP.toLowerCase().matches("^.*?(png|jpg|jpeg|gif).*$")) {
ImageView view = (ImageView) (tilePane.getChildren().get(i));
String title = "file://" + fileList[i];
pth = new Image(title);
Platform.runLater(new Runnable() {
@Override public void run() { view.setImage(pth); }
});
final ImageView imgViewPoped = new ImageView(title);
// 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();
Scene scene = new Scene(pane, 1280, 900);
imgViewPoped.setLayoutX(0);
imgViewPoped.setLayoutY(0);
imgViewPoped.fitWidthProperty().bind(pane.widthProperty());
imgViewPoped.fitHeightProperty().bind(pane.heightProperty());
pane.getChildren().add(imgViewPoped);
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 -ao null -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("bash -c '" + tempShFile.toString() + "'");
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); }
}

View File

@ -0,0 +1,34 @@
package com.itdominator.fxwinwrap;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import java.util.logging.Level;
import java.io.IOException;
public class FXWinWrap extends Application {
// Classes
@Override public void start(Stage stage) {
try {
FXMLLoader loader = new FXMLLoader(getClass().getResource("resources/FXWinWrap.fxml"));
loader.setController(new Controller());
loader.load();
Scene scene = new Scene(loader.getRoot());
scene.getStylesheets().add("/com/itdominator/fxwinwrap/resources/stylesheet.css");
stage.setTitle("FXWinWrap");
stage.setScene(scene);
} catch (IOException startException) {
String message = "\nFXWinWrap Failed to launch...\n";
System.out.println(message + startException);
}
stage.getIcons().add(new Image(FXWinWrap.class.getResourceAsStream("resources/FXWinWrap.png")));
stage.setResizable(true);
stage.show();
}
public static void main(String[] args) { launch(args); }
}

View File

@ -0,0 +1,8 @@
#!/bin/bash
# -Xlint:unchecked
function main() {
javac *.java
rm ../com/itdominator/fxwinwrap/*.class
mv *.class ../com/itdominator/fxwinwrap/
}
main;

View File

@ -0,0 +1,6 @@
#!/bin/bash
function main() {
c++ -s fxwinwrap_exec_bin.cpp -o fxwinwrap
}
main;

View File

@ -0,0 +1,10 @@
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
using namespace std;
int main() {
chdir("/opt/FXWinWrap/");
system("bash launch.sh");
return 0;
}

6
src/versions/v0.0.5/launch.sh Executable file
View File

@ -0,0 +1,6 @@
#!/bin/bash
function main() {
java -Xms32m -Xmx100m -jar FXWinWrap.jar
}
main;