commit 563a61a50750ddbe7a3428fa7033b46fffb33f69 Author: developomp Date: Mon Jun 21 01:41:04 2021 +0900 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..10df100 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +_/ diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..111f345 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 developomp + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..4d4ab80 --- /dev/null +++ b/README.md @@ -0,0 +1,107 @@ +> **!! WARNING !!**\ +> **THIS PROJECT IS STILL UNDER DEVELOPMENT** + +

+ +

+ +

+ My Arch linux based desktop setup +

+ +--- + +Purpose: + +- To provide myself materials (script, guide, and other files) for cases when I need to transfer to other machine, or reinstall the OS. +- To answer questions others might have about my setup (e.g. what browser you use?) + +If you have questions that are not answered in this repo, feel free to contact me via method listed in my [github profile page](https://github.com/developomp/developomp). + +# FAQ + +**Q:** Why don't you use more mainstream distros like Ubuntu? + +**A:** + +- arch is mainstream enough and has huge community behind it +- their package repository is huge and is easy to use +- has extensive wiki +- their philosophy matches that of mine (e.g. [user centrality](https://wiki.archlinux.org/title/Arch_Linux#User_centrality) and the DIY attitude) +- strikes a perfect balance between customizability and ease of use + +
+ +**Q:** Why don't you use easier arch-based distros like manjaro? + +**A:** Though Manjaro is great and adds some feature arch linux does not provide out of the box (such as [mhwd](https://wiki.manjaro.org/index.php/Manjaro_Hardware_Detection)), it's too bloated for my liking. + +# Hardware + +| name | model | +| ------- | -------------------------------------- | +| Machine | LG 15U480-KP50ML Laptop (15U480-KA5MK) | +| CPU | intel i5-8250U | +| GPU | Nvidia MX 150 | + +## RAM + +| model | size | +| --------------------------------- | ---- | +| SK Hynix HMA81GS6AFR8N-UH (stock) | 8GB | +| Samsung M471A1K43CB1-CRC (added) | 8GB | + +## Storage + +| ID\* | model | Size | +| ---- | -------------------------------------- | ----- | +| 1 | SK Hynix HFS128G39TND-N210A (30002P10) | 128GB | +| 2 | Samsung SSD 860 PRO 512GB (RVM02B6Q) | 512GB | + +\*arbitrary index I gave. Has no meaning. + +## Partitioning + +- unallocated space at the end are for overprovisioning +- no swap partition + +more information about efi partition can be found in [this](https://wiki.archlinux.org/title/GRUB) arch wiki. + +| drive id\* | format | size | mount location | purpose | +| ---------- | ------ | --------- | ---------------- | ------------- | +| 1 | FAT32 | 300MiB | /boot/efi | EFI partition | +| 1 | ext4 | 10000MiB | / | root | +| 2 | ext4 | 450000MiB | /media/pomp/data | data storage | + +\*index from [storage](#Storage) + +## Peripherals + +| peripheral | model | +| ------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| mouse | [Logitech G402 Hyperion fury](https://www.logitechg.com/en-eu/products/gaming-mice/g402-hyperion-fury-fps-gaming-mouse.html) I got from a [giveaway event](https://blog.naver.com/yjcomicsblog/221432692995) | +| headphone | [NOX-2](https://www.e-nox.co.kr/theme/s007/index/product_view01.php?wr_id=16) | +| laptop cooler | [ABKO NCORE NC500](http://ncore.co.kr/shop/product_item.php?ItId=2586312930) | + +# Sources + +## wallpapers + +### wallpaper 1 + +wallpaper 1. Cozy cafe with large window + +- [a video](https://www.youtube.com/watch?v=QEWV6fiYaDU) from [Chillhop Music](https://www.youtube.com/channel/UCOxqgCwgOqC2lMqC5PYz_Dg) +- Artwork by [Jeff Östberg](https://jeffostberg.se​) +- Animation by [Geneviève Delacroix](http://www.genevievelacroix.com) + +### wallpaper 2 + +wallpaper 2. An astronaut on moon looking at earth + +- image from [wallpaperaccess](https://wallpaperaccess.com/full/2752569.png) +- the [image list](https://wallpaperaccess.com/simple-earth) I found it from + +# future + +1TB hard drive for backup + redundancy diff --git a/Windows_10.msstyles b/Windows_10.msstyles new file mode 100644 index 0000000..52b496a Binary files /dev/null and b/Windows_10.msstyles differ diff --git a/conky/Pomky/graph.conkyrc b/conky/Pomky/graph.conkyrc new file mode 100644 index 0000000..803c03b --- /dev/null +++ b/conky/Pomky/graph.conkyrc @@ -0,0 +1,46 @@ +-- wlp5s0 enp3s0 +conky.config = { + alignment = 'top_right', + double_buffer = true, + draw_shades = false, + gap_x = 405, + gap_y = 43, + own_window = true, + own_window_hints = 'undecorated,below,sticky,skip_taskbar,skip_pager', + own_window_argb_visual = true, + own_window_argb_value = 40, + own_window_type = 'dock', + update_interval = 0.5, + use_xft = true +} + +conky.text = [[ +${font sans-serif:bold:size=10}CPU ${hr 2}${font sans-serif:normal:size=8} +${color grey}CPU:$color ${cpu}% ${alignr}${color grey}Frequency:${color} ${freq_g}GHz +${cpubar 10,409}${voffset -7} +${cpugraph 100,409}${voffset -5}${font Ubuntu:size=8}${color grey} +${goto 6}1${goto 25}${cpu cpu1}%${goto 109}2${goto 128}${cpu cpu2}%${goto 212}3${goto 231}${cpu cpu3}%${goto 315}4${goto 334}${cpu cpu4}% +${color}${cpubar cpu1 6,100} ${cpubar cpu2 6,100} ${cpubar cpu3 6,100} ${cpubar cpu4 6,100}${voffset -9} +${cpugraph cpu1 50,100} ${cpugraph cpu2 50,100} ${cpugraph cpu3 50,100} ${cpugraph cpu4 50,100} +${color grey}${goto 6}5${goto 25}${cpu cpu5}%${goto 109}6${goto 128}${cpu cpu6}%${goto 212}7${goto 231}${cpu cpu7}%${goto 315}8${goto 334}${cpu cpu8}% +${color}${cpubar cpu5 6,100} ${cpubar cpu6 6,100} ${cpubar cpu7 6,100} ${cpubar cpu8 6,100}${voffset -9} +${color}${cpugraph cpu5 50,100} ${cpugraph cpu6 50,100} ${cpugraph cpu7 50,100} ${cpugraph cpu8 50,100} +Processes:${color} $processes + +${font sans-serif:bold:size=10}RAM ${hr 2}${font sans-serif:normal:size=8} +${color grey}RAM Usage:${color} ${memperc}%${alignr}${mem} / ${memmax} | Free: ${memeasyfree}${voffset 2} +${membar 10,409}${voffset -7} +${memgraph 100,409} + +${font sans-serif:bold:size=10}NETWORK ${hr 2}${font sans-serif:normal:size=8} +${alignc}Ethernet ${color grey}(enp3s0)${color}${voffset -10} +${color grey}Up:${color} ${upspeed enp3s0} ${alignr}${color grey}Down:${color} ${downspeed enp3s0} +${upspeedgraph enp3s0 70,200 -l}${alignr}${downspeedgraph enp3s0 70,200 -l} +${alignc}WiFi ${color grey}(wlp5s0)${color}${voffset -10} +${color grey}Up:${color} ${upspeed wlp5s0} ${alignr}${color grey}Down:${color} ${downspeed wlp5s0} +${upspeedgraph wlp5s0 70,200 -l}${alignr}${downspeedgraph wlp5s0 70,200 -l} + +${font sans-serif:bold:size=10}DISK ${hr 2}${font sans-serif:normal:size=8}${voffset 2} +${color grey}Read: ${color}${diskio_read}${alignr}${color grey}Write: ${color}${diskio_write} +${diskiograph_read 70,200}${alignr}${diskiograph_write 70,200} +]] diff --git a/conky/Pomky/info.conkyrc b/conky/Pomky/info.conkyrc new file mode 100644 index 0000000..ad96d75 --- /dev/null +++ b/conky/Pomky/info.conkyrc @@ -0,0 +1,46 @@ +-- wlp5s0 enp3s0 +conky.config = { + alignment = 'top_right', + double_buffer = true, + draw_shades = false, + gap_x = 10, + gap_y = 43, + own_window = true, + own_window_hints = 'undecorated,below,sticky,skip_taskbar,skip_pager', + own_window_argb_visual = true, + own_window_argb_value = 40, + own_window_type = 'dock', + update_interval = 2.0, + use_xft = true, + + minimum_width = 376, + draw_graph_borders = true +} + +conky.text = [[ +${font sans-serif:normal:size=8}${color grey}Conky:${color} ${conky_version}${alignr}${color grey}Kernel:${color} ${kernel} +${font Audiowide:Regular:size=40}${alignc}{P}${font} + +${font sans-serif:bold:size=10}STORAGE ${hr 2}${font sans-serif:normal:size=8} + +(${fs_type /}) ${color grey}root${color}${alignr}${fs_used_perc /}% +${fs_bar 6 /} +${alignc}${color grey}Used:${color} ${fs_used /} | ${color grey}Free:${color} ${fs_free /} | ${color grey}Total:${color} ${fs_size /} + +(${fs_type /media/pomp/data}) ${color grey}/media/pomp/data${color}${alignr}${fs_used_perc /media/pomp/data}% +${fs_bar 6 /media/pomp/data} +${alignc}${color grey}Used:${color} ${fs_used /media/pomp/data} | ${color grey}Free:${color} ${fs_free /media/pomp/data} | ${color grey}Total:${color} ${fs_size /media/pomp/data} + +${font sans-serif:bold:size=10}NETWORK ${hr 2} +${font sans-serif:normal:size=8}${alignc}${color grey}Ethernet +Today +Yesterday${color} +${voffset -26}${alignr}${execi 60 vnstat -i enp3s0 | grep "today" | awk '{print $8" "substr ($9, 1, 3)}'} +${alignr}${execi 60 vnstat -i enp3s0 | grep "yesterday" | awk '{print $8" "substr ($9, 1, 3)}'} + +${alignc}${color grey}WiFi +Today +Yesterday${color} +${voffset -26}${alignr}${execi 60 vnstat -i wlp5s0 | grep "today" | awk '{print $8" "substr ($9, 1, 3)}'} +${alignr}${execi 60 vnstat -i wlp5s0 | grep "yesterday" | awk '{print $8" "substr ($9, 1, 3)}'} +]] diff --git a/conky/conky-startup.sh b/conky/conky-startup.sh new file mode 100755 index 0000000..51e9818 --- /dev/null +++ b/conky/conky-startup.sh @@ -0,0 +1,3 @@ +killall conky +conky -c "$HOME/.conky/Pomky/info.conkyrc" & +conky -c "$HOME/.conky/Pomky/graph.conkyrc" & diff --git a/dconf.conf b/dconf.conf new file mode 100644 index 0000000..fe10197 --- /dev/null +++ b/dconf.conf @@ -0,0 +1,127 @@ +[org/freedesktop/ibus/engine/hangul] +auto-reorder=true +hangul-keyboard='2' +hanja-keys='Control_R' +initial-input-mode='latin' +switch-keys='ISO_Level3_Shift' +word-commit=false + +[org/gnome/desktop/background] +picture-options='zoom' +picture-uri='file:///media/pomp/data/google-drive/Pictures/Wallpapers/earth_moon_blurry.png' + +[org/gnome/desktop/calendar] +show-weekdate=true + +[org/gnome/desktop/interface] +clock-format='12h' +clock-show-seconds=true +clock-show-weekday=true +gtk-enable-primary-paste=false +gtk-im-module='ibus' +gtk-theme='Matcha-dark-sea' +show-battery-percentage=true + +[org/gnome/desktop/peripherals/mouse] +accel-profile='flat' + +[org/gnome/desktop/peripherals/touchpad] +click-method='fingers' +disable-while-typing=false +send-events='disabled' +two-finger-scrolling-enabled=true + +[org/gnome/desktop/wm/keybindings] +close=['q'] +maximize=['Up'] +show-desktop=['d'] + +[org/gnome/file-roller/listing] +list-mode='as-folder' +name-column-width=250 +show-path=false +sort-method='name' +sort-type='ascending' + +[org/gnome/mutter] +dynamic-workspaces=true +edge-tiling=false +workspaces-only-on-primary=false + +[org/gnome/nautilus/preferences] +default-folder-viewer='icon-view' +search-filter-time-type='last_modified' +search-view='list-view' +show-hidden-files=true + +[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0] +binding='t' +command='gnome-terminal' +name='Open Terminal' + +[org/gnome/settings-daemon/plugins/power] +sleep-inactive-ac-type='nothing' + +[org/gnome/settings-daemon/plugins/xsettings] +antialiasing='grayscale' +hinting='full' + +[org/gnome/shell] +disable-user-extensions=false +favorite-apps=['org.gnome.Nautilus.desktop', 'firefox-developer-edition.desktop'] + +[org/gnome/shell/extensions/cpupower] +default-ac-profile='' +default-battery-profile='' +profiles=[(10, 20, false, 'Energy Saver', '3543104510'), (25, 75, false, 'Quiet', '2933733108'), (100, 100, true, 'High Performance', '1498332451')] +show-arrow-in-taskbar=false +show-icon-in-taskbar=true +taskbar-freq-unit-ghz=true + +[org/gnome/shell/extensions/lockkeys] +notification-preferences='off' + +[org/gnome/shell/extensions/openweather] +actual-city=0 +city='37.2752,127.0095>경기도, 대한민국 >-1' +days-forecast=2 +decimal-places=1 +geolocation-provider='openstreetmaps' +position-in-panel='center' +pressure-unit='atm' +show-comment-in-forecast=true +show-text-in-panel=true +translate-condition=true +unit='celsius' +use-default-owm-key=true +use-symbolic-icons=true +weather-provider='openweathermap' +wind-direction=true +wind-speed-unit='kph' + +[org/gnome/shell/extensions/status-area-horizontal-spacing] +hpadding=2 + +[org/gnome/shell/extensions/tiling-assistant] +current-tiling-mode='right' + +[org/gnome/shell/extensions/touchpad-indicator] +switchmethod='gsettings' +toggle-touchpad=['t'] +touchpad-enabled=false + +[org/gnome/shell/overrides] +edge-tiling=false + +[org/gtk/settings/file-chooser] +clock-format='12h' +date-format='regular' +location-mode='path-bar' +show-hidden=true +show-size-column=true +show-type-column=true +sidebar-width=167 +sort-column='modified' +sort-directories-first=true +sort-order='descending' +type-format='category' diff --git a/setup.sh b/setup.sh new file mode 100755 index 0000000..b499e70 --- /dev/null +++ b/setup.sh @@ -0,0 +1,628 @@ +#!/bin/bash + +# don't remove line after yay_install or pacman_install +# it will result in this syntax error: unexpected end of file + +# #################### [ ESSENTIALS ] #################### +# Installs essential packages and defining important functions + +# https://stackoverflow.com/a/246128/12979111 +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" + +cd $SCRIPT_DIR + +BOLD="\e[1m" +DIM="\e[2m" +UNDERLINE="\e[4m" +INVERT="\e[7m" +RESET="\e[0m" + +RED="\e[91m" # actually light red +GREEN="\e[92m" # actually light green +YELLOW="\e[33m" + +log_no_label() { + echo -e "$GREEN$BOLD$@$RESET" +} + +warn_no_label() { + echo -e "$YELLOW$BOLD$@$RESET" +} + +error_no_label() { + echo -e "$RED$BOLD$@$RESET" +} + +log() { + echo -e " $GREEN$BOLD INFO | $@$RESET" +} + +warn() { + echo -e " $YELLOW$BOLD WARNING | $@$RESET" +} + +error() { + >&2 echo -e " $RED$BOLD ERROR | $@$RESET" +} + +title() { + echo + echo -e "$BOLD$GREEN====================[ $@ ]====================$RESET" +} + +pacman_install() { + sudo pacman -S --needed --noconfirm $@ +} + +yay_install() { + # install a AUR package if it's not already installed + + for package_name in "$@"; do + if ! yay -Qi $package_name > /dev/null 2>&1 ; then + log "yay: installing \"$package_name\"" + yay -S --answerclean None --answerdiff None --answeredit None --aur $package_name + fi + done + exit +} + +# #################### [ DEFINING ESSENTIAL SETUP ] #################### + +backup() { + dconf dump / > $SCRIPT_DIR/dconf.conf + # copy /home/pomp directory + # make timeshift backup +} + +setup_essentials() { + : + # enable multilib, color, parallel download, and total download in /etc/pacman.conf +} + +install_essentials() { + # install yay if it's not installed + if ! command -v yay &> /dev/null; then + sudo pacman -S --needed --noconfirm git base-devel + git clone https://aur.archlinux.org/yay.git + cd yay + makepkg -si + cd $SCRIPT_DIR + fi + + yay_install \ + 4kvideodownloader `# downloading videos and audio from youtube` \ + figma-linux-font-helper `# using local fonts in figma` \ + grive `# google drive syncing` \ + gwe `# nvidia GPU overclocking` \ + jdk `# java development` \ + mystiq `# video conversion` \ + obs-input-overlay-bin `# show inputs in OBS` \ + osu-lazer `# Rhythm game` \ + pamac-aur `# GUI for arch package management` \ + timeshift `# system backup` \ + unityhub `# game development` \ + visual-studio-code-bin `# programming & text editing` \ + xinput-gui `# A simple GUI for Xorg's Xinput tool` \ + xmousepasteblock-git `# force disable middle click paste` \ + zoom `# video conference` \ + matcha-gtk-theme `# gtk theme` \ + + pacman_install \ + alacarte `# editing apps in gnome menu` \ + audacity `# editing audio` \ + blender `# 3D modeling, simulations, and video editing` \ + conky `# system monitoring` \ + dotnet-sdk `# C# development (for unity)` \ + filezilla `# FTP client` \ + firefox-developer-edition `# browser` \ + gimp `# image editing` \ + git `# version control system` \ + go `# golang development` \ + gpa `# PGP key management` \ + gpick `# screen color picking` \ + gsmartcontrol `# SSD health check` \ + hardinfo `# seeing system hardware information` \ + htop `# managing processes` \ + ibus-hangul `# ` \ + inkscape `# vector editing tool` \ + intellij-idea-community-edition `# java development` \ + lldb `# debugger` \ + networkmanager `# Network connection manager` \ + nodejs `# ` \ + npm `# javascript development` \ + obs-studio `# screen recording and streaming` \ + pavucontrol `# ` \ + piper `# changing gaming mouse settings` \ + putty `# ` \ + python-pip `# python package management` \ + ranger `# CLI File manager` \ + sqlitebrowser `# ` \ + steam `# ` \ + steam-native-runtime `# ` \ + sudo `# To run commands as root` \ + tmux `# running task independent of session` \ + transmission-gtk `# ` \ + vim `# the good text editor` \ + vlc `# audio & video playback` \ + vnstat `# network traffic statistics (for conky)` \ + wine `# ` \ + wine-gecko `# ` \ + wine-mono `# ` \ + winetricks `# ` \ + wireshark `# ` \ + yarn `# ` \ + +} + +# #################### [ DEFINING SETUP ] #################### +# Define instructions on how to setup applications & stuff +# Assumes all essential packages are installed already (git, vim, etc.) + +setup_gnome() { + pacman_install \ + baobab `# Disk usage analysis` \ + cheese `# Capturing photo / video with webcam` \ + dconf-editor `# GUI for dconf` \ + eog `# image viewer` \ + evince `# document viewer` \ + file-roller `# compression and decompression` \ + gedit `# text editing when nautilus is on admin mode` \ + gnome-calculator `# Quick calculation` \ + gnome-characters `# Search for emojis, special characters, and symbols` \ + gnome-clocks `# For multiple clocks for different time zones` \ + gnome-control-center `# Essential settings` \ + gnome-disk-utility `# Disk management` \ + gnome-font-viewer `# Managing fonts` \ + gnome-keyring `# Store passwords and keys` \ + gnome-logs `# GUI for system journal` \ + gnome-screenshot `# Quick screenshot` \ + gnome-shell `# Graphical interface` \ + gnome-shell-extensions `# Extensions for gnome` \ + gnome-system-monitor `# Process management` \ + gnome-terminal `# Terminal emulation` \ + gnome-tweaks `# Advanced settings` \ + gnome-usage `# System resource statistics` \ + mutter `# window manager` \ + nautilus `# File management` \ + simple-scan `# Scanning utility` \ + + yay_install \ + gnome-terminal-transparency `# Transparent gnome terminal` \ + gnome-shell-extension-installer `# Installation of gnome extensions from command line` \ + gnome-shell-extension-pop-shell-git `# switching between stacked mode and tiling mode` \ + + # install gnome extensions + echo "installing gnome extensions" + extension_ids=( + 36 # lock-keys + 131 # touchpad-indicator + 355 # status-area-horizontal-spacing + 657 # shelltile + 750 # openweather + 800 # remove-dropdown-arrows + 841 # freon + 906 # sound-output-device-chooser + 945 # cpu-power-manager + 2741 # remove-alttab-delay-v2 + 2890 # tray-icons-reloaded + 4000 # babar + ) + + echo "Installing:" + for extension_id in "${extension_ids[@]}"; do + echo "- https://extensions.gnome.org/extension/$extension_id" + gnome-shell-extension-installer --yes $extension_id + done + + echo "Restarting gnome shell" + killall -3 gnome-shell +} + +setup_discord() { + pacman_install discord + + yay_install \ + betterdiscord-installer `# installer for betterdiscord` \ + discord-overlay-git `# overlay for discord` \ + + # BD plugins + # https://betterdiscord.app/plugin/Avatar%20Hover + # https://betterdiscord.app/plugin/BadgesEverywhere + # https://betterdiscord.app/plugin/BetterCodeblocks + # https://betterdiscord.app/plugin/BetterNsfwTag + # https://betterdiscord.app/plugin/BetterSearchPage + # https://betterdiscord.app/plugin/CallTimeCounter + # https://betterdiscord.app/plugin/CharCounter + # https://betterdiscord.app/plugin/CompleteTimestamps + # https://betterdiscord.app/plugin/Copier + # https://betterdiscord.app/plugin/CopyRawMessage + # https://betterdiscord.app/plugin/CreationDate + # https://betterdiscord.app/plugin/DoNotTrack + # https://betterdiscord.app/plugin/EmoteReplacer + # https://betterdiscord.app/plugin/FreeEmojis + # https://betterdiscord.app/plugin/GoogleTranslateOption + # https://betterdiscord.app/plugin/GrammarCorrect + # https://betterdiscord.app/plugin/GuildProfile + # https://betterdiscord.app/plugin/ImageUtilities + # https://betterdiscord.app/plugin/InvisibleTyping + # https://betterdiscord.app/plugin/JoinedAtDate + # https://betterdiscord.app/plugin/LastMessageDate + # https://betterdiscord.app/plugin/Link-Profile-Picture + # https://betterdiscord.app/plugin/MemberCount + # https://betterdiscord.app/plugin/PermissionsViewer + # https://betterdiscord.app/plugin/PlatformIndicators + # https://betterdiscord.app/plugin/QuickMention + # https://betterdiscord.app/plugin/RedditMentions + # https://betterdiscord.app/plugin/RevealAllSpoilersOption + # https://betterdiscord.app/plugin/SecretRingTone + # https://betterdiscord.app/plugin/SendLargeMessages + # https://betterdiscord.app/plugin/ServerCounter + # https://betterdiscord.app/plugin/ShowAllActivities + # https://betterdiscord.app/plugin/ShowConnections + # https://betterdiscord.app/plugin/ShowHiddenChannels + # https://betterdiscord.app/plugin/SpellCheck + # https://betterdiscord.app/plugin/StaffTag + # https://betterdiscord.app/plugin/SuppressReplyMentions + # https://betterdiscord.app/plugin/Typing%20Users%20Avatars + # https://betterdiscord.app/plugin/TypingIndicator + # https://betterdiscord.app/plugin/UserDetails +} + +setup_cpu_undervolting() { + # Undervolting for intel CPU + # https://wiki.archlinux.org/index.php/Undervolting_CPU + + pacman_install intel-undervolt + + config_file=/etc/intel-undervolt.conf + + # create backup in case anything goes wrong + sudo cp $config_file $config_file.bak + + # Explanation: + # for lines that are not comments (lines that do not start with a hash) + # search for "undervolt '' " + # and replaces with "undervolt '' -100 " + # This method does not preserve the space between the value and the comment. + # So this: + # value # space between comment and value: 2 + # becomes this: + # value # space between comment and value: 1 + sudo sed -i -e "/^[^#]/s/\(undervolt [0-9]* 'CPU'\) .*\(#.*\)/\1 -100 \2/" $config_file + sudo sed -i -e "/^[^#]/s/\(undervolt [0-9]* 'CPU Cache'\) .*\(#.*\)/\1 -100 \2/" $config_file + + sudo intel-undervolt apply + sudo systemctl enable intel-undervolt +} + +setup_font() { + echo "installing fonts" + + # path to temporarily save font related files + fonts_directory="./fonts" + + # fonts to download + font_names=( + "Audiowide" + "Comfortaa" + "Nanum Gothic" + "Source Code Pro" + ) + + # create fonts directory if it does not exist + if [ ! -d "$fonts_directory" ]; then + mkdir "$fonts_directory" + fi + + # download and unzip font files if they're not downloaded already + for font_name in "${font_names[@]}"; do + zip_path="$fonts_directory/$font_name.zip" + + # download and unzip if either zip file or unzipped directory exists + if [ ! -f "$zip_path" ] && [ ! -d "$fonts_directory/$font_name" ]; then + wget -O "$zip_path" "https://fonts.google.com/download?family=$font_name" # download zip file + unzip "$zip_path" -d "$fonts_directory/$font_name" # unzip file + rm "$zip_path" # remove zip file + fi + done + + font_install_dir="$HOME/.local/share/fonts" + + # create local fonts directory if it does not exist already + if [ ! -d "$font_install_dir" ]; then + mkdir "$font_install_dir" + fi + + # "install" all fonts + find "$fonts_directory" -type f -name "*.ttf" | while read ttf_file_path ; do + mv -f "$ttf_file_path" "$font_install_dir/${ttf_file_path##*/}" + done + + # regenerate font cache + fc-cache -vf + + # cleanup + rm -rf $fonts_directory + + pacman_install \ + noto-fonts-emoji `# ` \ + + yay_install \ + ttf-wps-fonts `# ` \ + ttf-ms-win10 `# ` \ + nerd-fonts-noto-sans-mono `# Terminal font` \ + +} + +setup_pamac() { + : + # enable AUR package. +} + +setup_wireshart() { + : + sudo usermod -a -G wireshark $USER +} + +setup_middleclickpaste() { + : + # make it autostart +} + +setup_node() { + : + # https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally + # export PATH="$(yarn global bin):$PATH" +} + +setup_pamac() { + : + # enable AUR on pamac +} + +setup_dns() { + : + # https://1.1.1.1 +} + +setup_unity() { + yay_install unityhub + + # editors location for unity hub (`/media/pomp/data/programs/Unity Hub/Unity Editors`) + # vscode setup +} + +setup_virtualbox() { + # https://wiki.archlinux.org/title/VirtualBox + + pacman_install \ + virtualbox `# OS emulation` \ + virtualbox-host-modules-arch `# ` \ + virtualbox-guest-iso `# ` \ + + yay_install virtualbox-ext-oracle + + sudo vboxreload + sudo modprobe vboxdrv +} + +setup_optimus_manager() { + # Not using power switching + # read this wiki[1] about power management with acpi call for more information + # [1] https://github.com/Askannz/optimus-manager/wiki/A-guide--to-power-management-options#configuration-4--acpi_call + + yay_install \ + gwe `# https://gitlab.com/leinardi/gwe` \ + optimus-manager `# https://github.com/Askannz/optimus-manager` \ + optimus-manager-qt `# https://github.com/Shatur/optimus-manager-qt` \ + + # launch on startup + # nvidia as default + + # Performance: 265, 750 + # Energy Saver: -155, -365 +} + +setup_minecraft() { + yay_install \ + minecraft-launcher `# ` \ + worldpainter `# ` \ + minecraft-overviewer `# ` \ + + # mcaselector (/usr/lib/jvm/java-15-openjdk/bin/java --module-path /media/pomp/data/master_folder/programming/java/javafx-sdk-16/lib --add-modules ALL-MODULE-PATH -jar /usr/share/java/mcaselector.jar) +} + +setup_user_directories() { + pacman_install xdg-user-dirs + + # edit `~/.config/user-dirs.dirs`: + + # XDG_DESKTOP_DIR="$HOME/Desktop" + # XDG_DOWNLOAD_DIR="/media/pomp/data/Downloads" + # XDG_TEMPLATES_DIR="$HOME/Templates" + # XDG_PUBLICSHARE_DIR="$HOME/Public" + # XDG_DOCUMENTS_DIR="/media/pomp/data/google-drive/Documents" + # XDG_MUSIC_DIR="/media/pomp/data/google-drive/Music" + # XDG_PICTURES_DIR="/media/pomp/data/google-drive/Pictures" + # XDG_VIDEOS_DIR="/media/pomp/data/Videos" + +} + +setup_wine() { + pacman_install \ + wine \ + + # - wine-mono + # - winetricks + # - wine-gecko + + # - `WINEARCH=win32 WINEPREFIX=~/.win32/ winecfg` + # - `winetricks allfonts` + # - `winetricks settings fontsmooth=rgb` +} + +setup_nvidia() { + # https://wiki.archlinux.org/title/NVIDIA + # https://wiki.archlinux.org/title/Vulkan + + pacman_install \ + cuda `# ` \ + cuda-tools `# ` \ + lib32-nvidia-utils `# ` \ + lib32-vulkan-icd-loader `# ` \ + nvidia `# ` \ + nvidia-settings `# ` \ + nvidia-utils `# ` \ + vulkan-icd-loader `# ` \ + +} + +setup_steam() { + #https://wiki.archlinux.org/title/Steam + + pacman_install steam + + # change steam library directory (/media/pomp/data/programs/SteamLibrary) + # enable steam proton play +} + +setup_conky() { + pacman_install \ + conky `# ` \ + vnstat `# ` \ + + # enable on startup + # sudo systemctl enable vnstat + # sudo systemctl start vnstat +} + +setup_dconf() { + # todo: freon GPU, decimal, and unit + # must be done after install to make sure configs are not overwritten + dconf load / < $SCRIPT_DIR/dconf.conf +} + +setup_local() { + # setup for applications in second drive + # add to application menu + # office 2019 wine + + if [[ -d /media/pomp/data/programs/dnSpy-net-win32 ]]; then + echo "dnspy" + fi + + if [[ -d /media/pomp/data/programs/amidst ]]; then + echo "amidst" + fi + + if [[ -d /media/pomp/data/programs/mcaselector ]]; then + echo "mcaselector" + fi + + if [[ -d /media/pomp/data/programs/mineways ]]; then + echo "mineways" + fi + + if [[ -d /media/pomp/data/programs/tor-browser ]]; then + echo "tor" + fi +} + +setup_plymouth() { + # must be done after optimus + # https://wiki.archlinux.org/title/plymouth + + yay_install \ + plymouth `# ` \ + gdm-plymouth-prime `# ` \ + plymouth-theme-arch-logo `# ` \ + +} + +setup_grub_theme() { + # only show when esc is pressed + # check how manjaro did it + pacman_install grub-theme-vimix +} + +setup_kdenlive() { + : + # Use appimage package + # no kde dependencies +} + + + + + +# #################### [ START ] #################### + +warn_no_label "This is not a completely hands off process." +warn_no_label "You need to monitor the process and take appropriate actions." +echo + +# https://stackoverflow.com/a/1885534/12979111 +read -p "Press (y) to continue. Press (any other key) to exit. " -n 1 -r +if [[ $REPLY =~ ^[^Yy]$ ]]; then + echo + log "canceled" + exit +fi + +echo + +# #################### [ TESTING ] #################### +# Tests if script is ready to be executed + +title "TESTING" +log "working directory: $RESET$BOLD$PWD" + +log "checking if script is running with root privilege" +if [[ ! $EUID -ne 0 ]]; then + error "DO NOT RUN THIS SCRIPT AS ROOT" + exit 1 +fi + +log "checking if sudo exists" +if ! command -v sudo &> /dev/null; then + error "cannot find sudo!" + exit 1 +fi + +# test if manual stuff has been done +# check if /media/pomp/data exists + +# test if user exists + +# test if OS is manjaro and not arch + +echo +log "TESTING phase complete!" + +# #################### [ MAIN ] #################### +# this is not a hands-free operation blah blah + +run_install() { + : +} + +pre_installation() { + echo "do manual stuff (partitioning, bootloader, install sudo)" + echo "warning: not fully automatic. keep monitoring" + echo "grub" + # fstab add /media/pomp/data +} + +post_install() { + echo "login firefox & vscode" + echo "restore onetab" + echo "reboot using poweroff" + echo "gnome korean keyboard" + echo "sign into vscode" + echo "EDITOR=vim sudo visudo" + echo "Defaults pwfeedback" +} + +# install_essentials + +title "DONE" diff --git a/wallpaper1.png b/wallpaper1.png new file mode 100644 index 0000000..ed0e3bc Binary files /dev/null and b/wallpaper1.png differ diff --git a/wallpaper2.png b/wallpaper2.png new file mode 100644 index 0000000..278616c Binary files /dev/null and b/wallpaper2.png differ