Compare commits
43 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
9e982dca37 | ||
|
6f25ece72d | ||
|
b28023bec2 | ||
|
0df8baa7bf | ||
|
14c647ca46 | ||
|
f2ff82c810 | ||
|
2ce9f55f28 | ||
|
4c3c1ac56e | ||
|
4aa14a14a2 | ||
|
a398fae023 | ||
|
100bd648a9 | ||
|
348c5c31c0 | ||
|
7556e5560d | ||
|
931afc3dd2 | ||
|
b25244aa9a | ||
|
abe3a2ccb6 | ||
|
f7a80da21b | ||
|
e11f0293fe | ||
|
5ec617a778 | ||
|
eb86966d33 | ||
|
e44014a1a9 | ||
|
c38cc6fd5a | ||
|
cdc6840808 | ||
|
abba6fcaa9 | ||
|
293a373632 | ||
|
5b3dd86a5e | ||
|
d2719cec41 | ||
|
153f1aacee | ||
|
5d0b5e9c94 | ||
|
a6cb385375 | ||
|
ba074dd1b0 | ||
|
22d54ab2ab | ||
|
0dfe864f12 | ||
|
32a16eb2a4 | ||
|
f35056a916 | ||
|
6e9b0b4d10 | ||
|
216191563e | ||
|
cf827e7c25 | ||
|
e36379de44 | ||
|
25662e8736 | ||
|
e16c9fba43 | ||
|
7037f63b44 | ||
|
f9e3b4129b |
@@ -2,7 +2,6 @@
|
||||
|
||||
[](https://travis-ci.org/cutls/TheDesk)
|
||||
[](https://translate.thedesk.top/project/thedesk)
|
||||
[](https://status.cutls.com/)
|
||||
Mastodon/Misskey client for PC(Windows/Linux/macOS)
|
||||
オープンソースSNSマストドン/MisskeyのWindows/Linuxクライアント
|
||||
Download:[TheDesk](https://thedesk.top)
|
||||
@@ -57,7 +56,7 @@ Crowdinから翻訳に参加してみませんか?: https://translate.thedesk.
|
||||
* sumchecker(in package.json)
|
||||
* Ability to read unformated files!(install yourself)
|
||||
|
||||
## Contributors/コントリビューター
|
||||
## Contributors/主なコントリビューター
|
||||
|
||||
macOSビルダー
|
||||
|
||||
@@ -67,6 +66,10 @@ Linuxビルダー
|
||||
|
||||
* [ぽぷんじゃ](https://popon.pptdn.jp/@popn_ja)
|
||||
|
||||
iTunes NowPlayingにアルバムアートワークを付けてくれた人
|
||||
|
||||
* [kPherox](https://www.kr-kp.com/)
|
||||
|
||||
## Build/ビルド
|
||||
|
||||
Misskey(misskey.xyz) application token is not in cutls/TheDesk
|
||||
|
@@ -68,6 +68,15 @@
|
||||
#preview-field {
|
||||
display: none;
|
||||
}
|
||||
.preview-img{
|
||||
width:50px;
|
||||
max-height:100px;
|
||||
}
|
||||
.pi-wrap{
|
||||
display:inline-block;
|
||||
width:50px;
|
||||
max-height:100px;
|
||||
}
|
||||
#default-emoji a{
|
||||
color:white;
|
||||
margin-right:2px;
|
||||
|
@@ -108,10 +108,22 @@ iframe {
|
||||
.box {
|
||||
overflow: hidden;
|
||||
min-width: 300px;
|
||||
height: 100vh;
|
||||
flex: 1;
|
||||
border: thin solid gray;
|
||||
border-top:none;
|
||||
display:flex;
|
||||
flex-direction: column;
|
||||
margin-bottom: -10px;
|
||||
}
|
||||
.img_FTL{
|
||||
display:none;
|
||||
}
|
||||
.bbcode_FTL{
|
||||
display:none;
|
||||
}
|
||||
.boxIn{
|
||||
height:100%;
|
||||
border: thin solid gray;
|
||||
overflow: hidden;
|
||||
}
|
||||
.box .pin,#his-data .pin{
|
||||
display:none;
|
||||
@@ -131,7 +143,11 @@ iframe {
|
||||
.faicon_FTL{
|
||||
display:none;
|
||||
}
|
||||
.tl-box{ height:calc(100% - 40px); overflow-y:scroll; overflow-x:hidden }
|
||||
.tl-box{
|
||||
position:relative;
|
||||
height:calc(100% - 40px);
|
||||
overflow-y:scroll;
|
||||
overflow-x:hidden }
|
||||
.additional {
|
||||
overflow-x: scroll;
|
||||
width: 100%;
|
||||
@@ -266,6 +282,7 @@ grid-area: toot;
|
||||
.toot-img {
|
||||
object-fit: cover;
|
||||
width: 100%;
|
||||
margin-right:1px;
|
||||
}
|
||||
.toot img:not(.emoji-img) {
|
||||
max-width: 100%;
|
||||
|
@@ -1,5 +0,0 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="refresh" content="0;URL='language.html?mode=redirect'" />
|
||||
</head>
|
@@ -92,6 +92,7 @@ $(function($) {
|
||||
if (e.keyCode === 88) {
|
||||
if (!$("#post-box").hasClass("appear")) {
|
||||
show();
|
||||
$('textarea').focus();
|
||||
} else {
|
||||
hide();
|
||||
}
|
||||
|
@@ -62,10 +62,29 @@ function verck(ver) {
|
||||
}
|
||||
});
|
||||
}
|
||||
}else if(platform=="darwin"){
|
||||
if(localStorage.getItem("winstore")=="unix"){
|
||||
localStorage.removeItem("winstore")
|
||||
}
|
||||
if(!localStorage.getItem("winstore")){
|
||||
const options = {
|
||||
type: 'info',
|
||||
title: "Select your platform",
|
||||
message: lang.lang_version_platform_mac,
|
||||
buttons: [lang.lang_no,lang.lang_yesno]
|
||||
}
|
||||
dialog.showMessageBox(options, function(arg) {
|
||||
if(arg==1){
|
||||
localStorage.setItem("winstore","brewcask")
|
||||
}else{
|
||||
localStorage.setItem("winstore","localinstall")
|
||||
}
|
||||
});
|
||||
}
|
||||
}else{
|
||||
localStorage.setItem("winstore","unix")
|
||||
}
|
||||
if(localStorage.getItem("winstore")=="snapcraft" || localStorage.getItem("winstore")=="winstore"){
|
||||
if(localStorage.getItem("winstore")=="brewcask" || localStorage.getItem("winstore")=="snapcraft" || localStorage.getItem("winstore")=="winstore"){
|
||||
var winstore=true;
|
||||
}else{
|
||||
var winstore=false;
|
||||
@@ -178,10 +197,14 @@ function verck(ver) {
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
var infostreaming=false;
|
||||
function infowebsocket(){
|
||||
infows = new WebSocket("wss://thedesk.top/ws/");
|
||||
infows.onopen = function(mess) {
|
||||
console.log(tlid + ":Connect Streaming Info:");
|
||||
console.log(mess);
|
||||
infostreaming=true;
|
||||
}
|
||||
infows.onmessage = function(mess) {
|
||||
console.log(":Receive Streaming:");
|
||||
@@ -227,11 +250,19 @@ function verck(ver) {
|
||||
}
|
||||
}
|
||||
infows.onerror = function(error) {
|
||||
infostreaming=false;
|
||||
console.error("Error closing:info");
|
||||
console.error(error);
|
||||
return false;
|
||||
};
|
||||
infows.onclose = function() {
|
||||
infostreaming=false;
|
||||
console.error("Closing:info");
|
||||
};
|
||||
}
|
||||
setInterval(function(){
|
||||
if(!infostreaming){
|
||||
console.log("try to connect")
|
||||
infowebsocket();
|
||||
}
|
||||
}, 10000);
|
@@ -23,6 +23,7 @@ var lang={
|
||||
"lang_version_skipver":"Update was ignored.",
|
||||
"lang_version_platform":"Was this software installed at Microsoft Store? When select 'yes', any update was ignored.",
|
||||
"lang_version_platform_linux":"Was this software installed at Snapcraft(snapd)? When select 'yes', any update was ignored.",
|
||||
"lang_version_platform_mac":"Was this software installed at Homebrew Cask? When select 'yes', any update was ignored.",
|
||||
//login
|
||||
//login/login.js
|
||||
"lang_login_noauth":"Show TL of unlogined accounts",
|
||||
@@ -45,6 +46,7 @@ var lang={
|
||||
//post/img.js
|
||||
"lang_postimg_previewdis":"cannot preview",
|
||||
"lang_postimg_aftupload":"You cannot change accounts after uploading.",
|
||||
"lang_postimg_delete":"Delete this image.",
|
||||
//post/post.js
|
||||
"lang_post_tagTL":"This toot does not contain a default tag. This toot will not be shown on Local TL. Continue?",
|
||||
"lang_post_tagVis":"This toot(not 'public' toot) is not shown on this tag's TL.",
|
||||
@@ -122,6 +124,8 @@ var lang={
|
||||
"lang_layout_webviewmode":"Prefer WebView",
|
||||
"lang_excluded":"Excluded type of notification",
|
||||
"lang_layout_excludingbt":"Show BT mode(OFF/Exclude BT/Only BT)",
|
||||
"lang_layout_leftFold":"Stack to the left",
|
||||
"lang_layout_leftUnfold":"Dock on the right",
|
||||
//ui/sort.js
|
||||
"lang_sort_gothis":"Go to this column",
|
||||
"lang_sort_remthis":"Delete this column",
|
||||
@@ -149,6 +153,7 @@ var lang={
|
||||
"lang_parse_faved":" favourited your toot",
|
||||
"lang_parse_bted":" boosted your toot",
|
||||
"lang_parse_btedsimple":" boosted",
|
||||
"lang_parse_polled":"'s poll",
|
||||
"lang_parse_notftime":"Actioned at",
|
||||
"lang_parse_cwshow":"Show",
|
||||
"lang_parse_fulltext":"Full size text:",
|
||||
|
@@ -23,6 +23,7 @@ var lang={
|
||||
"lang_version_skipver":"アップデートはスキップされました。",
|
||||
"lang_version_platform":"このソフトウェアはMicrosoft Storeからダウンロードされましたか?(「はい」を選択すると次回からアップデート通知を無視します。)",
|
||||
"lang_version_platform_linux":"このソフトウェアはSnapcraft(snapd)からインストールしましたか?(「はい」を選択すると次回からアップデート通知を無視します。)",
|
||||
"lang_version_platform_mac":"このソフトウェアはHomebrew Caskからインストールしましたか?(「はい」を選択すると次回からアップデート通知を無視します。)",
|
||||
//login
|
||||
//login/login.js
|
||||
"lang_login_noauth":"認証せずに見る",
|
||||
@@ -45,6 +46,7 @@ var lang={
|
||||
//post/img.js
|
||||
"lang_postimg_previewdis":"プレビューできません。",
|
||||
"lang_postimg_aftupload":"アップロード後はアカウントを切り替えられません。",
|
||||
"lang_postimg_delete":"この画像を削除します",
|
||||
//post/post.js
|
||||
"lang_post_tagTL":"デフォルトタグが挿入されていません。このまま投稿するとローカルには表示されません。",
|
||||
"lang_post_tagVis":"公開範囲が「公開」以外だと、タグTLに表示されません。(一部インスタンスを除く)",
|
||||
@@ -106,6 +108,8 @@ var lang={
|
||||
//tl/tl.js
|
||||
"lang_tl_media":"メディア",
|
||||
"lang_tl_reconnect":"Streamingに再接続しました",
|
||||
//ui/img.js
|
||||
"lang_img_DLDone":"ダウンロード先:",
|
||||
//ui/layout.js
|
||||
"lang_layout_gotop":"一番上へ。アイコンが赤のときはストリーミングに接続できていません。F5等で再読込をお試し下さい。",
|
||||
"lang_layout_thisacct":"このアカウントの{{notf}}",
|
||||
@@ -122,6 +126,8 @@ var lang={
|
||||
"lang_layout_webviewmode":"WebView優先",
|
||||
"lang_excluded":"除外する通知",
|
||||
"lang_layout_excludingbt":"BT表示(OFF/BT除外/BTのみ)",
|
||||
"lang_layout_leftFold":"左へ重ねる",
|
||||
"lang_layout_leftUnfold":"右へ出す",
|
||||
//ui/sort.js
|
||||
"lang_sort_gothis":"このカラムへ",
|
||||
"lang_sort_remthis":"このカラムを削除",
|
||||
@@ -149,6 +155,7 @@ var lang={
|
||||
"lang_parse_faved":"がお気に入り登録しました",
|
||||
"lang_parse_bted":"がブーストしました",
|
||||
"lang_parse_btedsimple":"がブースト",
|
||||
"lang_parse_polled":"のアンケート",
|
||||
"lang_parse_notftime":"通知された時間",
|
||||
"lang_parse_cwshow":"見る",
|
||||
"lang_parse_fulltext":"以下全文",
|
||||
|
@@ -335,7 +335,29 @@ function misskeyLogin(url) {
|
||||
httpreq.send(JSON.stringify({
|
||||
name: "TheDesk(PC)",
|
||||
description: "Mastodon client for PC",
|
||||
permission: ["read","write","follow"]
|
||||
permission: [
|
||||
"account-read",
|
||||
"account-write",
|
||||
"account/read",
|
||||
"account/write",
|
||||
"drive-read",
|
||||
"drive-write",
|
||||
"favorite-read",
|
||||
"favorite-write",
|
||||
"favorites-read",
|
||||
"following-read",
|
||||
"following-write",
|
||||
"messaging-read",
|
||||
"messaging-write",
|
||||
"note-read",
|
||||
"note-write",
|
||||
"notification-read",
|
||||
"notification-write",
|
||||
"reaction-read",
|
||||
"reaction-write",
|
||||
"vote-read",
|
||||
"vote-write"
|
||||
]
|
||||
}));
|
||||
httpreq.onreadystatechange = function() {
|
||||
if (httpreq.readyState === 4) {
|
||||
|
@@ -171,10 +171,10 @@ function opendev(){
|
||||
*/
|
||||
}
|
||||
|
||||
var webview = document.getElementById('webview');
|
||||
var webviewDom = document.getElementById('webview');
|
||||
const {
|
||||
shell
|
||||
} = require('electron');
|
||||
webview.addEventListener('new-window', function(e) {
|
||||
webviewDom.addEventListener('new-window', function(e) {
|
||||
shell.openExternal(e.url);
|
||||
});
|
@@ -131,7 +131,7 @@ function media(b64, type, no) {
|
||||
console.log(json);
|
||||
var img = localStorage.getItem("img");
|
||||
if (json.type.indexOf("image")!=-1) {
|
||||
var html = '<img src="' + json[previewer] + '" style="width:50px; max-height:100px;">';
|
||||
var html = '<img src="' + json[previewer] + '" class="preview-img pointer" data-media="'+json["id"]+'" onclick="deleteImage(\''+json["id"]+'\')" title="'+lang.lang_postimg_delete+'">';
|
||||
$('#preview').append(html);
|
||||
} else {
|
||||
$('#preview').append(lang.lang_postimg_previewdis);
|
||||
@@ -183,22 +183,20 @@ function toBlob(base64, type) {
|
||||
var element = document.querySelector("#textarea");
|
||||
element.addEventListener("paste", function(e){
|
||||
console.log(e)
|
||||
// 画像の場合
|
||||
// e.clipboardData.types.length == 0
|
||||
// かつ
|
||||
// e.clipboardData.types[0] == "Files"
|
||||
// となっているので、それ以外を弾く
|
||||
if (!e.clipboardData
|
||||
|| !e.clipboardData.types
|
||||
|| (e.clipboardData.types.length != 1)
|
||||
|| (e.clipboardData.types[0] != "Files")) {
|
||||
if (!e.clipboardData || !e.clipboardData.items) {
|
||||
return true;
|
||||
}
|
||||
// DataTransferItemList に画像が含まれいない場合は終了する
|
||||
var imageItems = [...e.clipboardData.items].filter(i => i.type.startsWith('image'));
|
||||
if (imageItems.length == 0) {
|
||||
console.log("not image")
|
||||
return true;
|
||||
}
|
||||
|
||||
// ファイルとして得る
|
||||
// (なぜかgetAsStringでは上手くいかなかった)
|
||||
var imageFile = e.clipboardData.items[0].getAsFile();
|
||||
// DataTransferItem の kind は file なので getAsString ではなく getAsFile を呼ぶ
|
||||
var imageFile = imageItems[0].getAsFile();
|
||||
var imageType = imageItems[0].type;
|
||||
|
||||
// FileReaderで読み込む
|
||||
var fr = new FileReader();
|
||||
@@ -209,7 +207,8 @@ element.addEventListener("paste", function(e){
|
||||
if(mediav){
|
||||
var i=mediav.split(",").length;
|
||||
}
|
||||
media(base64, "image/png", i)
|
||||
// DataTransferItem の type に mime tipes があるのでそれを使う
|
||||
media(base64, imageType, i)
|
||||
};
|
||||
fr.readAsDataURL(imageFile);
|
||||
|
||||
@@ -223,3 +222,19 @@ function adobe(){
|
||||
ipc.on('adobeagree', function (event, arg) {
|
||||
localStorage.setItem("adobeagree",arg);
|
||||
});
|
||||
function deleteImage(key){
|
||||
console.log(key);
|
||||
if(!confirm(lang.lang_postimg_delete)){
|
||||
return false;
|
||||
}
|
||||
var media = $("#media").val();
|
||||
var arr=media.split(",");
|
||||
for(var i=0;i<media.length;i++){
|
||||
if(arr[i]==key){
|
||||
arr.splice(i, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
$("#media").val(arr.join(","));
|
||||
$('#preview [data-media='+key+']').remove();
|
||||
}
|
@@ -60,7 +60,7 @@ function loadVis(){
|
||||
memory = "public";
|
||||
}
|
||||
vis(memory);
|
||||
} else if(vist == "server") {
|
||||
} else if(vist == "useapi") {
|
||||
var acct_id = $("#post-acct-sel").val();
|
||||
var multi = localStorage.getItem("multi");
|
||||
var obj = JSON.parse(multi);
|
||||
|
@@ -115,7 +115,7 @@ input.addEventListener("focus", function() {
|
||||
}
|
||||
});
|
||||
$("#right-side").show()
|
||||
$("#suggest").html("@:<br>" + accts);
|
||||
$("#suggest").html(accts);
|
||||
$("#poll").addClass("hide")
|
||||
$("#emoji").addClass("hide")
|
||||
} else {
|
||||
|
@@ -8,8 +8,10 @@ function re(id,ats_cm,acct_id,mode){
|
||||
for(var i=0;i<ats.length;i++){
|
||||
var at=ats[i];
|
||||
var te=$("#textarea").val();
|
||||
if(at!=localStorage.getItem("user_"+acct_id)){
|
||||
$("#textarea").val("@"+at+" "+te);
|
||||
}
|
||||
}
|
||||
$("#rec").text(lang.lang_yesno);
|
||||
$("#post-acct-sel").val(acct_id);
|
||||
$("#post-acct-sel").prop("disabled", true);
|
||||
|
@@ -412,62 +412,6 @@ function staCopy(id){
|
||||
}
|
||||
|
||||
}
|
||||
//魚拓
|
||||
function shot(){
|
||||
var title=$("#tootmodal").attr("data-id");
|
||||
var off = $('#toot-this').offset();
|
||||
var w=$("#toot-this").width()+50;
|
||||
var h=$("#toot-this").height()+50;
|
||||
var electron = require("electron");
|
||||
const fs = require("fs");
|
||||
const os = require('os')
|
||||
const shell = electron.shell;
|
||||
const path = require('path')
|
||||
var ipc = electron.ipcRenderer;
|
||||
let options = {
|
||||
types: ['screen'],
|
||||
thumbnailSize: {
|
||||
width: window.parent.screen.width,
|
||||
height: window.parent.screen.height
|
||||
}
|
||||
}
|
||||
const desktopCapturer = electron.desktopCapturer;
|
||||
desktopCapturer.getSources(options, function(error, sources) {
|
||||
if (error) return console.log(error)
|
||||
|
||||
sources.forEach(function(source) {
|
||||
if (source.name === 'Screen 1' || source.name === 'TheDesk') {
|
||||
var durl=source.thumbnail.toDataURL();
|
||||
var b64 = durl.match(
|
||||
/data:image\/png;base64,(.+)/
|
||||
);
|
||||
const screenshotPath = path.join(os.tmpdir(), 'screenshot.png');
|
||||
const savePath = path.join(os.tmpdir(), 'screenshot.png');
|
||||
var ipc = electron.ipcRenderer;
|
||||
if(localStorage.getItem("savefolder")){
|
||||
var save=localStorage.getItem("savefolder");
|
||||
}else{
|
||||
var save="";
|
||||
}
|
||||
ipc.send('shot', ['file://' + screenshotPath,w,h,b64[1],title,off.top+50,off.left,save]);
|
||||
if($("#toot-this .img-parsed").length>0){
|
||||
for(i=0;i<$("#toot-this .img-parsed").length;i++){
|
||||
var url=$("#toot-this .img-parsed").eq(i).attr("data-url");
|
||||
if(localStorage.getItem("savefolder")){
|
||||
var save=localStorage.getItem("savefolder");
|
||||
}else{
|
||||
var save="";
|
||||
}
|
||||
ipc.send('shot-img-dl', [url,title+"_img"+i+".png",save]);
|
||||
}
|
||||
}
|
||||
return;
|
||||
const message = `Saved screenshot to: ${screenshotPath}`
|
||||
//screenshotMsg.textContent = message
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
//翻訳
|
||||
function trans(tar,to){
|
||||
var html=$("#toot-this .toot").html();
|
||||
|
@@ -421,6 +421,16 @@ function exclude(key){
|
||||
}else{
|
||||
excludetxt="?exclude_types[]=follow"
|
||||
}
|
||||
var follow=true;
|
||||
}else{
|
||||
var follow=false;
|
||||
}
|
||||
if($('#exc-poll-'+key+':checked').val()){
|
||||
if(reply || bt || fav || follow){
|
||||
excludetxt=excludetxt+"&exclude_types[]=poll"
|
||||
}else{
|
||||
excludetxt="?exclude_types[]=poll"
|
||||
}
|
||||
}else{
|
||||
}
|
||||
localStorage.setItem("exclude-"+key,excludetxt)
|
||||
|
@@ -239,6 +239,7 @@ function mixmore(tlid,type) {
|
||||
var multi = localStorage.getItem("column");
|
||||
var obj = JSON.parse(multi);
|
||||
var acct_id = obj[tlid].domain;
|
||||
moreloading=true;
|
||||
todo("Integrated TL MoreLoading...(Local)");
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||
@@ -302,9 +303,9 @@ function mixmore(tlid,type) {
|
||||
});
|
||||
|
||||
$("#timeline_" + tlid).append(templete);
|
||||
mixre(acct_id, tlid);
|
||||
additional(acct_id, tlid);
|
||||
jQuery("time.timeago").timeago();
|
||||
moreloading=false;
|
||||
todc();
|
||||
});
|
||||
});
|
||||
|
@@ -33,6 +33,11 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
||||
var ltr = localStorage.getItem("letters");
|
||||
var gif = localStorage.getItem("gif");
|
||||
var imh = localStorage.getItem("img-height");
|
||||
if(imh=="full"){
|
||||
imh="auto";
|
||||
}else{
|
||||
imh=imh+"px";
|
||||
}
|
||||
//独自ロケール
|
||||
var locale = localStorage.getItem("locale");
|
||||
if(locale=="yes"){
|
||||
@@ -223,6 +228,9 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
||||
if(!locale && localStorage.getItem("fav_" + acct_id)){
|
||||
what = localStorage.getItem("fav_" + acct_id);
|
||||
}
|
||||
} else if (toot.type == "poll") {
|
||||
var what = lang.lang_parse_polled;
|
||||
var icon = "fa-tasks purple-text";
|
||||
}
|
||||
var noticetext = '<span class="cbadge cbadge-hover"title="' + date(toot.created_at,
|
||||
'absolute') + '('+lang.lang_parse_notftime+')"><i class="fa fa-clock-o"></i>' + date(toot.created_at,
|
||||
@@ -510,7 +518,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
||||
acct_id + '\')" id="' + id + '-image-' + key2 + '" data-url="' + url +
|
||||
'" data-type="' + media.type + '" class="img-parsed"><img draggable="false" src="' +
|
||||
purl + '" class="' + sense +
|
||||
' toot-img pointer" style="width:' + cwdt + '%; height:'+imh+'px;"></a></span>';
|
||||
' toot-img pointer" style="width:calc(' + cwdt + '% - 1px); height:'+imh+';"></a></span>';
|
||||
});
|
||||
media_ids = media_ids.slice(0, -1) ;
|
||||
} else {
|
||||
|
@@ -287,6 +287,10 @@ function dlImg(){
|
||||
console.log(arg);
|
||||
})
|
||||
ipc.on('general-dl-message', function (event, arg) {
|
||||
console.log(arg);
|
||||
var argC=arg.replace(/\\/g,"\\\\")+"\\\\.";
|
||||
Materialize.toast(lang.lang_img_DLDone+arg+'<button class="btn-flat toast-action" onclick="openFinder(\''+argC+'\')">Show</button>', 5000);
|
||||
})
|
||||
}
|
||||
function openFinder(dir){
|
||||
ipc.send('open-finder', dir);
|
||||
}
|
@@ -54,8 +54,7 @@ function parseColumn() {
|
||||
}
|
||||
var acctlist=obj;
|
||||
console.log(obj);
|
||||
/*
|
||||
var xed=localStorage.getItem("xed");
|
||||
/*var xed=localStorage.getItem("xed");
|
||||
if(xed){
|
||||
xpand();
|
||||
}*/
|
||||
@@ -73,7 +72,9 @@ var xed=localStorage.getItem("xed");
|
||||
if ($("#timeline-container").length) {
|
||||
$("#timeline-container").html("");
|
||||
}
|
||||
Object.keys(obj).forEach(function(key) {
|
||||
var basekey=0;
|
||||
for(var key=0;key<obj.length;key++){
|
||||
var next=key+1;
|
||||
var acct = obj[key];
|
||||
if(acct.type=="notf"){
|
||||
var notf_attr=' data-notf='+acct.domain;
|
||||
@@ -109,7 +110,7 @@ var xed=localStorage.getItem("xed");
|
||||
icnsert=' style="color: #'+ichex+'" ';
|
||||
}
|
||||
}
|
||||
console.log(acct.domain);
|
||||
console.log(acct);
|
||||
if(acctlist[acct.domain]){
|
||||
if(acctlist[acct.domain].background!="def"){
|
||||
insert=insert+" border-bottom:medium solid #"+acctlist[acct.domain].background+";";
|
||||
@@ -127,7 +128,7 @@ var xed=localStorage.getItem("xed");
|
||||
}else{
|
||||
var css="";
|
||||
}
|
||||
var html =webview("https://tweetdeck.twitter.com",key,insert,icnsert,css);
|
||||
var html =webviewParse("https://tweetdeck.twitter.com",key,insert,icnsert,css);
|
||||
$("#timeline-container").append(html);
|
||||
}else{
|
||||
var width = localStorage.getItem("width");
|
||||
@@ -145,6 +146,7 @@ var xed=localStorage.getItem("xed");
|
||||
'<input type="checkbox" class="filled-in" id="exc-fav-'+key+'" '+excludeCk(key,"favourite")+' /><label for="exc-fav-'+key+'" class="exc-chb"><i class="fa fa-star exc-icons"></i></label> '+
|
||||
'<input type="checkbox" class="filled-in" id="exc-bt-'+key+'" '+excludeCk(key,"reblog")+' /><label for="exc-bt-'+key+'" class="exc-chb" ><i class="fa fa-retweet exc-icons"></i></label> '+
|
||||
'<input type="checkbox" class="filled-in" id="exc-follow-'+key+'" '+excludeCk(key,"follow")+' /><label for="exc-follow-'+key+'" class="exc-chb" ><i class="fa fa-users exc-icons"></i></label> '+
|
||||
'<input type="checkbox" class="filled-in" id="exc-follow-'+key+'" '+excludeCk(key,"poll")+' /><label for="exc-poll-'+key+'" class="exc-chb" ><i class="fa fa-tasks exc-icons"></i></label> '+
|
||||
'<button class="btn waves-effect" style="width:60px; padding:0;" onclick="exclude('+key+')">Filter</button><br>';
|
||||
}else if(acct.type=="home"){
|
||||
var exclude='<a onclick="ebtToggle(' + key +
|
||||
@@ -153,7 +155,18 @@ var xed=localStorage.getItem("xed");
|
||||
}else{
|
||||
var exclude="";
|
||||
}
|
||||
var html = '<div style="'+css+'" class="box '+animecss+'" id="timeline_box_' + key + '_box" tlid="' + key +
|
||||
if(!acct.left_fold){
|
||||
basekey=key;
|
||||
var basehtml = '<div style="'+css+'" class="box '+animecss+'" id="timeline_box_' + basekey + '_parentBox"></div>';
|
||||
$("#timeline-container").append(basehtml);
|
||||
var left_hold='<a onclick="leftFoldSet(' + key +')" class="setting nex"><i class="material-icons waves-effect nex" title="'+lang.lang_layout_leftFold+'">view_agenda</i></a>'+lang.lang_layout_leftFold+'</span><br>';
|
||||
}else{
|
||||
var left_hold='<a onclick="leftFoldRemove(' + key +')" class="setting nex"><i class="material-icons waves-effect nex" title="'+lang.lang_layout_leftUnfold+'">view_column</i></a>'+lang.lang_layout_leftUnfold+'</span><br>';
|
||||
}
|
||||
if(key===0){
|
||||
left_hold='';
|
||||
}
|
||||
var html='<div class="boxIn" id="timeline_box_' + key + '_box" tlid="' + key +
|
||||
'" data-acct="'+acct.domain+'"><div class="notice-box z-depth-2" id="menu_'+key+'" style="'+insert+' ">'+
|
||||
'<div class="area-notice"><i class="material-icons waves-effect red-text" id="notice_icon_' + key + '"'+notf_attr+' style="font-size:40px; padding-top:25%;" onclick="goTop(' + key + ')" title="'+lang.lang_layout_gotop +'"></i></div>'+
|
||||
'<div class="area-notice_name"><span id="notice_' + key + '" class="tl-title"></span></div>'+
|
||||
@@ -167,7 +180,7 @@ var xed=localStorage.getItem("xed");
|
||||
'<div class="column-hide notf-indv-box z-depth-4" id="notf-box_' + key +
|
||||
'"><div id="notifications_' + key +
|
||||
'" data-notf="' + acct.domain + '" data-type="notf"></div></div><div class="column-hide notf-indv-box" id="util-box_' + key +
|
||||
'" style="padding:5px;">'+exclude+'<a onclick="mediaToggle(' + key +
|
||||
'" style="padding:5px;">'+exclude+left_hold+'<a onclick="mediaToggle(' + key +
|
||||
')" class="setting nex"><i class="material-icons waves-effect nex" title="'+lang.lang_layout_mediafil +'">perm_media</i><span id="sta-media-' +
|
||||
key + '">On</span></a>'+lang.lang_layout_mediafil +'<br><a onclick="cardToggle(' + key +
|
||||
')" class="setting nex"><i class="material-icons waves-effect nex" title="'+lang.lang_layout_linkanades +'">link</i><span id="sta-card-' +
|
||||
@@ -175,8 +188,8 @@ var xed=localStorage.getItem("xed");
|
||||
')" class="setting nex"><i class="material-icons waves-effect nex" title="'+lang.lang_layout_tts +'">hearing</i><span id="sta-voice-' +
|
||||
key + '">On</span></a>'+lang.lang_layout_tts +'TL<br><a onclick="reconnector(' + key +
|
||||
',\''+acct.type+'\',\''+acct.domain+'\',\''+acct.data+'\')" class="setting nex '+if_notf+'"><i class="material-icons waves-effect nex '+if_notf+'" title="'+lang.lang_layout_reconnect+'">low_priority</i></a><span class="'+if_notf+'">'+lang.lang_layout_reconnect+'</span><br>'+lang.lang_layout_headercolor +'<br><div id="picker_'+key+'" class="color-picker"></div></div><div class="tl-box" tlid="' + key + '"><div id="timeline_' + key +
|
||||
'" class="tl '+acct.type+'-timeline " tlid="' + key + '" data-type="' + acct.type + '" data-acct="'+acct.domain+'"><div id="landing_'+key+'" style="text-align:center">'+lang.lang_layout_nodata +'</div></div></div></div>';
|
||||
$("#timeline-container").append(html);
|
||||
'" class="tl '+acct.type+'-timeline " tlid="' + key + '" data-type="' + acct.type + '" data-acct="'+acct.domain+'"><div id="landing_'+key+'" style="text-align:center">'+lang.lang_layout_nodata +'</div></div></div>'
|
||||
$('#timeline_box_' + basekey + '_parentBox').append(html);
|
||||
localStorage.removeItem("pool_" + key);
|
||||
if (acct.data) {
|
||||
var data = acct.data;
|
||||
@@ -201,7 +214,7 @@ var xed=localStorage.getItem("xed");
|
||||
catchCheck(key);
|
||||
voiceCheck(key);
|
||||
}
|
||||
});
|
||||
}
|
||||
var box = localStorage.getItem("box");
|
||||
if (box == "absolute") {
|
||||
setTimeout(show, 1000);
|
||||
@@ -409,7 +422,7 @@ function coloradd(key,bg,txt){
|
||||
}
|
||||
}
|
||||
//禁断のTwitter
|
||||
function webview(url,key,insert,icnsert,css){
|
||||
function webviewParse(url,key,insert,icnsert,css){
|
||||
var html = '<div class="box" id="timeline_box_' + key + '_box" tlid="' + key +
|
||||
'" style="'+css+'"><div class="notice-box z-depth-2" id="menu_'+key+'" style="'+insert+'">'+
|
||||
'<div class="area-notice"><i class="fa fa-twitter waves-effect" id="notice_icon_' + key + '" style="font-size:40px; padding-top:25%;"></i></div>'+
|
||||
@@ -421,8 +434,24 @@ function webview(url,key,insert,icnsert,css){
|
||||
')" class="setting nex" title="'+lang.lang_layout_setthis +'"'+icnsert+'><i class="material-icons waves-effect nex">settings</i></a></div></div>'+
|
||||
'<div class="column-hide notf-indv-box z-depth-4" id="notf-box_' + key +
|
||||
'"></div><div class="column-hide notf-indv-box" id="util-box_' + key +
|
||||
'" style="padding:5px;">'+lang.lang_layout_headercolor +'<br><div id="picker_'+key+'" class="color-picker"></div></div><div class="tl-box" tlid="' + key + '" style="width:100%;height:calc(100% - 110px);"><div id="timeline_' + key +
|
||||
'" style="padding:5px;">'+lang.lang_layout_headercolor +'<br><div id="picker_'+key+'" class="color-picker"></div></div><div class="tl-box" tlid="' + key + '" style="width:100%;height:100%;"><div id="timeline_' + key +
|
||||
'" class="tl" tlid="' + key + '" data-type="webview" style="width:100%;height:100%;"><webview src="'+url+'" style="width:100%;height:100%;" id="webview" preload="./js/platform/twitter.js"></webview></div></div></div>';
|
||||
|
||||
return html;
|
||||
}
|
||||
function leftFoldSet(key){
|
||||
var multi = localStorage.getItem("column");
|
||||
var obj = JSON.parse(multi);
|
||||
obj[key].left_fold=true;
|
||||
var json = JSON.stringify(obj);
|
||||
localStorage.setItem("column", json);
|
||||
parseColumn();
|
||||
}
|
||||
function leftFoldRemove(key){
|
||||
var multi = localStorage.getItem("column");
|
||||
var obj = JSON.parse(multi);
|
||||
obj[key].left_fold=false;
|
||||
var json = JSON.stringify(obj);
|
||||
localStorage.setItem("column", json);
|
||||
parseColumn();
|
||||
}
|
||||
|
@@ -89,18 +89,24 @@ function load() {
|
||||
var max=envView.config.length;
|
||||
for(var i=0;i<max;i++){
|
||||
var ls=envView.config[i].storage;
|
||||
if(localStorage.getItem(ls)){
|
||||
envView.config[i].setValue=localStorage.getItem(ls)
|
||||
}
|
||||
}
|
||||
var max=tlView.config.length;
|
||||
for(var i=0;i<max;i++){
|
||||
var ls=tlView.config[i].storage;
|
||||
if(localStorage.getItem(ls)){
|
||||
tlView.config[i].setValue=localStorage.getItem(ls)
|
||||
}
|
||||
}
|
||||
var max=postView.config.length;
|
||||
for(var i=0;i<max;i++){
|
||||
var ls=postView.config[i].storage;
|
||||
if(localStorage.getItem(ls)){
|
||||
postView.config[i].setValue=localStorage.getItem(ls)
|
||||
}
|
||||
}
|
||||
if(localStorage.getItem("imas")){
|
||||
$(".imas").removeClass("hide");
|
||||
}
|
||||
@@ -396,7 +402,7 @@ function importSettings(){
|
||||
localStorage.setItem("card_" + i,"true");
|
||||
localStorage.removeItem("catch_" + i);
|
||||
}
|
||||
location.href="language.html";
|
||||
location.href="index.html";
|
||||
}else{
|
||||
alert("Error.")
|
||||
}
|
||||
|
@@ -123,17 +123,29 @@ function nowplaying(mode){
|
||||
}else if(mode=="itunes"){
|
||||
var electron = require("electron");
|
||||
var ipc = electron.ipcRenderer;
|
||||
if (ipc.listenerCount('itunes-np') > 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
ipc.send('itunes', "");
|
||||
ipc.on('itunes-np', function (event, arg) {
|
||||
ipc.once('itunes-np', function (event, arg) {
|
||||
console.log(arg);
|
||||
var content=localStorage.getItem("np-temp");
|
||||
if(!content || content=="" || content=="null"){
|
||||
var content="#NowPlaying {song} / {album} / {artist}\n{url}";
|
||||
}
|
||||
var flag=localStorage.getItem("artwork");
|
||||
var remote=electron.remote;
|
||||
var platform=remote.process.platform;
|
||||
if(platform=="win32"){
|
||||
if(flag && arg.path){
|
||||
media(arg.path,"image/png","new");
|
||||
}
|
||||
}else if(platform=="darwin"){
|
||||
if(flag && arg.artworks[0]){
|
||||
ipc.send('bmp-image', [arg.artworks[0].path,0]);
|
||||
}
|
||||
}
|
||||
var regExp = new RegExp("{song}", "g");
|
||||
content = content.replace(regExp, arg.name);
|
||||
var regExp = new RegExp("{album}", "g");
|
||||
@@ -145,11 +157,11 @@ function nowplaying(mode){
|
||||
var regExp = new RegExp("{composer}", "g");
|
||||
content = content.replace(regExp, arg.composer);
|
||||
var regExp = new RegExp("{hz}", "g");
|
||||
content = content.replace(regExp, arg.sampleRate/1000+"kHz");
|
||||
var regExp = new RegExp("{lyricist}", "g");
|
||||
content = content.replace(regExp, "");
|
||||
var regExp = new RegExp("{bpm}", "g");
|
||||
content = content.replace(regExp, "");
|
||||
content = content.replace(regExp, arg.sampleRate/1000+"kHz");
|
||||
var regExp = new RegExp("{bitRate}", "g");
|
||||
content = content.replace(regExp, arg.bitRate+"kbps");
|
||||
var regExp = new RegExp("{genre}", "g");
|
||||
|
@@ -1,75 +0,0 @@
|
||||
<!doctype html>
|
||||
<html lang="ja">
|
||||
<head>
|
||||
<title>Languages - TheDesk</title>
|
||||
<meta content="width=device-width,initial-scale=1.0" name="viewport">
|
||||
<link href="./css/materialize.css" type="text/css" rel="stylesheet">
|
||||
<link href="./css/themes.css" type="text/css" rel="stylesheet">
|
||||
<link href="./css/master.css" type="text/css" rel="stylesheet">
|
||||
<link href='./css/font-awesome.css' rel='stylesheet' type='text/css'>
|
||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans" rel="stylesheet">
|
||||
<meta charset="utf-8">
|
||||
</head>
|
||||
<body style="max-width:100vw; width:500px; padding:10px;">
|
||||
<script type="text/javascript" src="./js/common/jquery.js"></script>
|
||||
<script type="text/javascript" src="./js/platform/first.js"></script>
|
||||
<script type="text/javascript" src="./js/common/materialize.js"></script>
|
||||
<script type="text/javascript" src="./js/lang/lang.js"></script>
|
||||
<script type="text/javascript" src="./js/ui/theme.js"></script>
|
||||
<h3 id="language"></h3>
|
||||
<select id="language-sel" style="color:black" onchange="btn();"></select>
|
||||
<button class="btn waves-effect indigo nex" style="width:100%; max-width:200px;" onclick="sel()" id="sel"></button>
|
||||
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;" id="back"></a><br>
|
||||
<br>
|
||||
<span id="notice"></span>
|
||||
<script>
|
||||
//コード受信
|
||||
if(location.search){
|
||||
var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)/);
|
||||
var mode=m[1];
|
||||
if(mode=="redirect"){
|
||||
if(localStorage.getItem("lang")){
|
||||
changelang(localStorage.getItem("lang"))
|
||||
}
|
||||
}
|
||||
}
|
||||
var fstlang="";
|
||||
var langtxt="";
|
||||
var addit="";
|
||||
Object.keys(lang_lang).forEach(function(i) {
|
||||
if(langtxt==""){
|
||||
langtxt=lang_lang[i];
|
||||
$("#sel").text(lang_set[i]);
|
||||
$("#back").text(lang_back[i]);
|
||||
}else{
|
||||
langtxt=langtxt+"/"+lang_lang[i];
|
||||
}
|
||||
addit=addit+"<br>"+lang_langadd[i];
|
||||
var loc=lang_langlocale[i];
|
||||
$("#language-sel").append('<option value="'+i+'">'+loc+'</option>');
|
||||
});
|
||||
|
||||
$("#language").text(langtxt)
|
||||
$("#notice").html(addit)
|
||||
$('select').material_select('update');
|
||||
function sel(){
|
||||
var val=$("#language-sel").val();
|
||||
changelang(val);
|
||||
}
|
||||
function changelang(val){
|
||||
var electron = require("electron");
|
||||
var ipc = electron.ipcRenderer;
|
||||
localStorage.setItem("lang",val);
|
||||
ipc.send('lang', val);
|
||||
ipc.on('langres', function (event, arg) {
|
||||
location.href="index.html";
|
||||
})
|
||||
|
||||
}
|
||||
function btn(){
|
||||
var val=$("#language-sel").val();
|
||||
$("#sel").text(lang_set[val]);
|
||||
$("#back").text(lang_back[val]);
|
||||
}
|
||||
</script>
|
||||
<script type="text/javascript" src="./js/platform/end.js"></script>
|
557
app/main.js
557
app/main.js
@@ -1,33 +1,26 @@
|
||||
'use strict';
|
||||
|
||||
var dir='file://' + __dirname;
|
||||
var base=dir + '/view/';
|
||||
// Electronのモジュール
|
||||
const electron = require("electron");
|
||||
const fs = require("fs");
|
||||
const dialog = require('electron').dialog;
|
||||
var Jimp = require("jimp");
|
||||
const shell = electron.shell;
|
||||
const os = require('os')
|
||||
const path = require('path')
|
||||
const fm = require('font-manager');
|
||||
const language = require('./language.js');
|
||||
const language = require('./main/language.js');
|
||||
const css = require('./main/css.js');
|
||||
const dl = require('./main/dl.js');
|
||||
const img = require('./main/img.js');
|
||||
const np = require('./main/np.js');
|
||||
const systemFunc = require('./main/system.js');
|
||||
const Menu=electron.Menu
|
||||
var updatewin=null;
|
||||
const join = require('path').join;
|
||||
var JSON5 = require('json5');
|
||||
// アプリケーションをコントロールするモジュール
|
||||
const app = electron.app;
|
||||
// ウィンドウを作成するモジュール
|
||||
const BrowserWindow = electron.BrowserWindow;
|
||||
const {
|
||||
download
|
||||
} = require('electron-dl');
|
||||
// メインウィンドウはGCされないようにグローバル宣言
|
||||
let mainWindow;
|
||||
var info_path = join(app.getPath("userData"), "window-size.json");
|
||||
var max_info_path = join(app.getPath("userData"), "max-window-size.json");
|
||||
var lang_path=join(app.getPath("userData"), "language");
|
||||
var customcss=join(app.getPath("userData"), "custom.css");
|
||||
var tmp_img = join(app.getPath("userData"), "tmp.png");
|
||||
var ha_path=join(app.getPath("userData"), "hardwareAcceleration");
|
||||
try{
|
||||
fs.readFileSync(ha_path, 'utf8');
|
||||
@@ -60,14 +53,15 @@ try {
|
||||
try {
|
||||
var lang = fs.readFileSync(lang_path, 'utf8');
|
||||
} catch (e) {
|
||||
var lang=app.getLocale();
|
||||
if(~lang.indexOf("ja")){
|
||||
var langs=app.getLocale();
|
||||
if(~langs.indexOf("ja")){
|
||||
lang="ja";
|
||||
}else{
|
||||
lang="en";
|
||||
}
|
||||
fs.writeFileSync(lang_path,lang);
|
||||
}
|
||||
console.log(app.getLocale());
|
||||
console.log("launch:"+lang);
|
||||
// 全てのウィンドウが閉じたら終了
|
||||
app.on('window-all-closed', function() {
|
||||
@@ -106,7 +100,7 @@ function createWindow() {
|
||||
}else{
|
||||
var plus="";
|
||||
}
|
||||
mainWindow.loadURL('file://' + __dirname + '/view/'+lang+'/index.html'+plus);
|
||||
mainWindow.loadURL(base+lang+'/index.html'+plus);
|
||||
if(!window_size.x && !window_size.y){
|
||||
mainWindow.center();
|
||||
}
|
||||
@@ -137,528 +131,23 @@ function createWindow() {
|
||||
var platform=process.platform;
|
||||
var bit=process.arch;
|
||||
if(platform=="darwin"){
|
||||
Menu.setApplicationMenu(Menu.buildFromTemplate(language.template(lang,mainWindow)));
|
||||
Menu.setApplicationMenu(Menu.buildFromTemplate(language.template(lang,mainWindow,false)));
|
||||
}
|
||||
//CSS
|
||||
css.css(mainWindow);
|
||||
//アップデータとダウンロード
|
||||
dl.dl(mainWindow,lang_path,base);
|
||||
//画像選択と画像処理
|
||||
img.img(mainWindow,dir);
|
||||
//NowPlaying
|
||||
np.TheDeskNowPlaying(mainWindow);
|
||||
//その他system
|
||||
systemFunc.system(mainWindow,dir,lang);
|
||||
}
|
||||
// Electronの初期化完了後に実行
|
||||
app.on('ready', createWindow);
|
||||
var onError = function(err,response){
|
||||
console.error(err,response);
|
||||
};
|
||||
var ipc = electron.ipcMain;
|
||||
ipc.on('minimize', function(e, args) {
|
||||
mainWindow.minimize();
|
||||
});
|
||||
ipc.on('maximize', function(e, args) {
|
||||
mainWindow.isMaximized() ? mainWindow.unmaximize() : mainWindow.maximize();
|
||||
});
|
||||
ipc.on('native-notf', function(e, args) {
|
||||
var platform=process.platform;
|
||||
var bit=process.arch;
|
||||
if(platform=="win32"){
|
||||
const notifier = require('node-notifier')
|
||||
var tmp_imge=tmp_img;
|
||||
Jimp.read(args[2], function (err, lenna) {
|
||||
if(!err && lenna){
|
||||
lenna.write(tmp_img);
|
||||
var tmp_imge=tmp_img;
|
||||
}else{
|
||||
var tmp_imge="";
|
||||
}
|
||||
notifier.notify({
|
||||
appID: "top.thedesk",
|
||||
message: args[1],
|
||||
title: args[0],
|
||||
icon : tmp_imge,
|
||||
sound: false,
|
||||
wait: true,
|
||||
},
|
||||
function(err, response) {
|
||||
console.log(err, response)
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
//言語
|
||||
ipc.on('lang', function(e, arg) {
|
||||
console.log("set:"+arg);
|
||||
fs.writeFileSync(lang_path,arg);
|
||||
mainWindow.webContents.send('langres', "");
|
||||
})
|
||||
//CSS
|
||||
ipc.on('custom-css-create', function(e, arg) {
|
||||
fs.writeFileSync(customcss,arg);
|
||||
mainWindow.webContents.send('custom-css-create-complete', "");
|
||||
})
|
||||
ipc.on('custom-css-request', function(e, arg) {
|
||||
try {
|
||||
var css = fs.readFileSync(customcss, 'utf8');
|
||||
} catch (e) {
|
||||
var css="";
|
||||
}
|
||||
mainWindow.webContents.send('custom-css-response', css);
|
||||
})
|
||||
ipc.on('theme-json-create', function(e, arg) {
|
||||
var themecss=join(app.getPath("userData"), JSON5.parse(arg)["id"]+".thedesktheme");
|
||||
fs.writeFileSync(themecss,JSON.stringify(JSON5.parse(arg)));
|
||||
if(JSON5.parse(arg)["id"]){
|
||||
mainWindow.webContents.send('theme-json-create-complete', "");
|
||||
}else{
|
||||
mainWindow.webContents.send('theme-json-create-complete', "error");
|
||||
}
|
||||
})
|
||||
ipc.on('theme-json-delete', function(e, arg) {
|
||||
var themecss=join(app.getPath("userData"), arg+".thedesktheme");
|
||||
console.log(themecss);
|
||||
fs.unlink(themecss, function (err) {
|
||||
mainWindow.webContents.send('theme-json-delete-complete', "");
|
||||
});
|
||||
})
|
||||
ipc.on('theme-json-request', function(e, arg) {
|
||||
var themecss=join(app.getPath("userData"), arg+".thedesktheme");
|
||||
var json = JSON.parse(fs.readFileSync(themecss, 'utf8'));
|
||||
mainWindow.webContents.send('theme-json-response', json);
|
||||
})
|
||||
ipc.on('theme-css-request', function(e, arg) {
|
||||
var themecss=join(app.getPath("userData"), arg+".thedesktheme");
|
||||
try {
|
||||
var json = JSON.parse(fs.readFileSync(themecss, 'utf8'));
|
||||
|
||||
var primary=json.vars.primary;
|
||||
var secondary=json.vars.secondary;
|
||||
var text=json.vars.text;
|
||||
if(json.base=="light"){
|
||||
var drag="rgba(255, 255, 255, 0.8)";
|
||||
var beforehover="#757575";
|
||||
}else{
|
||||
var drag="rgba(0, 0, 0, 0.8)";
|
||||
var beforehover="#9e9e9e";
|
||||
}
|
||||
if(json.props){
|
||||
if(json.props.TheDeskAccent){
|
||||
var emphasized=json.props.TheDeskAccent
|
||||
}else{
|
||||
var emphasized=secondary;
|
||||
}
|
||||
}else{
|
||||
var emphasized=primary;
|
||||
}
|
||||
|
||||
var css=".customtheme {--bg:"+secondary+";--drag:"+drag+";"+
|
||||
"--color:"+text+";--beforehover:"+beforehover+";--modal:"+secondary+";--subcolor:"+primary+";--box:"+primary+";--sidebar:"+primary+";--shared:"+emphasized+";"+
|
||||
"--notfbox:"+secondary+";--emphasized:"+primary+";--his-data:"+secondary+
|
||||
"--active:"+primary+";--postbox:"+primary+";--modalfooter:"+primary+";}.blacktheme #imagemodal{background: url(\"../img/pixel.svg\");}";
|
||||
mainWindow.webContents.send('theme-css-response', css);
|
||||
} catch (e) {
|
||||
var css="";
|
||||
}
|
||||
|
||||
})
|
||||
ipc.on('theme-json-list', function(e, arg) {
|
||||
fs.readdir(app.getPath("userData"), function(err, files){
|
||||
if (err) throw err;
|
||||
var fileList = files.filter(function(file){
|
||||
var tfile=join(app.getPath("userData"), file);
|
||||
return fs.statSync(tfile).isFile() && /.*\.thedesktheme$/.test(tfile); //絞り込み
|
||||
})
|
||||
var themes=[];
|
||||
for(var i=0;i<fileList.length;i++){
|
||||
var themecss=join(app.getPath("userData"), fileList[i]);
|
||||
var json = JSON.parse(fs.readFileSync(themecss, 'utf8'));
|
||||
themes.push({
|
||||
name:json.name,
|
||||
id:json.id
|
||||
})
|
||||
}
|
||||
mainWindow.webContents.send('theme-json-list-response', themes);
|
||||
});
|
||||
})
|
||||
//ハードウェアアクセラレーションの無効化
|
||||
ipc.on('ha', function(e, arg) {
|
||||
if(arg=="true"){
|
||||
fs.writeFileSync(ha_path,arg);
|
||||
}else{
|
||||
fs.unlink(ha_path, function (err) {});
|
||||
}
|
||||
app.relaunch()
|
||||
app.exit()
|
||||
})
|
||||
|
||||
ipc.on('update', function(e, x, y) {
|
||||
var platform=process.platform;
|
||||
var bit=process.arch;
|
||||
if(platform!="others"){
|
||||
updatewin = new BrowserWindow({
|
||||
width: 600,
|
||||
height: 400,
|
||||
"transparent": false, // ウィンドウの背景を透過
|
||||
"frame": false, // 枠の無いウィンドウ
|
||||
"resizable": false,
|
||||
"modal":true
|
||||
});
|
||||
var lang = fs.readFileSync(lang_path, 'utf8');
|
||||
updatewin.loadURL('file://' + __dirname + '/view/'+lang+'/update.html');
|
||||
|
||||
return "true"
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
})
|
||||
//Web魚拓
|
||||
ipc.on('shot', function(e, args) {
|
||||
console.log("link:"+args[0]+" width:"+args[1]+" height:"+args[2]+" title:"+args[4]+" top:"+args[5]+" left:"+args[6]);
|
||||
var platform=process.platform;
|
||||
var bit=process.arch;
|
||||
if(args[7]==""){
|
||||
if(platform=="win32"){
|
||||
var dir=app.getPath('home')+"\\Pictures\\TheDesk\\Screenshots\\"+args[4]+"-toot.png";
|
||||
var folder=app.getPath('home')+"\\Pictures\\TheDesk\\Screenshots\\";
|
||||
}else if(platform=="linux" || platform=="darwin" ){
|
||||
var dir=app.getPath('home')+"/Pictures/TheDesk/Screenshots/"+args[4]+"-toot.png";
|
||||
var folder=app.getPath('home')+"/Pictures/TheDesk/Screenshots/";
|
||||
}
|
||||
}else{
|
||||
var folder=args[7];
|
||||
var dir=folder+args[4]+"-toot.png";
|
||||
}
|
||||
|
||||
Jimp.read(Buffer.from( args[3],'base64'), function (err, lenna) {
|
||||
if (err) throw err;
|
||||
lenna.crop( args[6], args[5], args[1], args[2] ).write(dir);
|
||||
});
|
||||
shell.showItemInFolder(folder);
|
||||
})
|
||||
ipc.on('shot-img-dl', (e, args) => {
|
||||
Jimp.read(args[0], function (err, lenna) {
|
||||
if (err) throw err;
|
||||
if(args[1]==""){
|
||||
if(process.platform=="win32"){
|
||||
var folder=app.getPath('home')+"\\Pictures\\TheDesk\\Screenshots\\";
|
||||
}else if(process.platform=="linux" || process.platform=="darwin" ){
|
||||
var folder=app.getPath('home')+"/Pictures/TheDesk/Screenshots/";
|
||||
}
|
||||
}else{
|
||||
var folder=args[2];
|
||||
}
|
||||
|
||||
lenna.write(folder+args[1]);
|
||||
});
|
||||
})
|
||||
//アプデDL
|
||||
ipc.on('download-btn', (e, args) => {
|
||||
//console.log(args[1]);
|
||||
var platform=process.platform;
|
||||
var bit=process.arch;
|
||||
dialog.showSaveDialog(null, {
|
||||
title: 'Save',
|
||||
defaultPath: app.getPath('home')+"/"+args[1]
|
||||
}, (savedFiles) => {
|
||||
console.log(savedFiles);
|
||||
if(!savedFiles){
|
||||
return false;
|
||||
}
|
||||
if(platform=="win32"){
|
||||
var m = savedFiles.match(/(.+)\\(.+)$/);
|
||||
}else{
|
||||
var m = savedFiles.match(/(.+)\/(.+)$/);
|
||||
}
|
||||
//console.log(m);
|
||||
if(isExistFile(savedFiles)){
|
||||
fs.unlinkSync(savedFiles);
|
||||
}
|
||||
dl(args[0],args[1],m[1]);
|
||||
});
|
||||
});
|
||||
function isExistFile(file) {
|
||||
try {
|
||||
fs.statSync(file);
|
||||
return true
|
||||
} catch(err) {
|
||||
if(err.code === 'ENOENT') return false
|
||||
}
|
||||
}
|
||||
function dl(url,file,dir){
|
||||
updatewin.webContents.send('mess', "ダウンロードを開始します。");
|
||||
const opts = {
|
||||
directory:dir,
|
||||
openFolderWhenDone: true,
|
||||
onProgress: function(e) {
|
||||
updatewin.webContents.send('prog', e);
|
||||
},
|
||||
saveAs: false
|
||||
};
|
||||
download(BrowserWindow.getFocusedWindow(),
|
||||
url, opts)
|
||||
.then(dl => {
|
||||
updatewin.webContents.send('mess', "ダウンロードが完了しました。");
|
||||
app.quit();
|
||||
|
||||
})
|
||||
.catch(console.error);
|
||||
}
|
||||
ipc.on('general-dl', (e, args) => {
|
||||
var name="";
|
||||
var platform=process.platform;
|
||||
var bit=process.arch;
|
||||
if(args[1]==""){
|
||||
if(platform=="win32"){
|
||||
var dir=app.getPath('home')+"\\Pictures\\TheDesk";
|
||||
}else if(platform=="linux" || platform=="darwin" ){
|
||||
var dir=app.getPath('home')+"/Pictures/TheDesk";
|
||||
}
|
||||
}else{
|
||||
var dir=args[1];
|
||||
}
|
||||
mainWindow.webContents.send('general-dl-message', "ダウンロードを開始します。");
|
||||
const opts = {
|
||||
directory: dir,
|
||||
filename:name,
|
||||
openFolderWhenDone: true,
|
||||
onProgress: function(e) {
|
||||
mainWindow.webContents.send('general-dl-prog', e);
|
||||
},
|
||||
saveAs: false
|
||||
};
|
||||
download(BrowserWindow.getFocusedWindow(),
|
||||
args[0], opts)
|
||||
.then(dl => {
|
||||
mainWindow.webContents.send('general-dl-message', "ダウンロードが完了しました。");
|
||||
})
|
||||
.catch(console.error);
|
||||
});
|
||||
ipc.on('quit', (e, args) => {
|
||||
app.quit();
|
||||
});
|
||||
ipc.on('about', (e, args) => {
|
||||
about();
|
||||
});
|
||||
function about(){
|
||||
var ver=app.getVersion()
|
||||
var window = new BrowserWindow({width: 300, height: 460,
|
||||
"transparent": false, // ウィンドウの背景を透過
|
||||
"frame": false, // 枠の無いウィンドウ
|
||||
"resizable": false });
|
||||
window.loadURL('file://' + __dirname + '/about.html?ver='+ver);
|
||||
return "true"
|
||||
}
|
||||
|
||||
ipc.on('itunes', (e, args) => {
|
||||
console.log("Access");
|
||||
if(args[0]=="set"){
|
||||
var {NowPlaying,PlayerName} = require("nowplaying-node");
|
||||
var nppath=join(app.getPath("userData"), "nowplaying");
|
||||
var npProvider;
|
||||
try {
|
||||
npProvider = args[1];
|
||||
} catch (e) {
|
||||
npProvider="AIMP";
|
||||
}
|
||||
var myAIMP = new NowPlaying({
|
||||
fetchCover: true,
|
||||
player: PlayerName[npProvider],
|
||||
});
|
||||
fs.writeFileSync(nppath, npProvider);
|
||||
}else{
|
||||
var platform=process.platform;
|
||||
var bit=process.arch;
|
||||
if(platform=="darwin"){
|
||||
const nowplaying = require("itunes-nowplaying-mac")
|
||||
nowplaying.getRawData().then(function (value) {
|
||||
mainWindow.webContents.send('itunes-np', value);
|
||||
}).catch(function (error) {
|
||||
// 非同期処理失敗。呼ばれない
|
||||
console.log(error);
|
||||
});
|
||||
}else{
|
||||
var {NowPlaying,PlayerName} = require("nowplaying-node");
|
||||
var nppath=join(app.getPath("userData"), "nowplaying");
|
||||
var npProvider;
|
||||
try {
|
||||
npProvider = fs.readFileSync(nppath, 'utf8');
|
||||
} catch (e) {
|
||||
npProvider="AIMP";
|
||||
}
|
||||
var myAIMP = new NowPlaying({
|
||||
fetchCover: true,
|
||||
player: PlayerName[npProvider],
|
||||
});
|
||||
myAIMP.update();
|
||||
var path=myAIMP.getCoverPath();
|
||||
if(path){
|
||||
var bin = fs.readFileSync(path, 'base64');
|
||||
}else{
|
||||
var bin=false;
|
||||
}
|
||||
|
||||
var value={
|
||||
name:myAIMP.getTitle(),
|
||||
artist:myAIMP.getArtist(),
|
||||
album:myAIMP.getAlbum(),
|
||||
path:bin
|
||||
}
|
||||
mainWindow.webContents.send('itunes-np', value);
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
ipc.on('file-select', (e, args) => {
|
||||
dialog.showOpenDialog(null, {
|
||||
properties: ['openFile', 'multiSelections'],
|
||||
title: '添付ファイルを選択',
|
||||
defaultPath: '.',
|
||||
filters: [
|
||||
{name: 'メディアファイル', extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg','mp4','webm']},
|
||||
{name: '画像', extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg']},
|
||||
{name: '動画', extensions: ['mp4','webm']},
|
||||
{name: '全てのファイル', extensions: ['*']}
|
||||
]
|
||||
}, (fileNames) => {
|
||||
if(!fileNames){
|
||||
return false;
|
||||
}
|
||||
for(var i=0;i<fileNames.length;i++){
|
||||
var path=fileNames[i];
|
||||
var bin = fs.readFileSync(path, 'base64');
|
||||
mainWindow.webContents.send('bmp-img-comp', [bin,'new']);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
ipc.on('column-del', (e, args) => {
|
||||
console.log(lang);
|
||||
var options=language.delsel(lang)
|
||||
dialog.showMessageBox(options, function(index) {
|
||||
mainWindow.webContents.send('column-del-reply', index);
|
||||
})
|
||||
});
|
||||
ipc.on('bmp-image', (e, args) => {
|
||||
var m = args[0].match(/(.+)\\(.+)\.(.+)$/);
|
||||
Jimp.read(args[0], function (err, lenna) {
|
||||
if (err) throw err;
|
||||
lenna.getBase64(Jimp.MIME_PNG, function (err, src) {
|
||||
mainWindow.webContents.send('bmp-img-comp', [src,args[1]]);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
ipc.on('nano', function (e, x, y) {
|
||||
var nano_info_path = join(app.getPath("userData"), "nano-window-position.json");
|
||||
var window_pos;
|
||||
try {
|
||||
window_pos = JSON.parse(fs.readFileSync(nano_info_path, 'utf8'));
|
||||
} catch (e) {
|
||||
window_pos = [0,0]; // デフォルトバリュー
|
||||
}
|
||||
var nanowindow = new BrowserWindow({width: 350, height: 200,
|
||||
"transparent": false, // ウィンドウの背景を透過
|
||||
"frame": false, // 枠の無いウィンドウ
|
||||
"resizable": false });
|
||||
nanowindow.loadURL('file://' + __dirname + '/nano.html');
|
||||
nanowindow.setAlwaysOnTop(true);
|
||||
|
||||
nanowindow.setPosition(window_pos[0], window_pos[1]);
|
||||
nanowindow.on('close', function() {
|
||||
fs.writeFileSync(nano_info_path, JSON.stringify(nanowindow.getPosition()));
|
||||
});
|
||||
return true;
|
||||
})
|
||||
ipc.on('adobe', (e, arg) => {
|
||||
if(!arg){
|
||||
const options = {
|
||||
type: 'info',
|
||||
title: 'Adobeフォトエディタ',
|
||||
message: "「許可」または「永続的に許可」をクリックするとTheDeskとAdobeで情報を共有します。\n次のウィンドウを開いている時以外は一切提供しません。",
|
||||
buttons: ['拒否', '許可','永続的に許可']
|
||||
}
|
||||
dialog.showMessageBox(options, function(index) {
|
||||
if(index===2){
|
||||
mainWindow.webContents.send('adobeagree', "true");
|
||||
}
|
||||
if(index>0){
|
||||
adobeWindow();
|
||||
}
|
||||
})
|
||||
}else{
|
||||
adobeWindow();
|
||||
}
|
||||
});
|
||||
function adobeWindow(){
|
||||
var window = new BrowserWindow({
|
||||
width: 1000,
|
||||
height: 750
|
||||
});
|
||||
window.loadURL('file://' + __dirname + '/adobe.html');
|
||||
}
|
||||
var cbTimer1;
|
||||
ipc.on('startmem', (e, arg) => {
|
||||
cbTimer1 = setInterval(mems, 1000);
|
||||
});
|
||||
ipc.on('endmem', (e, arg) => {
|
||||
if(cbTimer1){
|
||||
clearInterval(cbTimer1);
|
||||
}
|
||||
});
|
||||
function mems(){
|
||||
var mem=os.totalmem()-os.freemem();
|
||||
if(mainWindow){
|
||||
mainWindow.webContents.send('memory', [mem,os.cpus()[0].model,os.totalmem()]);
|
||||
}
|
||||
}
|
||||
ipc.on('mkc', (e, arg) => {
|
||||
var platform=process.platform;
|
||||
if(platform=="linux" || platform=="win32" ){
|
||||
var mkc = fs.readFileSync(__dirname + '/.tkn', 'utf8');
|
||||
|
||||
}else{
|
||||
var mkc = "";
|
||||
}
|
||||
mainWindow.webContents.send('mkcr', mkc);
|
||||
});
|
||||
ipc.on('export', (e, args) => {
|
||||
fs.writeFileSync(args[0], args[1]);
|
||||
});
|
||||
ipc.on('import', (e, arg) => {
|
||||
mainWindow.webContents.send('config', fs.readFileSync(arg, 'utf8'));
|
||||
});
|
||||
//フォント
|
||||
function object_array_sort(data,key,order,fn){
|
||||
//デフォは降順(DESC)
|
||||
var num_a = -1;
|
||||
var num_b = 1;
|
||||
|
||||
if(order === 'asc'){//指定があれば昇順(ASC)
|
||||
num_a = 1;
|
||||
num_b = -1;
|
||||
}
|
||||
|
||||
data = data.sort(function(a, b){
|
||||
var x = a[key];
|
||||
var y = b[key];
|
||||
if (x > y) return num_a;
|
||||
if (x < y) return num_b;
|
||||
return 0;
|
||||
});
|
||||
|
||||
//重複排除
|
||||
var arrObj = {};
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
arrObj[data[i]['family']] = data[i];
|
||||
}
|
||||
|
||||
data = [];
|
||||
for (var key in arrObj) {
|
||||
data.push(arrObj[key]);
|
||||
}
|
||||
|
||||
fn(data); // ソート後の配列を返す
|
||||
}
|
||||
ipc.on('fonts', (e, arg) => {
|
||||
var fonts = fm.getAvailableFontsSync();
|
||||
object_array_sort(fonts, 'family', 'asc', function(fonts_sorted){
|
||||
mainWindow.webContents.send('font-list', fonts_sorted);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
app.setAsDefaultProtocolClient('thedesk')
|
||||
|
105
app/main/css.js
Normal file
105
app/main/css.js
Normal file
@@ -0,0 +1,105 @@
|
||||
function css(mainWindow) {
|
||||
const electron = require("electron");
|
||||
const fs = require("fs");
|
||||
const path = require('path')
|
||||
var ipc = electron.ipcMain;
|
||||
var JSON5 = require('json5');
|
||||
const app = electron.app;
|
||||
const join = require('path').join;
|
||||
var customcss = join(app.getPath("userData"), "custom.css");
|
||||
|
||||
ipc.on('custom-css-create', function(e, arg) {
|
||||
fs.writeFileSync(customcss, arg);
|
||||
mainWindow.webContents.send('custom-css-create-complete', "");
|
||||
})
|
||||
ipc.on('custom-css-request', function(e, arg) {
|
||||
try {
|
||||
var css = fs.readFileSync(customcss, 'utf8');
|
||||
} catch (e) {
|
||||
var css = "";
|
||||
}
|
||||
mainWindow.webContents.send('custom-css-response', css);
|
||||
})
|
||||
ipc.on('theme-json-create', function(e, arg) {
|
||||
var themecss = join(app.getPath("userData"), JSON5.parse(arg)["id"] +
|
||||
".thedesktheme");
|
||||
fs.writeFileSync(themecss, JSON.stringify(JSON5.parse(arg)));
|
||||
if (JSON5.parse(arg)["id"]) {
|
||||
mainWindow.webContents.send('theme-json-create-complete', "");
|
||||
} else {
|
||||
mainWindow.webContents.send('theme-json-create-complete', "error");
|
||||
}
|
||||
})
|
||||
ipc.on('theme-json-delete', function(e, arg) {
|
||||
var themecss = join(app.getPath("userData"), arg + ".thedesktheme");
|
||||
console.log(themecss);
|
||||
fs.unlink(themecss, function(err) {
|
||||
mainWindow.webContents.send('theme-json-delete-complete', "");
|
||||
});
|
||||
})
|
||||
ipc.on('theme-json-request', function(e, arg) {
|
||||
var themecss = join(app.getPath("userData"), arg + ".thedesktheme");
|
||||
var json = JSON.parse(fs.readFileSync(themecss, 'utf8'));
|
||||
mainWindow.webContents.send('theme-json-response', json);
|
||||
})
|
||||
ipc.on('theme-css-request', function(e, arg) {
|
||||
var themecss = join(app.getPath("userData"), arg + ".thedesktheme");
|
||||
try {
|
||||
var json = JSON.parse(fs.readFileSync(themecss, 'utf8'));
|
||||
|
||||
var primary = json.vars.primary;
|
||||
var secondary = json.vars.secondary;
|
||||
var text = json.vars.text;
|
||||
if (json.base == "light") {
|
||||
var drag = "rgba(255, 255, 255, 0.8)";
|
||||
var beforehover = "#757575";
|
||||
} else {
|
||||
var drag = "rgba(0, 0, 0, 0.8)";
|
||||
var beforehover = "#9e9e9e";
|
||||
}
|
||||
if (json.props) {
|
||||
if (json.props.TheDeskAccent) {
|
||||
var emphasized = json.props.TheDeskAccent
|
||||
} else {
|
||||
var emphasized = secondary;
|
||||
}
|
||||
} else {
|
||||
var emphasized = primary;
|
||||
}
|
||||
|
||||
var css = ".customtheme {--bg:" + secondary + ";--drag:" + drag + ";" +
|
||||
"--color:" + text + ";--beforehover:" + beforehover + ";--modal:" +
|
||||
secondary + ";--subcolor:" + primary + ";--box:" + primary +
|
||||
";--sidebar:" + primary + ";--shared:" + emphasized + ";" +
|
||||
"--notfbox:" + secondary + ";--emphasized:" + primary + ";--his-data:" +
|
||||
secondary +
|
||||
";--active:" + primary + ";--postbox:" + primary + ";--modalfooter:" +
|
||||
primary +
|
||||
";}.blacktheme #imagemodal{background: url(\"../img/pixel.svg\");}";
|
||||
mainWindow.webContents.send('theme-css-response', css);
|
||||
} catch (e) {
|
||||
var css = "";
|
||||
}
|
||||
|
||||
})
|
||||
ipc.on('theme-json-list', function(e, arg) {
|
||||
fs.readdir(app.getPath("userData"), function(err, files) {
|
||||
if (err) throw err;
|
||||
var fileList = files.filter(function(file) {
|
||||
var tfile = join(app.getPath("userData"), file);
|
||||
return fs.statSync(tfile).isFile() && /.*\.thedesktheme$/.test(tfile); //絞り込み
|
||||
})
|
||||
var themes = [];
|
||||
for (var i = 0; i < fileList.length; i++) {
|
||||
var themecss = join(app.getPath("userData"), fileList[i]);
|
||||
var json = JSON.parse(fs.readFileSync(themecss, 'utf8'));
|
||||
themes.push({
|
||||
name: json.name,
|
||||
id: json.id
|
||||
})
|
||||
}
|
||||
mainWindow.webContents.send('theme-json-list-response', themes);
|
||||
});
|
||||
})
|
||||
}
|
||||
exports.css = css;
|
123
app/main/dl.js
Normal file
123
app/main/dl.js
Normal file
@@ -0,0 +1,123 @@
|
||||
function dl(mainWindow,lang_path,base) {
|
||||
const electron = require("electron");
|
||||
const shell=electron.shell;
|
||||
const fs = require("fs");
|
||||
const {download} = require('electron-dl');
|
||||
const BrowserWindow = electron.BrowserWindow;
|
||||
const dialog = electron.dialog;
|
||||
var updatewin = null;
|
||||
var ipc = electron.ipcMain;
|
||||
const app = electron.app;
|
||||
const join = require('path').join;
|
||||
ipc.on('update', function(e, x, y) {
|
||||
|
||||
var platform = process.platform;
|
||||
var bit = process.arch;
|
||||
if (platform != "others") {
|
||||
updatewin = new BrowserWindow({
|
||||
width: 600,
|
||||
height: 400,
|
||||
"transparent": false, // ウィンドウの背景を透過
|
||||
"frame": false, // 枠の無いウィンドウ
|
||||
"resizable": false,
|
||||
"modal": true
|
||||
});
|
||||
var lang = fs.readFileSync(lang_path, 'utf8');
|
||||
updatewin.loadURL(base + lang + '/update.html');
|
||||
|
||||
return "true"
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
})
|
||||
//アプデDL
|
||||
ipc.on('download-btn', (e, args) => {
|
||||
|
||||
var platform = process.platform;
|
||||
var bit = process.arch;
|
||||
dialog.showSaveDialog(null, {
|
||||
title: 'Save',
|
||||
defaultPath: app.getPath('home') + "/" + args[1]
|
||||
}, (savedFiles) => {
|
||||
console.log(savedFiles);
|
||||
if (!savedFiles) {
|
||||
return false;
|
||||
}
|
||||
if (platform == "win32") {
|
||||
var m = savedFiles.match(/(.+)\\(.+)$/);
|
||||
} else {
|
||||
var m = savedFiles.match(/(.+)\/(.+)$/);
|
||||
}
|
||||
//console.log(m);
|
||||
if (isExistFile(savedFiles)) {
|
||||
fs.unlinkSync(savedFiles);
|
||||
}
|
||||
dl(args[0], args[1], m[1]);
|
||||
});
|
||||
});
|
||||
|
||||
function isExistFile(file) {
|
||||
try {
|
||||
fs.statSync(file);
|
||||
return true
|
||||
} catch (err) {
|
||||
if (err.code === 'ENOENT') return false
|
||||
}
|
||||
}
|
||||
|
||||
function dl(url, file, dir) {
|
||||
|
||||
updatewin.webContents.send('mess', "ダウンロードを開始します。");
|
||||
const opts = {
|
||||
directory: dir,
|
||||
openFolderWhenDone: true,
|
||||
onProgress: function(e) {
|
||||
updatewin.webContents.send('prog', e);
|
||||
},
|
||||
saveAs: false
|
||||
};
|
||||
download(BrowserWindow.getFocusedWindow(),
|
||||
url, opts)
|
||||
.then(dl => {
|
||||
updatewin.webContents.send('mess', "ダウンロードが完了しました。");
|
||||
app.quit();
|
||||
|
||||
})
|
||||
.catch(console.error);
|
||||
}
|
||||
ipc.on('general-dl', (e, args) => {
|
||||
|
||||
var name = "";
|
||||
var platform = process.platform;
|
||||
var bit = process.arch;
|
||||
if (args[1] == "") {
|
||||
if (platform == "win32") {
|
||||
var dir = app.getPath('home') + "\\Pictures\\TheDesk";
|
||||
} else if (platform == "linux" || platform == "darwin") {
|
||||
var dir = app.getPath('home') + "/Pictures/TheDesk";
|
||||
}
|
||||
} else {
|
||||
var dir = args[1];
|
||||
}
|
||||
const opts = {
|
||||
directory: dir,
|
||||
filename: name,
|
||||
openFolderWhenDone: false,
|
||||
onProgress: function(e) {
|
||||
mainWindow.webContents.send('general-dl-prog', e);
|
||||
},
|
||||
saveAs: false
|
||||
};
|
||||
download(BrowserWindow.getFocusedWindow(),
|
||||
args[0], opts)
|
||||
.then(dl => {
|
||||
mainWindow.webContents.send('general-dl-message', dir);
|
||||
})
|
||||
.catch(console.error);
|
||||
});
|
||||
ipc.on('open-finder', (e, folder) => {
|
||||
|
||||
shell.showItemInFolder(folder)
|
||||
});
|
||||
}
|
||||
exports.dl = dl;
|
71
app/main/img.js
Normal file
71
app/main/img.js
Normal file
@@ -0,0 +1,71 @@
|
||||
function img(mainWindow,dir){
|
||||
const electron = require("electron");
|
||||
const dialog = electron.dialog;
|
||||
const fs = require("fs");
|
||||
var Jimp = require("jimp");
|
||||
var ipc = electron.ipcMain;
|
||||
const BrowserWindow = electron.BrowserWindow;
|
||||
ipc.on('file-select', (e, args) => {
|
||||
|
||||
dialog.showOpenDialog(null, {
|
||||
properties: ['openFile', 'multiSelections'],
|
||||
title: '添付ファイルを選択',
|
||||
defaultPath: '.',
|
||||
filters: [
|
||||
{name: 'メディアファイル', extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg','mp4','webm']},
|
||||
{name: '画像', extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg']},
|
||||
{name: '動画', extensions: ['mp4','webm']},
|
||||
{name: '全てのファイル', extensions: ['*']}
|
||||
]
|
||||
}, (fileNames) => {
|
||||
if(!fileNames){
|
||||
return false;
|
||||
}
|
||||
for(var i=0;i<fileNames.length;i++){
|
||||
var path=fileNames[i];
|
||||
var bin = fs.readFileSync(path, 'base64');
|
||||
mainWindow.webContents.send('bmp-img-comp', [bin,'new']);
|
||||
}
|
||||
});
|
||||
});
|
||||
ipc.on('adobe', (e, arg) => {
|
||||
|
||||
if(!arg){
|
||||
const options = {
|
||||
type: 'info',
|
||||
title: 'Adobeフォトエディタ',
|
||||
message: "「許可」または「永続的に許可」をクリックするとTheDeskとAdobeで情報を共有します。\n次のウィンドウを開いている時以外は一切提供しません。",
|
||||
buttons: ['拒否', '許可','永続的に許可']
|
||||
}
|
||||
dialog.showMessageBox(options, function(index) {
|
||||
if(index===2){
|
||||
mainWindow.webContents.send('adobeagree', "true");
|
||||
}
|
||||
if(index>0){
|
||||
adobeWindow();
|
||||
}
|
||||
})
|
||||
}else{
|
||||
adobeWindow();
|
||||
}
|
||||
});
|
||||
function adobeWindow(){
|
||||
var window = new BrowserWindow({
|
||||
width: 1000,
|
||||
height: 750
|
||||
});
|
||||
window.loadURL(dir + '/adobe.html');
|
||||
}
|
||||
ipc.on('bmp-image', (e, args) => {
|
||||
|
||||
var m = args[0].match(/(.+)\\(.+)\.(.+)$/);
|
||||
Jimp.read(args[0], function (err, lenna) {
|
||||
if (err) throw err;
|
||||
lenna.getBase64(Jimp.MIME_PNG, function (err, src) {
|
||||
mainWindow.webContents.send('bmp-img-comp', [src,args[1]]);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
exports.img = img;
|
@@ -1,5 +1,5 @@
|
||||
// Create the Application's main menu
|
||||
function templete(lang,mainWindow){
|
||||
function templete(lang,mainWindow,packaged){
|
||||
const electron = require("electron");
|
||||
const app = electron.app;
|
||||
const BrowserWindow = electron.BrowserWindow;
|
||||
@@ -95,7 +95,7 @@ function templete(lang,mainWindow){
|
||||
{
|
||||
label: 'Toggle Developer Tools',
|
||||
accelerator: 'Alt+Command+I',
|
||||
click: function() { mainWindow.toggleDevTools(); }
|
||||
click: function() { if(!packaged){mainWindow.toggleDevTools();} }
|
||||
},
|
||||
{
|
||||
label: dict.reload[lang],
|
69
app/main/np.js
Normal file
69
app/main/np.js
Normal file
@@ -0,0 +1,69 @@
|
||||
function np(mainWindow){
|
||||
const electron = require("electron");
|
||||
const join = require('path').join;
|
||||
const app = electron.app;
|
||||
const fs = require("fs");
|
||||
var ipc = electron.ipcMain;
|
||||
ipc.on('itunes', (e, args) => {
|
||||
//Verified on Windows
|
||||
console.log("Access");
|
||||
if(args[0]=="set"){
|
||||
var {NowPlaying,PlayerName} = require("nowplaying-node");
|
||||
var nppath=join(app.getPath("userData"), "nowplaying");
|
||||
var npProvider;
|
||||
try {
|
||||
npProvider = args[1];
|
||||
} catch (e) {
|
||||
npProvider="AIMP";
|
||||
}
|
||||
var myAIMP = new NowPlaying({
|
||||
fetchCover: true,
|
||||
player: PlayerName[npProvider],
|
||||
});
|
||||
fs.writeFileSync(nppath, npProvider);
|
||||
}else{
|
||||
var platform=process.platform;
|
||||
var bit=process.arch;
|
||||
if(platform=="darwin"){
|
||||
const nowplaying = require("itunes-nowplaying-mac")
|
||||
nowplaying.getRawData().then(function (value) {
|
||||
mainWindow.webContents.send('itunes-np', value);
|
||||
}).catch(function (error) {
|
||||
// 非同期処理失敗。呼ばれない
|
||||
console.log(error);
|
||||
});
|
||||
}else{
|
||||
var {NowPlaying,PlayerName} = require("nowplaying-node");
|
||||
var nppath=join(app.getPath("userData"), "nowplaying");
|
||||
var npProvider;
|
||||
try {
|
||||
npProvider = fs.readFileSync(nppath, 'utf8');
|
||||
} catch (e) {
|
||||
npProvider="AIMP";
|
||||
}
|
||||
var myAIMP = new NowPlaying({
|
||||
fetchCover: true,
|
||||
player: PlayerName[npProvider],
|
||||
});
|
||||
myAIMP.update();
|
||||
var path=myAIMP.getCoverPath();
|
||||
if(path){
|
||||
var bin = fs.readFileSync(path, 'base64');
|
||||
}else{
|
||||
var bin=false;
|
||||
}
|
||||
|
||||
var value={
|
||||
win:true,
|
||||
name:myAIMP.getTitle(),
|
||||
artist:myAIMP.getArtist(),
|
||||
album:myAIMP.getAlbum(),
|
||||
path:bin
|
||||
}
|
||||
mainWindow.webContents.send('itunes-np', value);
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
exports.TheDeskNowPlaying = np;
|
181
app/main/system.js
Normal file
181
app/main/system.js
Normal file
@@ -0,0 +1,181 @@
|
||||
function system(mainWindow, dir, lang) {
|
||||
const electron = require("electron");
|
||||
const app = electron.app;
|
||||
const join = require('path').join;
|
||||
var Jimp = require("jimp");
|
||||
const fs = require("fs");
|
||||
var ipc = electron.ipcMain;
|
||||
var tmp_img = join(app.getPath("userData"), "tmp.png");
|
||||
var ha_path = join(app.getPath("userData"), "hardwareAcceleration");
|
||||
var lang_path = join(app.getPath("userData"), "language");
|
||||
const BrowserWindow = electron.BrowserWindow;
|
||||
const dialog = electron.dialog;
|
||||
const os = require('os')
|
||||
const fm = require('font-manager');
|
||||
const language=require("../main/language.js");
|
||||
ipc.on('native-notf', function(e, args) {
|
||||
|
||||
var platform = process.platform;
|
||||
var bit = process.arch;
|
||||
if (platform == "win32") {
|
||||
const notifier = require('node-notifier')
|
||||
var tmp_imge = tmp_img;
|
||||
Jimp.read(args[2], function(err, lenna) {
|
||||
if (!err && lenna) {
|
||||
lenna.write(tmp_img);
|
||||
var tmp_imge = tmp_img;
|
||||
} else {
|
||||
var tmp_imge = "";
|
||||
}
|
||||
notifier.notify({
|
||||
appID: "top.thedesk",
|
||||
message: args[1],
|
||||
title: args[0],
|
||||
icon: tmp_imge,
|
||||
sound: false,
|
||||
wait: true,
|
||||
},
|
||||
function(err, response) {
|
||||
console.log(err, response)
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
//言語
|
||||
ipc.on('lang', function(e, arg) {
|
||||
|
||||
console.log("set:" + arg);
|
||||
fs.writeFileSync(lang_path, arg);
|
||||
mainWindow.webContents.send('langres', "");
|
||||
})
|
||||
//ハードウェアアクセラレーションの無効化
|
||||
ipc.on('ha', function(e, arg) {
|
||||
|
||||
if (arg == "true") {
|
||||
fs.writeFileSync(ha_path, arg);
|
||||
} else {
|
||||
fs.unlink(ha_path, function(err) {});
|
||||
}
|
||||
app.relaunch()
|
||||
app.exit()
|
||||
})
|
||||
|
||||
ipc.on('quit', (e, args) => {
|
||||
|
||||
app.quit();
|
||||
});
|
||||
ipc.on('about', (e, args) => {
|
||||
|
||||
about();
|
||||
});
|
||||
|
||||
function about() {
|
||||
|
||||
var ver = app.getVersion()
|
||||
var window = new BrowserWindow({
|
||||
width: 300,
|
||||
height: 460,
|
||||
"transparent": false, // ウィンドウの背景を透過
|
||||
"frame": false, // 枠の無いウィンドウ
|
||||
"resizable": false
|
||||
});
|
||||
window.loadURL(dir + '/about.html?ver=' + ver);
|
||||
return "true"
|
||||
}
|
||||
ipc.on('column-del', (e, args) => {
|
||||
|
||||
console.log(lang);
|
||||
var options = language.delsel(lang)
|
||||
dialog.showMessageBox(options, function(index) {
|
||||
mainWindow.webContents.send('column-del-reply', index);
|
||||
})
|
||||
});
|
||||
ipc.on('nano', function(e, x, y) {
|
||||
|
||||
var nano_info_path = join(app.getPath("userData"),
|
||||
"nano-window-position.json");
|
||||
var window_pos;
|
||||
try {
|
||||
window_pos = JSON.parse(fs.readFileSync(nano_info_path, 'utf8'));
|
||||
} catch (e) {
|
||||
window_pos = [0, 0]; // デフォルトバリュー
|
||||
}
|
||||
var nanowindow = new BrowserWindow({
|
||||
width: 350,
|
||||
height: 200,
|
||||
"transparent": false, // ウィンドウの背景を透過
|
||||
"frame": false, // 枠の無いウィンドウ
|
||||
"resizable": false
|
||||
});
|
||||
nanowindow.loadURL(dir + '/nano.html');
|
||||
nanowindow.setAlwaysOnTop(true);
|
||||
|
||||
nanowindow.setPosition(window_pos[0], window_pos[1]);
|
||||
nanowindow.on('close', function() {
|
||||
fs.writeFileSync(nano_info_path, JSON.stringify(nanowindow.getPosition()));
|
||||
});
|
||||
return true;
|
||||
})
|
||||
|
||||
var cbTimer1;
|
||||
ipc.on('startmem', (e, arg) => {
|
||||
cbTimer1 = setInterval(mems, 1000);
|
||||
});
|
||||
ipc.on('endmem', (e, arg) => {
|
||||
if (cbTimer1) {
|
||||
clearInterval(cbTimer1);
|
||||
}
|
||||
});
|
||||
|
||||
function mems() {
|
||||
var mem = os.totalmem() - os.freemem();
|
||||
if (mainWindow) {
|
||||
mainWindow.webContents.send('memory', [mem, os.cpus()[0].model, os.totalmem()]);
|
||||
}
|
||||
}
|
||||
ipc.on('export', (e, args) => {
|
||||
fs.writeFileSync(args[0], args[1]);
|
||||
});
|
||||
ipc.on('import', (e, arg) => {
|
||||
mainWindow.webContents.send('config', fs.readFileSync(arg, 'utf8'));
|
||||
});
|
||||
//フォント
|
||||
function object_array_sort(data, key, order, fn) {
|
||||
//デフォは降順(DESC)
|
||||
var num_a = -1;
|
||||
var num_b = 1;
|
||||
|
||||
if (order === 'asc') { //指定があれば昇順(ASC)
|
||||
num_a = 1;
|
||||
num_b = -1;
|
||||
}
|
||||
|
||||
data = data.sort(function(a, b) {
|
||||
var x = a[key];
|
||||
var y = b[key];
|
||||
if (x > y) return num_a;
|
||||
if (x < y) return num_b;
|
||||
return 0;
|
||||
});
|
||||
|
||||
//重複排除
|
||||
var arrObj = {};
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
arrObj[data[i]['family']] = data[i];
|
||||
}
|
||||
|
||||
data = [];
|
||||
for (var key in arrObj) {
|
||||
data.push(arrObj[key]);
|
||||
}
|
||||
|
||||
fn(data); // ソート後の配列を返す
|
||||
}
|
||||
ipc.on('fonts', (e, arg) => {
|
||||
var fonts = fm.getAvailableFontsSync();
|
||||
object_array_sort(fonts, 'family', 'asc', function(fonts_sorted) {
|
||||
mainWindow.webContents.send('font-list', fonts_sorted);
|
||||
});
|
||||
});
|
||||
}
|
||||
exports.system = system;
|
766
app/package-lock.json
generated
766
app/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "thedesk",
|
||||
"version": "18.0.3",
|
||||
"version": "18.1.0",
|
||||
"description": "TheDesk is a Mastodon client for PC.",
|
||||
"main": "main.js",
|
||||
"scripts": {
|
||||
@@ -30,6 +30,11 @@
|
||||
"name": "ぽぷんじゃ",
|
||||
"url": "https://popon.pptdn.jp/@popn_ja",
|
||||
"email": "popn.ja@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "kPherox",
|
||||
"url": "https://www.kr-kp.com/",
|
||||
"email": "admin@mail.kr-kp.com"
|
||||
}
|
||||
],
|
||||
"license": "GPL-3.0",
|
||||
@@ -43,8 +48,8 @@
|
||||
"vue": "^2.6.9"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"itunes-nowplaying-mac": "^0.2.3",
|
||||
"nowplaying-node": "^0.1.3"
|
||||
"nowplaying-node": "^0.1.3",
|
||||
"itunes-nowplaying-mac": "git+https://github.com/rinsuki/itunes-nowplaying-mac#pull/1/head"
|
||||
},
|
||||
"build": {
|
||||
"productName": "TheDesk",
|
||||
@@ -65,7 +70,10 @@
|
||||
"applicationId": "Cutls.TheDesk",
|
||||
"publisherDisplayName": "Cutls",
|
||||
"publisher": "CN=629757F5-A5EE-474F-9562-B304A89A9FD1",
|
||||
"languages":["JA-JP","EN-US"]
|
||||
"languages": [
|
||||
"JA-JP",
|
||||
"EN-US"
|
||||
]
|
||||
},
|
||||
"nsis": {
|
||||
"oneClick": false,
|
||||
@@ -83,14 +91,13 @@
|
||||
"target": "dmg"
|
||||
},
|
||||
"electronDownload": {
|
||||
"version": "4.0.5"
|
||||
"version": "4.0.6"
|
||||
},
|
||||
"electronVersion": "4.0.5"
|
||||
"electronVersion": "4.0.6"
|
||||
},
|
||||
"devDependencies": {
|
||||
"electron": "^4.0.5",
|
||||
"electron-packager": "^13.0.1",
|
||||
"electron-prebuilt": "^1.4.13",
|
||||
"electron": "^4.0.6",
|
||||
"electron-packager": "^13.1.1",
|
||||
"electron-rebuild": "^1.8.4"
|
||||
}
|
||||
}
|
||||
|
@@ -32,7 +32,7 @@
|
||||
<script type="text/javascript" src="../../js/common/modal.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/jquery-ui.min.js"></script>
|
||||
<script>
|
||||
var ver="Usamin (18.0.3)";
|
||||
var ver="Usamin (18.1.2)";
|
||||
//betaを入れるとバージョンチェックしない
|
||||
//GitHubに上げるときはindex.htmlをちゃんとする。(index.start.html)
|
||||
//var ver="beta";
|
||||
@@ -136,7 +136,7 @@ var tlid=0;
|
||||
</div>
|
||||
<div class="col s12 mize" style="margin-bottom:5px; padding:0;">
|
||||
<div id="taglist"></div>
|
||||
<span id="preview" class="mize"></span>
|
||||
<div id="preview" class="mize"></div>
|
||||
<span class=" sml mize"><span data-trans="reply">Reply</span>:
|
||||
<span id="rec">No</span>/<span data-trans="file">Attaching files</span>:
|
||||
<span id="mec">None</span>/<span data-trans="vis">Adjust status privacy</span>:
|
||||
@@ -583,24 +583,20 @@ var tlid=0;
|
||||
<a href="https://thedesk.top" target="_blank">HP</a><br>
|
||||
<a href="https://github.com/cutls/TheDesk" target="_blank">GitHub</a><br>
|
||||
<br>
|
||||
<div id="release-Usamin_18-0-3" class="release-do" style="display:none; ">
|
||||
<div id="release-Usamin_18-1-1" class="release-do" style="display:none; ">
|
||||
<a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br>
|
||||
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
|
||||
Entyでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。<br>
|
||||
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
|
||||
<h5>Release Note Usamin (18.0.3)</h5>
|
||||
・初期段階でカラムが追加できない可能性を修正。<br>
|
||||
--以下18.0.0--<br>
|
||||
・多くの機能を「メニュー」に集約。結局何のボタンかわからないアイコンの羅列から解放。<br>
|
||||
・Alt+Enterでセカンダリートゥートボタン<br>
|
||||
・引用ボタンを表示しない設定(引用形式設定を「使用しない」)<br>
|
||||
・実況機能をまともに書き直した。<br>
|
||||
・サジェストをトゥートボックスの右に<br>
|
||||
・ハードウェアアクセラレーションを無効化するオプション。(設定の表示などが乱れるときに設定)<br>
|
||||
・返信時に「@」が複数含まれない仕様を訂正<br>
|
||||
・一部のデフォルト値を修正。<br>
|
||||
・設定のエクスポート(バックアップ)がバージョン2に。ほとんどの設定をエクスポートします。<br>
|
||||
・イメージビューワーの修正<br>
|
||||
<h5>Release Note Usamin (18.1.1)</h5>
|
||||
・お知らせ機能改善<br>
|
||||
・Integrated TLで一部挙動改善(Thanks to <a href="https://www.kr-kp.com/">kPherox</a>)<br>
|
||||
--以下18.1.0--<br>
|
||||
・iTunes NowPlaying(macOS)にアルバムアートワークを付ける(Thanks to <a href="https://www.kr-kp.com/">kPherox</a>)<br>
|
||||
・カラムを<b>縦に並べられる</b>ように(2つ目以降のカラム毎の設定の「左に重ねる」「右に出す」を押す)<br>
|
||||
・画像を個別に削除する(画像をクリックして)<br>
|
||||
・何個もアルバムアートワークが投稿されるバグを修正<br>
|
||||
・Misskeyでログインしたまま何もできないバグを修正(権限回り)
|
||||
</div>
|
||||
<div id="release-en">
|
||||
<h5>Let's make it native!</h5>
|
||||
@@ -612,8 +608,8 @@ var tlid=0;
|
||||
<a class="btn-share btn waves-effect waves-light purple lighten-2" href="https://enty.jp/Cutls" target="_blank">
|
||||
Support on Enty
|
||||
</a>
|
||||
<a class="btn-share btn waves-effect waves-light red lighten-2" href="https://osushi.love/Cutls_P" target="_blank">
|
||||
Osushi.love: give me sushi
|
||||
<a class="btn-share btn waves-effect waves-light red lighten-2" href="https://www.pixiv.net/fanbox/creator/28105985" target="_blank">
|
||||
Support on Pixiv FANBOX
|
||||
</a>
|
||||
<a class="btn-share btn waves-effect waves-light blue" href="https://www.amazon.co.jp/registry/wishlist/2TV35ZHHJPDSB" target="_blank">
|
||||
Amazon Wish List
|
||||
|
@@ -350,10 +350,10 @@
|
||||
<button class="btn waves-effect indigo" onclick="about()" style="width:100%; max-width:500px;"><i class="material-icons left">info</i>About TheDesk</button>
|
||||
<a href="https://thedesk.top" class="btn waves-effect deep-purple lighten-2" style="width:100%; max-width:500px;"><i class="material-icons left">web</i>Website</a>
|
||||
<a href="https://enty.jp/Cutls" class="btn waves-effect purple lighten-2" style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>Support(Enty)</a>
|
||||
<a href="https://www.pixiv.net/fanbox/creator/28105985" class="btn waves-effect red lighten-2" style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>Support(Pixiv FANBOX)</a>
|
||||
<a href="https://docs.thedesk.top" class="btn waves-effect blue darken-2" style="width:100%; max-width:500px;"><i class="material-icons left">list</i>Help/Docs(Constructing)</a>
|
||||
<a href="https://github.com/cutls/TheDesk" class="btn waves-effect black lighten-2" style="width:100%; max-width:500px;"><i class="fa fa-github left"></i>GitHub</a>
|
||||
<a href="index.html?mode=user&code=Cutls@kirishima.cloud" class="btn waves-effect blue lighten-2" style="width:100%; max-width:500px;"><img src="../../img/desk_full.svg" class="left" width="25" style="padding-top:5px;">Developer: Cutls@kirishima.cloud</a>
|
||||
<a class="btn waves-effect red lighten-2" href="https://osushi.love/Cutls_P" target="_blank" style="width:100%; max-width:500px;"><img src="../../img/sushi.svg" class="left" width="25" style="padding-top:5px;">Give me a sushi!</a>
|
||||
<br>
|
||||
Kyash<br>
|
||||
<img src="../../img/kyash.png" width="100"><br>
|
||||
|
@@ -263,7 +263,7 @@ var tlConstruction=[
|
||||
setValue:200,
|
||||
text:{
|
||||
head:"Height of images",
|
||||
desc:"",
|
||||
desc:'Option:Set "full" to uncrop.',
|
||||
after:"px"
|
||||
}
|
||||
},{
|
||||
@@ -273,7 +273,7 @@ var tlConstruction=[
|
||||
setValue:"no",
|
||||
text:{
|
||||
head:"Enable #InstanceTicker",
|
||||
desc:'Show colorful stickers about tooters' server. <a href="https://cdn.weep.me/mastodon/">About #InstanceTicker</a> Copyright 2018 weepjp, kyori19.',
|
||||
desc:'Show colorful stickers about the server. <a href="https://cdn.weep.me/mastodon/">About #InstanceTicker</a> Copyright 2018 weepjp, kyori19.',
|
||||
checkbox:yesno
|
||||
}
|
||||
},{
|
||||
|
@@ -62,9 +62,6 @@ a,button,input,label,i{
|
||||
#prog{
|
||||
font-size:200%;
|
||||
}
|
||||
.linux, .mac{
|
||||
display:none;
|
||||
}
|
||||
</style>
|
||||
<script type="text/javascript" src="../../js/common/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../js/platform/first.js"></script>
|
||||
@@ -78,11 +75,10 @@ a,button,input,label,i{
|
||||
<p>Get latest TheDesk</p>
|
||||
<span id="now"></span>→<b id="ver"></b><br>
|
||||
<span id="det"></span><br>
|
||||
<button class="waves-effect btn windows" onclick="update('install')" style="margin-left:15px;">Installer ver.</button>
|
||||
<button class="waves-effect btn windows" onclick="update('portable')" style="margin-left:15px;">Portable ver.</button>
|
||||
<span class="linux">Snap ver may be on Snapcraft<br></span>
|
||||
<button class="waves-effect btn linux" onclick="update('linux')" style="margin-left:15px;">Start</button>
|
||||
<button class="waves-effect btn mac" onclick="update('mac')" style="margin-left:15px;">Start</button>
|
||||
<button class="waves-effect btn windows hide" onclick="update('install')" style="margin-left:15px;">Installer ver.</button>
|
||||
<button class="waves-effect btn windows hide" onclick="update('portable')" style="margin-left:15px;">Portable ver.</button>
|
||||
<button class="waves-effect btn linux hide" onclick="update('linux')" style="margin-left:15px;">Start</button>
|
||||
<button class="waves-effect btn mac hide" onclick="update('mac')" style="margin-left:15px;">Start</button>
|
||||
<br>
|
||||
Some problems?<br>Please download on <a href="https://thedesk.top">Oficial HP</a>.
|
||||
</div>
|
||||
@@ -184,12 +180,12 @@ function verck(){
|
||||
var remote=electron.remote;
|
||||
var platform=remote.process.platform;
|
||||
var bit=process.arch;
|
||||
if(platform=="linux"){
|
||||
$('.windows').hide()
|
||||
$('.linux').show()
|
||||
}else if(platform=="mac"){
|
||||
$('.windows').hide()
|
||||
$('.mac').show()
|
||||
if(platform=="win32"){
|
||||
$('.windows').removeClass("hide")
|
||||
}else if(platform=="linux"){
|
||||
$('.linux').removeClass("hide")
|
||||
}else if(platform=="darwin"){
|
||||
$('.mac').removeClass("hide")
|
||||
}
|
||||
var start="https://thedesk.top/ver.json";
|
||||
fetch(start, {
|
||||
|
@@ -32,7 +32,7 @@
|
||||
<script type="text/javascript" src="../../js/common/modal.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/jquery-ui.min.js"></script>
|
||||
<script>
|
||||
var ver="Usamin (18.0.3)";
|
||||
var ver="Usamin (18.1.2)";
|
||||
//betaを入れるとバージョンチェックしない
|
||||
//GitHubに上げるときはindex.htmlをちゃんとする。(index.start.html)
|
||||
//var ver="beta";
|
||||
@@ -136,7 +136,7 @@ var tlid=0;
|
||||
</div>
|
||||
<div class="col s12 mize" style="margin-bottom:5px; padding:0;">
|
||||
<div id="taglist"></div>
|
||||
<span id="preview" class="mize"></span>
|
||||
<div id="preview" class="mize"></div>
|
||||
<span class=" sml mize"><span data-trans="reply">返信モード</span>:
|
||||
<span id="rec">いいえ</span>/<span data-trans="file">添付ファイル</span>:
|
||||
<span id="mec">なし</span>/<span data-trans="vis">公開範囲</span>:
|
||||
@@ -583,24 +583,20 @@ var tlid=0;
|
||||
<a href="https://thedesk.top" target="_blank">HP</a><br>
|
||||
<a href="https://github.com/cutls/TheDesk" target="_blank">GitHub</a><br>
|
||||
<br>
|
||||
<div id="release-Usamin_18-0-3" class="release-do" style="display:none; ">
|
||||
<div id="release-Usamin_18-1-1" class="release-do" style="display:none; ">
|
||||
<a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br>
|
||||
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
|
||||
Entyでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。<br>
|
||||
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
|
||||
<h5>Release Note Usamin (18.0.3)</h5>
|
||||
・初期段階でカラムが追加できない可能性を修正。<br>
|
||||
--以下18.0.0--<br>
|
||||
・多くの機能を「メニュー」に集約。結局何のボタンかわからないアイコンの羅列から解放。<br>
|
||||
・Alt+Enterでセカンダリートゥートボタン<br>
|
||||
・引用ボタンを表示しない設定(引用形式設定を「使用しない」)<br>
|
||||
・実況機能をまともに書き直した。<br>
|
||||
・サジェストをトゥートボックスの右に<br>
|
||||
・ハードウェアアクセラレーションを無効化するオプション。(設定の表示などが乱れるときに設定)<br>
|
||||
・返信時に「@」が複数含まれない仕様を訂正<br>
|
||||
・一部のデフォルト値を修正。<br>
|
||||
・設定のエクスポート(バックアップ)がバージョン2に。ほとんどの設定をエクスポートします。<br>
|
||||
・イメージビューワーの修正<br>
|
||||
<h5>Release Note Usamin (18.1.1)</h5>
|
||||
・お知らせ機能改善<br>
|
||||
・Integrated TLで一部挙動改善(Thanks to <a href="https://www.kr-kp.com/">kPherox</a>)<br>
|
||||
--以下18.1.0--<br>
|
||||
・iTunes NowPlaying(macOS)にアルバムアートワークを付ける(Thanks to <a href="https://www.kr-kp.com/">kPherox</a>)<br>
|
||||
・カラムを<b>縦に並べられる</b>ように(2つ目以降のカラム毎の設定の「左に重ねる」「右に出す」を押す)<br>
|
||||
・画像を個別に削除する(画像をクリックして)<br>
|
||||
・何個もアルバムアートワークが投稿されるバグを修正<br>
|
||||
・Misskeyでログインしたまま何もできないバグを修正(権限回り)
|
||||
</div>
|
||||
<div id="release-en">
|
||||
<h5>Let's make it native!</h5>
|
||||
@@ -612,8 +608,8 @@ var tlid=0;
|
||||
<a class="btn-share btn waves-effect waves-light purple lighten-2" href="https://enty.jp/Cutls" target="_blank">
|
||||
Entyで支援
|
||||
</a>
|
||||
<a class="btn-share btn waves-effect waves-light red lighten-2" href="https://osushi.love/Cutls_P" target="_blank">
|
||||
Osushi.loveで寿司を贈る
|
||||
<a class="btn-share btn waves-effect waves-light red lighten-2" href="https://www.pixiv.net/fanbox/creator/28105985" target="_blank">
|
||||
Pixiv FANBOXで支援
|
||||
</a>
|
||||
<a class="btn-share btn waves-effect waves-light blue" href="https://www.amazon.co.jp/registry/wishlist/2TV35ZHHJPDSB" target="_blank">
|
||||
Amazonほしいものリスト
|
||||
|
@@ -350,10 +350,10 @@
|
||||
<button class="btn waves-effect indigo" onclick="about()" style="width:100%; max-width:500px;"><i class="material-icons left">info</i>このソフトについて</button>
|
||||
<a href="https://thedesk.top" class="btn waves-effect deep-purple lighten-2" style="width:100%; max-width:500px;"><i class="material-icons left">web</i>公式HP</a>
|
||||
<a href="https://enty.jp/Cutls" class="btn waves-effect purple lighten-2" style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>支援(Enty)</a>
|
||||
<a href="https://www.pixiv.net/fanbox/creator/28105985" class="btn waves-effect red lighten-2" style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>支援(Pixiv FANBOX)</a>
|
||||
<a href="https://docs.thedesk.top" class="btn waves-effect blue darken-2" style="width:100%; max-width:500px;"><i class="material-icons left">list</i>ヘルプ/Docs(Constructing)</a>
|
||||
<a href="https://github.com/cutls/TheDesk" class="btn waves-effect black lighten-2" style="width:100%; max-width:500px;"><i class="fa fa-github left"></i>GitHub</a>
|
||||
<a href="index.html?mode=user&code=Cutls@kirishima.cloud" class="btn waves-effect blue lighten-2" style="width:100%; max-width:500px;"><img src="../../img/desk_full.svg" class="left" width="25" style="padding-top:5px;">Developer: Cutls@kirishima.cloud</a>
|
||||
<a class="btn waves-effect red lighten-2" href="https://osushi.love/Cutls_P" target="_blank" style="width:100%; max-width:500px;"><img src="../../img/sushi.svg" class="left" width="25" style="padding-top:5px;">寿司を投げる</a>
|
||||
<br>
|
||||
Kyash<br>
|
||||
<img src="../../img/kyash.png" width="100"><br>
|
||||
|
@@ -263,7 +263,7 @@ var tlConstruction=[
|
||||
setValue:200,
|
||||
text:{
|
||||
head:"画像の高さ",
|
||||
desc:"",
|
||||
desc:'オプション:「full」と指定すると全ての画像をクロップしません。',
|
||||
after:"px"
|
||||
}
|
||||
},{
|
||||
|
@@ -62,9 +62,6 @@ a,button,input,label,i{
|
||||
#prog{
|
||||
font-size:200%;
|
||||
}
|
||||
.linux, .mac{
|
||||
display:none;
|
||||
}
|
||||
</style>
|
||||
<script type="text/javascript" src="../../js/common/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../js/platform/first.js"></script>
|
||||
@@ -78,11 +75,10 @@ a,button,input,label,i{
|
||||
<p>アップデートがあります</p>
|
||||
<span id="now"></span>→<b id="ver"></b><br>
|
||||
<span id="det"></span><br>
|
||||
<button class="waves-effect btn windows" onclick="update('install')" style="margin-left:15px;">インストーラー版(推奨)</button>
|
||||
<button class="waves-effect btn windows" onclick="update('portable')" style="margin-left:15px;">ポータブル版</button>
|
||||
<span class="linux">snap版はSnapcraft等よりDLしてください。<br></span>
|
||||
<button class="waves-effect btn linux" onclick="update('linux')" style="margin-left:15px;">開始</button>
|
||||
<button class="waves-effect btn mac" onclick="update('mac')" style="margin-left:15px;">開始</button>
|
||||
<button class="waves-effect btn windows hide" onclick="update('install')" style="margin-left:15px;">インストーラー版(推奨)</button>
|
||||
<button class="waves-effect btn windows hide" onclick="update('portable')" style="margin-left:15px;">ポータブル版</button>
|
||||
<button class="waves-effect btn linux hide" onclick="update('linux')" style="margin-left:15px;">開始</button>
|
||||
<button class="waves-effect btn mac hide" onclick="update('mac')" style="margin-left:15px;">開始</button>
|
||||
<br>
|
||||
問題が発生しますか?<br><a href="https://thedesk.top">公式HP</a>からダウンロードをお試しください。
|
||||
</div>
|
||||
@@ -184,12 +180,12 @@ function verck(){
|
||||
var remote=electron.remote;
|
||||
var platform=remote.process.platform;
|
||||
var bit=process.arch;
|
||||
if(platform=="linux"){
|
||||
$('.windows').hide()
|
||||
$('.linux').show()
|
||||
}else if(platform=="mac"){
|
||||
$('.windows').hide()
|
||||
$('.mac').show()
|
||||
if(platform=="win32"){
|
||||
$('.windows').removeClass("hide")
|
||||
}else if(platform=="linux"){
|
||||
$('.linux').removeClass("hide")
|
||||
}else if(platform=="darwin"){
|
||||
$('.mac').removeClass("hide")
|
||||
}
|
||||
var start="https://thedesk.top/ver.json";
|
||||
fetch(start, {
|
||||
|
@@ -136,7 +136,7 @@ var tlid=0;
|
||||
</div>
|
||||
<div class="col s12 mize" style="margin-bottom:5px; padding:0;">
|
||||
<div id="taglist"></div>
|
||||
<span id="preview" class="mize"></span>
|
||||
<div id="preview" class="mize"></div>
|
||||
<span class=" sml mize"><span data-trans="reply">{{replyMode}}</span>:
|
||||
<span id="rec">{{no}}</span>/<span data-trans="file">{{temp}}</span>:
|
||||
<span id="mec">{{nothing}}</span>/<span data-trans="vis">{{vis}}</span>:
|
||||
@@ -360,7 +360,6 @@ var tlid=0;
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="brws()">{{openBrowser}}</a>
|
||||
<a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="shot()">{{screenshot}}</a>
|
||||
<a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="cbCopy()">{{copyURL}}</a>
|
||||
<a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="cbCopy('emb')">{{embed}}</a>
|
||||
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">{{close}}</a>
|
||||
@@ -583,24 +582,20 @@ var tlid=0;
|
||||
<a href="https://thedesk.top" target="_blank">HP</a><br>
|
||||
<a href="https://github.com/cutls/TheDesk" target="_blank">GitHub</a><br>
|
||||
<br>
|
||||
<div id="release-Usamin_18-0-3" class="release-do" style="display:none; ">
|
||||
<div id="release-Usamin_18-1-1" class="release-do" style="display:none; ">
|
||||
<a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br>
|
||||
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
|
||||
Entyでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。<br>
|
||||
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
|
||||
<h5>Release Note Usamin (18.0.3)</h5>
|
||||
・初期段階でカラムが追加できない可能性を修正。<br>
|
||||
--以下18.0.0--<br>
|
||||
・多くの機能を「メニュー」に集約。結局何のボタンかわからないアイコンの羅列から解放。<br>
|
||||
・Alt+Enterでセカンダリートゥートボタン<br>
|
||||
・引用ボタンを表示しない設定(引用形式設定を「使用しない」)<br>
|
||||
・実況機能をまともに書き直した。<br>
|
||||
・サジェストをトゥートボックスの右に<br>
|
||||
・ハードウェアアクセラレーションを無効化するオプション。(設定の表示などが乱れるときに設定)<br>
|
||||
・返信時に「@」が複数含まれない仕様を訂正<br>
|
||||
・一部のデフォルト値を修正。<br>
|
||||
・設定のエクスポート(バックアップ)がバージョン2に。ほとんどの設定をエクスポートします。<br>
|
||||
・イメージビューワーの修正<br>
|
||||
<h5>Release Note Usamin (18.1.1)</h5>
|
||||
・お知らせ機能改善<br>
|
||||
・Integrated TLで一部挙動改善(Thanks to <a href="https://www.kr-kp.com/">kPherox</a>)<br>
|
||||
--以下18.1.0--<br>
|
||||
・iTunes NowPlaying(macOS)にアルバムアートワークを付ける(Thanks to <a href="https://www.kr-kp.com/">kPherox</a>)<br>
|
||||
・カラムを<b>縦に並べられる</b>ように(2つ目以降のカラム毎の設定の「左に重ねる」「右に出す」を押す)<br>
|
||||
・画像を個別に削除する(画像をクリックして)<br>
|
||||
・何個もアルバムアートワークが投稿されるバグを修正<br>
|
||||
・Misskeyでログインしたまま何もできないバグを修正(権限回り)
|
||||
</div>
|
||||
<div id="release-en">
|
||||
<h5>Let's make it native!</h5>
|
||||
@@ -612,8 +607,8 @@ var tlid=0;
|
||||
<a class="btn-share btn waves-effect waves-light purple lighten-2" href="https://enty.jp/Cutls" target="_blank">
|
||||
{{EntySupport}}
|
||||
</a>
|
||||
<a class="btn-share btn waves-effect waves-light red lighten-2" href="https://osushi.love/Cutls_P" target="_blank">
|
||||
{{sendSushi}}
|
||||
<a class="btn-share btn waves-effect waves-light red lighten-2" href="https://www.pixiv.net/fanbox/creator/28105985" target="_blank">
|
||||
{{PixivSupport}}
|
||||
</a>
|
||||
<a class="btn-share btn waves-effect waves-light blue" href="https://www.amazon.co.jp/registry/wishlist/2TV35ZHHJPDSB" target="_blank">
|
||||
{{AWLSupport}}
|
||||
|
@@ -105,6 +105,7 @@
|
||||
"supportme":"Support TheDesk!",
|
||||
"TheDeskDes":"TheDesk has no ad, you need no charge to unlock premium features. We need your friendly support!",
|
||||
"EntySupport":"Support on Enty",
|
||||
"PixivSupport":"Support on Pixiv FANBOX",
|
||||
"AWLSupport":"Amazon Wish List",
|
||||
"SendAmazonGift1":"Give me Amazon Gift Card:",
|
||||
"SendAmazonGift2":"",
|
||||
|
@@ -105,6 +105,7 @@
|
||||
"supportme":"ご支援ください。",
|
||||
"TheDeskDes":"TheDeskは営利目的ではないため、有料機能や広告は一切ありません。<br>皆様のあたたかいご支援のもとで製作されています。",
|
||||
"EntySupport":"Entyで支援",
|
||||
"PixivSupport":"Pixiv FANBOXで支援",
|
||||
"AWLSupport":"Amazonほしいものリスト",
|
||||
"SendAmazonGift1":"",
|
||||
"SendAmazonGift2":"にAmazonギフトカードを送る",
|
||||
|
@@ -81,8 +81,9 @@
|
||||
"letters":"letters",
|
||||
"or":"or",
|
||||
"imgheight":"Height of images",
|
||||
"imgheightwarn":"Option:Set \"full\" to uncrop.",
|
||||
"ticker":"Enable #InstanceTicker",
|
||||
"tickerwarn":"Show colorful stickers about tooters' server. <a href=\"https://cdn.weep.me/mastodon/\">About #InstanceTicker</a> Copyright 2018 weepjp, kyori19.",
|
||||
"tickerwarn":"Show colorful stickers about the server. <a href=\"https://cdn.weep.me/mastodon/\">About #InstanceTicker</a> Copyright 2018 weepjp, kyori19.",
|
||||
"animation":"Animation of timelines",
|
||||
"post":"Posting Preferences",
|
||||
"autocw":"Alert before posting a long toot.",
|
||||
|
@@ -81,6 +81,7 @@
|
||||
"letters":"文字",
|
||||
"or":"または",
|
||||
"imgheight":"画像の高さ",
|
||||
"imgheightwarn":"オプション:「full」と指定すると全ての画像をクロップしません。",
|
||||
"ticker":"#InstanceTickerを使う",
|
||||
"tickerwarn":"トゥートした人の所属サーバーをわかりやすく彩ります(自サーバー以外のトゥート向け)。<a href=\"https://cdn.weep.me/mastodon/\">#InstanceTickerについて</a> Copyright 2018 weepjp, kyori19.",
|
||||
"animation":"タイムラインのアニメーション",
|
||||
|
@@ -350,10 +350,10 @@
|
||||
<button class="btn waves-effect indigo" onclick="about()" style="width:100%; max-width:500px;"><i class="material-icons left">info</i>@@about@@</button>
|
||||
<a href="https://thedesk.top" class="btn waves-effect deep-purple lighten-2" style="width:100%; max-width:500px;"><i class="material-icons left">web</i>@@hp@@</a>
|
||||
<a href="https://enty.jp/Cutls" class="btn waves-effect purple lighten-2" style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>@@support@@(Enty)</a>
|
||||
<a href="https://www.pixiv.net/fanbox/creator/28105985" class="btn waves-effect red lighten-2" style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>@@support@@(Pixiv FANBOX)</a>
|
||||
<a href="https://docs.thedesk.top" class="btn waves-effect blue darken-2" style="width:100%; max-width:500px;"><i class="material-icons left">list</i>@@help@@/Docs(Constructing)</a>
|
||||
<a href="https://github.com/cutls/TheDesk" class="btn waves-effect black lighten-2" style="width:100%; max-width:500px;"><i class="fa fa-github left"></i>GitHub</a>
|
||||
<a href="index.html?mode=user&code=Cutls@kirishima.cloud" class="btn waves-effect blue lighten-2" style="width:100%; max-width:500px;"><img src="../../img/desk_full.svg" class="left" width="25" style="padding-top:5px;">Developer: Cutls@kirishima.cloud</a>
|
||||
<a class="btn waves-effect red lighten-2" href="https://osushi.love/Cutls_P" target="_blank" style="width:100%; max-width:500px;"><img src="../../img/sushi.svg" class="left" width="25" style="padding-top:5px;">@@sushi@@</a>
|
||||
<br>
|
||||
Kyash<br>
|
||||
<img src="../../img/kyash.png" width="100"><br>
|
||||
|
@@ -263,7 +263,7 @@ var tlConstruction=[
|
||||
setValue:200,
|
||||
text:{
|
||||
head:"@@imgheight@@",
|
||||
desc:"",
|
||||
desc:'@@imgheightwarn@@',
|
||||
after:"px"
|
||||
}
|
||||
},{
|
||||
|
@@ -62,9 +62,6 @@ a,button,input,label,i{
|
||||
#prog{
|
||||
font-size:200%;
|
||||
}
|
||||
.linux, .mac{
|
||||
display:none;
|
||||
}
|
||||
</style>
|
||||
<script type="text/javascript" src="../../js/common/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../js/platform/first.js"></script>
|
||||
@@ -78,11 +75,10 @@ a,button,input,label,i{
|
||||
<p>{{updatehere}}</p>
|
||||
<span id="now"></span>→<b id="ver"></b><br>
|
||||
<span id="det"></span><br>
|
||||
<button class="waves-effect btn windows" onclick="update('install')" style="margin-left:15px;">{{installer}}</button>
|
||||
<button class="waves-effect btn windows" onclick="update('portable')" style="margin-left:15px;">{{portable}}</button>
|
||||
<span class="linux">{{snap}}<br></span>
|
||||
<button class="waves-effect btn linux" onclick="update('linux')" style="margin-left:15px;">{{download}}</button>
|
||||
<button class="waves-effect btn mac" onclick="update('mac')" style="margin-left:15px;">{{download}}</button>
|
||||
<button class="waves-effect btn windows hide" onclick="update('install')" style="margin-left:15px;">{{installer}}</button>
|
||||
<button class="waves-effect btn windows hide" onclick="update('portable')" style="margin-left:15px;">{{portable}}</button>
|
||||
<button class="waves-effect btn linux hide" onclick="update('linux')" style="margin-left:15px;">{{download}}</button>
|
||||
<button class="waves-effect btn mac hide" onclick="update('mac')" style="margin-left:15px;">{{download}}</button>
|
||||
<br>
|
||||
{{problem1}}<br>{{problem2}}
|
||||
</div>
|
||||
@@ -184,12 +180,12 @@ function verck(){
|
||||
var remote=electron.remote;
|
||||
var platform=remote.process.platform;
|
||||
var bit=process.arch;
|
||||
if(platform=="linux"){
|
||||
$('.windows').hide()
|
||||
$('.linux').show()
|
||||
}else if(platform=="mac"){
|
||||
$('.windows').hide()
|
||||
$('.mac').show()
|
||||
if(platform=="win32"){
|
||||
$('.windows').removeClass("hide")
|
||||
}else if(platform=="linux"){
|
||||
$('.linux').removeClass("hide")
|
||||
}else if(platform=="darwin"){
|
||||
$('.mac').removeClass("hide")
|
||||
}
|
||||
var start="https://thedesk.top/ver.json";
|
||||
fetch(start, {
|
||||
|
@@ -32,7 +32,7 @@
|
||||
<script type="text/javascript" src="../../js/common/modal.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/jquery-ui.min.js"></script>
|
||||
<script>
|
||||
var ver="Usamin (18.0.3)";
|
||||
var ver="Usamin (18.1.2)";
|
||||
//betaを入れるとバージョンチェックしない
|
||||
//GitHubに上げるときはindex.htmlをちゃんとする。(index.start.html)
|
||||
//var ver="beta";
|
||||
@@ -136,7 +136,7 @@ var tlid=0;
|
||||
</div>
|
||||
<div class="col s12 mize" style="margin-bottom:5px; padding:0;">
|
||||
<div id="taglist"></div>
|
||||
<span id="preview" class="mize"></span>
|
||||
<div id="preview" class="mize"></div>
|
||||
<span class=" sml mize"><span data-trans="reply">crwdns396:0crwdne396:0</span>:
|
||||
<span id="rec">crwdns397:0crwdne397:0</span>/<span data-trans="file">crwdns399:0crwdne399:0</span>:
|
||||
<span id="mec">crwdns400:0crwdne400:0</span>/<span data-trans="vis">crwdns401:0crwdne401:0</span>:
|
||||
@@ -583,24 +583,20 @@ var tlid=0;
|
||||
<a href="https://thedesk.top" target="_blank">HP</a><br>
|
||||
<a href="https://github.com/cutls/TheDesk" target="_blank">GitHub</a><br>
|
||||
<br>
|
||||
<div id="release-Usamin_18-0-3" class="release-do" style="display:none; ">
|
||||
<div id="release-Usamin_18-1-1" class="release-do" style="display:none; ">
|
||||
<a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br>
|
||||
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
|
||||
Entyでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。<br>
|
||||
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
|
||||
<h5>Release Note Usamin (18.0.3)</h5>
|
||||
・初期段階でカラムが追加できない可能性を修正。<br>
|
||||
--以下18.0.0--<br>
|
||||
・多くの機能を「メニュー」に集約。結局何のボタンかわからないアイコンの羅列から解放。<br>
|
||||
・Alt+Enterでセカンダリートゥートボタン<br>
|
||||
・引用ボタンを表示しない設定(引用形式設定を「使用しない」)<br>
|
||||
・実況機能をまともに書き直した。<br>
|
||||
・サジェストをトゥートボックスの右に<br>
|
||||
・ハードウェアアクセラレーションを無効化するオプション。(設定の表示などが乱れるときに設定)<br>
|
||||
・返信時に「@」が複数含まれない仕様を訂正<br>
|
||||
・一部のデフォルト値を修正。<br>
|
||||
・設定のエクスポート(バックアップ)がバージョン2に。ほとんどの設定をエクスポートします。<br>
|
||||
・イメージビューワーの修正<br>
|
||||
<h5>Release Note Usamin (18.1.1)</h5>
|
||||
・お知らせ機能改善<br>
|
||||
・Integrated TLで一部挙動改善(Thanks to <a href="https://www.kr-kp.com/">kPherox</a>)<br>
|
||||
--以下18.1.0--<br>
|
||||
・iTunes NowPlaying(macOS)にアルバムアートワークを付ける(Thanks to <a href="https://www.kr-kp.com/">kPherox</a>)<br>
|
||||
・カラムを<b>縦に並べられる</b>ように(2つ目以降のカラム毎の設定の「左に重ねる」「右に出す」を押す)<br>
|
||||
・画像を個別に削除する(画像をクリックして)<br>
|
||||
・何個もアルバムアートワークが投稿されるバグを修正<br>
|
||||
・Misskeyでログインしたまま何もできないバグを修正(権限回り)
|
||||
</div>
|
||||
<div id="release-en">
|
||||
<h5>Let's make it native!</h5>
|
||||
@@ -612,8 +608,8 @@ var tlid=0;
|
||||
<a class="btn-share btn waves-effect waves-light purple lighten-2" href="https://enty.jp/Cutls" target="_blank">
|
||||
crwdns475:0crwdne475:0
|
||||
</a>
|
||||
<a class="btn-share btn waves-effect waves-light red lighten-2" href="https://osushi.love/Cutls_P" target="_blank">
|
||||
crwdns479:0crwdne479:0
|
||||
<a class="btn-share btn waves-effect waves-light red lighten-2" href="https://www.pixiv.net/fanbox/creator/28105985" target="_blank">
|
||||
{{PixivSupport}}
|
||||
</a>
|
||||
<a class="btn-share btn waves-effect waves-light blue" href="https://www.amazon.co.jp/registry/wishlist/2TV35ZHHJPDSB" target="_blank">
|
||||
crwdns476:0crwdne476:0
|
||||
|
@@ -350,10 +350,10 @@
|
||||
<button class="btn waves-effect indigo" onclick="about()" style="width:100%; max-width:500px;"><i class="material-icons left">info</i>crwdns662:0crwdne662:0</button>
|
||||
<a href="https://thedesk.top" class="btn waves-effect deep-purple lighten-2" style="width:100%; max-width:500px;"><i class="material-icons left">web</i>crwdns663:0crwdne663:0</a>
|
||||
<a href="https://enty.jp/Cutls" class="btn waves-effect purple lighten-2" style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>crwdns664:0crwdne664:0(Enty)</a>
|
||||
<a href="https://www.pixiv.net/fanbox/creator/28105985" class="btn waves-effect red lighten-2" style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>crwdns664:0crwdne664:0(Pixiv FANBOX)</a>
|
||||
<a href="https://docs.thedesk.top" class="btn waves-effect blue darken-2" style="width:100%; max-width:500px;"><i class="material-icons left">list</i>crwdns665:0crwdne665:0/Docs(Constructing)</a>
|
||||
<a href="https://github.com/cutls/TheDesk" class="btn waves-effect black lighten-2" style="width:100%; max-width:500px;"><i class="fa fa-github left"></i>GitHub</a>
|
||||
<a href="index.html?mode=user&code=Cutls@kirishima.cloud" class="btn waves-effect blue lighten-2" style="width:100%; max-width:500px;"><img src="../../img/desk_full.svg" class="left" width="25" style="padding-top:5px;">Developer: Cutls@kirishima.cloud</a>
|
||||
<a class="btn waves-effect red lighten-2" href="https://osushi.love/Cutls_P" target="_blank" style="width:100%; max-width:500px;"><img src="../../img/sushi.svg" class="left" width="25" style="padding-top:5px;">crwdns666:0crwdne666:0</a>
|
||||
<br>
|
||||
Kyash<br>
|
||||
<img src="../../img/kyash.png" width="100"><br>
|
||||
|
@@ -263,7 +263,7 @@ var tlConstruction=[
|
||||
setValue:200,
|
||||
text:{
|
||||
head:"crwdns586:0crwdne586:0",
|
||||
desc:"",
|
||||
desc:'@@imgheightwarn@@',
|
||||
after:"px"
|
||||
}
|
||||
},{
|
||||
|
@@ -62,9 +62,6 @@ a,button,input,label,i{
|
||||
#prog{
|
||||
font-size:200%;
|
||||
}
|
||||
.linux, .mac{
|
||||
display:none;
|
||||
}
|
||||
</style>
|
||||
<script type="text/javascript" src="../../js/common/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../js/platform/first.js"></script>
|
||||
@@ -78,11 +75,10 @@ a,button,input,label,i{
|
||||
<p>crwdns669:0crwdne669:0</p>
|
||||
<span id="now"></span>→<b id="ver"></b><br>
|
||||
<span id="det"></span><br>
|
||||
<button class="waves-effect btn windows" onclick="update('install')" style="margin-left:15px;">crwdns2382:0crwdne2382:0</button>
|
||||
<button class="waves-effect btn windows" onclick="update('portable')" style="margin-left:15px;">crwdns1950:0crwdne1950:0</button>
|
||||
<span class="linux">crwdns2384:0crwdne2384:0<br></span>
|
||||
<button class="waves-effect btn linux" onclick="update('linux')" style="margin-left:15px;">crwdns670:0crwdne670:0</button>
|
||||
<button class="waves-effect btn mac" onclick="update('mac')" style="margin-left:15px;">crwdns670:0crwdne670:0</button>
|
||||
<button class="waves-effect btn windows hide" onclick="update('install')" style="margin-left:15px;">crwdns2382:0crwdne2382:0</button>
|
||||
<button class="waves-effect btn windows hide" onclick="update('portable')" style="margin-left:15px;">crwdns1950:0crwdne1950:0</button>
|
||||
<button class="waves-effect btn linux hide" onclick="update('linux')" style="margin-left:15px;">crwdns670:0crwdne670:0</button>
|
||||
<button class="waves-effect btn mac hide" onclick="update('mac')" style="margin-left:15px;">crwdns670:0crwdne670:0</button>
|
||||
<br>
|
||||
crwdns678:0crwdne678:0<br>crwdns679:0crwdne679:0
|
||||
</div>
|
||||
@@ -184,12 +180,12 @@ function verck(){
|
||||
var remote=electron.remote;
|
||||
var platform=remote.process.platform;
|
||||
var bit=process.arch;
|
||||
if(platform=="linux"){
|
||||
$('.windows').hide()
|
||||
$('.linux').show()
|
||||
}else if(platform=="mac"){
|
||||
$('.windows').hide()
|
||||
$('.mac').show()
|
||||
if(platform=="win32"){
|
||||
$('.windows').removeClass("hide")
|
||||
}else if(platform=="linux"){
|
||||
$('.linux').removeClass("hide")
|
||||
}else if(platform=="darwin"){
|
||||
$('.mac').removeClass("hide")
|
||||
}
|
||||
var start="https://thedesk.top/ver.json";
|
||||
fetch(start, {
|
||||
|
Reference in New Issue
Block a user