SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
Slides, replay and more
https://embt.co/FMXLinuxIntro
Introduction to FMXLinux
Delphi’s FireMonkey for Linux Solution
Jim McKeeth
Embarcadero Technologies
jim.mckeeth@embarcadero.com
Chief Developer Advocate & Engineer
Your Presenter:
Jim McKeeth
Embarcadero Technologies
jim.mckeeth@embarcadero.com | @JimMcKeeth
Chief Developer Advocate & Engineer
Agenda • Overview
• Installation
• Supported platforms
• PAServer
• SDK & Packages
• Usage
• UI Elements
• Samples
• Database Access FireDAC
• Migrating from Windows VCL
• midaconverter.com
• 3rd Party Support
• Broadway Web
Why FMX on Linux?
• Education - Save money on Windows licenses
• Kiosk or Point of Sale - Single purpose
computers with locked down user interfaces
• Security - Linux offers more security options
• IoT & Industrial Automation - Add user
interfaces for integrated systems
• Federal Government - Many govt systems
require Linux support
• Choice - Now you can, so might as well!
Delphi for Linux History
• 1999 Kylix: aka Delphi for Linux, introduced
• It was a port of the IDE to Linux
• Linux x86 32-bit compiler
• Used the Trolltech QT widget library
• 2002 Kylix 3 was the last update to Kylix
• 2017 Delphi 10.2 “Tokyo” introduced Delphi for x86 64-bit Linux
• IDE runs on Windows, cross compiles to Linux via the PAServer
• Designed for server side development - no desktop widget GUI library
• 2017 Eugene Kryukov of KSDev release FMXLinux
• Eugene was one of the original architects of FireMonkey
• A modification of FireMonkey, bringing FMX to Linux
• 2019 Embarcadero includes FMXLinux with Delphi 10.3.2 “Rio”
Terracotta kylix (drinking cup) - public domain image
https://www.metmuseum.org/art/collection/search/255939
FMXLinux Overview
• Eugene Kryukov of KSDev created FMXLinux
• Eugene was one of the original architects of FireMonkey
• The installation modifies FireMonkey and adds additional libraries
• FMXLinux still uses the same Delphi compiler for x86 64-bit Linux
• It does not support ARM Linux like the Raspberry Pi
• The IDE runs on Windows and connects to Linux via PAServer
• Uses the same FireMonkey framework and components from
Windows, macOS, Android and iOS
• Works with the RTL, FireDAC, Live Bindings, and other Delphi libraries
• Included with RAD Studio & Delphi 10.3.1 “Rio” and newer under
Update Subscription
• docwiki.embarcadero.com/RADStudio/en/FireMonkey_for_Linux
FireMonkey & VCL - FMXLinux vs. CrossVCL
• KSDev also makes CrossVCL which allows VCL on Linux and macOS
• Embarcadero includes FMXLinux with Delphi & RAD Studio 10.3.1+
• Why?
• FireMonkey is designed to be cross platform
• FMXLinux mades more sense as a Linux GUI solution
• You are still able to purchase CrossVCL from KSDev at crossvcl.com
• If you have an existing VCL application you want to bring to Linux try
midaconverter.com to first convert it to FireMonkey
FMXLinux Installation
FMXLinux Installation Overview
• Available via GetIt
• For Delphi or RAD Studio Rio 10.3.1+ with active Update Subscription
• Supported Platforms
• Must be x86 64-bit Linux Desktop (or server with Desktop installed)
• Officially: Ubuntu 18.04 LTS, Ubuntu 16.04 LTS, Ubuntu 14.04 LTS, and RedHat
Enterprise Linux (version 7)
• docwiki.embarcadero.com/PlatformStatus/en/Main_Page
• docwiki.embarcadero.com/RADStudio/en/Supported_Target_Platforms
• Unofficially: Most any Linux if you install the right packages in the right place
• List of 134 successfully test distros (YMMV)
bitbucket.org/crossvcl/fmxlinux/issues/130/controlsdemo-test-on-different-linux
• Known to fail on 4: KNOPPIX 8.1, 4MLinux 27.0, elementary OS 5.0, & GALPon MiniNo
Queiles 3.1
• Still uses PAServer & requires SDK & Packages installed and setup
134 Successfully Tested Linux Distros
ALT Linux 8.2; Antergos 17.11.; antiX 17.2; ArchBang Linux Winter 0112; Archman KDE Plasma 2019.02; ArcoLinux v18.11.2; Argent
KDE Plasma 1.5.2; Artix Linux LXQT 2018.10.13; AryaLinux 1.0 XFCE; Asril OS 7.0 Lare; AUSTRUMI 3.9.0; AV Linux (2018.06.25);
B2D Desktop 2019 V1.0.5 XFCE; BackBox Linux 5.2; Berry Linux 1.30; BigLinux 7.10; Bionicpup64 8.0 CE; BlackArch Linux
2018.12.01; Black Lab Enterprise Linux 8; blackPanther OS v18.1; BlackWeb 1.2; BlankOn 11.0.1; Bluestar Linux 4.19.2; Bodhi Linux
5.0.0; BunsenLabs Linux Helium; CAELinux 2018; CAINE 10.0; Calculate Linux 18; CentOS 7; ChaletOS 16.04.2; Chakra
GNU/Linux 2019.01; Condres OS 2019.03 Gnome Edition; Debian 9.1; Deepin 15.4.1; Devuan 2.0.0 ASCII; DuZeru; EasyOS 1.0.8;
Endless OS 3.5; ExTiX 19.0; EducatuX 9.8; Enso 0.3.1; ETi-pup 5.1.6; Fatdog64 Linux 800; Fedora 26; Feren OS (July 2018);
Freespire 4.5.; GeckoLinux Static Plasma; Gentoo Linux 2016.07.04; Greenie Linux 18.04.0.2; Grml 2018.12; GoboLinux 016.01;
Hamara Sugam 2.1; Kali Linux 2017.2; Kanotix Steelfire KDE; KaOS 2018.01; KDE neon; Kubuntu 18.10; KXStudio 14.04.5;
Linspire 8.0 RC1; Linux Kodachi 5.2; Linux Lite 4.2; Linux Mint 18.1; Lubuntu 17.10; LuninuX OS 17.04; LXLE Linux 16.04.4; Mageia
6.1; MakuluLinux 15 Flash Edition; Manjaro Linux 17.0; Maui Linux 17.06; MAX: Madrid_Linux 10.0; MAZON OS 1.4.3.l;
MorpheusArch Linux 2018.4; MX Linux 17.1; Namib GNU/Linux Budgie 18.08; Neptune 5.6; Nova 6.0; NuTyX MATE 10.4;
OpenMandriva Lx 3.0; openSUSE Leap 42.2; Oracle Linux 7.6; OSGeoLive 12.0; Pardus 17.4 XFCE; Parrot Studio 3.8; PCLinuxOS
2017.07; Peach OSI 16.04 TW; Pearl Linux MATE 7.0; PelicanHPC GNU Linux 4.1 XFCE; Pentoo 2018.0; Peppermint 9; Pinguy OS
18.04.1; Pisi Linux 2.1 ATA; Plop Linux 4.3.9; Pop!_OS 18.10; Porteus 4.0 MATE; Poseidon Linux 9 MB2315; Q4OS 2.6 Scorpion;
Rebellin Linux 3.5 Gnome; Redcore Linux Hardened 1806; Red Hat Enterprise Linux 7; Refracta 8.3; Resilient Linux 1.0;
Robolinux Cinnamon 10.3; ROSA Fresh KDE R10; Runtu LITE 18.04; Sabayon Linux 18.05 GNOME Edition; SalentOS 2.0; Salix
Xfce 14.2; Scientific Linux 7.4; SELKS 4.0; Septor-2019; SharkLinux 4.15.0-39; siduction 18.3.0 XFCE; Slax 9.8.0; Slackel 7.1;
Slontoo 18.07.1 MATE; Solus 3 GNOME; SolydXK 201902; SparkyLinux 4.9; SuliX Professional 8; SuperX 5.0; SwagArch
GNU/Linux 18.12; Tails 3.10.1; Trisquel 8.0 LTS Flidas; Tsurugi Linux Lab 2018.1; Ubuntu 16.10; Ubuntu Budgie 18.04.1; Ubuntu
MATE 18.04.1; Ubuntu Studio 18.10; Ultimate Edition 5.0; Uruk GNU/Linux 2.0 XFCE; Void Linux MATE (2018.11.11.); Voyager
18.04 LTS; Xubuntu 18.04; Zorin OS 12.1 Core
Working Platforms Personally Tested
• elementary OS 5.0 “Juno”
• Red Hat Enterprise Linux 8
• Mint 19.1
• Bionic Puppy Linux 8
• Deepin 15
• Debian 9
• Manjaro 18
• Zorin 12.4
• MX Linux 18.3
• openSUSE Leap 15.1
• CentOS 7
• Fedora 30
• Ubuntu 18.04.2 LTS
Installation
● Available via GetIt
● Delphi or RAD
Studio
● Rio 10.3.1+
● Update Subscription
required
Samples installs to
C:UsersPublicDocumentsEmbarcaderoStudio

20.0SamplesObject PascalFMX Linux Samples
Cursors
CustomFont
CustomIcon
EventSim
FontList
GetFileIcon
GtkWindow
Screenshot
ShellApi
WebScript
FMXLinux installs to
C:UsersPublicDocumentsEmbarcaderoStudio
20.0CatalogRepositoryFMXLinux-1.41
Ubuntu 18.04.2 LTS
“Bionic Beaver”
Download Link
ubuntu.com/download/desktop
Update
sudo apt-get update -y && sudo apt-get full-upgrade -y
Install Dev Packages
sudo apt-get install build-essential wget p7zip-full
Clean-up
sudo apt-get autoremove && sudo apt-get autoclean
Download & Install (Requires creating an account)
• developers.redhat.com/rhel8/
• developers.redhat.com/rhel8/install-rhel8/
Update (Requires Red Hat account)
sudo subscription-manager register --auto-attach
sudo yum repolist
sudo yum update
Install Dev Packages
sudo yum groupinstall 'Development Tools'
Firewall for PAServer
sudo firewall-cmd --zone=public --add-port=64211/tcp --permanent
sudo firewall-cmd --reload
• PAServer connects the IDE to Linux
• Copy from your install, or download
• Full instructions
docwiki.embarcadero.com/RADStudio/en/Installing_the_Platform_Assistant_on_Linux
To install from the web . . ..
cd ~
wget http://altd.embarcadero.com/releases/studio/20.0/PAServer/Release1/LinuxPAServer20.0.tar.gz
tar -xvf LinuxPAServer20.0.tar.gz
rm LinuxPAServer20.0.tar.gz
mv PAServer-20.0/ PAServer/
PAServer/paserver
PAServer Install
Using FMXLinux
Using FMXLinux
• Open new or existing FireMonkey application
• New projects need to be saved
• Right click on the Project in the Project
Manager
• Choose “Add Linux Platform”
• Linux is now included as a platform
• Make sure the Linux Platform and SDK are
setup correctly
• Once the SDK is imported, a Linux platform is no
longer needed to build (unlike iOS)
• You could manually copy SDK from another computer
Connection Profile Manager - 1
• Tools -> Options -> Deployment -> Connection Profile Manager
• Click [Add]
• Provide
• Profile name
• Platform
• Host Address
• Port number
• Password (optional)
Connection Profile Manager - 2
• Tools -> Options -> Deployment -> Connection Profile Manager
• Click [Add]
• Provide
• Profile name
• Platform
• Host Address
• Port number
• Password (optional)
1
2
SDK Manager - 1
• Tools -> Options -> Deployment -> SDK Manager
• Click [Add]
• Select
• Platform
• Connection
• SDK Version
• Wait while the SDK
imports
SDK Manager - 2
• Typically need only one Linux SDK to
support multiple Linux distros
• You can typically replace existing files
during import (I always click “Yes to all”)
• Pay attention if you get missing folder in
the log file. It might indicate you didn’t
install the dev packages on Linux
Troubleshooting SDK Import
• The import is based on defaultsdkpaths files found in the bin folder
• C:Program Files (x86)EmbarcaderoStudio20.0bin
• In 10.3.1 Linux has 3 different definitions (in XML format)
• Linux64.defaultsdkpaths
• rhel7.2.defaultsdkpaths
• ubuntu14.4.defaultsdkpaths
• If a file is missing during build or there is an error in the log
• Figure out how to install it on Linux
• Use the Linux find command to figure out where it is installed
• Modify your defaultsdkpaths files to point to the correct locations
• Use [Update Local File Cache] button once changes are made
• If the update still doesn’t work, manually delete the folder
• C:Users[user]DocumentsEmbarcaderoStudioSDKs[platform]
• Then delete the SDK entry and import it again
FMXLinux Demos
Samples
• Cursors - Capturing the desktop cursor image
• CustomFont - Using a custom font
• CustomIcon - Changing the main window font icon
• EventSim - Simulate keyboard and mouse events
• FontList - List installed fonts
• GetFileIcon - Display the icon for a file
• GtkWindow - Use GTK directly to manipulate a window
• Screenshot - Take a screenshot of the desktop
• ShellApi - Open URLs and Files with associated programs
• FmxWebScript - Use FireMonkey to draw graphics in a web CGI-BIN
Samples installed to
C:UsersPublicDocumentsEmbarcaderoStudio
20.0SamplesObject PascalFMX Linux Samples
Note About CustomFont Sample
• The font file passed to the FmuxAddCustomFont call must exist locally
• You can use the Deployment manager to deploy it to Linux
• Side note about libfmux.so
• You might see libfmux.so in some of the deployment manager for some samples,
or a warning about it while building
• It is an artifact from when the library was dynamically linked
• It is statically linked now, and no longer needed
Note About GtkWindow Sample
• The GtkWindow Sample has early bound dynamic linking
procedure gtk_window_set_title(window: Pointer; title: PUtf8Char);
cdecl; external 'libgtk-3.so.0';
• You might get an error on linking (something like)
ld-linux.exe: error: cannot find -lgtk-3
undefined reference to 'gtk_window_set_title'
• The solution: Install libgtk-3-dev and update the SDK’s Local File Cache
sudo apt-get install libgtk-3-dev
Note About CustomIcon Sample
• The new icon is loaded as a resource
• Project -> Resources & Images
• PNG File
• Identifier MAINICON
• Resource type RCDATA
• Include the dres in the dpr file
• {$R *.dres}
Creating an Icon Launcher aka [Desktop Entry]
• Create a .desktop file to customize the icon (like a Windows shortcut)
• Used by both Gnome, KDE, etc.
• The .desktop file must have execute permissions
• To show up in the Application list, copy to either
• ~/.local/share/applications
• /usr/share/applications
• Sample:
#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Name=My FMXLinux Program
Comment=I made this program with Delphi and FMXLinux!
Exec=/home/jim/PAServer/scratch-dir/jim-Ubuntu/CoolApp/CoolApp
Path=/home/jim/PAServer/scratch-dir/jim-Ubuntu/CoolApp/
Icon=/home/jim/PAServer/scratch-dir/jim-Ubuntu/CoolApp/MainIcon.svg
Terminal=false
Type=Application
Categories=Utility;Development;
https://wiki.archlinux.org/index.php/Desktop_entries
https://specifications.freedesktop.org/desktop-entry-spec/latest/
*.png
*.svg
Media Player
• Requires the free VLC installed on Linux
• Fedora 30/29/28
• sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E
%fedora).noarch.rpm
• sudo dnf install vlc
• CentOS/RHEL 7
• sudo rpm -Uvh
http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm
• sudo rpm -Uvh
http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
• yum install vlc
• Ubuntu / Debian
• sudo apt-get install vlc
Using FMX to Generate Web Server Graphics
• This is different than the Broadway server that serves the entire UI
• Allows you to use FMX to generate graphics and effects via CGI-BIN
• Create a standard Apache module
• Linux dependencies
• sudo apt install libgl1-mesa-glx libglu1-mesa libgtk-3-common
libgstreamer1.0 libgstreamer-plugins-base1.0
• More information
ksdev.blogspot.com/2017/12/using-firemonkey-graphics-in-cgi-script.html
HTML5 Web Deployment
● Install Required Libs:
sudo apt install xorg libgl1-mesa-dev
libosmesa-dev libgtk-3-bin
● Start broadway server: broadwayd
● Run application with:
GDK_BACKEND=broadway ./myapp
● Load [ip]:8080 in the browser
● Note: Only supports a single user
instance at a time
● Broadway is a feature of GTK+
● For more information
developer.gnome.org/gtk3/stable/gtk-broadway.html
Current Select 3rd
Party Support
• TScene - github.com/eugenekryukov/TScene - Isolated buffered container control
• TMS FMX UI Pack - tmssoftware.com/site/tmsfmxpack.asp - Set of highly configurable and
styleable components
• Steema TeeChart - steema.com - Hundreds of Graph styles in 2D and 3D for data visualization,
56 mathematical, statistical and financial Functions, with an unlimited number of axes
• Steema TeeGrid - www.steema.com - Lightweight and fully-featured grid control (not derived
from TCustomGrid or TGrid)
• Woll2Woll FirePower - woll2woll.com/firepower - The most critical components for building
professional desktop and mobile user-interfaces
• HTML Component Library - delphihtmlcomponents.com - HTML Component Library is a
cross-platform and 100% native HTML/CSS rendering library
• TatukGIS Developer Kernel 11 - tatukgis.com - Professional grade geographic information
system (GIS) SDK for desktop and mobile
QUESTIONS!
: @embarcaderotech
: Embarcadero Technologies
FREE 30 Day Trial Architect
Edition on our website!
Slides, replay and more
https://embt.co/FMXLinuxIntro

Contenu connexe

Tendances

"Using TensorFlow Lite to Deploy Deep Learning on Cortex-M Microcontrollers,"...
"Using TensorFlow Lite to Deploy Deep Learning on Cortex-M Microcontrollers,"..."Using TensorFlow Lite to Deploy Deep Learning on Cortex-M Microcontrollers,"...
"Using TensorFlow Lite to Deploy Deep Learning on Cortex-M Microcontrollers,"...Edge AI and Vision Alliance
 
Building distribution packages with Docker
Building distribution packages with DockerBuilding distribution packages with Docker
Building distribution packages with DockerBruno Cornec
 
Training Ensimag OpenStack 2016
Training Ensimag OpenStack 2016Training Ensimag OpenStack 2016
Training Ensimag OpenStack 2016Bruno Cornec
 
Android ndk - Introduction
Android ndk  - IntroductionAndroid ndk  - Introduction
Android ndk - IntroductionRakesh Jha
 
2018 20 best id es for python programming
2018 20 best id es for python programming2018 20 best id es for python programming
2018 20 best id es for python programmingSyedBrothersRealEsta
 
Future of .NET - .NET on Non Windows Platforms
Future of .NET - .NET on Non Windows PlatformsFuture of .NET - .NET on Non Windows Platforms
Future of .NET - .NET on Non Windows PlatformsAniruddha Chakrabarti
 
A/B Linux updates with RAUC and meta-rauc-community: now & in the future
A/B Linux updates with RAUC and meta-rauc-community: now & in the futureA/B Linux updates with RAUC and meta-rauc-community: now & in the future
A/B Linux updates with RAUC and meta-rauc-community: now & in the futureLeon Anavi
 
Some wonderful Linux softwares for daily use
Some wonderful Linux softwares for daily useSome wonderful Linux softwares for daily use
Some wonderful Linux softwares for daily usearun.arwachin
 
Comparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation ToolsComparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation ToolsLeon Anavi
 
Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?Leon Anavi
 
Dr. Strangelove, or how I learned to love plugin development
Dr. Strangelove, or how I learned to love plugin developmentDr. Strangelove, or how I learned to love plugin development
Dr. Strangelove, or how I learned to love plugin developmentUlrich Krause
 
OpenCL - The Open Standard for Heterogeneous Parallel Programming
OpenCL - The Open Standard for Heterogeneous Parallel ProgrammingOpenCL - The Open Standard for Heterogeneous Parallel Programming
OpenCL - The Open Standard for Heterogeneous Parallel ProgrammingAndreas Schreiber
 
Java Webinar #9: “Raspberry Pi Platform for Java Programmers”
Java Webinar #9: “Raspberry Pi Platform for Java Programmers”Java Webinar #9: “Raspberry Pi Platform for Java Programmers”
Java Webinar #9: “Raspberry Pi Platform for Java Programmers”GlobalLogic Ukraine
 
Surfing on an Interactive Kiosk
Surfing on an Interactive KioskSurfing on an Interactive Kiosk
Surfing on an Interactive KioskLeon Anavi
 

Tendances (20)

"Using TensorFlow Lite to Deploy Deep Learning on Cortex-M Microcontrollers,"...
"Using TensorFlow Lite to Deploy Deep Learning on Cortex-M Microcontrollers,"..."Using TensorFlow Lite to Deploy Deep Learning on Cortex-M Microcontrollers,"...
"Using TensorFlow Lite to Deploy Deep Learning on Cortex-M Microcontrollers,"...
 
Building distribution packages with Docker
Building distribution packages with DockerBuilding distribution packages with Docker
Building distribution packages with Docker
 
Training Ensimag OpenStack 2016
Training Ensimag OpenStack 2016Training Ensimag OpenStack 2016
Training Ensimag OpenStack 2016
 
Android ndk - Introduction
Android ndk  - IntroductionAndroid ndk  - Introduction
Android ndk - Introduction
 
2018 20 best id es for python programming
2018 20 best id es for python programming2018 20 best id es for python programming
2018 20 best id es for python programming
 
Os Rego
Os RegoOs Rego
Os Rego
 
Future of .NET - .NET on Non Windows Platforms
Future of .NET - .NET on Non Windows PlatformsFuture of .NET - .NET on Non Windows Platforms
Future of .NET - .NET on Non Windows Platforms
 
A/B Linux updates with RAUC and meta-rauc-community: now & in the future
A/B Linux updates with RAUC and meta-rauc-community: now & in the futureA/B Linux updates with RAUC and meta-rauc-community: now & in the future
A/B Linux updates with RAUC and meta-rauc-community: now & in the future
 
Some wonderful Linux softwares for daily use
Some wonderful Linux softwares for daily useSome wonderful Linux softwares for daily use
Some wonderful Linux softwares for daily use
 
Comparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation ToolsComparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation Tools
 
Os Lattner
Os LattnerOs Lattner
Os Lattner
 
Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?
 
C presentation -python
C presentation -pythonC presentation -python
C presentation -python
 
Dr. Strangelove, or how I learned to love plugin development
Dr. Strangelove, or how I learned to love plugin developmentDr. Strangelove, or how I learned to love plugin development
Dr. Strangelove, or how I learned to love plugin development
 
Whats new in F14?
Whats new in F14?Whats new in F14?
Whats new in F14?
 
OpenCL - The Open Standard for Heterogeneous Parallel Programming
OpenCL - The Open Standard for Heterogeneous Parallel ProgrammingOpenCL - The Open Standard for Heterogeneous Parallel Programming
OpenCL - The Open Standard for Heterogeneous Parallel Programming
 
Java Webinar #9: “Raspberry Pi Platform for Java Programmers”
Java Webinar #9: “Raspberry Pi Platform for Java Programmers”Java Webinar #9: “Raspberry Pi Platform for Java Programmers”
Java Webinar #9: “Raspberry Pi Platform for Java Programmers”
 
Core os dna_oscon
Core os dna_osconCore os dna_oscon
Core os dna_oscon
 
Discovering the p2 API
Discovering the p2 APIDiscovering the p2 API
Discovering the p2 API
 
Surfing on an Interactive Kiosk
Surfing on an Interactive KioskSurfing on an Interactive Kiosk
Surfing on an Interactive Kiosk
 

Similaire à FMXLinux Introduction - Delphi's FireMonkey for Linux

December 2020 CIALUG: Local Kubernetes for Dummies-So you want to move on fro...
December 2020 CIALUG: Local Kubernetes for Dummies-So you want to move on fro...December 2020 CIALUG: Local Kubernetes for Dummies-So you want to move on fro...
December 2020 CIALUG: Local Kubernetes for Dummies-So you want to move on fro...Andrew Denner
 
Introduction to Linux for Windows Users
Introduction to Linux for Windows UsersIntroduction to Linux for Windows Users
Introduction to Linux for Windows UsersRobert McDermott
 
Vienna buchan calling the notes c-api from lotus_script
Vienna buchan calling the notes c-api from lotus_scriptVienna buchan calling the notes c-api from lotus_script
Vienna buchan calling the notes c-api from lotus_scriptBill Buchan
 
Install .Net Core, SQL Server V-Next on Linux and deploy .Net core applicatio...
Install .Net Core, SQL Server V-Next on Linux and deploy .Net core applicatio...Install .Net Core, SQL Server V-Next on Linux and deploy .Net core applicatio...
Install .Net Core, SQL Server V-Next on Linux and deploy .Net core applicatio...Ajith Ramawickrama
 
This one goes to 11!
This one goes to 11!This one goes to 11!
This one goes to 11!APNIC
 
FreeBSD - LinuxExpo
FreeBSD - LinuxExpoFreeBSD - LinuxExpo
FreeBSD - LinuxExpowebuploader
 
Overview of the new .NET Core and .NET Platform Standard
Overview of the new .NET Core and .NET Platform StandardOverview of the new .NET Core and .NET Platform Standard
Overview of the new .NET Core and .NET Platform StandardAlex Thissen
 
Raffaele Rialdi
Raffaele RialdiRaffaele Rialdi
Raffaele RialdiCodeFest
 
Moby Open Source Summit North America 2017
Moby Open Source Summit North America 2017Moby Open Source Summit North America 2017
Moby Open Source Summit North America 2017Patrick Chanezon
 
The Ultimate List of Opensource Software for #docker #decentralized #selfhost...
The Ultimate List of Opensource Software for #docker #decentralized #selfhost...The Ultimate List of Opensource Software for #docker #decentralized #selfhost...
The Ultimate List of Opensource Software for #docker #decentralized #selfhost...Panagiotis Galinos
 
Hillel kobrovski Linux security overview for ciso
Hillel kobrovski   Linux security overview for cisoHillel kobrovski   Linux security overview for ciso
Hillel kobrovski Linux security overview for cisoHillel Kobrovski
 
Connected Tizen: Bringing Tizen to Your Connected Devices Using the Yocto Pro...
Connected Tizen: Bringing Tizen to Your Connected Devices Using the Yocto Pro...Connected Tizen: Bringing Tizen to Your Connected Devices Using the Yocto Pro...
Connected Tizen: Bringing Tizen to Your Connected Devices Using the Yocto Pro...Samsung Open Source Group
 
Hacking with ARM Mobile devices on Linux
Hacking with ARM Mobile devices on LinuxHacking with ARM Mobile devices on Linux
Hacking with ARM Mobile devices on LinuxNetwalker lab kapper
 
History of L0phtCrack
History of L0phtCrackHistory of L0phtCrack
History of L0phtCrackcwysopal
 

Similaire à FMXLinux Introduction - Delphi's FireMonkey for Linux (20)

December 2020 CIALUG: Local Kubernetes for Dummies-So you want to move on fro...
December 2020 CIALUG: Local Kubernetes for Dummies-So you want to move on fro...December 2020 CIALUG: Local Kubernetes for Dummies-So you want to move on fro...
December 2020 CIALUG: Local Kubernetes for Dummies-So you want to move on fro...
 
Introduction to Linux for Windows Users
Introduction to Linux for Windows UsersIntroduction to Linux for Windows Users
Introduction to Linux for Windows Users
 
FreeBSD is not Linux
FreeBSD is not LinuxFreeBSD is not Linux
FreeBSD is not Linux
 
Vienna buchan calling the notes c-api from lotus_script
Vienna buchan calling the notes c-api from lotus_scriptVienna buchan calling the notes c-api from lotus_script
Vienna buchan calling the notes c-api from lotus_script
 
Install .Net Core, SQL Server V-Next on Linux and deploy .Net core applicatio...
Install .Net Core, SQL Server V-Next on Linux and deploy .Net core applicatio...Install .Net Core, SQL Server V-Next on Linux and deploy .Net core applicatio...
Install .Net Core, SQL Server V-Next on Linux and deploy .Net core applicatio...
 
This one goes to 11!
This one goes to 11!This one goes to 11!
This one goes to 11!
 
FreeBSD - LinuxExpo
FreeBSD - LinuxExpoFreeBSD - LinuxExpo
FreeBSD - LinuxExpo
 
Overview of the new .NET Core and .NET Platform Standard
Overview of the new .NET Core and .NET Platform StandardOverview of the new .NET Core and .NET Platform Standard
Overview of the new .NET Core and .NET Platform Standard
 
Raffaele Rialdi
Raffaele RialdiRaffaele Rialdi
Raffaele Rialdi
 
Linux OS presentation
Linux OS presentationLinux OS presentation
Linux OS presentation
 
Moby Open Source Summit North America 2017
Moby Open Source Summit North America 2017Moby Open Source Summit North America 2017
Moby Open Source Summit North America 2017
 
.Net Core
.Net Core.Net Core
.Net Core
 
What is the linux
What is the linuxWhat is the linux
What is the linux
 
The Ultimate List of Opensource Software for #docker #decentralized #selfhost...
The Ultimate List of Opensource Software for #docker #decentralized #selfhost...The Ultimate List of Opensource Software for #docker #decentralized #selfhost...
The Ultimate List of Opensource Software for #docker #decentralized #selfhost...
 
Hillel kobrovski Linux security overview for ciso
Hillel kobrovski   Linux security overview for cisoHillel kobrovski   Linux security overview for ciso
Hillel kobrovski Linux security overview for ciso
 
Connected Tizen: Bringing Tizen to Your Connected Devices Using the Yocto Pro...
Connected Tizen: Bringing Tizen to Your Connected Devices Using the Yocto Pro...Connected Tizen: Bringing Tizen to Your Connected Devices Using the Yocto Pro...
Connected Tizen: Bringing Tizen to Your Connected Devices Using the Yocto Pro...
 
Hacking with ARM Mobile devices on Linux
Hacking with ARM Mobile devices on LinuxHacking with ARM Mobile devices on Linux
Hacking with ARM Mobile devices on Linux
 
Resinio
ResinioResinio
Resinio
 
History of L0phtCrack
History of L0phtCrackHistory of L0phtCrack
History of L0phtCrack
 
Linux
LinuxLinux
Linux
 

Plus de Embarcadero Technologies

PyTorch for Delphi - Python Data Sciences Libraries.pdf
PyTorch for Delphi - Python Data Sciences Libraries.pdfPyTorch for Delphi - Python Data Sciences Libraries.pdf
PyTorch for Delphi - Python Data Sciences Libraries.pdfEmbarcadero Technologies
 
Introduction to Python GUI development with Delphi for Python - Part 1: Del...
Introduction to Python GUI development with Delphi for Python - Part 1:   Del...Introduction to Python GUI development with Delphi for Python - Part 1:   Del...
Introduction to Python GUI development with Delphi for Python - Part 1: Del...Embarcadero Technologies
 
Python for Delphi Developers - Part 1 Introduction
Python for Delphi Developers - Part 1 IntroductionPython for Delphi Developers - Part 1 Introduction
Python for Delphi Developers - Part 1 IntroductionEmbarcadero Technologies
 
RAD Industrial Automation, Labs, and Instrumentation
RAD Industrial Automation, Labs, and InstrumentationRAD Industrial Automation, Labs, and Instrumentation
RAD Industrial Automation, Labs, and InstrumentationEmbarcadero Technologies
 
Embeddable Databases for Mobile Apps: Stress-Free Solutions with InterBase
Embeddable Databases for Mobile Apps: Stress-Free Solutions with InterBaseEmbeddable Databases for Mobile Apps: Stress-Free Solutions with InterBase
Embeddable Databases for Mobile Apps: Stress-Free Solutions with InterBaseEmbarcadero Technologies
 
Rad Server Industry Template - Connected Nurses Station - Setup Document
Rad Server Industry Template - Connected Nurses Station - Setup DocumentRad Server Industry Template - Connected Nurses Station - Setup Document
Rad Server Industry Template - Connected Nurses Station - Setup DocumentEmbarcadero Technologies
 
Move Desktop Apps to the Cloud - RollApp & Embarcadero webinar
Move Desktop Apps to the Cloud - RollApp & Embarcadero webinarMove Desktop Apps to the Cloud - RollApp & Embarcadero webinar
Move Desktop Apps to the Cloud - RollApp & Embarcadero webinarEmbarcadero Technologies
 
Getting Started Building Mobile Applications for iOS and Android
Getting Started Building Mobile Applications for iOS and AndroidGetting Started Building Mobile Applications for iOS and Android
Getting Started Building Mobile Applications for iOS and AndroidEmbarcadero Technologies
 
ER/Studio 2016: Build a Business-Driven Data Architecture
ER/Studio 2016: Build a Business-Driven Data ArchitectureER/Studio 2016: Build a Business-Driven Data Architecture
ER/Studio 2016: Build a Business-Driven Data ArchitectureEmbarcadero Technologies
 
The Secrets of SQL Server: Database Worst Practices
The Secrets of SQL Server: Database Worst PracticesThe Secrets of SQL Server: Database Worst Practices
The Secrets of SQL Server: Database Worst PracticesEmbarcadero Technologies
 
Driving Business Value Through Agile Data Assets
Driving Business Value Through Agile Data AssetsDriving Business Value Through Agile Data Assets
Driving Business Value Through Agile Data AssetsEmbarcadero Technologies
 
Troubleshooting Plan Changes with Query Store in SQL Server 2016
Troubleshooting Plan Changes with Query Store in SQL Server 2016Troubleshooting Plan Changes with Query Store in SQL Server 2016
Troubleshooting Plan Changes with Query Store in SQL Server 2016Embarcadero Technologies
 
Agile, Automated, Aware: How to Model for Success
Agile, Automated, Aware: How to Model for SuccessAgile, Automated, Aware: How to Model for Success
Agile, Automated, Aware: How to Model for SuccessEmbarcadero Technologies
 
What's New in DBArtisan and Rapid SQL 2016
What's New in DBArtisan and Rapid SQL 2016What's New in DBArtisan and Rapid SQL 2016
What's New in DBArtisan and Rapid SQL 2016Embarcadero Technologies
 
Is This Really a SAN Problem? Understanding the Performance of Your IO Subsy...
Is This Really a SAN Problem? Understanding the Performance of  Your IO Subsy...Is This Really a SAN Problem? Understanding the Performance of  Your IO Subsy...
Is This Really a SAN Problem? Understanding the Performance of Your IO Subsy...Embarcadero Technologies
 
RAD Studio, Delphi and C++Builder 10 Feature Matrix
RAD Studio, Delphi and C++Builder 10 Feature MatrixRAD Studio, Delphi and C++Builder 10 Feature Matrix
RAD Studio, Delphi and C++Builder 10 Feature MatrixEmbarcadero Technologies
 

Plus de Embarcadero Technologies (20)

PyTorch for Delphi - Python Data Sciences Libraries.pdf
PyTorch for Delphi - Python Data Sciences Libraries.pdfPyTorch for Delphi - Python Data Sciences Libraries.pdf
PyTorch for Delphi - Python Data Sciences Libraries.pdf
 
Introduction to Python GUI development with Delphi for Python - Part 1: Del...
Introduction to Python GUI development with Delphi for Python - Part 1:   Del...Introduction to Python GUI development with Delphi for Python - Part 1:   Del...
Introduction to Python GUI development with Delphi for Python - Part 1: Del...
 
Python for Delphi Developers - Part 1 Introduction
Python for Delphi Developers - Part 1 IntroductionPython for Delphi Developers - Part 1 Introduction
Python for Delphi Developers - Part 1 Introduction
 
RAD Industrial Automation, Labs, and Instrumentation
RAD Industrial Automation, Labs, and InstrumentationRAD Industrial Automation, Labs, and Instrumentation
RAD Industrial Automation, Labs, and Instrumentation
 
Embeddable Databases for Mobile Apps: Stress-Free Solutions with InterBase
Embeddable Databases for Mobile Apps: Stress-Free Solutions with InterBaseEmbeddable Databases for Mobile Apps: Stress-Free Solutions with InterBase
Embeddable Databases for Mobile Apps: Stress-Free Solutions with InterBase
 
Rad Server Industry Template - Connected Nurses Station - Setup Document
Rad Server Industry Template - Connected Nurses Station - Setup DocumentRad Server Industry Template - Connected Nurses Station - Setup Document
Rad Server Industry Template - Connected Nurses Station - Setup Document
 
TMS Google Mapping Components
TMS Google Mapping ComponentsTMS Google Mapping Components
TMS Google Mapping Components
 
Move Desktop Apps to the Cloud - RollApp & Embarcadero webinar
Move Desktop Apps to the Cloud - RollApp & Embarcadero webinarMove Desktop Apps to the Cloud - RollApp & Embarcadero webinar
Move Desktop Apps to the Cloud - RollApp & Embarcadero webinar
 
Useful C++ Features You Should be Using
Useful C++ Features You Should be UsingUseful C++ Features You Should be Using
Useful C++ Features You Should be Using
 
Getting Started Building Mobile Applications for iOS and Android
Getting Started Building Mobile Applications for iOS and AndroidGetting Started Building Mobile Applications for iOS and Android
Getting Started Building Mobile Applications for iOS and Android
 
Embarcadero RAD server Launch Webinar
Embarcadero RAD server Launch WebinarEmbarcadero RAD server Launch Webinar
Embarcadero RAD server Launch Webinar
 
ER/Studio 2016: Build a Business-Driven Data Architecture
ER/Studio 2016: Build a Business-Driven Data ArchitectureER/Studio 2016: Build a Business-Driven Data Architecture
ER/Studio 2016: Build a Business-Driven Data Architecture
 
The Secrets of SQL Server: Database Worst Practices
The Secrets of SQL Server: Database Worst PracticesThe Secrets of SQL Server: Database Worst Practices
The Secrets of SQL Server: Database Worst Practices
 
Driving Business Value Through Agile Data Assets
Driving Business Value Through Agile Data AssetsDriving Business Value Through Agile Data Assets
Driving Business Value Through Agile Data Assets
 
Troubleshooting Plan Changes with Query Store in SQL Server 2016
Troubleshooting Plan Changes with Query Store in SQL Server 2016Troubleshooting Plan Changes with Query Store in SQL Server 2016
Troubleshooting Plan Changes with Query Store in SQL Server 2016
 
Great Scott! Dealing with New Datatypes
Great Scott! Dealing with New DatatypesGreat Scott! Dealing with New Datatypes
Great Scott! Dealing with New Datatypes
 
Agile, Automated, Aware: How to Model for Success
Agile, Automated, Aware: How to Model for SuccessAgile, Automated, Aware: How to Model for Success
Agile, Automated, Aware: How to Model for Success
 
What's New in DBArtisan and Rapid SQL 2016
What's New in DBArtisan and Rapid SQL 2016What's New in DBArtisan and Rapid SQL 2016
What's New in DBArtisan and Rapid SQL 2016
 
Is This Really a SAN Problem? Understanding the Performance of Your IO Subsy...
Is This Really a SAN Problem? Understanding the Performance of  Your IO Subsy...Is This Really a SAN Problem? Understanding the Performance of  Your IO Subsy...
Is This Really a SAN Problem? Understanding the Performance of Your IO Subsy...
 
RAD Studio, Delphi and C++Builder 10 Feature Matrix
RAD Studio, Delphi and C++Builder 10 Feature MatrixRAD Studio, Delphi and C++Builder 10 Feature Matrix
RAD Studio, Delphi and C++Builder 10 Feature Matrix
 

Dernier

Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfCionsystems
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....ShaimaaMohamedGalal
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 

Dernier (20)

Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdf
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 

FMXLinux Introduction - Delphi's FireMonkey for Linux

  • 1. Slides, replay and more https://embt.co/FMXLinuxIntro Introduction to FMXLinux Delphi’s FireMonkey for Linux Solution Jim McKeeth Embarcadero Technologies jim.mckeeth@embarcadero.com Chief Developer Advocate & Engineer
  • 2. Your Presenter: Jim McKeeth Embarcadero Technologies jim.mckeeth@embarcadero.com | @JimMcKeeth Chief Developer Advocate & Engineer
  • 3. Agenda • Overview • Installation • Supported platforms • PAServer • SDK & Packages • Usage • UI Elements • Samples • Database Access FireDAC • Migrating from Windows VCL • midaconverter.com • 3rd Party Support • Broadway Web
  • 4. Why FMX on Linux? • Education - Save money on Windows licenses • Kiosk or Point of Sale - Single purpose computers with locked down user interfaces • Security - Linux offers more security options • IoT & Industrial Automation - Add user interfaces for integrated systems • Federal Government - Many govt systems require Linux support • Choice - Now you can, so might as well!
  • 5. Delphi for Linux History • 1999 Kylix: aka Delphi for Linux, introduced • It was a port of the IDE to Linux • Linux x86 32-bit compiler • Used the Trolltech QT widget library • 2002 Kylix 3 was the last update to Kylix • 2017 Delphi 10.2 “Tokyo” introduced Delphi for x86 64-bit Linux • IDE runs on Windows, cross compiles to Linux via the PAServer • Designed for server side development - no desktop widget GUI library • 2017 Eugene Kryukov of KSDev release FMXLinux • Eugene was one of the original architects of FireMonkey • A modification of FireMonkey, bringing FMX to Linux • 2019 Embarcadero includes FMXLinux with Delphi 10.3.2 “Rio” Terracotta kylix (drinking cup) - public domain image https://www.metmuseum.org/art/collection/search/255939
  • 6. FMXLinux Overview • Eugene Kryukov of KSDev created FMXLinux • Eugene was one of the original architects of FireMonkey • The installation modifies FireMonkey and adds additional libraries • FMXLinux still uses the same Delphi compiler for x86 64-bit Linux • It does not support ARM Linux like the Raspberry Pi • The IDE runs on Windows and connects to Linux via PAServer • Uses the same FireMonkey framework and components from Windows, macOS, Android and iOS • Works with the RTL, FireDAC, Live Bindings, and other Delphi libraries • Included with RAD Studio & Delphi 10.3.1 “Rio” and newer under Update Subscription • docwiki.embarcadero.com/RADStudio/en/FireMonkey_for_Linux
  • 7. FireMonkey & VCL - FMXLinux vs. CrossVCL • KSDev also makes CrossVCL which allows VCL on Linux and macOS • Embarcadero includes FMXLinux with Delphi & RAD Studio 10.3.1+ • Why? • FireMonkey is designed to be cross platform • FMXLinux mades more sense as a Linux GUI solution • You are still able to purchase CrossVCL from KSDev at crossvcl.com • If you have an existing VCL application you want to bring to Linux try midaconverter.com to first convert it to FireMonkey
  • 9. FMXLinux Installation Overview • Available via GetIt • For Delphi or RAD Studio Rio 10.3.1+ with active Update Subscription • Supported Platforms • Must be x86 64-bit Linux Desktop (or server with Desktop installed) • Officially: Ubuntu 18.04 LTS, Ubuntu 16.04 LTS, Ubuntu 14.04 LTS, and RedHat Enterprise Linux (version 7) • docwiki.embarcadero.com/PlatformStatus/en/Main_Page • docwiki.embarcadero.com/RADStudio/en/Supported_Target_Platforms • Unofficially: Most any Linux if you install the right packages in the right place • List of 134 successfully test distros (YMMV) bitbucket.org/crossvcl/fmxlinux/issues/130/controlsdemo-test-on-different-linux • Known to fail on 4: KNOPPIX 8.1, 4MLinux 27.0, elementary OS 5.0, & GALPon MiniNo Queiles 3.1 • Still uses PAServer & requires SDK & Packages installed and setup
  • 10. 134 Successfully Tested Linux Distros ALT Linux 8.2; Antergos 17.11.; antiX 17.2; ArchBang Linux Winter 0112; Archman KDE Plasma 2019.02; ArcoLinux v18.11.2; Argent KDE Plasma 1.5.2; Artix Linux LXQT 2018.10.13; AryaLinux 1.0 XFCE; Asril OS 7.0 Lare; AUSTRUMI 3.9.0; AV Linux (2018.06.25); B2D Desktop 2019 V1.0.5 XFCE; BackBox Linux 5.2; Berry Linux 1.30; BigLinux 7.10; Bionicpup64 8.0 CE; BlackArch Linux 2018.12.01; Black Lab Enterprise Linux 8; blackPanther OS v18.1; BlackWeb 1.2; BlankOn 11.0.1; Bluestar Linux 4.19.2; Bodhi Linux 5.0.0; BunsenLabs Linux Helium; CAELinux 2018; CAINE 10.0; Calculate Linux 18; CentOS 7; ChaletOS 16.04.2; Chakra GNU/Linux 2019.01; Condres OS 2019.03 Gnome Edition; Debian 9.1; Deepin 15.4.1; Devuan 2.0.0 ASCII; DuZeru; EasyOS 1.0.8; Endless OS 3.5; ExTiX 19.0; EducatuX 9.8; Enso 0.3.1; ETi-pup 5.1.6; Fatdog64 Linux 800; Fedora 26; Feren OS (July 2018); Freespire 4.5.; GeckoLinux Static Plasma; Gentoo Linux 2016.07.04; Greenie Linux 18.04.0.2; Grml 2018.12; GoboLinux 016.01; Hamara Sugam 2.1; Kali Linux 2017.2; Kanotix Steelfire KDE; KaOS 2018.01; KDE neon; Kubuntu 18.10; KXStudio 14.04.5; Linspire 8.0 RC1; Linux Kodachi 5.2; Linux Lite 4.2; Linux Mint 18.1; Lubuntu 17.10; LuninuX OS 17.04; LXLE Linux 16.04.4; Mageia 6.1; MakuluLinux 15 Flash Edition; Manjaro Linux 17.0; Maui Linux 17.06; MAX: Madrid_Linux 10.0; MAZON OS 1.4.3.l; MorpheusArch Linux 2018.4; MX Linux 17.1; Namib GNU/Linux Budgie 18.08; Neptune 5.6; Nova 6.0; NuTyX MATE 10.4; OpenMandriva Lx 3.0; openSUSE Leap 42.2; Oracle Linux 7.6; OSGeoLive 12.0; Pardus 17.4 XFCE; Parrot Studio 3.8; PCLinuxOS 2017.07; Peach OSI 16.04 TW; Pearl Linux MATE 7.0; PelicanHPC GNU Linux 4.1 XFCE; Pentoo 2018.0; Peppermint 9; Pinguy OS 18.04.1; Pisi Linux 2.1 ATA; Plop Linux 4.3.9; Pop!_OS 18.10; Porteus 4.0 MATE; Poseidon Linux 9 MB2315; Q4OS 2.6 Scorpion; Rebellin Linux 3.5 Gnome; Redcore Linux Hardened 1806; Red Hat Enterprise Linux 7; Refracta 8.3; Resilient Linux 1.0; Robolinux Cinnamon 10.3; ROSA Fresh KDE R10; Runtu LITE 18.04; Sabayon Linux 18.05 GNOME Edition; SalentOS 2.0; Salix Xfce 14.2; Scientific Linux 7.4; SELKS 4.0; Septor-2019; SharkLinux 4.15.0-39; siduction 18.3.0 XFCE; Slax 9.8.0; Slackel 7.1; Slontoo 18.07.1 MATE; Solus 3 GNOME; SolydXK 201902; SparkyLinux 4.9; SuliX Professional 8; SuperX 5.0; SwagArch GNU/Linux 18.12; Tails 3.10.1; Trisquel 8.0 LTS Flidas; Tsurugi Linux Lab 2018.1; Ubuntu 16.10; Ubuntu Budgie 18.04.1; Ubuntu MATE 18.04.1; Ubuntu Studio 18.10; Ultimate Edition 5.0; Uruk GNU/Linux 2.0 XFCE; Void Linux MATE (2018.11.11.); Voyager 18.04 LTS; Xubuntu 18.04; Zorin OS 12.1 Core
  • 11. Working Platforms Personally Tested • elementary OS 5.0 “Juno” • Red Hat Enterprise Linux 8 • Mint 19.1 • Bionic Puppy Linux 8 • Deepin 15 • Debian 9 • Manjaro 18 • Zorin 12.4 • MX Linux 18.3 • openSUSE Leap 15.1 • CentOS 7 • Fedora 30 • Ubuntu 18.04.2 LTS
  • 12. Installation ● Available via GetIt ● Delphi or RAD Studio ● Rio 10.3.1+ ● Update Subscription required Samples installs to C:UsersPublicDocumentsEmbarcaderoStudio 20.0SamplesObject PascalFMX Linux Samples Cursors CustomFont CustomIcon EventSim FontList GetFileIcon GtkWindow Screenshot ShellApi WebScript FMXLinux installs to C:UsersPublicDocumentsEmbarcaderoStudio 20.0CatalogRepositoryFMXLinux-1.41
  • 13. Ubuntu 18.04.2 LTS “Bionic Beaver” Download Link ubuntu.com/download/desktop Update sudo apt-get update -y && sudo apt-get full-upgrade -y Install Dev Packages sudo apt-get install build-essential wget p7zip-full Clean-up sudo apt-get autoremove && sudo apt-get autoclean
  • 14. Download & Install (Requires creating an account) • developers.redhat.com/rhel8/ • developers.redhat.com/rhel8/install-rhel8/ Update (Requires Red Hat account) sudo subscription-manager register --auto-attach sudo yum repolist sudo yum update Install Dev Packages sudo yum groupinstall 'Development Tools' Firewall for PAServer sudo firewall-cmd --zone=public --add-port=64211/tcp --permanent sudo firewall-cmd --reload
  • 15. • PAServer connects the IDE to Linux • Copy from your install, or download • Full instructions docwiki.embarcadero.com/RADStudio/en/Installing_the_Platform_Assistant_on_Linux To install from the web . . .. cd ~ wget http://altd.embarcadero.com/releases/studio/20.0/PAServer/Release1/LinuxPAServer20.0.tar.gz tar -xvf LinuxPAServer20.0.tar.gz rm LinuxPAServer20.0.tar.gz mv PAServer-20.0/ PAServer/ PAServer/paserver PAServer Install
  • 17. Using FMXLinux • Open new or existing FireMonkey application • New projects need to be saved • Right click on the Project in the Project Manager • Choose “Add Linux Platform” • Linux is now included as a platform • Make sure the Linux Platform and SDK are setup correctly • Once the SDK is imported, a Linux platform is no longer needed to build (unlike iOS) • You could manually copy SDK from another computer
  • 18. Connection Profile Manager - 1 • Tools -> Options -> Deployment -> Connection Profile Manager • Click [Add] • Provide • Profile name • Platform • Host Address • Port number • Password (optional)
  • 19. Connection Profile Manager - 2 • Tools -> Options -> Deployment -> Connection Profile Manager • Click [Add] • Provide • Profile name • Platform • Host Address • Port number • Password (optional) 1 2
  • 20. SDK Manager - 1 • Tools -> Options -> Deployment -> SDK Manager • Click [Add] • Select • Platform • Connection • SDK Version • Wait while the SDK imports
  • 21. SDK Manager - 2 • Typically need only one Linux SDK to support multiple Linux distros • You can typically replace existing files during import (I always click “Yes to all”) • Pay attention if you get missing folder in the log file. It might indicate you didn’t install the dev packages on Linux
  • 22. Troubleshooting SDK Import • The import is based on defaultsdkpaths files found in the bin folder • C:Program Files (x86)EmbarcaderoStudio20.0bin • In 10.3.1 Linux has 3 different definitions (in XML format) • Linux64.defaultsdkpaths • rhel7.2.defaultsdkpaths • ubuntu14.4.defaultsdkpaths • If a file is missing during build or there is an error in the log • Figure out how to install it on Linux • Use the Linux find command to figure out where it is installed • Modify your defaultsdkpaths files to point to the correct locations • Use [Update Local File Cache] button once changes are made • If the update still doesn’t work, manually delete the folder • C:Users[user]DocumentsEmbarcaderoStudioSDKs[platform] • Then delete the SDK entry and import it again
  • 24. Samples • Cursors - Capturing the desktop cursor image • CustomFont - Using a custom font • CustomIcon - Changing the main window font icon • EventSim - Simulate keyboard and mouse events • FontList - List installed fonts • GetFileIcon - Display the icon for a file • GtkWindow - Use GTK directly to manipulate a window • Screenshot - Take a screenshot of the desktop • ShellApi - Open URLs and Files with associated programs • FmxWebScript - Use FireMonkey to draw graphics in a web CGI-BIN Samples installed to C:UsersPublicDocumentsEmbarcaderoStudio 20.0SamplesObject PascalFMX Linux Samples
  • 25. Note About CustomFont Sample • The font file passed to the FmuxAddCustomFont call must exist locally • You can use the Deployment manager to deploy it to Linux • Side note about libfmux.so • You might see libfmux.so in some of the deployment manager for some samples, or a warning about it while building • It is an artifact from when the library was dynamically linked • It is statically linked now, and no longer needed
  • 26. Note About GtkWindow Sample • The GtkWindow Sample has early bound dynamic linking procedure gtk_window_set_title(window: Pointer; title: PUtf8Char); cdecl; external 'libgtk-3.so.0'; • You might get an error on linking (something like) ld-linux.exe: error: cannot find -lgtk-3 undefined reference to 'gtk_window_set_title' • The solution: Install libgtk-3-dev and update the SDK’s Local File Cache sudo apt-get install libgtk-3-dev
  • 27. Note About CustomIcon Sample • The new icon is loaded as a resource • Project -> Resources & Images • PNG File • Identifier MAINICON • Resource type RCDATA • Include the dres in the dpr file • {$R *.dres}
  • 28. Creating an Icon Launcher aka [Desktop Entry] • Create a .desktop file to customize the icon (like a Windows shortcut) • Used by both Gnome, KDE, etc. • The .desktop file must have execute permissions • To show up in the Application list, copy to either • ~/.local/share/applications • /usr/share/applications • Sample: #!/usr/bin/env xdg-open [Desktop Entry] Version=1.0 Name=My FMXLinux Program Comment=I made this program with Delphi and FMXLinux! Exec=/home/jim/PAServer/scratch-dir/jim-Ubuntu/CoolApp/CoolApp Path=/home/jim/PAServer/scratch-dir/jim-Ubuntu/CoolApp/ Icon=/home/jim/PAServer/scratch-dir/jim-Ubuntu/CoolApp/MainIcon.svg Terminal=false Type=Application Categories=Utility;Development; https://wiki.archlinux.org/index.php/Desktop_entries https://specifications.freedesktop.org/desktop-entry-spec/latest/ *.png *.svg
  • 29. Media Player • Requires the free VLC installed on Linux • Fedora 30/29/28 • sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm • sudo dnf install vlc • CentOS/RHEL 7 • sudo rpm -Uvh http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm • sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm • yum install vlc • Ubuntu / Debian • sudo apt-get install vlc
  • 30. Using FMX to Generate Web Server Graphics • This is different than the Broadway server that serves the entire UI • Allows you to use FMX to generate graphics and effects via CGI-BIN • Create a standard Apache module • Linux dependencies • sudo apt install libgl1-mesa-glx libglu1-mesa libgtk-3-common libgstreamer1.0 libgstreamer-plugins-base1.0 • More information ksdev.blogspot.com/2017/12/using-firemonkey-graphics-in-cgi-script.html
  • 31. HTML5 Web Deployment ● Install Required Libs: sudo apt install xorg libgl1-mesa-dev libosmesa-dev libgtk-3-bin ● Start broadway server: broadwayd ● Run application with: GDK_BACKEND=broadway ./myapp ● Load [ip]:8080 in the browser ● Note: Only supports a single user instance at a time ● Broadway is a feature of GTK+ ● For more information developer.gnome.org/gtk3/stable/gtk-broadway.html
  • 32. Current Select 3rd Party Support • TScene - github.com/eugenekryukov/TScene - Isolated buffered container control • TMS FMX UI Pack - tmssoftware.com/site/tmsfmxpack.asp - Set of highly configurable and styleable components • Steema TeeChart - steema.com - Hundreds of Graph styles in 2D and 3D for data visualization, 56 mathematical, statistical and financial Functions, with an unlimited number of axes • Steema TeeGrid - www.steema.com - Lightweight and fully-featured grid control (not derived from TCustomGrid or TGrid) • Woll2Woll FirePower - woll2woll.com/firepower - The most critical components for building professional desktop and mobile user-interfaces • HTML Component Library - delphihtmlcomponents.com - HTML Component Library is a cross-platform and 100% native HTML/CSS rendering library • TatukGIS Developer Kernel 11 - tatukgis.com - Professional grade geographic information system (GIS) SDK for desktop and mobile
  • 33. QUESTIONS! : @embarcaderotech : Embarcadero Technologies FREE 30 Day Trial Architect Edition on our website! Slides, replay and more https://embt.co/FMXLinuxIntro