123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227 |
- /**
- * Copyright (C) 2024 Puter Technologies Inc.
- *
- * This file is part of Puter.
- *
- * Puter is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
- window.clipboard_op = '';
- window.clipboard = [];
- window.actions_history = [];
- window.window_nav_history = {};
- window.window_nav_history_current_position = {};
- window.progress_tracker = [];
- window.upload_item_global_id = 0;
- window.download_progress = [];
- window.download_item_global_id = 0;
- window.TRUNCATE_LENGTH = 20;
- // This is the minimum width of the window for the sidebar to be shown
- window.window_width_threshold_for_sidebar = 500;
- // the window over which mouse is hovering
- window.mouseover_window = null;
- // an active itewm container is the one where keyboard events should work (arrow keys, ...)
- window.active_item_container = null;
- window.mouseX = 0;
- window.mouseY = 0;
- // get all logged-in users
- try{
- window.logged_in_users = JSON.parse(localStorage.getItem("logged_in_users"));
- }catch(e){
- window.logged_in_users = [];
- }
- if(window.logged_in_users === null)
- window.logged_in_users = [];
- // this sessions's user
- window.auth_token = localStorage.getItem("auth_token");
- try{
- window.user = JSON.parse(localStorage.getItem("user"));
- }catch(e){
- window.user = null;
- }
- // in case this is the first time user is visiting multi-user feature
- if(window.logged_in_users.length === 0 && window.user !== null){
- let tuser = window.user;
- tuser.auth_token = window.auth_token
- window.logged_in_users.push(tuser);
- localStorage.setItem("logged_in_users", window.logged_in_users);
- }
- window.last_window_zindex = 1;
- // first visit tracker
- window.first_visit_ever = localStorage.getItem("has_visited_before") === null ? true : false;
- localStorage.setItem("has_visited_before", true);
- // system paths
- if(window.user !== undefined && window.user !== null){
- window.desktop_path = '/' + window.user.username + '/Desktop';
- window.trash_path = '/' + window.user.username + '/Trash';
- window.appdata_path = '/' + window.user.username + '/AppData';
- window.documents_path = '/' + window.user.username + '/Documents';
- window.pictures_path = '/' + window.user.username + '/Photos';
- window.videos_path = '/' + window.user.username + '/Videos';
- window.audio_path = '/' + window.user.username + '/Audio';
- window.home_path = '/' + window.user.username;
- }
- window.root_dirname = 'Puter';
- // user preferences, persisted across sessions, cached in localStorage
- try {
- window.user_preferences = JSON.parse(localStorage.getItem('user_preferences'))
- }catch(e){
- window.user_preferences = null;
- }
- // default values
- if (window.user_preferences === null) {
- window.user_preferences = {
- show_hidden_files: false,
- language: navigator.language.split("-")[0] || navigator.userLanguage || 'en',
- clock_visible: 'auto',
- }
- }
- window.window_stack = []
- window.toolbar_height = 30;
- window.default_taskbar_height = 50;
- window.taskbar_height = window.default_taskbar_height;
- window.upload_progress_hide_delay = 500;
- window.active_uploads = {};
- window.copy_progress_hide_delay = 1000;
- window.busy_indicator_hide_delay = 600;
- window.global_element_id = 0;
- window.operation_id = 0;
- window.operation_cancelled = [];
- window.last_enter_pressed_to_rename_ts = 0;
- window.window_counter = 0;
- window.keypress_item_seach_term = '';
- window.keypress_item_seach_buffer_timeout = undefined;
- window.first_visit_animation = false;
- window.show_twitter_link = true;
- window.animate_window_opening = true;
- window.animate_window_closing = true;
- window.desktop_loading_fade_delay = (window.first_visit_ever && first_visit_animation ? 6000 : 1000);
- window.watchItems = [];
- window.appdata_signatures = {};
- window.appCallbackFunctions = [];
- // 'Launch' apps
- window.launch_apps = [];
- window.launch_apps.recent = []
- window.launch_apps.recommended = []
- // Is puter being loaded inside an iframe?
- if (window.location !== window.parent.location) {
- window.is_embedded = true;
- // taskbar is not needed in embedded mode
- window.taskbar_height = 0;
- } else {
- window.is_embedded = false;
- }
- // calculate desktop height and width
- window.desktop_height = window.innerHeight - window.toolbar_height - window.taskbar_height;
- window.desktop_width = window.innerWidth;
- // {id: {left: 0, top: 0}}
- window.original_window_position = {};
- // recalculate desktop height and width on window resize
- $( window ).on( "resize", function() {
- const new_desktop_height = window.innerHeight - window.toolbar_height - window.taskbar_height;
- const new_desktop_width = window.innerWidth;
- $('.window').each((_, el) => {
- const pos = $(el).position();
- const id = $(el).attr('id');
- if(!window.original_window_position[id]){
- window.original_window_position[id] = {
- left: pos.left,
- top: pos.top
- }
- }
- const leftRadio = pos.left / window.desktop_width;
- const topRadio = pos.top / window.desktop_height;
- let left = new_desktop_width * leftRadio;
- let top = new_desktop_height * topRadio;
- const maxLeft = new_desktop_width - $(el).width();
- const maxTop = new_desktop_height - $(el).height();
- // first move the window to the original position
- const originalLeft = window.original_window_position[id].left;
- const originalTop = window.original_window_position[id].top;
- if(left < 0) left = 0;
- else if(left > maxLeft || originalLeft > maxLeft) left = maxLeft;
- if(top < window.toolbar_height) top = window.toolbar_height;
- else if(top > maxTop || originalTop > maxTop) top = maxTop + window.toolbar_height;
- $(el).css({
- left,
- top
- })
- })
- window.desktop_height = new_desktop_height;
- window.desktop_width = new_desktop_width;
- });
-
- // for now `active_element` is basically the last element that was clicked,
- // later on though (todo) `active_element` will also be set by keyboard movements
- // such as arrow keys, tab key, ... and when creating new windows...
- window.active_element = null;
- // The number of recent apps to show in the launch menu
- window.launch_recent_apps_count = 10;
- // indicated if the mouse is in one of the window snap zones or not
- // if yes, which one?
- window.current_active_snap_zone = undefined;
- //
- window.is_fullpage_mode = false;
- window.window_border_radius = 4;
- window.sites = [];
- window.feature_flags = {
- // if true, the user will be able to create shortcuts to files and directories
- create_shortcut: true,
- // if true, the user will be asked to confirm before navigating away from Puter only if there is at least one window open
- prompt_user_when_navigation_away_from_puter: false,
- // if true, the user will be able to zip and download directories
- download_directory: true,
- }
- window.is_auto_arrange_enabled = true;
- window.desktop_item_positions = {};
- window.reset_item_positions = true; // The variable decides if the item positions should be reset when the user enabled auto arrange
- // default language
- window.locale = 'en';
|