├── .gitignore ├── README.md ├── demo_screen.png ├── demo_screen_new.png ├── demo_screen_newer.png ├── index.html ├── npm ├── package-lock.json ├── package.json ├── src ├── App.vue ├── assets │ ├── logo.png │ └── styles.css ├── components │ ├── filemanager │ │ ├── filemanager.vue │ │ └── prompt.vue │ ├── logger.js │ ├── response.js │ ├── settings │ │ ├── settings.vue │ │ └── settingsIcon.vue │ ├── terminal │ │ ├── prompt-decoration.vue │ │ ├── prompt-input.vue │ │ ├── prompt.vue │ │ ├── suggestions.vue │ │ ├── term-out.vue │ │ ├── terminal.vue │ │ └── working-directory.vue │ ├── utility.js │ └── widgets │ │ ├── filetree.vue │ │ ├── todo.vue │ │ ├── weather.vue │ │ └── window.vue ├── main.js ├── store │ └── index.js └── util │ ├── config │ └── index.js │ └── filesystem │ ├── directory.js │ ├── file.js │ └── filesystem.js ├── test.html └── webpack.config.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | node_modules/* 3 | 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # BASHRC 3 | 4 |  5 | 6 | # Live version 7 | 8 | I'll be pushing a new live version very soon! 9 | 10 | ## Open issues 11 | - shortcuts for 'quitting' and opening applications 12 | 13 | 14 | ## Functionality 15 | 16 | The basic principle of this startpage is to act as a bookmark repository. 17 | ...But in a very cool way. 18 | 19 | This is a start page heavily inspired by my linux desktop setup, where I mainly operate in the terminal or terminal-based applications. Naturally, I'd like my browser startpage to be keyboard oriented as well. But it should also look nice. 20 | 21 | Directories in the file system resemble bookmark categories and Files are named links to your webpages. 22 | 23 | The Idea is to act like an os with a desktop environment, a file manager and open programs that are then arranged on the page trough a Window Manager (currently tiling or floating). 24 | 25 | ### Tiled 26 | 27 | windows are arranged automatically to fill all available space (with sexy gaps, ofc) 28 | 29 | ### Floating 30 | 31 | In the floating layout, you can arrange the windows by dragging and resizing them on their side borders. 32 | 33 | window locations and dimensions are stored in the config and should be persistent upon refreshing the page. This way you can arrange your windows in a way that you like. 34 | 35 | Note: The window locations are absolute. Meaning that if you place a window on, e.g., the bottom-right corner on a big screen and then resize your screen the window might be out of the visible area. There are some checks to bring them back upon refreshing the page, but i did not test this too much :) 36 | 37 | 38 | ## Available programs 39 | 40 | ### shell 41 | 42 | available commands: 43 | - cd [path]: change directory 44 | - ls [path]: list content of directory 45 | - touch [path, url]: create file linking to [url] 46 | - rm [path]: remove file 47 | - mkdir [path]: create new directory 48 | - rmdir [path]: remove directory 49 | - fetch: cool system information 50 | - echo [args]: print [args] to stdout 51 | - pwd: print current working directory 52 | - open [path]: open url of file at [path] in new tab 53 | - clear: clear stdout 54 | 55 | There is autocompletion for both commands and paths. you can invoke it by starting to type something and then hitting 'tab'. You can cycle through suggestions with tab and accept one with 'enter'. If there is only one suggestion, 'tab' will also work for accepting. 56 | 57 | 58 | ### filemanager 59 | 60 | Modeled after the linux file manager 'fff' (fucking fast filemanager). 61 | It is completely keyboard based. 62 | 63 | #### controls 64 | 65 | You can move up and down the content of the current directory with the arrow keys. 66 | - Right arrow key either enters the selected item if its a directory or opens the url of the file if its a file. 67 | - Left arrow key goes into the parent directory of the current dir 68 | - input 'f' to add a new file 69 | - input 'n' to add a new dir 70 | - input '/' to search in the current dir 71 | - input ':' to open a file/directory by typing its name 72 | - input 'd' to go into 'deletion' mode: All (with 'd') selected elements will be deleted uppon pressing 'p'. Directories can only be deleted if they are empty. 73 | - input 'esc' to leave the input prompt or deletion mode, if one of them is open or to cancel the filter applied by searching. 74 | 75 | The status bar at the bottom displays the path of the current working directory as well as the position of the selected element and the currently active filter. 76 | 77 | ### weather 78 | 79 | Just a tiny applet that displays local weather information. you can set your 80 | city in the settings widget. 81 | 82 | ### todo 83 | 84 | a tiny todo tracker. todos store a name and a description of a task, as well as 85 | 0 to several tags for marking tasks that belong to the same category (work, private, 86 | university, some project, whatever). You can color-code the tags by clicking on them and selecting a color in the color strip. 87 | 88 | 89 | ### Settings 90 | 91 | The wheel on the bottom right of the page opens the settings. you can select which applications you would like to have open upon startup as well as your preferred state of the window manager. You can also set your city for the weather applet and configure the colors, wallpaper, and window decorations to your likings! 92 | 93 | The background image option needs to be a valid url of an image in oder to work. 94 | The colors currently only support hex values 95 | The opacity needs to be a value from 0 to 1. 96 | 97 | ### Active TODO list 98 | 99 | - implement filetree widget 100 | 101 | ### General remarks 102 | 103 | Links and dirs are clickable in all programs as well, but thats not the point of this website right?. 104 | 105 | All bookmarks are currently stored in local storage, so you might now want to clear your cache if you stored a lot of bookmarks on the page. I am planning on porting the page into a chrome extension to get better storage options. 106 | 107 | It should work with all modern browsers, however I'm mainly using firefox and can't guarantee that everything looks nicely on other browsers. 108 | 109 | -------------------------------------------------------------------------------- /demo_screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cbrasser/bashrc/5104f166dda62dad7bf5b1f521af3d4aebf9279f/demo_screen.png -------------------------------------------------------------------------------- /demo_screen_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cbrasser/bashrc/5104f166dda62dad7bf5b1f521af3d4aebf9279f/demo_screen_new.png -------------------------------------------------------------------------------- /demo_screen_newer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cbrasser/bashrc/5104f166dda62dad7bf5b1f521af3d4aebf9279f/demo_screen_newer.png -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 | 7 | 8 | 9 | 10 |