mirror of
https://github.com/veeso/termscp.git
synced 2025-12-06 17:15:35 -08:00
termscp site
This commit is contained in:
BIN
site/assets/images/explorer.gif
Normal file
BIN
site/assets/images/explorer.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.1 MiB |
BIN
site/assets/images/favicon-16x16.png
Normal file
BIN
site/assets/images/favicon-16x16.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 879 B |
BIN
site/assets/images/favicon-32x32.png
Normal file
BIN
site/assets/images/favicon-32x32.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.6 KiB |
BIN
site/assets/images/favicon-96x96.png
Normal file
BIN
site/assets/images/favicon-96x96.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.8 KiB |
BIN
site/assets/images/og_preview.jpg
Normal file
BIN
site/assets/images/og_preview.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 81 KiB |
BIN
site/assets/images/termscp.webp
Normal file
BIN
site/assets/images/termscp.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8.0 KiB |
BIN
site/assets/videos/explorer.mp4
Normal file
BIN
site/assets/videos/explorer.mp4
Normal file
Binary file not shown.
45
site/css/get-started.css
Normal file
45
site/css/get-started.css
Normal file
@@ -0,0 +1,45 @@
|
||||
.start h1 {
|
||||
font-size: 2.5em;
|
||||
}
|
||||
|
||||
.start h2 {
|
||||
font-size: 2em;
|
||||
}
|
||||
|
||||
.start h3 {
|
||||
font-size: 1.6em;
|
||||
}
|
||||
|
||||
.start h2 i,
|
||||
h3 i {
|
||||
color: #606060;
|
||||
}
|
||||
|
||||
.start .sub-system {
|
||||
padding: 0px 2em;
|
||||
}
|
||||
|
||||
.start .sub-system .installation {
|
||||
padding: 0px 2em;
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
.start .installation {
|
||||
padding: 2px 4em;
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
.start .installation p {
|
||||
font-size: 1.3em;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.start .installation li {
|
||||
font-size: 1.1em;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.start .installation a {
|
||||
text-decoration: none;
|
||||
color: dodgerblue;
|
||||
}
|
||||
121
site/css/intro.css
Normal file
121
site/css/intro.css
Normal file
@@ -0,0 +1,121 @@
|
||||
/** Intro */
|
||||
|
||||
.intro {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.intro .title {
|
||||
font-size: 5em;
|
||||
}
|
||||
|
||||
.intro .logo {
|
||||
border-radius: 25%;
|
||||
height: auto;
|
||||
width: 256px;
|
||||
}
|
||||
|
||||
.intro .caption {
|
||||
font-size: 2em;
|
||||
font-weight: 300;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.intro .get-started {
|
||||
background-color: #404040;
|
||||
border-radius: 0.5em;
|
||||
color: snow;
|
||||
font-size: 1.5em;
|
||||
}
|
||||
|
||||
.intro .get-started a {
|
||||
color: snow;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.intro .features {
|
||||
align-content: stretch;
|
||||
align-items: flex-start;
|
||||
border-top: 1px solid #eee;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
margin-top: 2.5rem;
|
||||
padding: 1.2rem 0;
|
||||
}
|
||||
|
||||
.intro .feature {
|
||||
flex: auto;
|
||||
}
|
||||
|
||||
@media (min-width: 600px) {
|
||||
.intro .feature {
|
||||
flex-grow: 1;
|
||||
flex-basis: 30%;
|
||||
max-width: 30%;
|
||||
}
|
||||
}
|
||||
|
||||
.intro .feature h3 {
|
||||
color: #101010;
|
||||
font-size: 1.5em;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.intro .feature p {
|
||||
color: #303030;
|
||||
}
|
||||
|
||||
.intro .preview {
|
||||
border-radius: 5px;
|
||||
padding: 5% 10%;
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
.intro .preview video {
|
||||
height: auto;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.intro .discover {
|
||||
align-content: stretch;
|
||||
align-items: flex-start;
|
||||
border-top: 1px solid #eee;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
margin-left: 0;
|
||||
margin-top: 2.5rem;
|
||||
padding: 1.2rem 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
@media (min-width: 600px) {
|
||||
.intro .discover {
|
||||
margin-left: 20%;
|
||||
width: 60%;
|
||||
}
|
||||
}
|
||||
|
||||
.intro .discover .hook {
|
||||
flex-grow: 1;
|
||||
flex-basis: 30%;
|
||||
font-size: 1.5em;
|
||||
max-width: 30%;
|
||||
}
|
||||
|
||||
.intro .discover .hook a {
|
||||
text-decoration: none;
|
||||
color: #404040;
|
||||
}
|
||||
|
||||
.intro .discover .hook a i {
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
.intro .discover .hook a {
|
||||
transition: all 0.4s ease-in;
|
||||
}
|
||||
|
||||
.intro .discover .hook a:hover {
|
||||
color: dodgerblue;
|
||||
}
|
||||
179
site/css/main.css
Normal file
179
site/css/main.css
Normal file
@@ -0,0 +1,179 @@
|
||||
html {
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
|
||||
Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
|
||||
}
|
||||
|
||||
pre {
|
||||
font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
|
||||
padding: 16px;
|
||||
overflow: auto;
|
||||
font-size: 85%;
|
||||
line-height: 1.45;
|
||||
color: #d0d0d0;
|
||||
background-color: #222629;
|
||||
border-radius: 3px;
|
||||
word-wrap: normal;
|
||||
border-radius: 0.5em;
|
||||
}
|
||||
|
||||
pre .function {
|
||||
color: #f08d49;
|
||||
}
|
||||
|
||||
pre .string {
|
||||
color: #7ec699;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5 {
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
header {
|
||||
margin: 0 2em 0 0;
|
||||
}
|
||||
|
||||
.img-circle {
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.pull-left {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.pull-right {
|
||||
float: right;
|
||||
}
|
||||
|
||||
section.page {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
border-top: 1px solid #aaa;
|
||||
display: inline-block;
|
||||
padding-bottom: 2em;
|
||||
}
|
||||
|
||||
section.page hr {
|
||||
margin: 1em 0 1em 0;
|
||||
}
|
||||
|
||||
.container {
|
||||
width: 90%;
|
||||
height: auto;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.container header a {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
border-bottom: dotted 1px #80808080;
|
||||
cursor: text;
|
||||
}
|
||||
|
||||
.container header a i {
|
||||
color: #606060;
|
||||
}
|
||||
|
||||
/** Footer */
|
||||
|
||||
footer {
|
||||
text-align: center;
|
||||
background-color: #eee;
|
||||
padding: 1em;
|
||||
}
|
||||
|
||||
footer .contacts {
|
||||
list-style: none;
|
||||
cursor: default;
|
||||
margin-block-start: 0;
|
||||
padding-inline-start: 0;
|
||||
}
|
||||
|
||||
footer .contacts li {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
footer .contacts a {
|
||||
border: 0;
|
||||
font-size: 3em;
|
||||
color: #606060;
|
||||
display: inline-block;
|
||||
width: 2em;
|
||||
height: 2em;
|
||||
line-height: 2em;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
footer .contacts a i {
|
||||
transition: all 0.4s ease-in;
|
||||
}
|
||||
|
||||
footer .contacts li a:hover i {
|
||||
color: dodgerblue !important;
|
||||
}
|
||||
|
||||
footer p.copyright {
|
||||
color: #404040;
|
||||
font-weight: 300;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.alert {
|
||||
border: 1px solid transparent;
|
||||
border-radius: 0.25rem;
|
||||
margin-top: 1rem;
|
||||
margin-bottom: 1rem;
|
||||
padding: 0.5rem;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.alert-center {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.alert-warning {
|
||||
background-color: #fff3cd;
|
||||
border-color: #ffeeba;
|
||||
color: #856404;
|
||||
}
|
||||
|
||||
.alert-danger {
|
||||
background-color: #f8d7da;
|
||||
border-color: #f5c6cb;
|
||||
color: #721c24;
|
||||
}
|
||||
|
||||
.alert-success {
|
||||
background-color: #d4edda;
|
||||
border-color: #c3e6cb;
|
||||
color: #155724;
|
||||
}
|
||||
|
||||
.alert-primary {
|
||||
background-color: #cce5ff;
|
||||
border-color: #b8daff;
|
||||
color: #004085;
|
||||
}
|
||||
|
||||
/* ko-fi */
|
||||
.floatingchat-container-wrap {
|
||||
left: auto !important;
|
||||
right: 16px !important;
|
||||
}
|
||||
|
||||
.floating-chat-kofi-popup-iframe {
|
||||
left: auto !important;
|
||||
right: 16px !important;
|
||||
}
|
||||
97
site/css/markdown.css
Normal file
97
site/css/markdown.css
Normal file
@@ -0,0 +1,97 @@
|
||||
.markdown {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
.markdown a {
|
||||
color: dodgerblue;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.markdown a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.markdown p {
|
||||
color: #202020;
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
.markdown h1 {
|
||||
font-size: 2em;
|
||||
}
|
||||
|
||||
.markdown h2 {
|
||||
font-size: 1.6em;
|
||||
}
|
||||
|
||||
.markdown h3 {
|
||||
font-size: 1.4em;
|
||||
}
|
||||
|
||||
.markdown h4 {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
.markdown img {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@media (min-width: 600px) {
|
||||
.markdown img {
|
||||
display: block;
|
||||
width: 60%;
|
||||
margin-left: 20%;
|
||||
}
|
||||
}
|
||||
|
||||
.markdown blockquote {
|
||||
border-left: 0.25em solid #ccc;
|
||||
color: #606060;
|
||||
font-size: 90%;
|
||||
padding: 0.1em;
|
||||
padding-left: 0.5em;
|
||||
}
|
||||
|
||||
.markdown blockquote p {
|
||||
color: #606060;
|
||||
}
|
||||
|
||||
.markdown pre code {
|
||||
background-color: inherit;
|
||||
font-size: 100%;
|
||||
}
|
||||
|
||||
.markdown code {
|
||||
background-color: #eee;
|
||||
border-radius: 6px;
|
||||
font-size: 85%;
|
||||
padding: 0.2em 0.4em;
|
||||
}
|
||||
|
||||
.markdown table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
display: block;
|
||||
height: fit-content;
|
||||
max-width: 100%;
|
||||
overflow: auto;
|
||||
width: max-content;
|
||||
}
|
||||
|
||||
.markdown table tr {
|
||||
border-top: 1px solid #c6cbd1;
|
||||
}
|
||||
|
||||
.markdown table tr {
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
.markdown table tr:nth-child(even) {
|
||||
background-color: #dfe2e5;
|
||||
}
|
||||
|
||||
.markdown table td,
|
||||
.markdown table th {
|
||||
border: 1px solid #c6cbd1;
|
||||
padding: 6px 13px;
|
||||
}
|
||||
268
site/css/menu.css
Normal file
268
site/css/menu.css
Normal file
@@ -0,0 +1,268 @@
|
||||
/** Menu */
|
||||
|
||||
#menu {
|
||||
margin-left: -20vw; /* "#menu" width */
|
||||
width: 20vw;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
z-index: 1000; /* so the menu or its navicon stays above all content */
|
||||
background: #f0f0f0;
|
||||
overflow-y: auto;
|
||||
}
|
||||
/*
|
||||
All anchors inside the menu should be styled like this.
|
||||
*/
|
||||
#menu a {
|
||||
color: #606060;
|
||||
border: none;
|
||||
padding: 0.6em 0 0.6em 0.6em;
|
||||
font-size: 1.4em;
|
||||
}
|
||||
|
||||
/*
|
||||
Remove all background/borders, since we are applying them to #menu.
|
||||
*/
|
||||
#menu .pure-menu,
|
||||
#menu .pure-menu ul {
|
||||
border: none;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/*
|
||||
Add that light border to separate items into groups.
|
||||
*/
|
||||
#menu .pure-menu ul,
|
||||
#menu .pure-menu .menu-item-divided {
|
||||
border-top: 1px solid #808080;
|
||||
}
|
||||
|
||||
#menu .pure-menu i {
|
||||
margin-right: 1ch;
|
||||
}
|
||||
|
||||
#menu .pure-menu-item i {
|
||||
font-size: 0.6em;
|
||||
}
|
||||
|
||||
/*
|
||||
Change color of the anchor links on hover/focus.
|
||||
*/
|
||||
#menu .pure-menu li a:hover,
|
||||
#menu .pure-menu li a:focus {
|
||||
background: #ccc;
|
||||
}
|
||||
|
||||
/*
|
||||
This styles the selected menu item `<li>`.
|
||||
*/
|
||||
#menu .pure-menu-selected {
|
||||
background: #ddd;
|
||||
}
|
||||
|
||||
#menu .pure-menu-selected i {
|
||||
color: dodgerblue;
|
||||
}
|
||||
|
||||
/*
|
||||
This styles a link within a selected menu item `<li>`.
|
||||
*/
|
||||
#menu .pure-menu-selected a {
|
||||
color: dodgerblue;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
/*
|
||||
This styles the menu heading.
|
||||
*/
|
||||
#menu .pure-menu-heading {
|
||||
color: #202020;
|
||||
margin: 0;
|
||||
margin: 10% 5% 10% 5%;
|
||||
position: relative;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
#menu .pure-menu-heading .avatar {
|
||||
width: 30%;
|
||||
border-radius: 0.5em;
|
||||
}
|
||||
|
||||
#menu .pure-menu-heading h1 {
|
||||
font-size: 1.4em;
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
#menu .pure-menu-heading p {
|
||||
color: #404040;
|
||||
font-size: 1.1em;
|
||||
font-weight: 300;
|
||||
text-transform: none;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
#menu .pure-menu-bottom {
|
||||
bottom: 0;
|
||||
display: none;
|
||||
left: 0;
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
@media (min-width: 640px) {
|
||||
#menu .pure-menu-bottom {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
#menu .pure-menu-bottom a {
|
||||
font-size: 1.5em;
|
||||
color: #606060;
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
border: 0;
|
||||
text-decoration: none;
|
||||
text-align: center;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
#menu .pure-menu-bottom a:hover {
|
||||
color: #404040;
|
||||
}
|
||||
|
||||
#menu .pure-menu-bottom ul {
|
||||
list-style: none;
|
||||
cursor: default;
|
||||
margin-block-start: 0;
|
||||
padding-inline-start: 0;
|
||||
}
|
||||
|
||||
#menu .pure-menu-bottom ul li {
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* -- Dynamic Button For Responsive Menu -------------------------------------*/
|
||||
|
||||
/*
|
||||
The button to open/close the Menu is custom-made and not part of Pure. Here's
|
||||
how it works:
|
||||
*/
|
||||
|
||||
/*
|
||||
`.menu-link` represents the responsive menu toggle that shows/hides on
|
||||
small screens.
|
||||
*/
|
||||
.menu-link {
|
||||
position: fixed;
|
||||
display: block; /* show this only on small screens */
|
||||
top: 0;
|
||||
left: 0; /* "#menu width" */
|
||||
background: #eee;
|
||||
background: rgba(0, 0, 0, 0.7);
|
||||
font-size: 10px; /* change this value to increase/decrease button size */
|
||||
z-index: 10;
|
||||
width: 2em;
|
||||
height: auto;
|
||||
padding: 2.1em 1.6em;
|
||||
}
|
||||
|
||||
.menu-link:hover,
|
||||
.menu-link:focus {
|
||||
background: #202020;
|
||||
}
|
||||
|
||||
.menu-link span {
|
||||
position: relative;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.menu-link span,
|
||||
.menu-link span:before,
|
||||
.menu-link span:after {
|
||||
background-color: #fff;
|
||||
pointer-events: none;
|
||||
width: 100%;
|
||||
height: 0.2em;
|
||||
}
|
||||
|
||||
.menu-link span:before,
|
||||
.menu-link span:after {
|
||||
position: absolute;
|
||||
margin-top: -0.6em;
|
||||
content: " ";
|
||||
}
|
||||
|
||||
.menu-link span:after {
|
||||
margin-top: 0.6em;
|
||||
}
|
||||
|
||||
/* -- Responsive Styles (Media Queries) ------------------------------------- */
|
||||
|
||||
#layout,
|
||||
#menu,
|
||||
.menu-link {
|
||||
-webkit-transition: all 0.2s ease-out;
|
||||
-moz-transition: all 0.2s ease-out;
|
||||
-ms-transition: all 0.2s ease-out;
|
||||
-o-transition: all 0.2s ease-out;
|
||||
transition: all 0.2s ease-out;
|
||||
}
|
||||
|
||||
#layout {
|
||||
position: relative;
|
||||
left: 0;
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
#layout.active #menu {
|
||||
left: 20vw;
|
||||
width: 240px;
|
||||
}
|
||||
|
||||
#layout.active .menu-link {
|
||||
left: 240px;
|
||||
}
|
||||
|
||||
/*
|
||||
Hides the menu at `640px`, but modify this based on your app's needs.
|
||||
*/
|
||||
@media (min-width: 640px) {
|
||||
.header {
|
||||
padding-left: 2em;
|
||||
padding-right: 2em;
|
||||
}
|
||||
|
||||
#layout {
|
||||
padding-left: 20vw; /* left col width "#menu" */
|
||||
left: 0;
|
||||
}
|
||||
#menu {
|
||||
left: 20vw;
|
||||
}
|
||||
|
||||
.menu-link {
|
||||
position: fixed;
|
||||
left: 20vw;
|
||||
display: none;
|
||||
}
|
||||
|
||||
#layout.active .menu-link {
|
||||
left: 20vw;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 640px) {
|
||||
/* Only apply this when the window is small. Otherwise, the following
|
||||
case results in extra padding on the left:
|
||||
* Make the window small.
|
||||
* Tap the menu to trigger the active state.
|
||||
* Make the window large again.
|
||||
*/
|
||||
#main.active {
|
||||
position: relative;
|
||||
left: 20vw;
|
||||
}
|
||||
}
|
||||
38
site/css/updates.css
Normal file
38
site/css/updates.css
Normal file
@@ -0,0 +1,38 @@
|
||||
.updates h1 {
|
||||
font-size: 2.5em;
|
||||
}
|
||||
|
||||
.updates h2 {
|
||||
font-size: 2em;
|
||||
}
|
||||
|
||||
.updates h3 {
|
||||
font-size: 1.6em;
|
||||
}
|
||||
|
||||
.updates h2 i,
|
||||
h3 i {
|
||||
color: #606060;
|
||||
}
|
||||
|
||||
.updates .desc {
|
||||
font-size: 1.1em;
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
.updates ol {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
.wall-of-text {
|
||||
color: #444;
|
||||
line-height: 1.8em;
|
||||
margin: 0 auto;
|
||||
text-align: justify;
|
||||
width: 90%;
|
||||
}
|
||||
|
||||
.tl-dr {
|
||||
font-size: 1.2em;
|
||||
font-weight: bold;
|
||||
}
|
||||
215
site/html/get-started.html
Normal file
215
site/html/get-started.html
Normal file
@@ -0,0 +1,215 @@
|
||||
<head>
|
||||
<link rel="stylesheet" href="css/get-started.css" />
|
||||
</head>
|
||||
<body>
|
||||
<section id="start" class="container start">
|
||||
<h1 translate="getStarted.title">Get started</h1>
|
||||
<section>
|
||||
<h2>
|
||||
<i class="fa fa-rocket"></i> <span
|
||||
translate="getStarted.quickSetup"
|
||||
>Quick setup</span
|
||||
>
|
||||
</h2>
|
||||
<div class="installation">
|
||||
<div class="alert alert-primary">
|
||||
<p>
|
||||
<i class="fas fa-info-circle"></i>
|
||||
<span translate="getStarted.suggested"
|
||||
>We strongly suggest this method to install termscp</span
|
||||
>
|
||||
</p>
|
||||
</div>
|
||||
<p translate="getStarted.posixUsers">
|
||||
If you are a Linux, a FreeBSD or a MacOS user, you can install termscp
|
||||
via this simple command , which will use a shell script installer:
|
||||
</p>
|
||||
<pre><span class="function">curl</span> --proto <span class="string">'=https'</span> --tlsv1.2 -sSLf <span class="string">"https://git.io/JBhDb"</span> | sh</pre>
|
||||
</div>
|
||||
</section>
|
||||
<section>
|
||||
<h2>
|
||||
<i class="devicon-windows8-plain"></i> <span
|
||||
translate="getStarted.windows.title"
|
||||
>Windows users</span
|
||||
>
|
||||
</h2>
|
||||
<div class="installation">
|
||||
<p>
|
||||
<span translate="getStarted.windows.intro"
|
||||
>You can install termscp on Windows via</span
|
||||
>
|
||||
<a
|
||||
href="https://community.chocolatey.org/packages/termscp"
|
||||
target="_blank"
|
||||
>Chocolatey</a
|
||||
>
|
||||
</p>
|
||||
<pre><span class="function">choco</span> install <span class="string">termscp</span></pre>
|
||||
<p>
|
||||
<span translate="getStarted.windows.moderation"
|
||||
>Consider that Chocolatey moderation can take up to a few weeks
|
||||
since last release, so if the latest version is not available yet,
|
||||
you can install it downloading the ZIP file from</span
|
||||
>
|
||||
<a
|
||||
href="https://github.com/veeso/termscp/releases/latest/download/termscp.0.8.2.nupkg"
|
||||
target="_blank"
|
||||
>Github</a
|
||||
>
|
||||
<span translate="getStarted.windows.then"
|
||||
>and then, from the ZIP directory, install it via</span
|
||||
>
|
||||
</p>
|
||||
<pre><span class="function">choco</span> install <span class="string">termscp</span> -s .</pre>
|
||||
</div>
|
||||
</section>
|
||||
<section>
|
||||
<h2>
|
||||
<i class="devicon-linux-plain"></i> <span
|
||||
translate="getStarted.linuxUsers"
|
||||
>Linux users</span
|
||||
>
|
||||
</h2>
|
||||
<div class="sub-system">
|
||||
<div class="alert alert-warning">
|
||||
<p>
|
||||
<i class="fas fa-exclamation-triangle"></i>
|
||||
<span translate="getStarted.notConfident"
|
||||
>Opt for these methods instead if you don't feel confident using
|
||||
the shell script</span
|
||||
>
|
||||
</p>
|
||||
</div>
|
||||
<h3>
|
||||
<i class="devicon-linux-plain"></i> <span
|
||||
translate="getStarted.arch.title"
|
||||
>Arch derived users</span
|
||||
>
|
||||
</h3>
|
||||
<div class="installation">
|
||||
<p>
|
||||
<span translate="getStarted.arch.intro"
|
||||
>On Arch Linux based distros, you can install termscp using an AUR
|
||||
package manager such as</span
|
||||
>
|
||||
<a href="https://github.com/Jguer/yay" target="_blank">yay</a>
|
||||
<span translate="getStarted.arch.then">then run:</span>
|
||||
</p>
|
||||
<pre><span class="function">yay</span> -S <span class="string">termscp</span></pre>
|
||||
</div>
|
||||
<h3>
|
||||
<i class="devicon-debian-plain"></i> <span
|
||||
translate="getStarted.debian.title"
|
||||
>Debian derived users</span
|
||||
>
|
||||
</h3>
|
||||
<div class="installation">
|
||||
<p translate="getStarted.debian.body">
|
||||
On Debian based distros, you can install termscp using the Deb
|
||||
package via:
|
||||
</p>
|
||||
<pre><span class="function">wget</span> -O termscp.deb <span class="string">https://github.com/veeso/termscp/releases/latest/download/termscp_0.8.2_amd64.deb</span>
|
||||
sudo <span class="function">dpkg</span> -i <span class="string">termscp.deb</span></pre>
|
||||
</div>
|
||||
<h3>
|
||||
<i class="devicon-redhat-plain"></i> <span
|
||||
translate="getStarted.redhat.title"
|
||||
>Redhat derived users</span
|
||||
>
|
||||
</h3>
|
||||
<div class="installation">
|
||||
<p translate="getStarted.redhat.body">
|
||||
On RedHat based distros, you can install termscp using the RPM
|
||||
package via:
|
||||
</p>
|
||||
<pre><span class="function">wget</span> -O termscp.rpm <span class="string">https://github.com/veeso/termscp/releases/latest/download/termscp-0.8.2-1.x86_64.rpm</span>
|
||||
sudo <span class="function">rpm</span> -U <span class="string">termscp.rpm</span></pre>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section>
|
||||
<h2>
|
||||
<i class="devicon-apple-plain"></i> <span
|
||||
translate="getStarted.macos.title"
|
||||
>MacOS users</span
|
||||
>
|
||||
</h2>
|
||||
<div class="installation">
|
||||
<div class="alert alert-warning">
|
||||
<p>
|
||||
<i class="fas fa-exclamation-triangle"></i>
|
||||
<span translate="getStarted.notConfident"
|
||||
>Opt for this method instead if you don't feel confident using the
|
||||
shell script</span
|
||||
>
|
||||
</p>
|
||||
</div>
|
||||
<p>
|
||||
<span translate="getStarted.macos.install">Install termscp via</span
|
||||
>
|
||||
<a href="https://brew.sh/" target="_blank">Brew</a>
|
||||
</p>
|
||||
<pre><span class="function">brew</span> install <span class="string">veeso/termscp/termscp</span></pre>
|
||||
</div>
|
||||
</section>
|
||||
<section>
|
||||
<h2>
|
||||
<i class="devicon-rust-plain"></i> <span
|
||||
translate="getStarted.cargo.title"
|
||||
>Install with Cargo</span
|
||||
>
|
||||
</h2>
|
||||
<div class="installation">
|
||||
<div class="alert alert-warning">
|
||||
<p>
|
||||
<i class="fas fa-exclamation-triangle"></i>
|
||||
<span translate="getStarted.noBinary"
|
||||
>Opt for this method instead if binaries for your platform are not
|
||||
available</span
|
||||
>
|
||||
</p>
|
||||
</div>
|
||||
<p>
|
||||
<span translate="getStarted.cargo.body"
|
||||
>If a package is not available for your system, you can opt to
|
||||
install termscp via</span
|
||||
>
|
||||
<a href="https://www.rust-lang.org/tools/install" target="_blank"
|
||||
>Cargo</a
|
||||
>.
|
||||
<span translate="getStarted.cargo.requirements"
|
||||
>To install termscp via Cargo, these requirements must be
|
||||
satisfied:</span
|
||||
>
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
Linux:
|
||||
<ul>
|
||||
<li>pkg-config</li>
|
||||
<li>libssh2</li>
|
||||
<li>openssl-dev</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
FreeBSD:
|
||||
<ul>
|
||||
<li>libssh</li>
|
||||
<li>dbus</li>
|
||||
<li>pkg-conf</li>
|
||||
<li>gcc</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<p translate="getStarted.cargo.install">Then you can install it via</p>
|
||||
<pre><span class="function">cargo</span> install --locked <span class="string">termscp</span></pre>
|
||||
<p translate="getStarted.cargo.noKeyring">
|
||||
Or if you don't want to have support for keyring or you're building on
|
||||
*BSD:
|
||||
</p>
|
||||
<pre><span class="function">cargo</span> install --locked --no-default-features <span class="string">termscp</span></pre>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
</body>
|
||||
96
site/html/intro.html
Normal file
96
site/html/intro.html
Normal file
@@ -0,0 +1,96 @@
|
||||
<head>
|
||||
<link rel="stylesheet" href="css/intro.css" />
|
||||
</head>
|
||||
<body>
|
||||
<section id="intro" class="container intro">
|
||||
<h1 class="title">termscp</h1>
|
||||
<img class="logo" alt="logo" src="assets/images/termscp.webp" />
|
||||
<h2 class="caption" translate="intro.caption">
|
||||
A feature rich terminal UI file transfer and explorer with support for
|
||||
SCP/SFTP/FTP/S3
|
||||
</h2>
|
||||
<button class="pure-button get-started">
|
||||
<a href="#get-started" translate="intro.getStarted">Get started →</a>
|
||||
</button>
|
||||
<div class="alert alert-center alert-success">
|
||||
<p>
|
||||
<span translate="intro.versionAlert"
|
||||
>termscp 0.10.0 is NOW out! Download it from</span
|
||||
>
|
||||
<a href="#get-started" translate="intro.here">here!</a>
|
||||
</p>
|
||||
</div>
|
||||
<div class="features">
|
||||
<div class="feature">
|
||||
<h3 translate="intro.features.handy.title">Handy UI</h3>
|
||||
<p translate="intro.features.handy.body">
|
||||
Explore and operate on the remote and on the local machine file system
|
||||
with a handy UI.
|
||||
</p>
|
||||
</div>
|
||||
<div class="feature">
|
||||
<h3 translate="intro.features.crossPlatform.title">Cross platform</h3>
|
||||
<p translate="intro.features.crossPlatform.body">
|
||||
Runs on Windows, MacOS, Linux and BSD
|
||||
</p>
|
||||
</div>
|
||||
<div class="feature">
|
||||
<h3 translate="intro.features.customizable.title">Customizable</h3>
|
||||
<p translate="intro.features.customizable.body">
|
||||
Customize the file explorer, the text editor to use and default
|
||||
options
|
||||
</p>
|
||||
</div>
|
||||
<div class="feature">
|
||||
<h3 translate="intro.features.bookmarks.title">Bookmarks</h3>
|
||||
<p translate="intro.features.bookmarks.body">
|
||||
Connect to your favourite hosts through built-in bookmarks and recent
|
||||
connections support
|
||||
</p>
|
||||
</div>
|
||||
<div class="feature">
|
||||
<h3 translate="intro.features.security.title">Security first</h3>
|
||||
<p translate="intro.features.security.body">
|
||||
Save your password into your operating system key vault
|
||||
</p>
|
||||
</div>
|
||||
<div class="feature">
|
||||
<h3 translate="intro.features.performance.title">Eye on performance</h3>
|
||||
<p translate="intro.features.performance.body">
|
||||
termscp has been developed keeping an eye on performance to prevent
|
||||
cpu usage
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="preview">
|
||||
<video autoplay muted loop>
|
||||
<source
|
||||
src="assets/videos/explorer.mp4"
|
||||
type="video/mp4"
|
||||
resolve-video-fallback="assets/images/explorer.gif"
|
||||
/>
|
||||
</video>
|
||||
</div>
|
||||
<div class="discover">
|
||||
<div class="hook">
|
||||
<h3>
|
||||
<a href="#get-started" translate="intro.footer.getStarted"
|
||||
>Get started</a
|
||||
>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="hook">
|
||||
<h3>
|
||||
<a href="#user-manual" translate="intro.footer.manual">User manual</a>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="hook">
|
||||
<h3>
|
||||
<a href="#updates" translate="intro.footer.updates"
|
||||
>Install updates</a
|
||||
>
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</body>
|
||||
106
site/html/updates.html
Normal file
106
site/html/updates.html
Normal file
@@ -0,0 +1,106 @@
|
||||
<head>
|
||||
<link rel="stylesheet" href="css/updates.css" />
|
||||
</head>
|
||||
<body>
|
||||
<section id="updates" class="container updates">
|
||||
<h1 translate="updates.title">Keeping termscp up to date</h1>
|
||||
<div class="alert alert-warning">
|
||||
<p>
|
||||
<i class="fas fa-exclamation-triangle"></i>
|
||||
<span translate="updates.disclaimer">
|
||||
Updating termscp with this method is only available for 0.7.x versions
|
||||
or higher. If you have an older version, you have to install updates
|
||||
using the</span> <a href="#get-started">install.sh script</a>
|
||||
</p>
|
||||
</div>
|
||||
<!-- Reasons -->
|
||||
<section>
|
||||
<h2>
|
||||
<i class="fa fa-question-circle"></i> <span translate="updates.reasons.title">Why should you install
|
||||
updates</span>
|
||||
</h2>
|
||||
<div class="wall-of-text">
|
||||
<p translate="updates.reasons.wallOfText">
|
||||
Termscp is an application that is still in its early stage of
|
||||
development, the first version has been released in december in 2020
|
||||
and practically there's only one
|
||||
<a href="https://veeso.github.io/" target="_blank">guy</a> working on
|
||||
it and there's still a lot of work to do in order to improve it and
|
||||
make it fast and reliable. Along to this, you should also consider
|
||||
that since it's an application which works with network protocols and
|
||||
is intended to manipulate secrets and credentials there may always be
|
||||
a security issue. I can't guarantee there's no security issues in the
|
||||
versions I've released in these months, and if there are they might
|
||||
not be even my fault, but they might be contained in the libraries
|
||||
termscp relies on. Because of this, it's always VERY important to keep
|
||||
termscp up to date. To prove how much I care about it, just consider
|
||||
that I've implemented something that many other open source
|
||||
applications won't do: the update check. Whenever you start termscp
|
||||
(unless if deactivated in configuration) termscp will always check if
|
||||
there's a new version available and will notify you immediately. In
|
||||
addition to security concerns, each major update will bring many
|
||||
awesome features 🦄 you can't miss and the application is getting more
|
||||
reliable and stable after each update 😄
|
||||
</p>
|
||||
<p class="tl-dr">
|
||||
<span>TL;DR</span>
|
||||
<span translate="updates.reasons.tldr"></span>
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
<!-- Gui method -->
|
||||
<section>
|
||||
<h2><i class="fa fa-desktop"></i> <span translate="updates.gui.title">GUI method</span></h2>
|
||||
<div class="installation">
|
||||
<p translate="updates.gui.body" class="description">
|
||||
The GUI method just consists in starting termscp with no options, you
|
||||
then should be in front of the authentication form. If there's an
|
||||
update available a message like "termscp x.y.z is OUT! Update and read
|
||||
release notes with CTRL+R". All you have to do at this point to update
|
||||
termscp, is:
|
||||
</p>
|
||||
<ol>
|
||||
<li translate="updates.gui.steps.st">press CTRL+R. The release notes should now be displayed.</li>
|
||||
<li translate="updates.gui.steps.nd">Select "YES" in the "Install update?" radio input</li>
|
||||
<li translate="updates.gui.steps.rd">Press "ENTER"</li>
|
||||
</ol>
|
||||
<p translate="updates.gui.then" class="description">
|
||||
If everything worked correctly a green message "termscp x.y.z has been
|
||||
installed!" will be displayed. Just restart termscp and enjoy the
|
||||
update 😄
|
||||
</p>
|
||||
<div class="alert alert-warning">
|
||||
<p>
|
||||
<i class="fas fa-exclamation-triangle"></i>
|
||||
<span translate="updates.gui.pex">
|
||||
If you have previously installed termscp via Deb/RPM package, you
|
||||
may need to use the CLI method running termscp with sudo
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<!-- CLI method -->
|
||||
<section>
|
||||
<h2><i class="fa fa-glasses"></i> <span translate="updates.cli.title">CLI method</span></h2>
|
||||
<div class="installation">
|
||||
<p translate="updates.cli.body" class="description">
|
||||
If you prefer, you can install a new update just using the dedicated
|
||||
CLI option:
|
||||
</p>
|
||||
<pre><span class="function">termscp</span> --update</pre>
|
||||
<div class="alert alert-warning">
|
||||
<p>
|
||||
<i class="fas fa-exclamation-triangle"></i>
|
||||
<span translate="updates.cli.pex">Run with sudo if necessary (Debian/FreeBSD/RedHat users)</span>
|
||||
</p>
|
||||
</div>
|
||||
<p translate="updates.cli.then" class="description">
|
||||
Once started, you will be prompted whether to install or not the
|
||||
update. Confirm the installation and ta-dah, the new version of
|
||||
termscp should now be available on your machine
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
</body>
|
||||
221
site/index.html
Normal file
221
site/index.html
Normal file
@@ -0,0 +1,221 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta
|
||||
name="viewport"
|
||||
content="minimum-scale=1, initial-scale=1, width=device-width"
|
||||
/>
|
||||
<meta
|
||||
property="og:image"
|
||||
content="https://termscp.veeso.dev/assets/images/og_preview.jpg"
|
||||
/>
|
||||
<meta property="og:image:type" content="image/jpg" />
|
||||
<meta property="og:image:width" content="1024" />
|
||||
<meta property="og:image:height" content="820" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="https://termscp.veeso.dev" />
|
||||
<meta property="og:title" content="termscp" />
|
||||
<meta property="og:description" content="terminal UI file transfer" />
|
||||
<!-- Pure.css -->
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="https://unpkg.com/purecss@2.0.5/build/pure-min.css"
|
||||
/>
|
||||
<!-- Icons -->
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="https://cdn.jsdelivr.net/gh/devicons/devicon@v2.11.0/devicon.min.css"
|
||||
/>
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css"
|
||||
integrity="sha512-iBBXm8fW90+nuLcSKlbmrPcLa0OT92xO1BIsZ+ywDWZCvqsWgccV3gFoRBv0z+8dLJgyAHIhR35VZc2oM/gI1w=="
|
||||
crossorigin="anonymous"
|
||||
/>
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/fontawesome.min.css"
|
||||
integrity="sha512-OdEXQYCOldjqUEsuMKsZRj93Ht23QRlhIb8E/X0sbwZhme8eUw6g8q7AdxGJKakcBbv7+/PX0Gc2btf7Ru8cZA=="
|
||||
crossorigin="anonymous"
|
||||
/>
|
||||
<!-- Main -->
|
||||
<link rel="stylesheet" href="css/markdown.css" />
|
||||
<link rel="stylesheet" href="css/menu.css" />
|
||||
<link rel="stylesheet" href="css/main.css" />
|
||||
<!-- Favicons -->
|
||||
<link
|
||||
rel="icon"
|
||||
type="image/png"
|
||||
sizes="96x96"
|
||||
href="assets/images/favicon-96x96.png"
|
||||
/>
|
||||
<link
|
||||
rel="icon"
|
||||
type="image/png"
|
||||
sizes="32x32"
|
||||
href="assets/images/favicon-32x32.png"
|
||||
/>
|
||||
<link
|
||||
rel="icon"
|
||||
type="image/png"
|
||||
sizes="16x16"
|
||||
href="assets/images/favicon-16x16.png"
|
||||
/>
|
||||
<title>termscp: terminal UI file transfer</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="layout">
|
||||
<!-- Menu toggle -->
|
||||
<a href="#menu" id="menu-burger" class="menu-link">
|
||||
<!-- Hamburger icon -->
|
||||
<span></span>
|
||||
</a>
|
||||
<!-- Menu -->
|
||||
<header id="menu">
|
||||
<div class="pure-menu">
|
||||
<div class="pure-menu-heading">
|
||||
<div class="pic-box">
|
||||
<img class="avatar" alt="logo" src="assets/images/termscp.webp" />
|
||||
</div>
|
||||
<h1>termscp</h1>
|
||||
<p translate="menu.desc">A feature rich terminal UI file transfer</p>
|
||||
<a href="https://github.com/veeso/termscp/stargazers/">
|
||||
<img
|
||||
src="https://img.shields.io/github/stars/veeso/termscp.svg?style=social&label=Star&maxAge=2592000"
|
||||
/>
|
||||
</a>
|
||||
</div>
|
||||
<ul class="pure-menu-list">
|
||||
<li class="pure-menu-item pure-menu-selected">
|
||||
<a href="#intro" class="pure-menu-link" translate="menu.intro">Intro</a>
|
||||
</li>
|
||||
<li class="pure-menu-item">
|
||||
<a href="#get-started" class="pure-menu-link" translate="menu.getStarted">Get started</a>
|
||||
</li>
|
||||
<li class="pure-menu-item">
|
||||
<a href="#updates" class="pure-menu-link" translate="menu.updates">Install updates</a>
|
||||
</li>
|
||||
<li class="pure-menu-item">
|
||||
<a href="#user-manual" class="pure-menu-link" translate="menu.manual">User manual</a>
|
||||
</li>
|
||||
<li class="pure-menu-item">
|
||||
<a href="#changelog" class="pure-menu-link" translate="menu.changelog">Release history</a>
|
||||
</li>
|
||||
<li class="pure-menu-item">
|
||||
<a
|
||||
href="https://github.com/veeso/termscp"
|
||||
class="pure-menu-link"
|
||||
target="_blank"
|
||||
>Github <i class="fas fa-external-link-alt"></i
|
||||
></a>
|
||||
</li>
|
||||
<li class="pure-menu-item">
|
||||
<a
|
||||
href="https://veeso.dev/"
|
||||
class="pure-menu-link"
|
||||
target="_blank"
|
||||
><span translate="menu.author">About the author</span> <i class="fas fa-external-link-alt"></i
|
||||
></a>
|
||||
</li>
|
||||
<li class="pure-menu-item">
|
||||
<a
|
||||
href="https://ko-fi.com/veeso"
|
||||
class="pure-menu-link"
|
||||
target="_blank"
|
||||
><span translate="menu.support">Support me</span> <i class="fas fa-external-link-alt"></i
|
||||
></a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="pure-menu-bottom">
|
||||
<ul>
|
||||
<li>
|
||||
<a href="https://github.com/veeso/termscp" target="_blank"
|
||||
><i class="devicon-github-original"></i
|
||||
></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://crates.io/crates/termscp" target="_blank"
|
||||
><i class="devicon-rust-plain"></i
|
||||
></a>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
href="https://community.chocolatey.org/packages/termscp"
|
||||
target="_blank"
|
||||
><i class="devicon-windows8-plain"></i
|
||||
></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://ko-fi.com/veeso" target="_blank"
|
||||
><i class="fa fa-coffee"></i
|
||||
></a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<main>
|
||||
<div id="main"></div>
|
||||
</main>
|
||||
<footer>
|
||||
<div class="container">
|
||||
<ul class="contacts">
|
||||
<li>
|
||||
<a href="https://github.com/veeso/termscp" target="_blank"
|
||||
><i class="devicon-github-original"></i
|
||||
></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://crates.io/crates/termscp" target="_blank"
|
||||
><i class="devicon-rust-plain"></i
|
||||
></a>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
href="https://community.chocolatey.org/packages/termscp"
|
||||
target="_blank"
|
||||
><i class="devicon-windows8-plain"></i
|
||||
></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://ko-fi.com/veeso" target="_blank"
|
||||
><i class="fa fa-coffee"></i
|
||||
></a>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- Copyright -->
|
||||
<p class="copyright">
|
||||
<span>Christian Visintin © All Rights Reserved | </span
|
||||
><span resolve-copyright></span>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
<!-- Scripts -->
|
||||
<!-- jQuery -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
|
||||
<!-- Showdown JS-->
|
||||
<script
|
||||
src="https://cdnjs.cloudflare.com/ajax/libs/showdown/1.9.1/showdown.min.js"
|
||||
integrity="sha512-L03kznCrNOfVxOUovR6ESfCz9Gfny7gihUX/huVbQB9zjODtYpxaVtIaAkpetoiyV2eqWbvxMH9fiSv5enX7bw=="
|
||||
crossorigin="anonymous"
|
||||
referrerpolicy="no-referrer"
|
||||
></script>
|
||||
<!-- Local -->
|
||||
<script src="js/lang.min.js"></script>
|
||||
<script src="js/core.js"></script>
|
||||
<script src="js/events.js"></script>
|
||||
<script src="js/resolvers.js"></script>
|
||||
<!-- ko-fi -->
|
||||
<script src='https://storage.ko-fi.com/cdn/scripts/overlay-widget.js'></script>
|
||||
<script>
|
||||
kofiWidgetOverlay.draw('veeso', {
|
||||
'type': 'floating-chat',
|
||||
'floating-chat.donateButton.text': 'Support me',
|
||||
'floating-chat.donateButton.background-color': '#323842',
|
||||
'floating-chat.donateButton.text-color': '#fff'
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
35
site/js/core.js
Normal file
35
site/js/core.js
Normal file
@@ -0,0 +1,35 @@
|
||||
/**
|
||||
* @description return navigator language. If language is not supported default will be returned
|
||||
* @returns {string}
|
||||
*/
|
||||
|
||||
function getNavigatorLanguage() {
|
||||
let lang = navigator.language;
|
||||
// Complete lang
|
||||
if (languageSupported(lang)) {
|
||||
return lang;
|
||||
}
|
||||
// Reduced lang
|
||||
lang = lang.split(/[-_]/)[0] || "en";
|
||||
if (!languageSupported(lang)) {
|
||||
return "en";
|
||||
}
|
||||
return lang;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description check whether provided language is supported by the website
|
||||
* @param {string} lang
|
||||
* @returns {boolean}
|
||||
*/
|
||||
function languageSupported(lang) {
|
||||
return ["en", "zh-CN", "it", "fr", "es"].includes(lang);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description update website language
|
||||
* @param {string} lang
|
||||
*/
|
||||
function setSiteLanguage(lang) {
|
||||
setLanguage(lang);
|
||||
}
|
||||
133
site/js/events.js
Normal file
133
site/js/events.js
Normal file
@@ -0,0 +1,133 @@
|
||||
const hashBlacklist = ["#menu"];
|
||||
const converter = new showdown.Converter({ tables: true });
|
||||
|
||||
/**
|
||||
* @description handle hash change
|
||||
*/
|
||||
function onHashChange() {
|
||||
const hash = location.hash;
|
||||
if (!hashBlacklist.includes(hash) && hash.length > 0) {
|
||||
selectMenuEntry(location.hash);
|
||||
loadPage(hash);
|
||||
} else if (hash.length === 0 || hash === "#") {
|
||||
loadPage("#intro");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @description select menu entry
|
||||
* @param {*} hash
|
||||
*/
|
||||
function selectMenuEntry(hash) {
|
||||
// Remove current entry
|
||||
$(".pure-menu-selected").removeClass("pure-menu-selected");
|
||||
$('a[href$="' + hash + '"]')
|
||||
.parent()
|
||||
.addClass("pure-menu-selected");
|
||||
}
|
||||
|
||||
/**
|
||||
* @description load page associated to hash
|
||||
* @param {string} hash
|
||||
*/
|
||||
function loadPage(hash) {
|
||||
switch (hash) {
|
||||
case "#intro":
|
||||
loadHtml("intro.html");
|
||||
break;
|
||||
case "#get-started":
|
||||
loadHtml("get-started.html");
|
||||
break;
|
||||
case "#user-manual":
|
||||
loadUserManual();
|
||||
break;
|
||||
case "#updates":
|
||||
loadHtml("updates.html");
|
||||
break;
|
||||
case "#changelog":
|
||||
loadMarkdown(
|
||||
"https://raw.githubusercontent.com/veeso/termscp/main/CHANGELOG.md"
|
||||
);
|
||||
break;
|
||||
}
|
||||
window.scrollTo(0, 0);
|
||||
}
|
||||
|
||||
function loadHtml(page) {
|
||||
const url = "html/" + page;
|
||||
$("#main").load(url, function () {
|
||||
onPageLoaded();
|
||||
});
|
||||
}
|
||||
|
||||
function loadMarkdown(page) {
|
||||
getMarkdown(page, function (md) {
|
||||
const div = jQuery("<div/>", {
|
||||
id: page,
|
||||
class: "container markdown",
|
||||
});
|
||||
div.html(converter.makeHtml(md));
|
||||
$("#main").empty();
|
||||
$("#main").append(div);
|
||||
onPageLoaded();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @description get markdown and pass result to onLoaded
|
||||
* @param {string} url
|
||||
* @param {function} onLoaded
|
||||
*/
|
||||
function getMarkdown(url, onLoaded) {
|
||||
$.ajax({
|
||||
url,
|
||||
type: "GET",
|
||||
dataType: "text",
|
||||
success: onLoaded,
|
||||
});
|
||||
}
|
||||
|
||||
function onMenuBurgerClick() {
|
||||
const active = $("#menu").hasClass("active");
|
||||
if (active) {
|
||||
$("#layout").removeClass("active");
|
||||
$("#menu").removeClass("active");
|
||||
} else {
|
||||
$("#layout").addClass("active");
|
||||
$("#menu").addClass("active");
|
||||
}
|
||||
}
|
||||
|
||||
function loadUserManual() {
|
||||
// Load language
|
||||
const lang = getNavigatorLanguage();
|
||||
if (lang === "en") {
|
||||
loadMarkdown(
|
||||
`https://raw.githubusercontent.com/veeso/termscp/main/docs/man.md`
|
||||
);
|
||||
} else {
|
||||
loadMarkdown(
|
||||
`https://raw.githubusercontent.com/veeso/termscp/main/docs/${lang}/man.md`
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
function onPageLoaded() {
|
||||
reloadTranslations();
|
||||
}
|
||||
|
||||
// Register
|
||||
window.onhashchange = onHashChange;
|
||||
|
||||
// Startup
|
||||
$(function () {
|
||||
onHashChange();
|
||||
// Init language
|
||||
setSiteLanguage(getNavigatorLanguage());
|
||||
// Burger event listener
|
||||
$("#menu-burger").on("click", onMenuBurgerClick);
|
||||
$(".pure-menu-heading").on("click", function () {
|
||||
location.hash = "#";
|
||||
onHashChange();
|
||||
});
|
||||
});
|
||||
1
site/js/lang.min.js
vendored
Normal file
1
site/js/lang.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
var currentLanguage=null;var languagePath="lang/";var currentLanguageDict=null;function setLanguage(lang){currentLanguage=lang;const jsonFile=languagePath+currentLanguage+".json";$.getJSON(jsonFile,function(langData){currentLanguageDict=flatDict(langData);reloadTranslations()})}function reloadTranslations(){$("[translate]").each(function(){const translationAttr=$(this).attr("translate");$(this).text(getInstantTranslation(translationAttr))})}function getInstantTranslation(key){if(currentLanguageDict!==null&&key in currentLanguageDict){return currentLanguageDict[key]}else{return"{{ "+key+" }}"}}function flatDict(dict){const iterNode=(flatten,path,node)=>{for(const key of Object.keys(node)){const child=node[key];const childKey=path?path+"."+key:key;if(typeof child==="object"){flatten=iterNode(flatten,childKey,child)}else{flatten[childKey]=child}}return flatten};return iterNode({},null,dict)}
|
||||
32
site/js/resolvers.js
Normal file
32
site/js/resolvers.js
Normal file
@@ -0,0 +1,32 @@
|
||||
/**
|
||||
* @description resolve copyright year
|
||||
*/
|
||||
|
||||
function resolveCopyright() {
|
||||
const year = new Date().getFullYear();
|
||||
$("[resolve-copyright]").each(function () {
|
||||
$(this).text(year);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @description resolve video fallback source in case fails. Uses an image instead
|
||||
*/
|
||||
function resolveVideoFallback() {
|
||||
$("[resolve-video-fallback]").each(function () {
|
||||
const fallback = $(this).attr("resolve-video-fallback");
|
||||
// Add listener
|
||||
$(this).on("error", function () {
|
||||
const image = document.createElement("img");
|
||||
image.src = fallback;
|
||||
image.classList = ["preview"];
|
||||
$(this).parent().replaceWith(image);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// init
|
||||
$(function () {
|
||||
resolveCopyright();
|
||||
resolveVideoFallback();
|
||||
});
|
||||
114
site/lang/en.json
Normal file
114
site/lang/en.json
Normal file
@@ -0,0 +1,114 @@
|
||||
{
|
||||
"menu": {
|
||||
"desc": "A feature rich terminal UI file transfer",
|
||||
"intro": "Intro",
|
||||
"getStarted": "Get started",
|
||||
"updates": "Install updates",
|
||||
"manual": "User manual",
|
||||
"changelog": "Release history",
|
||||
"author": "About the author",
|
||||
"support": "Support me"
|
||||
},
|
||||
"intro": {
|
||||
"caption": "A feature rich terminal UI file transfer and explorer with support for SCP/SFTP/FTP/S3",
|
||||
"getStarted": "Get started →",
|
||||
"versionAlert": "termscp 0.8.2 is NOW out! Download it from",
|
||||
"here": "here",
|
||||
"features": {
|
||||
"handy": {
|
||||
"title": "Handy UI",
|
||||
"body": "Explore and operate on the remote and on the local machine file system with a handy UI."
|
||||
},
|
||||
"crossPlatform": {
|
||||
"title": "Cross platform",
|
||||
"body": "Runs on Windows, MacOS, Linux and FreeBSD"
|
||||
},
|
||||
"customizable": {
|
||||
"title": "Customizable",
|
||||
"body": "Customize the file explorer, the UI and many other parameters..."
|
||||
},
|
||||
"bookmarks": {
|
||||
"title": "Bookmarks",
|
||||
"body": "Connect to your favourite hosts through built-in bookmarks and recent connections"
|
||||
},
|
||||
"security": {
|
||||
"title": "Security first",
|
||||
"body": "Save your passwords into your operating system key vault"
|
||||
},
|
||||
"performance": {
|
||||
"title": "Eye on performance",
|
||||
"body": "termscp has been developed keeping an eye on performance to prevent high cpu usage"
|
||||
}
|
||||
},
|
||||
"footer": {
|
||||
"getStarted": "Get started",
|
||||
"manual": "User manual",
|
||||
"updates": "Install updates"
|
||||
}
|
||||
},
|
||||
"getStarted": {
|
||||
"title": "Get started",
|
||||
"quickSetup": "Quick setup",
|
||||
"suggested": "We strongly suggest this method to install termscp",
|
||||
"posixUsers": "If you are a Linux, a FreeBSD or a MacOS user, you can install termscp via this simple command , which will use a shell script installer:",
|
||||
"windows": {
|
||||
"title": "Windows users",
|
||||
"intro": "You can install termscp on Windows via",
|
||||
"moderation": "Consider that Chocolatey moderation can take up to a few weeks since last release, so if the latest version is not available yet, you can install it downloading the ZIP file from",
|
||||
"then": "and then, from the ZIP directory, install it via"
|
||||
},
|
||||
"linuxUsers": "Linux users",
|
||||
"notConfident": "Opt for these methods instead if you don't feel confident using the shell script",
|
||||
"noBinary": "Opt for this method instead if binaries for your platform are not available",
|
||||
"arch": {
|
||||
"title": "Arch derived users",
|
||||
"intro": "On Arch Linux based distros, you can install termscp using an AUR package manager such as",
|
||||
"then": "then run"
|
||||
},
|
||||
"debian": {
|
||||
"title": "Debian derived users",
|
||||
"body": "On Debian based distros, you can install termscp using the Deb package via:"
|
||||
},
|
||||
"redhat": {
|
||||
"title": "Redhat derived users",
|
||||
"body": "On RedHat based distros, you can install termscp using the RPM package via:"
|
||||
},
|
||||
"macos": {
|
||||
"title": "MacOS users",
|
||||
"install": "Install termscp via"
|
||||
},
|
||||
"cargo": {
|
||||
"title": "Install with Cargo",
|
||||
"body": "If a package is not available for your system, you can opt to install termscp via",
|
||||
"requirements": "To install termscp via Cargo, these requirements must be satisfied",
|
||||
"install": "Then you can install termscp via",
|
||||
"noKeyring": "Or if you don't want to have support for keyring or you're building on *BSD:"
|
||||
}
|
||||
},
|
||||
"updates": {
|
||||
"title": "Keeping termscp up to date",
|
||||
"disclaimer": " Updating termscp with this method is only available for 0.7.x versions or higher. If you have an older version, you have to install updates using the",
|
||||
"reasons": {
|
||||
"title": "Why you should install updates",
|
||||
"wallOfText": "Termscp is an application that is still in its early stage of development, the first version has been released in december in 2020 and practically there's only one guy working on it and there's still a lot of work to do in order to improve it and make it fast and reliable. Along to this, you should also consider that since it's an application which works with network protocols and is intended to manipulate secrets and credentials there may always be a security issue. I can't guarantee there's no security issues in the versions I've released in these months, and if there are they might not be even my fault, but they might be contained in the libraries termscp relies on. Because of this, it's always VERY important to keep termscp up to date. To prove how much I care about it, just consider that I've implemented something that many other open source applications won't do: the update check. Whenever you start termscp (unless if deactivated in configuration) termscp will always check if there's a new version available and will notify you immediately. In addition to security concerns, each major update will bring many awesome features 🦄 you can't miss and the application is getting more reliable and stable after each update 😄",
|
||||
"tldr": "Possible security issues; new awesome features; performance and stability; Bugfixes"
|
||||
},
|
||||
"gui": {
|
||||
"title": "GUI method",
|
||||
"body": "The GUI method just consists in starting termscp with no options, you then should be in front of the authentication form. If there's an update available a message like \"termscp x.y.z is OUT! Update and read release notes with CTRL+R\". All you have to do at this point to update termscp, is:",
|
||||
"steps": {
|
||||
"st": "press CTRL+R. The release notes should now be displayed",
|
||||
"nd": "Select \"YES\" in the \"Install update?\" radio input",
|
||||
"rd": "Press \"Enter\""
|
||||
},
|
||||
"then": "If everything worked correctly a green message \"termscp x.y.z has been installed!\" will be displayed. Just restart termscp and enjoy the update 😄",
|
||||
"pex": " If you have previously installed termscp via Deb/RPM package, you may need to use the CLI method running termscp with sudo"
|
||||
},
|
||||
"cli": {
|
||||
"title": "CLI method",
|
||||
"body": "If you prefer, you can install a new update just using the dedicated CLI option:",
|
||||
"pex": "Run with sudo if necessary (installed with RPM/DEB)",
|
||||
"then": "Once started, you will be prompted whether to install or not the update. Confirm the installation and ta-dah, the new version of termscp should now be available on your machine"
|
||||
}
|
||||
}
|
||||
}
|
||||
114
site/lang/es.json
Normal file
114
site/lang/es.json
Normal file
@@ -0,0 +1,114 @@
|
||||
{
|
||||
"menu": {
|
||||
"desc": "Una transferencia de archivos de terminal rica en funciones",
|
||||
"intro": "Sobre termscp",
|
||||
"getStarted": "Para iniciar",
|
||||
"updates": "Actualizaciones",
|
||||
"manual": "Manual de usuario",
|
||||
"changelog": "Historial de versiones",
|
||||
"author": "Sobre el autor",
|
||||
"support": "Apoyame"
|
||||
},
|
||||
"intro": {
|
||||
"caption": "Un explorador y transferencia de archivos de terminal rico en funciones, con apoyo para SCP/SFTP/FTP/S3",
|
||||
"getStarted": "Para iniciar →",
|
||||
"versionAlert": "termscp 0.8.2 ya está disponible! Descárgalo desde",
|
||||
"here": "aquì",
|
||||
"features": {
|
||||
"handy": {
|
||||
"title": "Interfaz de usuario práctica",
|
||||
"body": "Explore y opere en el sistema de archivos de la máquina local y remota con una interfaz de usuario práctica."
|
||||
},
|
||||
"crossPlatform": {
|
||||
"title": "Multiplataforma",
|
||||
"body": "Funciona en Windows, MacOS, Linux y FreeBSD"
|
||||
},
|
||||
"customizable": {
|
||||
"title": "Personalizable",
|
||||
"body": "Personalice el explorador de archivos, la interfaz de usuario y muchos otros parámetros ..."
|
||||
},
|
||||
"bookmarks": {
|
||||
"title": "Marcadores",
|
||||
"body": "Conéctese a sus hosts favoritos a través de marcadores integrados y conexiones recientes"
|
||||
},
|
||||
"security": {
|
||||
"title": "Seguridad primero",
|
||||
"body": "Guarde sus contraseñas en la bóveda de claves de su sistema operativo"
|
||||
},
|
||||
"performance": {
|
||||
"title": "Ojo en el rendimiento",
|
||||
"body": "termscp se ha desarrollado teniendo en cuenta el rendimiento para evitar un uso elevado de la CPU"
|
||||
}
|
||||
},
|
||||
"footer": {
|
||||
"getStarted": "Para iniciar",
|
||||
"manual": "Manual de usuario",
|
||||
"updates": "Actualizaciones"
|
||||
}
|
||||
},
|
||||
"getStarted": {
|
||||
"title": "Para iniciar",
|
||||
"quickSetup": "Configuración rápida",
|
||||
"suggested": "Recomendamos encarecidamente este método para instalar termscp",
|
||||
"posixUsers": "Si es un usuario de Linux, FreeBSD o MacOS, puede instalar termscp a través de este sencillo comando, que utilizará un instalador de scripts de shell:",
|
||||
"windows": {
|
||||
"title": "Usuarios Windows",
|
||||
"intro": "Puede instalar termscp en Windows a través de",
|
||||
"moderation": "Tenga en cuenta que la moderación de Chocolatey puede tardar hasta algunas semanas desde la última versión, por lo que si la última versión aún no está disponible, puede instalarla descargando el archivo ZIP de",
|
||||
"then": "y luego, desde el directorio ZIP, instálelo a través de"
|
||||
},
|
||||
"linuxUsers": "Usuarios Linux",
|
||||
"notConfident": "En su lugar, opte por estos métodos si no se siente seguro al usar el script de shell",
|
||||
"noBinary": "Opte por este método en su lugar si los binarios para su plataforma no están disponibles",
|
||||
"arch": {
|
||||
"title": "Usuarios derivadas Arch",
|
||||
"intro": "En las distribuciones basadas en Arch Linux, puede instalar termscp usando un administrador de paquetes AUR como",
|
||||
"then": "then run"
|
||||
},
|
||||
"debian": {
|
||||
"title": "Usuarios derivadas Debian",
|
||||
"body": "En las distribuciones basadas en Debian, puede instalar termscp usando el paquete Deb a través de:"
|
||||
},
|
||||
"redhat": {
|
||||
"title": "Usuarios derivadas RedHat",
|
||||
"body": "En las distribuciones basadas en RedHat, puede instalar termscp usando el paquete RPM a través de:"
|
||||
},
|
||||
"macos": {
|
||||
"title": "Usuarios MacOS",
|
||||
"install": "Instalar termscp a través de"
|
||||
},
|
||||
"cargo": {
|
||||
"title": "Instalar con Cargo",
|
||||
"body": "Si un paquete no está disponible para su sistema, puede optar por instalar termscp a través de",
|
||||
"requirements": "Para instalar termscp a través de Cargo, se deben cumplir estos requisitos",
|
||||
"install": "Entonces puedes instalar termscp a través de",
|
||||
"noKeyring": "O si no desea tener soporte para llavero o está construyendo sobre *BSD:"
|
||||
}
|
||||
},
|
||||
"updates": {
|
||||
"title": "Mantener termscp actualizado",
|
||||
"disclaimer": " La actualización de termscp con este método solo está disponible para las versiones 0.7.xo superiores. Si tiene una versión anterior, debe instalar actualizaciones utilizando el",
|
||||
"reasons": {
|
||||
"title": "Why you should install updates",
|
||||
"wallOfText": "Termscp es una aplicación que aún se encuentra en su etapa inicial de desarrollo, la primera versión se lanzó en diciembre de 2020 y prácticamente solo hay un chico trabajando en ella y aún hay mucho trabajo por hacer para mejorarla y hacerla. rápido y confiable. Junto con esto, también debe considerar que, dado que es una aplicación que funciona con protocolos de red y está destinada a manipular secretos y credenciales, siempre puede haber un problema de seguridad. No puedo garantizar que no haya problemas de seguridad en las versiones que lancé en estos meses, y si los hay, puede que ni siquiera sea mi culpa, pero pueden estar contenidos en las bibliotecas en las que se basa termscp. Debido a esto, siempre es MUY importante mantener el termcp actualizado. Para demostrar cuánto me importa, solo considere que he implementado algo que muchas otras aplicaciones de código abierto no harán: la verificación de actualizaciones. Siempre que inicie termscp (a menos que esté desactivado en la configuración), termscp siempre comprobará si hay una nueva versión disponible y le notificará inmediatamente. Además de las preocupaciones de seguridad, cada actualización importante traerá muchas características increíbles 🦄 no puede perderse y la aplicación se vuelve más confiable y estable después de cada actualización 😄",
|
||||
"tldr": "Posibles problemas de seguridad; nuevas funciones asombrosas; rendimiento y estabilidad; Corrección de errores"
|
||||
},
|
||||
"gui": {
|
||||
"title": "Método GUI",
|
||||
"body": "El método GUI solo consiste en iniciar termscp sin opciones, luego debe estar frente al formulario de autenticación. Si hay una actualización disponible, aparecerá un mensaje como \"termscp x.y.z is OUT! Install update and read release notes with <CTRL + R>\". Todo lo que tiene que hacer en este punto para actualizar termscp es:",
|
||||
"steps": {
|
||||
"st": "presione CTRL + R. Las notas de la versión deberían mostrarse ahora",
|
||||
"nd": "Seleccione \"Yes\" en la entrada de radio \"Install update? \"",
|
||||
"rd": "presione \"Enter\""
|
||||
},
|
||||
"then": "If everything worked correctly a green message \"termscp x.y.z has been installed!\" will be displayed. Just restart termscp and enjoy the update 😄",
|
||||
"pex": " Si ha instalado previamente termscp a través del paquete Deb / RPM, es posible que deba utilizar el método CLI ejecutando termscp con sudo"
|
||||
},
|
||||
"cli": {
|
||||
"title": "Método CLI",
|
||||
"body": "Si lo prefiere, puede instalar una nueva actualización simplemente usando la opción CLI dedicada:",
|
||||
"pex": "Ejecute con sudo si es necesario (instalado con RPM / DEB)",
|
||||
"then": "Una vez iniciado, se le preguntará si desea instalar o no la actualización. Confirme la instalación y ta-dah, la nueva versión de termscp ahora debería estar disponible en su máquina"
|
||||
}
|
||||
}
|
||||
}
|
||||
114
site/lang/fr.json
Normal file
114
site/lang/fr.json
Normal file
@@ -0,0 +1,114 @@
|
||||
{
|
||||
"menu": {
|
||||
"desc": "Un file transfer de terminal riche en fonctionnalités",
|
||||
"intro": "Intro",
|
||||
"getStarted": "Pour commencer",
|
||||
"updates": "Mise à jours",
|
||||
"manual": "Manuel utilisateur",
|
||||
"changelog": "Changelog",
|
||||
"author": "A propos de l'auteur",
|
||||
"support": "Me soutenir"
|
||||
},
|
||||
"intro": {
|
||||
"caption": "Un file transfer et navigateur de terminal riche en fonctionnalités avec support pour SCP/SFTP/FTP/S3",
|
||||
"getStarted": "Pour commencer →",
|
||||
"versionAlert": "termscp 0.8.2 est maintenant sorti! Télécharge-le depuis",
|
||||
"here": "ici",
|
||||
"features": {
|
||||
"handy": {
|
||||
"title": "Interface utilisateur pratique",
|
||||
"body": "Explorez et utilisez le système de fichiers distant et local avec une interface utilisateur pratique."
|
||||
},
|
||||
"crossPlatform": {
|
||||
"title": "Multi-plateforme",
|
||||
"body": "Fonctionne sur Windows, MacOS, Linux et FreeBSD"
|
||||
},
|
||||
"customizable": {
|
||||
"title": "Personnalisable",
|
||||
"body": "Personnalisez l'explorateur de fichiers, l'interface utilisateur et bien d'autres paramètres..."
|
||||
},
|
||||
"bookmarks": {
|
||||
"title": "Signets",
|
||||
"body": "Connectez-vous à vos hôtes préférés via des signets intégrés et des connexions récentes"
|
||||
},
|
||||
"security": {
|
||||
"title": "Sécurité avant tout",
|
||||
"body": "Enregistrez vos mots de passe dans le coffre-fort de votre système"
|
||||
},
|
||||
"performance": {
|
||||
"title": "Regard sur les performances",
|
||||
"body": "termscp a été développé en gardant un œil sur les performances pour éviter une utilisation élevée du processeur"
|
||||
}
|
||||
},
|
||||
"footer": {
|
||||
"getStarted": "Pour commencer",
|
||||
"manual": "Manuel d'utilisateur",
|
||||
"updates": "Mise à jour"
|
||||
}
|
||||
},
|
||||
"getStarted": {
|
||||
"title": "Pour commencer",
|
||||
"quickSetup": "Installation rapide",
|
||||
"suggested": "Nous suggérons fortement cette méthode pour installer termscp",
|
||||
"posixUsers": "Si vous êtes un utilisateur Linux, FreeBSD ou MacOS, vous pouvez installer termscp via cette simple commande , qui utilisera un installateur de script shell :",
|
||||
"windows": {
|
||||
"title": "Utilisateurs Windows",
|
||||
"intro": "Vous pouvez installer termscp sur Windows via",
|
||||
"moderation": "Considérez que la modération Chocolatey peut prendre jusqu'à quelques semaines depuis la dernière version, donc si la dernière version n'est pas encore disponible, vous pouvez l'installer en téléchargeant le fichier ZIP depuis",
|
||||
"then": "puis, depuis le répertoire ZIP, installez-le via"
|
||||
},
|
||||
"linuxUsers": "Utilisateurs Linux",
|
||||
"notConfident": "Optez plutôt pour ces méthodes si vous ne vous sentez pas à l'aise avec le script shell",
|
||||
"noBinary": "Optez plutôt pour cette méthode si les binaires pour votre plate-forme ne sont pas disponibles",
|
||||
"arch": {
|
||||
"title": "Utilisateurs dérivés Arch",
|
||||
"intro": "Sur les distributions basées sur Arch Linux, vous pouvez installer termscp à l'aide d'un gestionnaire de packages AUR tel que",
|
||||
"then": "puis, installez-le via"
|
||||
},
|
||||
"debian": {
|
||||
"title": "Utilisateurs dérivés Debian",
|
||||
"body": "Sur les distributions basées sur Debian, vous pouvez installer termscp en utilisant le paquet Deb via :"
|
||||
},
|
||||
"redhat": {
|
||||
"title": "Utilisateurs dérivés RedHat",
|
||||
"body": "Sur les distributions basées sur RedHat, vous pouvez installer termscp à l'aide du package RPM via :"
|
||||
},
|
||||
"macos": {
|
||||
"title": "Utilisateurs MacOS",
|
||||
"install": "Installez termscp via"
|
||||
},
|
||||
"cargo": {
|
||||
"title": "Installer avec Cargo",
|
||||
"body": "Si un package n'est pas disponible pour votre système, vous pouvez choisir d'installer Termscp via",
|
||||
"requirements": "Pour installer termscp via Cargo, ces conditions doivent être remplies",
|
||||
"install": "Ensuite, vous pouvez installer termscp via",
|
||||
"noKeyring": "Ou si vous ne voulez pas avoir de support pour le trousseau de clés ou si vous construisez sur *BSD :"
|
||||
}
|
||||
},
|
||||
"updates": {
|
||||
"title": "Tenir à jour termscp",
|
||||
"disclaimer": " La mise à jour de termscp avec cette méthode n'est disponible que pour les versions 0.7.x ou supérieures. Si vous avez une ancienne version, vous devez installer les mises à jour en utilisant le",
|
||||
"reasons": {
|
||||
"title": "Pourquoi devriez-vous installer les mises à jour",
|
||||
"wallOfText": "termscp est une application qui est encore à ses débuts de développement, la première version est sortie en décembre 2020 et pratiquement il n'y a qu'un seul gars qui travaille dessus et il y a encore beaucoup de travail à faire pour l'améliorer et le faire rapide et fiable. Parallèlement à cela, vous devez également considérer que, puisqu'il s'agit d'une application qui fonctionne avec des protocoles réseau et est destinée à manipuler des secrets et des informations d'identification, il peut toujours y avoir un problème de sécurité. Je ne peux pas garantir qu'il n'y ait pas de problèmes de sécurité dans les versions que j'ai publiées au cours de ces mois, et s'il y en a, ce n'est peut-être même pas de ma faute, mais ils pourraient être contenus dans les bibliothèques sur lesquelles s'appuie Termscp. Pour cette raison, il est toujours TRÈS important de maintenir termscp à jour. Pour prouver à quel point j'y tiens, considérez simplement que j'ai implémenté quelque chose que de nombreuses autres applications open source ne feront pas : la vérification des mises à jour. Chaque fois que vous démarrez termscp (sauf s'il est désactivé dans la configuration), termscp vérifiera toujours si une nouvelle version est disponible et vous en informera immédiatement. En plus des problèmes de sécurité, chaque mise à jour majeure apportera de nombreuses fonctionnalités impressionnantes 🦄 vous ne pouvez pas manquer et l'application devient plus fiable et stable après chaque mise à jour 😄",
|
||||
"tldr": "Problèmes de sécurité possibles ; de nouvelles fonctionnalités impressionnantes ; performances et stabilité; Corrections de bugs"
|
||||
},
|
||||
"gui": {
|
||||
"title": "Méthode GUI",
|
||||
"body": "La méthode GUI consiste simplement à démarrer termscp sans options, vous devriez alors être devant le formulaire d'authentification. S'il y a une mise à jour disponible, un message comme \"termscp x.y.z is now OUT ! Install updated and read the release notes with CTRL+R\". Tout ce que vous avez à faire à ce stade pour mettre à jour termscp, c'est :",
|
||||
"steps": {
|
||||
"st": "appuyez sur CTRL+R. Les notes de version devraient maintenant être affichées",
|
||||
"nd": "Sélectionnez \"YES\" dans l'entrée radio \"Install update?\"",
|
||||
"rd": "appuyez \"Enter\""
|
||||
},
|
||||
"then": "Si tout a fonctionné correctement, un message vert \"termscp x.y.z has been installed!\" s'affichera. Redémarrez simplement Termscp et profitez de la mise à jour",
|
||||
"pex": " Si vous avez déjà installé termscp via le package Deb/RPM, vous devrez peut-être utiliser la méthode CLI exécutant termscp avec sudo"
|
||||
},
|
||||
"cli": {
|
||||
"title": "Méthode CLI",
|
||||
"body": "Si vous préférez, vous pouvez installer le mise à jour avec l'option CLI dédié :",
|
||||
"pex": "Exécuter avec sudo si nécessaire (installé avec RPM/DEB)",
|
||||
"then": "Une fois démarré, vous serez invité à installer ou non la mise à jour. Confirmez l'installation et ta-dah, la nouvelle version de termscp devrait maintenant être disponible sur votre machine"
|
||||
}
|
||||
}
|
||||
}
|
||||
114
site/lang/it.json
Normal file
114
site/lang/it.json
Normal file
@@ -0,0 +1,114 @@
|
||||
{
|
||||
"menu": {
|
||||
"desc": "Un file transfer ricco di funzionalità",
|
||||
"intro": "Intro",
|
||||
"getStarted": "Per iniziare",
|
||||
"updates": "Aggiornamenti",
|
||||
"manual": "Manuale",
|
||||
"changelog": "Rilasci",
|
||||
"author": "Sull'autore",
|
||||
"support": "Supportami"
|
||||
},
|
||||
"intro": {
|
||||
"caption": "Un file transfer ed explorer ricco di funzionalità con supporto per SFTP/SCP/FTP/S3",
|
||||
"getStarted": "Installa termscp →",
|
||||
"versionAlert": "termscp 0.8.2 è ORA disponbile! Scaricalo da",
|
||||
"here": "qui",
|
||||
"features": {
|
||||
"handy": {
|
||||
"title": "UI ergonomica",
|
||||
"body": "Naviga e lavora sulla macchina remote e locale attraverso una UI di facile utilizzo"
|
||||
},
|
||||
"crossPlatform": {
|
||||
"title": "Multi piattaforma",
|
||||
"body": "Gira su Windows, MacOS, Linux e FreeBSD"
|
||||
},
|
||||
"customizable": {
|
||||
"title": "Personalizzabile",
|
||||
"body": "Personalizza l'explorer, l'interfaccia e molto altro..."
|
||||
},
|
||||
"bookmarks": {
|
||||
"title": "Preferiti",
|
||||
"body": "Connetitit ai tuoi host preferiti e accedi in velocemente alle tue ultime sessioni"
|
||||
},
|
||||
"security": {
|
||||
"title": "Sicurezza in prima classe",
|
||||
"body": "Salva le tue password nel vault del tuo sistema operativo"
|
||||
},
|
||||
"performance": {
|
||||
"title": "Focus sulle performance",
|
||||
"body": "termscp è stato sviluppato tenendo conto delle performance, per garantirti il minor consumo di risore possibile"
|
||||
}
|
||||
},
|
||||
"footer": {
|
||||
"getStarted": "Per iniziare",
|
||||
"manual": "Manuale utente",
|
||||
"updates": "Aggiornamenti"
|
||||
}
|
||||
},
|
||||
"getStarted": {
|
||||
"title": "Installazione",
|
||||
"quickSetup": "Installazione veloce",
|
||||
"suggested": "Suggeriamo questo metodo per installare termscp",
|
||||
"posixUsers": "Se sei un utente Linux, MacOS o *BSD puoi installare termscp con questo semplice comando, che utilizzerà un semplice script per installare l'applicazione;",
|
||||
"windows": {
|
||||
"title": "Utenti Windows",
|
||||
"intro": "Puoi installare termscp su Windows tramite",
|
||||
"moderation": "Attenzione che i moderatori di chocolatey potrebbero metterci qualche settimana ad approvare l'ultima versione, quindi se l'ultima versione non fosse ancora disponibile, puoi installarla tramite il file ZIP da",
|
||||
"then": "e poi, dalla directory dello ZIP, lo installi con"
|
||||
},
|
||||
"linuxUsers": "Utenti Linux",
|
||||
"notConfident": "Opta per questi metodi nel caso non ti fidi dello script install.sh",
|
||||
"noBinary": "Opta per questo metodo nel caso non fosse disponibile un binario per la tua piattaforma",
|
||||
"arch": {
|
||||
"title": "Utenti derivate Arch",
|
||||
"intro": "Sulle distro derivate da Arch puoi installare termscp tramite un package manager AUR come",
|
||||
"then": "e poi lanciare"
|
||||
},
|
||||
"debian": {
|
||||
"title": "Utenti derivate Debian",
|
||||
"body": "Sulle distro derivate Debian puoi installare termscp tramite il pacchetto Deb, con:"
|
||||
},
|
||||
"redhat": {
|
||||
"title": "Utenti derivate RedHat",
|
||||
"body": "Sulle distro derivate RedHat puoi installare termscp tramite il pacchetto RPM, con:"
|
||||
},
|
||||
"macos": {
|
||||
"title": "Utenti MacOS",
|
||||
"install": "Installa termscp con"
|
||||
},
|
||||
"cargo": {
|
||||
"title": "Installa con Cargo",
|
||||
"body": "Se un pacchetto non è disponibile per il tuo sistema, puoi installare termscp con cargo con",
|
||||
"requirements": "Per installare con Cargo, questi requisiti di sistema devono essere soddisfatti",
|
||||
"install": "Infine puoi installare termscp con",
|
||||
"noKeyring": "O se non hai il supporto a DBUS o sei un utente *BSD:"
|
||||
}
|
||||
},
|
||||
"updates": {
|
||||
"title": "Mantenere termscp all'ultima versione",
|
||||
"disclaimer": "L'aggiornamento di termscp con il metodo descritto è disponibile solo per le versioni suaccessive o uguali alla 0.7.x. Nel caso tu abbia una versione precedente, puoi aggiornare termscp tramite il",
|
||||
"reasons": {
|
||||
"title": "Perché dovresti aggiornare termscp",
|
||||
"wallOfText": "Termscp è un'applicazione che è ancora all'inizio del suo ciclo di vita, la prima versione è infatti risalente a dicembre 2020 e praticamente c'è solo una persona che ci lavora. C'è ancora molto da fare prima di renderlo veloce, sicuro al 100% ed affidabile. Oltre a questo devi considerare che lavorando con protocolli di rete che utilizzano autenticazione ci potrebbero sempre essere delle falle di sicurezza nelle librerie su cui ci appoggiamo e non ho modo ad oggi di garantire che non ce ne siano. Per questo motivo è sempre importante mantenere termscp all'ultima versione e leggere i changelog del progetto. Tanto per capirci su quanto ci tenga a mantenere le versioni all'ultima versione, questo è uno dei pochi progetti CLI ad avere la possibilità di installarlo direttamente dall'applicazione Comunque oltre a possibili falle di sicurezza e bug, ad ogni aggiornamento introdurrò nuove fantastiche funzionalità 🦄 da non perdere 😄",
|
||||
"tldr": "Possibili problemi di sicurezza; nuove features; performance e stabilità; bug fix"
|
||||
},
|
||||
"gui": {
|
||||
"title": "Metodo da interfaccia grafica",
|
||||
"body": "Il metodo da interfaccia grafica richiede di lanciare termscp senza argomenti, a questo punto nella pagina dell'autenticazione dovresti essere notificato di una nuova versione disponibile, tramite un messaggio tipo \"termscp x.y.z is OUT! Update and read release notes with CTRL+R\". A questo punto ti basterà:",
|
||||
"steps": {
|
||||
"st": "Premere CTRL+R. Le note di rilascio saranno visualizzate in un popup",
|
||||
"nd": "Seleziona \"YES\" nel dialogo radio \"Install update?\"",
|
||||
"rd": "Premi \"Invio\""
|
||||
},
|
||||
"then": "Se tutto è andato a buon fine un messaggio con scritto \"termscp x.y.z has been installed!\" sarà visualizzato. A questo punto riavvia termscp e goditi le novità 😄",
|
||||
"pex": " Se in precedenza hai installato termscp con pacchetto Deb/RPM, dovresti aver bisogno di lanciare termscp da utente sudo. Nel caso ti consiglio il metodo CLI."
|
||||
},
|
||||
"cli": {
|
||||
"title": "Metodo da linea di comando",
|
||||
"body": "Se preferisci o devi installare con sudo, puoi installare termscp lanciandolo con l'opzione da linea di comando:",
|
||||
"pex": "Lancialo con sudo se necessario (tipo se l'hai installato con pacchetto RPM/DEB)",
|
||||
"then": "Una volta lanciato, se c'è un aggiornamento disponibile ti chiederà se procedere. Conferma e a questo punto dovrebbe installarlo. Se tutto è andato a buon fine, riavviando termscp dovrebbe essere l'ultima versione."
|
||||
}
|
||||
}
|
||||
}
|
||||
114
site/lang/zh-CN.json
Normal file
114
site/lang/zh-CN.json
Normal file
@@ -0,0 +1,114 @@
|
||||
{
|
||||
"menu": {
|
||||
"desc": "功能丰富的终端文件传输",
|
||||
"intro": "介绍",
|
||||
"getStarted": "开始",
|
||||
"updates": "安装更新",
|
||||
"manual": "用户手册",
|
||||
"changelog": "发布历史",
|
||||
"author": "关于作者",
|
||||
"support": "支持我"
|
||||
},
|
||||
"intro": {
|
||||
"caption": "功能丰富的终端 UI 文件传输和浏览器,支持 SCP/SFTP/FTP/S3",
|
||||
"getStarted": "开始 →",
|
||||
"versionAlert": "termscp 0.8.2 现已发布! 从下载",
|
||||
"here": "这里",
|
||||
"features": {
|
||||
"handy": {
|
||||
"title": "方便的用户界面",
|
||||
"body": "使用方便的 UI 在远程和本地机器文件系统上探索和操作。"
|
||||
},
|
||||
"crossPlatform": {
|
||||
"title": "跨平台",
|
||||
"body": "在 Windows、MacOS、Linux 和 FreeBSD 上运行"
|
||||
},
|
||||
"customizable": {
|
||||
"title": "可定制",
|
||||
"body": "自定义文件浏览器、UI 和许多其他参数..."
|
||||
},
|
||||
"bookmarks": {
|
||||
"title": "书签",
|
||||
"body": "通过内置书签和最近的连接连接到您最喜欢的主机"
|
||||
},
|
||||
"security": {
|
||||
"title": "安全第一",
|
||||
"body": "将您的密码保存到您的操作系统密钥保管库中"
|
||||
},
|
||||
"performance": {
|
||||
"title": "关注性能",
|
||||
"body": "已经开发了 termscp 关注性能以防止高 CPU 使用率"
|
||||
}
|
||||
},
|
||||
"footer": {
|
||||
"getStarted": "开始",
|
||||
"manual": "用户手册",
|
||||
"updates": "安装更新"
|
||||
}
|
||||
},
|
||||
"getStarted": {
|
||||
"title": "开始",
|
||||
"quickSetup": "快速设置",
|
||||
"suggested": "我们强烈建议使用这种方法来安装termscp",
|
||||
"posixUsers": "如果您是 Linux、FreeBSD 或 MacOS 用户,您可以通过这个简单的命令安装 termscp,它将使用 shell 脚本安装程序:",
|
||||
"windows": {
|
||||
"title": "Windows 用户",
|
||||
"intro": "安装",
|
||||
"moderation": "考虑到 Chocolatey 审核自上次发布以来可能需要长达数周的时间,因此如果最新版本尚不可用,您可以从以下位置下载 ZIP 文件进行安装",
|
||||
"then": "然后,从 ZIP 目录,安装它"
|
||||
},
|
||||
"linuxUsers": "Linux 用户",
|
||||
"notConfident": "如果您对使用 shell 脚本没有信心,请选择这些方法",
|
||||
"noBinary": "如果您的平台的二进制文件不可用,请改用此方法",
|
||||
"arch": {
|
||||
"title": "Arch派生用户",
|
||||
"intro": "在基于 Arch Linux 的发行版上,您可以使用 AUR 包管理器安装 termscp,例如",
|
||||
"then": "然后运行"
|
||||
},
|
||||
"debian": {
|
||||
"title": "Debian派生用户",
|
||||
"body": "在基于 Debian 的发行版上,您可以通过以下方式使用 Deb 包安装 termscp:"
|
||||
},
|
||||
"redhat": {
|
||||
"title": "Redhat派生用户",
|
||||
"body": "在基于 RedHat 的发行版上,您可以通过以下方式使用 RPM 包安装 termscp:"
|
||||
},
|
||||
"macos": {
|
||||
"title": "MacOS 用户",
|
||||
"install": "通过以下方式安装termscp:"
|
||||
},
|
||||
"cargo": {
|
||||
"title": "使用“Cargo”安装",
|
||||
"body": "如果您的系统没有可用的软件包,您可以选择通过以下方式安装 termscp:",
|
||||
"requirements": "要通过 Cargo 安装termscp,必须满足这些要求",
|
||||
"install": "然后你可以通过安装termscp",
|
||||
"noKeyring": "或者,如果您不想支持密钥环,或者您正在构建 *BSD:"
|
||||
}
|
||||
},
|
||||
"updates": {
|
||||
"title": "使termscp保持最新",
|
||||
"disclaimer": " 使用此方法更新 termscp 仅适用于 0.7.x 版本或更高版本。 如果您有旧版本,则必须使用",
|
||||
"reasons": {
|
||||
"title": "为什么要安装更新",
|
||||
"wallOfText": "termscp 是一个仍处于早期开发阶段的应用程序,第一个版本已于 2020 年 12 月发布,实际上只有一个人在开发它,为了改进它并使其成功,还有很多工作要做快速可靠。除此之外,您还应该考虑到,由于它是一个使用网络协议的应用程序,旨在操纵机密和凭据,因此可能始终存在安全问题。我不能保证我这几个月发布的版本没有安全问题,如果有,它们甚至可能不是我的错,但它们可能包含在 termscp 依赖的库中。因此,保持termscp 最新总是非常重要的。为了证明我有多关心它,请考虑一下我已经实现了许多其他开源应用程序不会做的事情:更新检查。每当您启动termscp(除非在配置中停用)termscp 将始终检查是否有新版本可用并立即通知您。除了安全问题,每次重大更新都会带来许多很棒的功能🦄你不能错过,每次更新后应用程序都变得更加可靠和稳定😄",
|
||||
"tldr": "可能的安全问题; 新的很棒的功能; 性能和稳定性; Bug修复"
|
||||
},
|
||||
"gui": {
|
||||
"title": "图形用户界面方式",
|
||||
"body": "GUI 方法只包括启动没有选项的 termscp,然后您应该位于身份验证表单的前面。 如果有可用更新,则会显示类似\"termscp x.y.z is OUT! Update and read release notes with CTRL+R\"之类的消息。 此时更新termscp所需要做的就是:",
|
||||
"steps": {
|
||||
"st": "按 CTRL+R。 现在应该显示发行说明",
|
||||
"nd": "在 \"Install update?\" 单选输入中选择 \"YES\"",
|
||||
"rd": "按 \"Enter\""
|
||||
},
|
||||
"then": "termscp x.y.z has been installed!”。 只需重新启动termscp并享受更新😄",
|
||||
"pex": " 如果您之前已经通过 Deb/RPM 包安装了 termscp,您可能需要使用 CLI 方法通过 sudo 运行 termscp"
|
||||
},
|
||||
"cli": {
|
||||
"title": "命令行方式",
|
||||
"body": "如果您愿意,可以仅使用专用 CLI 选项安装新更新:",
|
||||
"pex": "如有必要,使用 sudo 运行(使用 RPM/DEB 安装)",
|
||||
"then": "启动后,系统将提示您是否安装更新。 确认安装和 ta-dah,新版本的termscp 现在应该可以在你的机器上使用了"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user