diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b731eda --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.img +*.xz +__pycache__ diff --git a/build/LICENSE b/build/LICENSE new file mode 100644 index 0000000..eb0e2d7 --- /dev/null +++ b/build/LICENSE @@ -0,0 +1,683 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + +<<<<<<< HEAD + + Copyright (C) +======= + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} +>>>>>>> 1e9bc6968bd083cca14b3e8852067fdb56296a0b + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + +<<<<<<< HEAD + Copyright (C) +======= + {project} Copyright (C) {year} {fullname} +>>>>>>> 1e9bc6968bd083cca14b3e8852067fdb56296a0b + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/build/README.md b/build/README.md new file mode 100644 index 0000000..3350ebb --- /dev/null +++ b/build/README.md @@ -0,0 +1,88 @@ +# F123Light +## Build system for F123 on Raspberry Pi 2 and 3 computers + +# Introduction +The F123Light build system is a collection of scripts and custom files used to build F123Light images that can be written to a MicroSD card for use on a [Raspberry Pi](https://www.raspberrypi.org/) computer, either model 2 or 3. F123Light on a Raspberry Pi 3 runs in 32-bit mode, because it includes the vendor supplied kernel and boot code, which are said to be more stable than the 64-bit mainline kernel and U-boot at this time. However, with modifications to the package list file used, it is also possible to configure the build system for 64-bit mode if desired. +# Compatibility +This build system started as an adaptation of the [f123pi](https://github.com/f123/f123pi) build system, but it is largely rewritten for better compatibility and functionality on a wider variety of configurations. The f123pi build system required images to be built using a working Raspberry Pi. This version is capable of building working images on any ARMv7 or later computer running [ArchLinuxARM](https://archlinuxarm.org/). Experimental development builds using this system are currently being performed on a Raspberry Pi 3 and an Odroid C2, but any 32-bit ARM machine using the armv7h architecture or any 64-bit machine using the aarch64 architecture may be used to build F123Light images, as long as the machine is running an ArchLinuxARM compatible OS with the needed packages. On the other hand, images built using this system will only run on the Raspberry Pi 2 and 3, though this build system can certainly be adapted to build images for other devices with little difficulty. +# Dependencies +In order to build images using this system, you will need the following Arch packages: +* util-linux: for partition and loop device support, (installed on most systems) +* parted: for writing and manipulating partitions, installed on most systems +* arch-install-scripts: to bootstrapp the OS into a mounted image, (most likely not preinstalled) +* dbus: to set gsettings keys if a graphical desktop is being configured, (a dependency of systemd, installed on most systems) +The build script will automatically install any dependencies it finds missing. +# Installation +No installation beyond the dependencies listed above is required in order to use this build system. Just clone the git repository, cd into the build directory, usually F123Light/build and run the build script as described below. +# The Build Directory +The build directory consists of the following components: +* build.sh: the primary automated build script +* *.conf: contains options used when building images +* package_lists: A directory containing lists of packages that can be installed into an image +* files: A repository of modified files to be copied to an image during the build +* scripts: build stage scripts that take options passed into them by build.sh, but can also run separately +* utils: utility scripts used for localization of the build system +# Using Build.sh +The build.sh script builds an image automatically, based on values in the configuration file specified on its command line. It must run as root. + +Usage: + sudo ./build.sh + +Only one argument needs to be supplied on the build.sh command line. This is the single configuration file needed to build an image. The script will take all the options in the configuration file and automatically create an empty image, mount it, download and install officially available packages, optionally build and install AUR packages, set any needed gsettings keys, copy in modified files, configure the new system, enable systemd services, unmount the image and cleanup the work directory based on those options. + +The configuration file argument must always be supplied. If not, a usage message is displayed and all available configuration files are listed for convenience. If more than one configuration is specified, a usage message is displayed and the script exits. +# The Configuration File +The automated build.sh script takes a configuration file on its command line. At least one configuration file is included in this repository. + +This is a basic example of a configuration file. It is well commented to allow for easy editing and to give an understanding of the available options. + # F123Light configuration + # The lines below, in key=value format, will set options to be passed to various stages of the image building process. + # This file will be sourced by build.sh in the same directory, and can contain anything that a shell can execute. + + # The version count - the first of the day should be 1, increment this manually for the imagename and rootlabel counters + count=1 + + # The working directory where the new image is to be mounted - must be an absolute path + workdir=${PWD}/F123Light + + #The full path and filename of the Raspberry Pi image file + imagename="${PWD}/F123Light-MATE-en_US-$(date +%y.%m.%d)-${count}.img" + + # The size of the image file in MB, for example 8192 will create an 8GB zero-filled image file + imagesize=7168 + + # The volume label of the FAT32 filesystem on the boot partition - must be <= 11 bytes + bootlabel=F123-boot + + # The volume label of the ext4 filesystem on the root partition - must be <= 16 bytes + rootlabel="F123Light$(date +%y%m%d)${count}" + + # Set this on a graphical desktop that uses gsettings: MATE, GNOME, etc. + # Remove or comment the line below if the image is to run in text mode with no desktop or window manager, or one that is not compatible with gsettings. + gsettings=1 + + # The full path to the file listing official packages to be installed to the new system + packagelist="${PWD}/package_lists/F123Light/MATE.list" + + # The full path to the file listing AUR packages to be installed to the new system. + aurlist="${PWD}/package_lists/F123Light/fenrir.aur.list" + + # The hostname of the new system + hostname=f123light + + # The root password + rootpass=root + + # The name of the regular user + username=f123 + + # The regular user's password + userpass=f123 + + # The system locale/language + locale=en_US.UTF-8 + + # A list of services to be enabled once the OS is installed + services="dhcpcd ntpd sshd NetworkManager lxdm" +# Package Caching +During the automated build process, all officially available packages are cached under the working directory where the image is mounted. This optimizes both for image size and speed of any build after the first build, which must download all packages that are to be installed. First, the package cache is stored outside the image, which saves space when transferring the image, especially over the internet, because even if the cache is deleted from the image itself, the data is still present, making its total space usage on disk larger. Storing the cache outside of the image eliminates this problem, because package files are never stored inside of the mounted image at all, thereby making its total space usage on disk smaller. Secondly, storing the cache outside of the image makes the package cache persistent, even if an image is deleted. For example, an image is built with the MATE desktop on Tuesday, and a text only image is built on Thursday. The MATE image was deleted on Wednesday, but will be built again with small modifications on Friday. The MATE image contains all the packages used on the base system. Because a persistent cache is used, even though the MATE image has been deleted, no packages will be downloaded either on Thursday or Friday, unless a new package has been added to the list or a package has been updated in the repository, because they already exist in the cache. On the other hand, cache size can eventually become unwieldy, because multiple versions of packages may be stored in the cache. If the cache is taking too much disk space, root may delete it at any time, either by removing the pacman-cache directory under the work directory or by recursively removing the work directory. This of course will delete the entire cache, so all packages will need to be downloaded again the next time an image is built. diff --git a/build/build/F123Light.conf b/build/build/F123Light.conf new file mode 100644 index 0000000..8b7f122 --- /dev/null +++ b/build/build/F123Light.conf @@ -0,0 +1,55 @@ +# F123Light configuration +# The lines below, in key=value format, will set options to be passed to various stages of the image building process. +# This file will be sourced by build.sh in the same directory, and can contain anything that a shell can execute. + +# The working directory where the new image is to be mounted - must be an absolute path +workdir=${PWD}/F123Light + +# The version number to be used with image names and filesystem labels +version=$(date +%y.%m.%d) + +#The full path and filename of the Raspberry Pi image file +imagename="${PWD}/F123Light-${version}.img" + +# The size of the image file in MB, for example 8192 will create an 8GB zero-filled image file +imagesize=7168 + +# The volume label of the FAT32 filesystem on the boot partition - must be <= 11 bytes +bootlabel=F123-boot + +# The volume label of the ext4 filesystem on the root partition - must be <= 16 bytes +rootlabel="F123Light${version//./}" + +# Set this on a graphical desktop that uses gsettings: MATE, GNOME, etc. +# Remove or comment the line below if the image is to run in text mode with no desktop or window manager, or one that is not compatible with gsettings. +#gsettings=1 + +# The full path to the file listing official packages to be installed to the new system +packagelist="${PWD}/package_lists/packages.list" + +# The hostname of the new system +hostname=f123light + +# The root password +rootpass=root + +# The name of the regular user +username=f123 + +# The regular user's password +userpass=f123 + +# All supported languages for this system +locales=('ar_EG.UTF-8' 'es_ES.UTF-8' 'en_US.UTF-8' 'pt_BR.UTF-8') + +# The default system language, must be in the above list of available languages +defaultlocale=en_US.UTF-8 + +# Wireless network configuration +# Optionally, network name and password can be configured here. +# Only the name is required, but the network will be configured as open if no password is specified. +networkname= +wifipass= + +# A list of services to be enabled once the OS is installed +services="atd cronie dbus-broker dhcpcd@eth0 growpartfs loginsound logoutsound NetworkManager nodm ntpd sshd fake-hwclock fake-hwclock-save.timer fstrim.timer bluetooth brcm43438 pulseaudio zramswap" diff --git a/build/build/Makefile b/build/build/Makefile new file mode 100644 index 0000000..df4fe43 --- /dev/null +++ b/build/build/Makefile @@ -0,0 +1,24 @@ +PREFIX = /usr/local + +po : + $(MAKE) -C i18n + + +install : sh mo + +sh : + touch sh.token + +mo : en + +en : + install -m0755 -d $(PREFIX)/share/locale/$@/LC_MESSAGES + install -m0644 -t $(PREFIX)/share/locale/$@/LC_MESSAGES ./locale/$@/LC_MESSAGES/pacstrap-f123pi.mo + + + + +uninstall : + find $(PREFIX) -name "pacstrap-f123pi*" -exec rm {} \; + find $(PREFIX) -name "bootstrap-f123pi*" -exec rm {} \; + diff --git a/build/build/build.sh b/build/build/build.sh new file mode 100755 index 0000000..f075c86 --- /dev/null +++ b/build/build/build.sh @@ -0,0 +1,274 @@ +#!/bin/bash +# build.sh +# Automate Raspberry Pi image builds +# Take a config file on the command line and pass its options to the various stages of the build process +# +# Copyright 2018, F123 Consulting, +# Copyright 2018, Kyle, +# Copyright 2018, Storm Dragon, +# +# This is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free +# Software Foundation; either version 3, or (at your option) any later +# version. +# +# This software 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 +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this package; see the file COPYING. If not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. +# +#--code-- + +export TEXTDOMAIN=build.sh +export TEXTDOMAINDIR=./locale + +. gettext.sh + +# Log writing function +log() { + # Usage: command | log for just stdout. + # Or command |& log for stderr and stdout. + while read -r line ; do + echo "$line" | sudo tee -a "$logFile" + done +} + +# Log file name is /var/log/build.f123 +logFile="/var/log/build.f123" + +set -e +# Load the common functions +. scripts/functions + +# Die if not running as root +if ! check_root ; then + PROGNAME=$0 + echo $(eval_gettext "Script must be run as root, try: sudo \$PROGNAME") + echo + exit 1 +fi + +# Clear previous logs +echo -n | sudo tee "$logFile" &> /dev/null + +declare -A argList=( + [d:]="work-directory:," + [H:]="hostname:," + [h]="help," + [n:]="network-name:," + [o:]="output-file:," + [p:]="password:," + [r:]="root-password:," + [s:]="size:," + [u:]="user:," + [w:]="wifi-password:" +) + +short="${!argList[*]}" +short="${short// /}" +long="${argList[*]}" +long="${long// /}" + + +# Get command line options +if ! options=$(getopt -o $short -l $long -n "build.sh" -- "$@"); then + echo "Unknown options passed to $0" | log + exit 1 +fi + +eval set -- "$options" + +# Declare the overrides that will replace configuration file variables with command line options +declare -A overrides=() + +while test $# -gt 0; do + case $1 in + -d|--work-directory) overrides[workdir]="$2"; shift 2 ;; + -H|--hostname) overrides[hostname]="$2"; shift 2 ;; + -h|--help) cat <<-HELP + $(gettext "Usage") + $(eval_gettext "\$name [options...]") + $(gettext "Options") + -d, --work-directory: $(gettext "The work directory for caching packages and mounting filesystems") + -H, --hostname: $(gettext "The hostname of the installed system") + -h, --help: $(gettext "Print this help and exit") + -n, --network-name: $(gettext "The name of the wifi network. If specified, a wifi password is also required.") + -o, --output-file: $(gettext "The name of the image file to write") + -p, --password: $(gettext "The password of the regular non-root user") + -r, --root-password: $(gettext "The password of the root user") + -s --size: $(gettext "The initial size of the image file in MB") + -u, --user: $(gettext "The name of the regular non-root user") + -w, --wifi-password: $(gettext "the password used to login to the specified wifi network, requires network name") + HELP + exit 0 ;; + -n|--network-name) overrides[networkname]="$2"; shift 2 ;; + -o|--output-file) overrides[imagename]="$2"; shift 2 ;; + -p|--password) overrides[userpass]="$2"; shift 2 ;; + -r|--root-password) overrides[rootpass]="$2"; shift 2 ;; + -s|--size) overrides[imagesize]="$2"; shift 2 ;; + -u|--user) overrides[username]="$2"; shift 2 ;; + -w|--wifi-password) overrides[wifipass]="$2"; shift 2 ;; + (--) shift ;; + (*) + if test -f "$1"; then + source "$1" + else + echo "Invalid configuration file specified." | log + exit 1 + fi + shift + ;; + esac +done + +# Replace configuration variables using the overrides gathered from command line options +test "${overrides[workdir]}" && workdir="${overrides[workdir]}" +test "${overrides[hostname]}" && hostname="${overrides[hostname]}" +test "${overrides[networkname]}" && networkname="${overrides[networkname]}" +test "${overrides[imagename]}" && imagename="${PWD}/${overrides[imagename]}" +test "${overrides[userpass]}" && userpass="${overrides[userpass]}" +test "${overrides[rootpass]}" && rootpass="${overrides[rootpass]}" +test "${overrides[imagesize]}" && imagesize="${overrides[imagesize]}" +test "${overrides[username]}" && username="${overrides[username]}" +test "${overrides[wifipass]}" && wifipass="${overrides[wifipass]}" +# export workdir so it is available in subshells. +export workdir + +# All build stage scripts run from the scripts directory underneath the directory where this build script resides. +# todo: Call the loaded functions as needed rather than calling the stage scripts. +# First, the current directory must be saved. +current=$PWD + +# Now we enter the directory where the stage scripts live. +cd scripts && echo "cd $PWD" | log + +# Check for dependencies and install any that are missing. +check_deps + +# Before building an image, we must be sure that the work directory is clean except for a package cache. +# There is not yet a facility to complete a half-built failed image, but we can cache software packages. +if [ -d "$workdir" ]; then + clean_up "$workdir" || true + # Don't remove an otherwise empty work directory if a pacman cache is present + [ -d "${workdir}/pacman-cache" ] || rm -Rv "$workdir" |& log +fi + +# Start by creating an empty image and mounting it. +new_image $workdir $imagename $bootlabel $rootlabel boot root $imagesize 1M 64M |& log + +# Install packages available from the official ALARM repositories. +./pacstrap -l "$packagelist" -c "${workdir}/pacman-cache" "$workdir/root" |& log + +# Set the system hostname +echo $hostname > $workdir/root/etc/hostname + +# The root partition is automatically mounted by systemd. Add only the boot partition information to fstab. +echo -e "\n/dev/mmcblk0p1 /boot vfat defaults 0 0" >> $workdir/root/etc/fstab + +# Set the root password +set_password "${workdir}/root" root "${rootpass}" + +# Install locale specific packages. The file name looks like the configured package list file, but includes an @ sign followed by the locale followed by .list, e.g. packages@sw_KE.list. +# This file will be ignored if it doesn't exist. +test -f "${packagelist%%.list}@${locale}.list" && ./pacstrap -l "${packagelist%%.list}@${locale}.list" -c "${workdir}/pacman-cache" "$workdir/root" + +# Add pulseaudio stuff and other groups +add_groups "${workdir}/root" |& log + +# Add the regular user and set its password +add_user "${workdir}/root" "${username}" |& log +set_password "${workdir}/root" "${username}" "${userpass}" |& log + +# Install packages from the AUR +# This is optional, and will only run if an AUR package list is set in the config file passed to this script. +test $aurlist && ./aur-install -l "$aurlist" "${workdir}/root" |& log + +# Copy any override files into the new system. This overrides any system and user configuration files or scripts installed with packages. +# Remove any stale temporary files related to the file and content repositories +rm -Rfv /tmp/files-F123Light /tmp/content-F123Light |& log + +# Start by cloning the files-F123Light and content-F123Light repositories. +git clone -b $(git branch | grep \* | cut -f2 -d \ ) --recurse-submodules https://gitlab.com/F123/files-F123Light.git /tmp/files-F123Light |& log +git clone https://gitlab.com/F123/content-F123Light.git /tmp/content-F123Light |& log + + # Copy in the files. +cp -Rv /tmp/files-F123Light/files/* "${workdir}/root/" |& log +# Generate translations: +find /tmp/files-F123Light/locales -type f -iname '*.po' -exec bash -c ' + for i ; do + # i is in file, o is outfile. + language="$(grep "^\"Language: .*\\n" "${i}" | cut -d " " -f2 | cut -d "\\" -f1)" + # Handle exceptions for languages. + case "$language" in + *) language="${language::2}";; + esac + o="${i##*/}" + o="${o%.po}.mo" + msgfmt "$i" -o "${workdir}/root/usr/share/locale/${language}/LC_MESSAGES/${o}" + done' _ {} + +mkdir -p "${workdir}/root/usr/share/doc/F123" |& log +cp -Rv /tmp/content-F123Light/F123/* "${workdir}/root/usr/share/doc/F123/" |& log + +# remove the temporary files again. +rm -Rv /tmp/files-F123Light /tmp/content-F123Light |& log + +# Now copy any override files from this repository. +cp -Rv ../files/* "${workdir}/root/" || true |& log + +# Set the system locale and generate all other locales specified in the configuration file. +# The default system locale must be set before we can copy user files to $HOME. +setup_locales $workdir/root $defaultlocale ${locales[@]} |& log + +# Always copy the contents of /etc/skel to the home directory of the user that was created earlier +systemd-nspawn -a -q -D $workdir/root\ + sudo -u \#1000\ + bash -c "shopt -s dotglob && cp -R /etc/skel/* \"\$HOME\"" |& log + +# Enable system services +for service in $services; do + manage_service "${workdir}/root" enable "${service}" |& log +done + +# Globally enable dbus-broker +systemd-nspawn -a -q -D $workdir/root\ + systemctl --global enable dbus-broker.service |& log + +# Download package databases +download_package_databases $workdir/root |& log +set_fake_hwclock $workdir/root |& log + +# Set gsettings keys to enable Orca +# This is optional, and cannot run on a text only system. +[ $gsettings ] && ./gsettings "${workdir}/root" |& log + +# Configure wifi if network information is present in the configuration file. +test $networkname && setup_wifi $workdir/root wlan0 $networkname $wifipass |& log + +# Touch the firstboot file. It will be deleted by the firstboot script that looks for it. +systemd-nspawn -a -q -D $workdir/root\ + sudo -u \#1000\ + bash -c "touch \$HOME/.firstboot" + +# Write a system timestamp. +# This timestamp will determine which incremental updates apply to this image +echo "$(date +%y%m%d%H%M)" > $workdir/root/etc/timestamp-f123light + +# Unmount the image file +clean_up "$workdir" |& log +# Keep the work directory if a pacman cache exists, otherwise remove it +[ -d "${workdir}/pacman-cache" ] || rm -Rv "$workdir" |& log + +# Once all scripts have completed, come back to the directory from which this script was launched. +cd $current && echo "cd $current" |& log + +newrootsize=$(ls -hs "${imagename}" | cut -f1 -d' ') +relativeimage=$(realpath --relative-to="$PWD" "$imagename") +echo "$relativeimage was built successfully" | log +echo "Size of $relativeimage is ${newrootsize}" | log + +exit 0 diff --git a/build/build/i18n/pacstrap.en.po b/build/build/i18n/pacstrap.en.po new file mode 100644 index 0000000..0b12ae1 --- /dev/null +++ b/build/build/i18n/pacstrap.en.po @@ -0,0 +1,68 @@ +# F123 pacstrap-f123pi - Bootstrap an Arch image for the Raspberry Pi +# Copyright (C) 2017 THE Mike Ray +# This file is distributed under the same license as the f123pi package. +# Mike Ray , 2017. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: 1.0.0\n" +"POT-Creation-Date: 2017-10-19 03:55+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: English\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../bootstrap-f123pi:12 +msgid "Usage: $scriptname" +msgstr "" +"Usage: $scriptname [ options ... ] { directory | mount-point }\\n\\n" +"Options:\\n\\n" +" -h\\n\\n" +" Show usage and exit.\\n\\n" +" -d\\n\\n" +" Installation directory is not a mount-point, but an ordinary directory.\\n\\n" +" -l \\n\\n" +" Package list. A file containing one line with each package or meta-package to install.\\n\\n" +" -o \\n\\n" +" Host name to write to /etc/hostname.\\n\\n" +" Default is f123pi.\\n\\n" +" -p \\n\\n" +" User password. The password for the one ordinary user being created.\\n\\n" +" Default is raspberry.\\n\\n" +" -r \\n\\n" +" Root password.\\n\\n" +" Default is root.\\n\\n" +" -u \\n\\n" +" Name of ordinary user to create.\\n\\n" +" Default is f123.\\n\\n" +"In all cases arguments to options are mandatory.\\n\\n" +"User name and passwords must comply with valid values according to Linux standards." + + + +#: ../bootstrap-f123pi:50 +msgid "Option requires an argument" +msgstr "" + +#: ../bootstrap-f123pi:54 +msgid "Invalid option" +msgstr "" + + +#: ../pacstrap-f123pi.lib:28 +#, sh-format +msgid "Add user ${username}" +msgstr "" + +#: ../pacstrap-f123pi.lib:39 +#, sh-format +msgid "Setting password for user ${username}" +msgstr "" + +#: ../pacstrap-f123pi.lib:51 +#, sh-format +msgid "Calling systemctl to ${operation} ${service} service" +msgstr "" diff --git a/build/build/i18n/pacstrap.es_ES.po b/build/build/i18n/pacstrap.es_ES.po new file mode 100644 index 0000000..ac14ccf --- /dev/null +++ b/build/build/i18n/pacstrap.es_ES.po @@ -0,0 +1,94 @@ +# F123 pacstrap-f123pi - Bootstrap an Arch image for the Raspberry Pi +# Copyright (C) 2017 THE Mike Ray +# This file is distributed under the same license as the f123pi package. +# Mike Ray , 2017. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: 1.0.0\n" +"POT-Creation-Date: 2017-10-19 03:55+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: Spanish\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +# +# Fernando: +# +# The hardest string in this template will be the usage message. +# Try to keep it to a similar format. Option lines and their +explanations are indented by one tab. +# Other lines are not indented. +# +# Shorter strings like "Invalid option should be easy. +# +# There will be a lot more than this but this is a small one to get +started with. +# +# Where you see a variable that starts with a dollar sign, it's very +important not to change the name of it or the format. +# +# The values in the 'msgid' strings should not be changed since it is +these which the scripts use +# to look up the translations. +# +# Don't be confused by the empty string "" in some msgid entries where +there multiple lines such as in the usage message. +# + + + +#: ../bootstrap-f123pi:12 +msgid "Usage: $scriptname" +msgstr "" +"Usage: $scriptname [ options ... ] { directory | mount-point }\\n\\n" +"Options:\\n\\n" +" -h\\n\\n" +" Show usage and exit.\\n\\n" +" -d\\n\\n" +" Installation directory is not a mount-point, but an ordinary directory.\\n\\n" +" -l \\n\\n" +" Package list. A file containing one line with each package or meta-package to install.\\n\\n" +" -o \\n\\n" +" Host name to write to /etc/hostname.\\n\\n" +" Default is f123pi.\\n\\n" +" -p \\n\\n" +" User password. The password for the one ordinary user being created.\\n\\n" +" Default is raspberry.\\n\\n" +" -r \\n\\n" +" Root password.\\n\\n" +" Default is root.\\n\\n" +" -u \\n\\n" +" Name of ordinary user to create.\\n\\n" +" Default is f123.\\n\\n" +"In all cases arguments to options are mandatory.\\n\\n" +"User name and passwords must comply with valid values according to Linux standards." + + + +#: ../bootstrap-f123pi:50 +msgid "Option requires an argument" +msgstr "" + +#: ../bootstrap-f123pi:54 +msgid "Invalid option" +msgstr "" + + +#: ../pacstrap-f123pi.lib:28 +#, sh-format +msgid "Add user ${username}" +msgstr "" + +#: ../pacstrap-f123pi.lib:39 +#, sh-format +msgid "Setting password for user ${username}" +msgstr "" + +#: ../pacstrap-f123pi.lib:51 +#, sh-format +msgid "Calling systemctl to ${operation} ${service} service" +msgstr "" diff --git a/build/build/i18n/pacstrap.pt_BR.po b/build/build/i18n/pacstrap.pt_BR.po new file mode 100644 index 0000000..6e291b9 --- /dev/null +++ b/build/build/i18n/pacstrap.pt_BR.po @@ -0,0 +1,94 @@ +# F123 pacstrap-f123pi - Bootstrap an Arch image for the Raspberry Pi +# Copyright (C) 2017 THE Mike Ray +# This file is distributed under the same license as the f123pi package. +# Mike Ray , 2017. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: 1.0.0\n" +"POT-Creation-Date: 2017-10-19 03:55+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: Brazilian Portuguese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +# +# Fernando: +# +# The hardest string in this template will be the usage message. +# Try to keep it to a similar format. Option lines and their +explanations are indented by one tab. +# Other lines are not indented. +# +# Shorter strings like "Invalid option should be easy. +# +# There will be a lot more than this but this is a small one to get +started with. +# +# Where you see a variable that starts with a dollar sign, it's very +important not to change the name of it or the format. +# +# The values in the 'msgid' strings should not be changed since it is +these which the scripts use +# to look up the translations. +# +# Don't be confused by the empty string "" in some msgid entries where +there multiple lines such as in the usage message. +# + + + +#: ../bootstrap-f123pi:12 +msgid "Usage: $scriptname" +msgstr "" +"Usage: $scriptname [ options ... ] { directory | mount-point }\\n\\n" +"Options:\\n\\n" +" -h\\n\\n" +" Show usage and exit.\\n\\n" +" -d\\n\\n" +" Installation directory is not a mount-point, but an ordinary directory.\\n\\n" +" -l \\n\\n" +" Package list. A file containing one line with each package or meta-package to install.\\n\\n" +" -o \\n\\n" +" Host name to write to /etc/hostname.\\n\\n" +" Default is f123pi.\\n\\n" +" -p \\n\\n" +" User password. The password for the one ordinary user being created.\\n\\n" +" Default is raspberry.\\n\\n" +" -r \\n\\n" +" Root password.\\n\\n" +" Default is root.\\n\\n" +" -u \\n\\n" +" Name of ordinary user to create.\\n\\n" +" Default is f123.\\n\\n" +"In all cases arguments to options are mandatory.\\n\\n" +"User name and passwords must comply with valid values according to Linux standards." + + + +#: ../bootstrap-f123pi:50 +msgid "Option requires an argument" +msgstr "" + +#: ../bootstrap-f123pi:54 +msgid "Invalid option" +msgstr "" + + +#: ../pacstrap-f123pi.lib:28 +#, sh-format +msgid "Add user ${username}" +msgstr "" + +#: ../pacstrap-f123pi.lib:39 +#, sh-format +msgid "Setting password for user ${username}" +msgstr "" + +#: ../pacstrap-f123pi.lib:51 +#, sh-format +msgid "Calling systemctl to ${operation} ${service} service" +msgstr "" diff --git a/build/build/i18n/rpi-image-tool.en.po b/build/build/i18n/rpi-image-tool.en.po new file mode 100644 index 0000000..1ac5f1d --- /dev/null +++ b/build/build/i18n/rpi-image-tool.en.po @@ -0,0 +1,148 @@ +# rpi-image-tools. +# Copyright (C) 2017 Mike Ray +# This file is distributed under the same license as the PACKAGE package. +# Mike Ray , 2017. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: 0.1.0alpha\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-09-21 17:22+0100\n" +"PO-Revision-Date: 2017-MO-DA HO:MI+ZONE\n" +"Last-Translator: Mike Ray \n" +"Language-Team: LANGUAGE \n" +"Language: English (en)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: rpi-image-tool:13 +msgid "tool_usage" +msgstr "" +"Usage: rpi-image-tool {options ...}\\n" +"\\n" +"Options:\\n" +"\\n" +" -C \\n" +"\\n" +" Clean-up a previous run, unmounting partitions, removing\\n" +" working files (not the image file or the working directory.\\n" +"\\n" +" -D \\n" +"\\n" +" Mount the partitions on the SD card or other device.\\n" +"\\n" +" -M \\n" +"\\n" +" Mount the partitions of an existing image file.\\n" +"\\n" +" -N \\n" +"\\n" +" Create, partition and mount a new (empty) image file.\\n" +"\\n" +" Only one of the above uppercase options is permitted in any single run.\\n" +"\\n" +" -h\\n" +"\\n" +" Display this help text and exit.\\n" +"\\n" +" -c \\n" +"\\n" +" The number of blocks to write to a new image file. See -z below.\\n" +" Only relevant when using the -N option to generate a new image.\\n" +"\\n" +" -s \\n" +"\\n" +" The size of the FAT16) boot partition in blocks. See -z below for block size.\\n" +" Only relevant when using the -N option to create a new image.\\n" +" Default = 64\\n" +"\\n" +" -w \\n" +"\\n" +" The working directory which will contain the mount-point and other working files\\n" +" (not including the .img file unless the working directory is prefixed in the -N option.\\n" +"\\n" +" -z \\n" +"\\n" +" The block size.\\n" +" Only relevant when using the -N option to create a new image.\\n" +" Permitted values are '1M' or '1MB'\\n" +" Default = 1M\\n" +"\\n" +"Notes:\\n" +"\\n" +"The script assumes that:\\n" +"\\n" +" 1. The first partition is the boot partition.\\n" +" 2. The second partition is the root partition.\\n" +"\\n" +"If the supplied working directory is 'work', the mounts will be as follows:\\n" +"\\n" +" work/root (where the root partition is mounted)\\n" +" work/root/boot (where the boot partition is mounted)\\n" +"\\n" +"**IMPORTANT**\\n" +"\\n" +"There is *NO* paranoia checking to check the 2 partition rule is obeyed in any\\n" +"image file or device being created or mounted.\\n" +"\\n" +"Be very careful when specifying the device name to a -N run of this script.\\n" +"It uses 'dd' to generate the .img file and\\n" +"'dd' is silent and deadly if you pick the wrong device, for example your main\\n" +"hard-disk.\\n" +"\\n" +"You have been warned!\\n" +"\\n" + + + +#: rpi-image-tool:24 +#, sh-format +msgid "Script must be run as root, try: sudo $PROGNAME" +msgstr "" + +#: rpi-image-tool:77 +msgid "Invalid option" +msgstr "" + +#: rpi-image-tool:83 +#, sh-format +msgid "Option - $OPTARG requires an argument." +msgstr "" + +#: rpi-image-tool:91 +msgid "Work directory not set" +msgstr "" + +#: rpi-image-tool:94 +msgid "Image file name not set" +msgstr "" + +#: rpi-image-tool:95 rpi-image-tool:100 +msgid "Root mount-point not set" +msgstr "" + +#: rpi-image-tool:99 +msgid "Device name not set" +msgstr "" + +#: rpi-image-tool:104 +msgid "Block count not set" +msgstr "" + +#: rpi-image-tool:105 +msgid "Block size not set" +msgstr "" + +#: rpi-image-tool:106 +msgid "Split size not set" +msgstr "" + +#: rpi-image-sync:11 +msgid "sync_usage" +msgstr "" + +#: backuppi:12 +msgid "backup_usage" +msgstr "" diff --git a/build/build/locale/en/LC_MESSAGES/.gitkeep b/build/build/locale/en/LC_MESSAGES/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/build/build/locale/es_ES/LC_MESSAGES/.gitkeep b/build/build/locale/es_ES/LC_MESSAGES/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/build/build/locale/pt_BR/LC_MESSAGES/.gitkeep b/build/build/locale/pt_BR/LC_MESSAGES/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/build/build/package_lists/packages.list b/build/build/package_lists/packages.list new file mode 100644 index 0000000..96db4cc --- /dev/null +++ b/build/build/package_lists/packages.list @@ -0,0 +1,302 @@ +base +ne +nodm +notify-osd +ntp +openssh +opus-tools +raspberrypi-bootloader +raspberrypi-firmware +barnard-git +base-devel +bicon-git +alsa-utils +arch-install-scripts +aspell +at +audacious +audacity +audiofile +bash-completion +bashtuner +bluez +bluez-tools +bluez-utils +brltty +bsd-games +calc +catdoc +cfh-client +configure-wifi-git +chromium +cronie +cryptsetup +cuneiform +dbus-broker +dhcpcd +device-mapper +diffutils +dragonfm-git +discount +dialog +dos2unix +dotconf +e2fsprogs +ethtool +espeak-ng-extended-git +epub2txt +fake-hwclock +fenrir +firefox +fleacollar-git +fribidi +galculator +git +glipper +growpart +gst-plugins-bad +gst-plugins-ugly +gvfs +horseshoes-git +hunspell +imagemagick +inetutils +intltool +irssi +jfsutils +jshon +json-c +libao +libksane +liblouis +libltdl +libnewt +libpulse +libsonic-git +liburcu +linux-raspberrypi +lios-git +logrotate +lvm2 +lxterminal +man-db +man-pages +mate-panel +mbrola-git +mbrola-voices-af1 +mbrola-voices-ar1 +mbrola-voices-ar2 +mbrola-voices-br1 +mbrola-voices-br2 +mbrola-voices-br3 +mbrola-voices-br4 +mbrola-voices-de1 +mbrola-voices-de2 +mbrola-voices-de3 +mbrola-voices-de4 +mbrola-voices-de5 +mbrola-voices-de6 +mbrola-voices-de7 +mbrola-voices-de8 +mbrola-voices-es1 +mbrola-voices-es2 +mbrola-voices-es3 +mbrola-voices-es4 +mbrola-voices-fr1 +mbrola-voices-fr2 +mbrola-voices-fr3 +mbrola-voices-fr4 +mbrola-voices-fr5 +mbrola-voices-fr6 +mbrola-voices-fr7 +mbrola-voices-hu1 +mbrola-voices-id1 +mbrola-voices-in1 +mbrola-voices-in2 +mbrola-voices-pl1 +mbrola-voices-tr1 +mbrola-voices-tr2 +mbrola-voices-us1 +mbrola-voices-us2 +mbrola-voices-us3 +mhwaveedit +mlterm +mpv +mutt +mygtkmenu +nano +network-manager-applet +parted +pcaudiolib +pcmanfm +pdmenu-git +perl +perl-json-xs +perl-text-charwidth +perl-term-readline-gnu +pi-bluetooth +pianobar +pidgin +pidgin-otr +pluma +portaudio +pulseaudio +pulseaudio-alsa +pulseaudio-bluetooth +python +python-cairo +python-daemonize +python-dbus +python-evdev +magic-wormhole +python2-pip +python-pip +python-pyalsaaudio +python-pyenchant +python-pyinsane +python-pyte +python-pyudev +python-setuptools +python-xlsx2csv +ratpoison +rclone-browser +reiserfsprogs +rhvoice-git +ripit +rpi-clone-git +rsync +rxvt-unicode +sbc +sc-im-git +screen +sdl_image +sdl_mixer +sdl_net +sdl_pango +sdl_ttf +simpleorcapluginsystem-git +socat +sox +speech-dispatcher +storebackup +sudo +surfraw +sysfsutils +t4kcommon-git +telegram-cli-git +telegram-purple +tesseract-data-ara +tesseract-data-eng +tesseract-data-fra +tesseract-data-por +tesseract-data-spa +tesseract +texinfo +thunderbird +tintin +ttf-dejavu +tuxmath-git +tuxtype-git +units +update-f123light +unzip +usbutils +vi +w3m +wget +which +wireless_tools +wpa_supplicant +xarchiver +xclip +xdg-user-dirs +xf86-video-vesa +xfsprogs +xorg-bdftopcf +xorg-docs +xorg-font-util +xorg-fonts-100dpi +xorg-fonts-75dpi +xorg-fonts-encodings +xorg-iceauth +xorg-luit +xorg-mkfontdir +xorg-mkfontscale +xorg-server +xorg-server-common +xorg-server-devel +xorg-server-xdmx +xorg-server-xephyr +xorg-server-xnest +xorg-server-xvfb +xorg-server-xwayland +xorg-sessreg +xorg-setxkbmap +xorg-smproxy +xorg-x11perf +xorg-xauth +xorg-xbacklight +xorg-xcmsdb +xorg-xcursorgen +xorg-xdpyinfo +xorg-xdriinfo +xorg-xgamma +xorg-xev +xorg-xhost +xorg-xinit +xorg-xinput +xorg-xkbcomp +xorg-xkbevd +xorg-xkbutils +xorg-xkill +xorg-xlsatoms +xorg-xlsclients +xorg-xmodmap +xorg-xpr +xorg-xprop +xorg-xrandr +xorg-xrdb +xorg-xrefresh +xorg-xset +xorg-xsetroot +xorg-xvinfo +xorg-xwd +xorg-xwininfo +xorg-xwud +yad +yajl +yay +youtube-dl +youtube-viewer +zip +zramswap +blueman +libreoffice-still +orca +recoll +hunspell-en_US + +# Arabic language packages +aspell-ar +firefox-i18n-ar +hunspell-ar +libreoffice-still-ar +thunderbird-i18n-ar +ttf-arabeyes-fonts + +# Portuguese language packages +firefox-i18n-pt-br +libreoffice-still-pt-br +aspell-pt +hunspell-pt-br +thunderbird-i18n-pt-br + +# Spanish language packages +aspell-es +firefox-i18n-es-es +hunspell-es_any +hunspell-es_es +hyphen-es +libreoffice-still-es +mythes-es +thunderbird-i18n-es-es diff --git a/build/build/pacman/pacman.conf.fragment b/build/build/pacman/pacman.conf.fragment new file mode 100644 index 0000000..8a7994f --- /dev/null +++ b/build/build/pacman/pacman.conf.fragment @@ -0,0 +1,6 @@ + + +[f123pi] +SigLevel = Optional TrustAll +Server = file:///opt/f123pi + diff --git a/build/build/pacman/pacman.rpi.conf b/build/build/pacman/pacman.rpi.conf new file mode 100644 index 0000000..14167f1 --- /dev/null +++ b/build/build/pacman/pacman.rpi.conf @@ -0,0 +1,101 @@ +# +# /etc/pacman.conf +# +# See the pacman.conf(5) manpage for option and repository directives + +# +# GENERAL OPTIONS +# +[options] +# The following paths are commented out with their default values listed. +# If you wish to use different paths, uncomment and update the paths. +#RootDir = / +#DBPath = /var/lib/pacman/ +#CacheDir = /var/cache/pacman/pkg/ +#LogFile = /var/log/pacman.log +#GPGDir = /etc/pacman.d/gnupg/ +#HookDir = /etc/pacman.d/hooks/ +HoldPkg = pacman glibc +#XferCommand = /usr/bin/curl -C - -f %u > %o +#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u +#CleanMethod = KeepInstalled +#UseDelta = 0.7 +Architecture = armv7h + +# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup +#IgnorePkg = +#IgnoreGroup = + +#NoUpgrade = +#NoExtract = + +# Misc options +#UseSyslog +#Color +#TotalDownload +CheckSpace +#VerbosePkgLists + +# PGP signature checking +# NOTE: None of this will work without running `pacman-key --init` first. +# The compiled in default is equivalent to the following line. This requires +# you to locally sign and trust packager keys using `pacman-key` for them to be +# considered valid. +#SigLevel = Required DatabaseOptional +#LocalFileSigLevel = Optional +#RemoteFileSigLevel = Required +# If you wish to check signatures but avoid local sign and trust issues, use +# the following line. This will treat any key imported into pacman's keyring as +# trusted. +#SigLevel = Optional TrustAll +# For now, off by default unless you read the above. +SigLevel = Never + +# +# REPOSITORIES +# - can be defined here or included from another file +# - pacman will search repositories in the order defined here +# - local/custom mirrors can be added here or in separate files +# - repositories listed first will take precedence when packages +# have identical names, regardless of version number +# - URLs will have $repo replaced by the name of the current repo +# - URLs will have $arch replaced by the name of the architecture +# +# Repository entries are of the format: +# [repo-name] +# Server = ServerName +# Include = IncludePath +# +# The header [repo-name] is crucial - it must be present and +# uncommented to enable the repo. +# + +# The testing repositories are disabled by default. To enable, uncomment the +# repo name header and Include lines. You can add preferred servers immediately +# after the header, and they will be used before the default mirrors. + +[f123light] +Server = https://packages.f123.org/$arch + +[core] +Include = /etc/pacman.d/mirrorlist + +[extra] +Include = /etc/pacman.d/mirrorlist + +[community] +Include = /etc/pacman.d/mirrorlist + +[alarm] +Include = /etc/pacman.d/mirrorlist + +[aur] +Include = /etc/pacman.d/mirrorlist + +# An example of a custom package repository. See the pacman manpage for +# tips on creating your own repositories. +#[custom] +#SigLevel = Optional TrustAll +#Server = file:///home/custompkgs + + diff --git a/build/build/scripts/aur-install b/build/build/scripts/aur-install new file mode 100755 index 0000000..637f6b7 --- /dev/null +++ b/build/build/scripts/aur-install @@ -0,0 +1,105 @@ +#!/bin/bash +# +# aur-install +# +# Copyright 2018 F123 Consulting, +# Copyright 2018, Kyle, +# +# This is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free +# Software Foundation; either version 3, or (at your option) any later +# version. +# +# This software 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 +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this package; see the file COPYING. If not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. +# +#--code-- + +export TEXTDOMAIN=aur-install +export TEXTDOMAINDIR=../locale +#export TEXTDOMAINDIR=/usr/local/share/locale + +. gettext.sh + +. ./functions + + +set -e + +if ! check_root ; then + PROGNAME=$0 + echo $(eval_gettext "Script must be run as root, try: sudo \$PROGNAME") ; echo + exit 1 +fi + +packagelist= + +while getopts ':hl:' flag +do +case $flag in +h) +usage +exit 0 +;; +l) +packagelist=$OPTARG +;; +:) +msg=$(gettext "Option requires an argument") +die '%s: %s -- '\''%s'\' "${0##*/}" "${msg}" "$OPTARG" +;; +?) +msg=$(gettext "Invalid option") +die '%s: %s -- '\''%s'\' "${0##*/}" "${msg}" "$OPTARG" +;; +esac +done + +shift $(( OPTIND - 1 )) + +(( $# )) || die "No root directory specified" + +newroot=$1; shift + +[[ -z "${packagelist}" ]] && die "No package list supplied" +[[ -f "${packagelist}" ]] || die "Package list ${packagelist} does not exist" +[[ -r "${packagelist}" ]] || die "Package list ${packagelist} is not readable" + +# A temporary directory holding all build files should be created on the mounted image file. +# It must be owned by the regular user, which will be given the uid 1000. +# This whole directory will be removed once the AUR packages are installed. +mkdir -p "${newroot}/aur" +chown 1000 "${newroot}/aur" + +# From the image chroot, Clone the package build information from the AUR, then build and install each package. +for package in $(cat "$packagelist"); do + systemd-nspawn -a -q -D "${newroot}" sudo -u \#1000 /bin/bash -c \ + "{ +cd /aur; + git clone https://aur.archlinux.org/${package}.git; + cd $package; + MAKEFLAGS=-j$(nproc) makepkg -d -A; + }" + systemd-nspawn -a -q -D "${newroot}" /bin/bash -c \ + "{ + # It is assumed that someone building an image knows what he/she is doing, and won't install AUR packages that make forced installations or dependency skips dangerous. + # That said, some packages have been found not to build properly unless forceably installed to overwrite conflicting files or certain dependencies are skipped. + cd /aur/$package; + yes | pacman -Udd *pkg.tar.xz --noprogressbar --force; + }" +done + +# cleanup the working package build directory +rm -R "${newroot}/aur" + +echo done + +exit 0 + diff --git a/build/build/scripts/config-base b/build/build/scripts/config-base new file mode 100755 index 0000000..f069acb --- /dev/null +++ b/build/build/scripts/config-base @@ -0,0 +1,113 @@ +#!/bin/bash +# +# config-base +# +# Copyright 2018, F123 Consulting, +# Copyright 2017, Mike Ray, +# Copyright 2018, Kyle, +# +# This is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free +# Software Foundation; either version 3, or (at your option) any later +# version. +# +# This software 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 +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this package; see the file COPYING. If not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. +# +#--code-- + +export TEXTDOMAIN=config-base +export TEXTDOMAINDIR=../locale +#export TEXTDOMAINDIR=/usr/local/share/locale + +. gettext.sh + +. ./functions + +set -e + +if ! check_root ; then + PROGNAME=$0 + echo $(eval_gettext "Script must be run as root, try: sudo \$PROGNAME") ; echo + exit 1 +fi + +[ -z "${HOSTNAME_}" ] && HOSTNAME_=alarmpi +[ -z "${ROOTPWD}" ] && ROOTPWD=root +[ -z "${USERNAME}" ] && USERNAME=alarm +[ -z "${USERPWD}" ] && USERPWD=alarm + + +directory=0 + + +while getopts ':adhl:o:p:r:u:' flag +do +case $flag in +d) +directory=1 +;; +h) +usage +exit 0 +;; +l) +locale=${OPTARG} +;; +o) +HOSTNAME_=${OPTARG} +;; +p) +USERPWD=${OPTARG} +;; +r) +ROOTPWD=${OPTARG} +;; +u) +USERNAME=${OPTARG} +;; +:) +msg=$(gettext "Option requires an argument") +die '%s: %s -- '\''%s'\' "${0##*/}" "${msg}" "$OPTARG" +;; +?) +msg=$(gettext "Invalid option") +die '%s: %s -- '\''%s'\' "${0##*/}" "${msg}" "$OPTARG" +;; +esac +done + +shift $(( OPTIND - 1 )) + +(( $# )) || die "No root directory specified" + +newroot=$1; shift + +[[ -d $newroot ]] || die "%s is not a directory" "$newroot" + +# set the host name +input="echo \"${HOSTNAME_}\" > /etc/hostname" +echo "${input}" +chroot "${newroot}" /bin/bash -c "${input}" + +# add root partition mount info to /etc/fstab +chroot "${newroot}" /bin/bash -c 'echo -e "\n\n/dev/mmcblk0p1 /boot vfat defaults 0 0\n\n" >> /etc/fstab' + +set_password "${newroot}" root "${ROOTPWD}" + +# Copy all modified files into the new system +cp -R ../files/* "${newroot}" + +# Set the system locale +test -z $locale || set_locale "${newroot}" "${locale}" + +# Add the regular user +add_user "${newroot}" "${USERNAME}" +set_password "${newroot}" "${USERNAME}" "${USERPWD}" diff --git a/build/build/scripts/functions b/build/build/scripts/functions new file mode 100644 index 0000000..e65415b --- /dev/null +++ b/build/build/scripts/functions @@ -0,0 +1,418 @@ +# +# functions +# +# Copyright 2018, F123 Consulting, +# Copyright 2017, Mike Ray, +# Copyright 2018, Kyle, +# Copyright 2018, StormDragon, +# +# This is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free +# Software Foundation; either version 3, or (at your option) any later +# version. +# +# This software 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 +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this package; see the file COPYING. If not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. +# +#--code-- + +usage() { + scriptname=$0 + echo $(gettext "Usage:") + echo "sudo $scriptname " + +} >&2 # usage + +out() { + printf "$1 $2\n" "${@:3}" +} # out + +error() { + out "ERROR:" "$@" +} >&2 # error + +die() { + error "$@" + usage + exit 1 +} # die + +check_deps () { + [ -f /usr/bin/parted ] || install_dep parted + [ -f /usr/bin/pacstrap ] || install_dep arch-install-scripts + [ -f /usr/bin/partx ] || pacman install_dep util-linux + [ -f /usr/bin/dbus-launch ] || install_dep dbus +} # check_deps + +install_dep () { + local package=$1 + echo $(eval_gettext "Installing ${package}...") + pacman -S $package --noconfirm --noprogressbar >/dev/null +} # install_dep + +add_groups() { + local chroot_=$1 + + # input array holds commands to be ran inside chroot. + input=( + "groupadd --system input;" + "groupadd --system uinput;" + "groupadd --system pulse;" + "groupadd --system pulse-access;" + "useradd --system -g pulse -G audio -d /var/run/pulse -m -s /bin/nologin pulse;" + "gpasswd -a pulse lp;" + "gpasswd -a root pulse-access;" + "echo 'KERNEL==\"event*\", NAME=\"input/%k\", MODE=\"660\", GROUP=\"input\"' >> /etc/udev/rules.d/99-input.rules;" + "echo 'KERNEL==\"uinput\", SUBSYSTEM==\"misc\", OPTIONS+=\"static_node=uinput\", TAG+=\"uaccess\", GROUP=\"uinput\"' >> /etc/udev/rules.d/99-fenrirscreenreader.rules;" + "mkdir -p /var/log/fenrirscreenreader/;" + "chmod 755 /var/log/fenrirscreenreader/;" + "touch /var/log/fenrirscreenreader/fenrir.log;" + "chmod 662 /var/log/fenrirscreenreader/fenrir.log;" + ) + chroot "${chroot_}" /bin/bash -c "${input[*]}" |& log +} # Add pulseaudio users and groups. + +add_user() { + local chroot_=$1 + local username=$2 + + echo $(eval_gettext "Add user \${username}") + input="useradd -m -g users -G wheel,storage,power,uucp,audio,games,pulse-access,lp,scanner,input,uinput -s /bin/bash ${username}" + chroot "${chroot_}" /bin/bash -c "${input}" |& log +} # add_user + +set_password() { + local chroot_=$1 + local username=$2 + local userpwd=$3 + + echo $(eval_gettext "Setting password for user \${username}") + input="echo -e \"${userpwd}\n${userpwd}\n\" | passwd ${username}" + chroot "${chroot_}" /bin/bash -c "${input}" +} # set_password + +setup_locales() { + local chroot=$1 + shift + local defaultlocale=$1 + shift + local locales=$@ + + for l in $locales; do + chroot $chroot /bin/sed -e "s/#${l}/${l}/" -i /etc/locale.gen + done + chroot $chroot /bin/bash -c locale-gen + echo LANG=$defaultlocale > ${chroot}/etc/locale.conf + echo LC_COLLATE=C >> ${chroot}/etc/locale.conf + +} # setup_locales + +setup_wifi() { + local root=$1 + local iface=$2 + local ap=$3 + local pass=$4 + + # Create the systemd network file + mkdir -p $root/etc/systemd/network + cat > $root/etc/systemd/network/$iface.network <<-endOfFile + [Match] + Name=$iface + + [Network] + DHCP=yes + endOfFile + + # Configure wpa_supplicant + mkdir -p $root/etc/wpa_supplicant + cat > $root/etc/wpa_supplicant/wpa_supplicant-$iface.conf <<-endOfFile + ctrl_interface=/var/run/wpa_supplicant + eapol_version=1 + ap_scan=1 + fast_reauth=1 + + network={ + ssid="$ap" + psk="$pass" + priority=1 + } + endOfFile + + # Enable networking and wifi related services + manage_service $root enable systemd-networkd + manage_service $root enable wpa_supplicant@$iface + manage_service $root enable systemd-resolved + + # Remove any legacy version of resolv.conf and link the version from systemd-resolved + rm -f $root/etc/resolv.conf + chroot $root /bin/bash -c "ln -sf /var/run/systemd/resolve/resolv.conf /etc/resolv.conf" +} #setup_wifi + +download_package_databases () { + local chroot=$1 + + # Be sure the full package database for all repositories has been downloaded + systemd-nspawn -a -q -D $1 pacman -Syy +} # download_package_databases + +set_fake_hwclock () { + local chroot=$1 + + # Set an initial system time. + systemd-nspawn -a -q -D $1 /usr/lib/systemd/scripts/fake-hwclock.sh save + + # Enable time sync + systemd-nspawn -a -q -D $1 timedatectl set-ntp true +} + +manage_service() { + local chroot_=$1 + local operation=$2 + local service=$3 + + echo $(eval_gettext "Calling systemctl to \${operation} \${service} service") + systemd-nspawn -a -q -D "${chroot_}" systemctl "${operation}" "${service}" +} # manage_service + +check_root() { + (( EUID == 0 )) || return 1 + return 0 +} # check_root + +clean_up() { + local WORKDIR=${1} + + if [ -f "${WORKDIR}/rpi-image-tool-mount-points" ]; then + unmount_partitions ${WORKDIR} + remove_mount_points ${WORKDIR} + if cat ${WORKDIR}/rpi-image-tool-mount-points | grep loop >/dev/null; then + remove_loop_devices ${WORKDIR} + fi + fi + rm ${WORKDIR}/rpi-image-tool-mount-points +} # clean_up + +delete_partitions() { + local DEVICE=${1} + + for PART in `parted -ms /dev/sda -- print | perl -ne "if (m/^\d/) {print;}" | cut -f1 -d':' | sort -r` + do + parted ${DEVICE} -- rm ${PART} >/dev/null + done +} # delete_partitions + +loop_devices() { + local WORKDIR=${1} + local IMAGEFILE=${2} + local __BOOTP=${3} + local __ROOTP=${4} + + echo $(gettext "Setting up the loop device") ; echo + LOOPDEVICE=$(losetup -P -f --show ${IMAGEFILE}) + BOOTP=${LOOPDEVICE}p1 + ROOTP=${LOOPDEVICE}p2 + eval $__BOOTP="'$BOOTP'" + eval $__ROOTP="'$ROOTP'" +} # loop_devices + +mount_device() { + local WORKDIR=${1} + local DEVICE=${2} + local ROOTMP=${3} + + [ -b "${DEVICE}" ] || { echo "Supplied device name ${DEVICE} does not exist or is not a block device"; exit 1; } + echo $(gettext "Making the work directory if it doesn't exist") ; echo + [ -d "${WORKDIR}" ] || mkdir -p "${WORKDIR}" + BOOTP=${DEVICE}1 + ROOTP=${DEVICE}2 + mount_partitions ${WORKDIR} ${BOOTP} ${ROOTP} ${BOOTMP} ${ROOTMP} +} # mount_device + +mount_image() { + local WORKDIR=${1} + local IMAGEFILE=${2} + local BOOTMP=${3} + local ROOTMP=${4} + + [ -f "${IMAGEFILE}" ] || { echo "Supplied image file does not exist"; exit 1; } + echo $(gettext "Making the work directory if it doesn't exist") ; echo + [ -d "${WORKDIR}" ] || mkdir -p "${WORKDIR}" + loop_devices ${WORKDIR} ${IMAGEFILE} BOOTP ROOTP + mount_partitions ${WORKDIR} ${BOOTP} ${ROOTP} ${BOOTMP} ${ROOTMP} +} # mount_image + +mount_partitions() { + local WORKDIR=${1} + local BOOTP=${2} + local ROOTP=${3} + local BOOTMP=${4} + local ROOTMP=${5} + + echo $(gettext "Making the root mount point if it doesn't exist") ; echo + [ -d "${WORKDIR}/${ROOTMP}" ] || mkdir -p "${WORKDIR}/${ROOTMP}" + mount ${ROOTP} ${WORKDIR}/${ROOTMP} + + echo $(gettext "Making the boot mount point if it doesn't exist") ; echo + [ -d "${WORKDIR}/${ROOTMP}/${BOOTMP}" ] || mkdir -p "${WORKDIR}/${ROOTMP}/${BOOTMP}" + mount ${BOOTP} ${WORKDIR}/${ROOTMP}/${BOOTMP} + + echo $(eval_gettext "Writing mount-points to \$WORKDIR/rpi-image-tool-mount-points") ; echo + REALROOTMOUNTPOINT=$(realpath ${WORKDIR}/${ROOTMP}) + REALBOOTMOUNTPOINT=$(realpath ${WORKDIR}/${ROOTMP}/${BOOTMP}) + echo -e "1:${BOOTP}:${REALBOOTMOUNTPOINT}\n2:${ROOTP}:${REALROOTMOUNTPOINT}" > ${WORKDIR}/rpi-image-tool-mount-points +} # mount_partitions + +new_image() { + local WORKDIR=${1} + local IMAGEFILE=${2} + local BOOTLABEL=${3} + local ROOTLABEL=${4} + local BOOTMP=${5} + local ROOTMP=${6} + local BLOCKCOUNT=${7} + local BLOCKSIZE=${8} + local SPLIT=${9} + + echo $(gettext "Making the work directory if it doesn't exist") ; echo + [ -d ${WORKDIR} ] || mkdir -p "${WORKDIR}" + + echo $(gettext "Running dd to make a raw (zero-filled) image") ; echo + dd if=/dev/zero of=${IMAGEFILE} bs=${BLOCKSIZE} count=${BLOCKCOUNT} + + echo $(gettext "Partitioning the raw image file") ; echo + parted "${IMAGEFILE}" --script -- mklabel msdos + echo $(gettext "Making the boot partition") ; echo + parted "${IMAGEFILE}" --script -- mkpart primary fat32 1 ${SPLIT} + echo $(gettext "Setting the boot partition bootable") ; echo + parted "${IMAGEFILE}" --script set 1 boot on + echo $(gettext "Making the root partition") ; echo + parted "${IMAGEFILE}" --script -- mkpart primary ext4 ${SPLIT} -1 + + local BOOTP + local ROOTP + + loop_devices ${WORKDIR} ${IMAGEFILE} BOOTP ROOTP + echo $(eval_gettext "Boot partition is \$BOOTP") ; echo + echo $(eval_gettext "Root partition is \$ROOTP}") ; echo + + echo $(gettext "Making file systems") ; echo + mkfs.vfat -n ${BOOTLABEL} ${BOOTP} + mkfs.ext4 -L ${ROOTLABEL} ${ROOTP} + + mount_partitions ${WORKDIR} ${BOOTP} ${ROOTP} ${BOOTMP} ${ROOTMP} +} # new_image + +prepare_device() { + local WORKDIR=${1} + local DEVICE=${2} + local BOOTMP=${3} + local ROOTMP=${4} + local BLOCKCOUNT=${5} + local BLOCKSIZE=${6} + local SPLIT=${7} + + echo $(gettext "Making the work directory if it doesn't exist") ; echo + [ -d ${WORKDIR} ] || mkdir -p "${WORKDIR}" + + echo $("Partitioning the device") ; echo + parted "${DEVICE}" --script -- mklabel msdos + echo $(gettext "Making the boot partition...") ; echo + parted "${DEVICE}" --script -- mkpart primary fat32 1 ${SPLIT} + echo $(gettext "Setting the boot partition bootable") ; echo + parted "${DEVICE}" --script set 1 boot on + echo $(gettext "Making the root partition") ; echo + parted "${DEVICE}" --script -- mkpart primary ext4 ${SPLIT} -1 + echo $(eval_gettext "Boot partition is \${DEVICE}1") ; echo + echo $(eval_gettext "Root partition is \${DEVICE}2") ; echo + + echo $(gettext "Making file systems") ; echo + mkfs.vfat ${DEVICE}1 + mkfs.ext4 ${DEVICE}2 + + mount_partitions ${WORKDIR} ${DEVICE}1 ${DEVICE}2 ${BOOTMP} ${ROOTMP} +} # prepare_device + +remove_loop_devices() { + local WORKDIR=${1} + + echo $(gettext "Removing loop devices") ; echo + FIRSTPART=$(head -1 ${WORKDIR}/rpi-image-tool-mount-points | cut -f2 -d:) + LOOP=${FIRSTPART%%p1} + echo $(eval_gettext "Removing loop device \${LOOP}") ; echo + losetup -d "${LOOP}" +} # remove_loop_devices + +remove_mount_points() { + local WORKDIR=${1} + + [ -f ${WORKDIR}/rpi-image-tool-mount-points ] || { echo "${WORKDIR}/rpi-image-tool-mount-points does not exist" ; exit 1 ; } + cat ${WORKDIR}/rpi-image-tool-mount-points | cut -f3 -d: | \ + while read MOUNTPOINT + do + echo $(eval_gettext "Removing \$MOUNTPOINT") ; echo + [ -d "${MOUNTPOINT}" ] && rmdir "${MOUNTPOINT}" + done +} # remove_mount_points + +unmount_partitions() { + local WORKDIR=${1} + + if [ ! -f "${WORKDIR}/rpi-image-tool-mount-points" ]; then + echo $(gettext "Could not find the file rpi-image-tool-mount-points in the work directory") ; echo + exit 1 + fi + + echo $(gettext "umount partitions") ; echo + cat ${WORKDIR}/rpi-image-tool-mount-points | cut -f3 -d: | \ + while read MOUNTPOINT + do + echo $(eval_gettext "umount \$MOUNTPOINT") ; echo + umount "${MOUNTPOINT}" + done +} # unmount partitions + +validate_blockcount() { + echo "$BLOCKCOUNT" | grep "^[0-9][0-9]*$" >/dev/null + if [ $? -eq 1 ]; then + echo $(gettext "Bad block count") ; echo + usage + fi +} # validate_blockcount + +validate_blocksize() { + declare -r BLOCKSIZE=${1} + case "$BLOCKSIZE" in + '1M'|'1MB') + ;; + *) + echo $(gettext "Invalid block-size") ; echo + usage + exit 1 + ;; + esac +} # validate_blocksize + +validate_mountpoint() { + declare -r MOUNTPOINT=${1} + echo $MOUNTPOINT | grep "^[\./A-Za-z0-9\-][\.A-Za-z0-9\-]*" >/dev/null + if [ $? -eq 1 ]; then + echo $(gettext "Bad mount-point") ; echo + exit 1 + fi +} # validate_mountpoint + +validate_split() { + local SPLIT=${1} + echo "${SPLIT}" | grep "^[0-9][0-9]*$" >/dev/null + if [ $? -eq 1 ]; then + echo $(gettext "Bad split") ; echo + usage + fi +} # validate_split diff --git a/build/build/scripts/gsettings b/build/build/scripts/gsettings new file mode 100755 index 0000000..884aa4b --- /dev/null +++ b/build/build/scripts/gsettings @@ -0,0 +1,68 @@ +#!/bin/bash +# Gsettings commands to enable desktop accessibility and the Orca screen reader +# +# gsettings +# +# Copyright 2018, F123 Consulting, +# Copyright 2018, Kyle, +# +# This is free software; you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation; either version 3, or (at your option) any later +# version. +# +# This software 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 +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this package; see the file COPYING. If not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. +# +#--code-- + +export TEXTDOMAIN=gsettings +export TEXTDOMAINDIR=../locale + +. gettext.sh + +set -e + +# Load the common functions +. ./functions + +# Die if not running with root privileges +if ! check_root ; then + PROGNAME=$0 + echo $(eval_gettext "Script must be run as root, try: sudo \$PROGNAME") ; echo + exit 1 +fi + +# die if this script is called with no argument. +if [ -z $1 ]; then + echo No root specified + exit 1 +fi + +# Die if called with more than one argument +if [ $2 ]; then + echo Too many arguments + exit 1 +fi + +newroot=$1 + +# turn on MATE accessibility +systemd-nspawn -a -q -D "${newroot}" sudo -u \#1000 /bin/bash -c "dbus-launch gsettings set org.mate.interface accessibility true" +#pkill -n dbus-daemon + +# Make Orca start automatically +systemd-nspawn -a -q -D "${newroot}" sudo -u \#1000 /bin/bash -c "dbus-launch gsettings set org.gnome.desktop.a11y.applications screen-reader-enabled true" + +#pkill -n dbus-daemon + +# Disable screen locking by default +systemd-nspawn -a -q -D "$newroot" sudo -u \#1000 /bin/bash -c "dbus-launch gsettings set org.mate.screensaver lock-enabled false" +#pkill -n dbus-daemon diff --git a/build/build/scripts/pacstrap b/build/build/scripts/pacstrap new file mode 100755 index 0000000..3befc24 --- /dev/null +++ b/build/build/scripts/pacstrap @@ -0,0 +1,105 @@ +#!/bin/bash +# +# pacstrap +# +# Copyright 2018, F123 Consulting, +# Copyright 2017, Mike Ray, +# Copyright 2018, Kyle, +# +# This is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free +# Software Foundation; either version 3, or (at your option) any later +# version. +# +# This software 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 +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this package; see the file COPYING. If not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. +# +#--code-- + +export TEXTDOMAIN=pacstrap +export TEXTDOMAINDIR=../locale +#export TEXTDOMAINDIR=/usr/local/share/locale + +. gettext.sh + +. ./functions + + +set -e + +if ! check_root ; then + PROGNAME=$0 + echo $(eval_gettext "Script must be run as root, try: sudo \$PROGNAME") ; echo + exit 1 +fi + +cache= +directory=0 +packagelist= + +while getopts ':c:dhl:' flag +do +case $flag in +c) + cache="--cachedir=$OPTARG" +;; +d) +directory=1 +;; +h) +usage +exit 0 +;; +l) +packagelist=$OPTARG +;; +:) +msg=$(gettext "Option requires an argument") +die '%s: %s -- '\''%s'\' "${0##*/}" "${msg}" "$OPTARG" +;; +?) +msg=$(gettext "Invalid option") +die '%s: %s -- '\''%s'\' "${0##*/}" "${msg}" "$OPTARG" +;; +esac +done + +shift $(( OPTIND - 1 )) + +(( $# )) || die "No root directory specified" + +newroot=$1; shift + +[[ -z "${packagelist}" ]] && die "No package list supplied" +[[ -f "${packagelist}" ]] || die "Package list ${packagelist} does not exist" +[[ -r "${packagelist}" ]] || die "Package list ${packagelist} is not readable" + + +mapfile -t softwareList < <(sed -e 's/\([[:space:]a-zA-Z0-9_.\+-]*\).*/\1/g' -e 's/^ *//' -e 's/ .*//' -e '/\(^\s*[[:punct:]]\|^$\)/d' "$packagelist") + +[[ -d $newroot ]] || die "%s is not a directory" "$newroot" +if ! mountpoint -q "${newroot}" && (( ! directory )); then +die '%s is not a mountpoint!' "$newroot" +fi + +if (( directory )) ; then +echo "Pacstrapping in ${newroot} directory" + optiond='-d' +else +echo "Pacstrapping in ${newroot} mount-point" +fi + +pacstrap -C ../pacman/pacman.rpi.conf ${optiond} "${newroot}" $cache --needed --noprogressbar "${softwareList[@]}" + + +echo done + +exit 0 + diff --git a/build/build/scripts/rpi-image-tool b/build/build/scripts/rpi-image-tool new file mode 100755 index 0000000..6c29c0f --- /dev/null +++ b/build/build/scripts/rpi-image-tool @@ -0,0 +1,156 @@ +#!/bin/bash +# +# rpi-image-tool +# +# Copyright 2017, Mike Ray, +# Copyright 2018, F123 Consulting, +# +# This is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free +# Software Foundation; either version 3, or (at your option) any later +# version. +# +# This software 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 +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this package; see the file COPYING. If not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. +# +#--code-- + +export TEXTDOMAIN=rpi-image-tool +#export TEXTDOMAINDIR=$PWD/locale +export TEXTDOMAINDIR=./locale + +. gettext.sh + +. ./functions + + +usage() { + USAGE=$(gettext "tool_usage") + echo -e "${USAGE}" +} + + +#-- Main code + +if ! check_root ; then + PROGNAME=$0 + echo $(eval_gettext "Script must be run as root, try: sudo \$PROGNAME") ; echo + exit 1 +fi + + +WORKDIR= +IMAGEFILE= +FUNCTION= +SPLIT=64 +BLOCKSIZE=1M +BLOCKCOUNT= + +BOOTLABEL=RPi-Boot +ROOTLABEL=RPi-Root + +BOOTMOUNTPOINT=boot +ROOTMOUNTPOINT=root + + +while getopts ':C:D:M:N:b:c:hr:s:w:z:' flag ; do + case $flag in + h) + usage + exit 0 + ;; +C) + FUNCTION=cleanup + WORKDIR=${OPTARG} + break 2 + ;; + D) + FUNCTION=mountdevice + DEVICE=${OPTARG} + ;; + M) + FUNCTION=mountimage + IMAGEFILE=${OPTARG} + ;; + N) + FUNCTION=new + IMAGEFILE=${OPTARG} + ;; + c) + BLOCKCOUNT=${OPTARG} + validate_blockcount ${BLOCKCOUNT} + ;; + s) + SPLIT=${OPTARG} + validate_split ${SPLIT} + ;; + b) + BOOTLABEL="${OPTARG}" + ;; + r) + ROOTLABEL="${OPTARG}" + ;; + w) + WORKDIR=${OPTARG} + ;; + z) + BLOCKSIZE=${OPTARG} + validate_blocksize ${BLOCKSIZE} + ;; + (?) + echo $(gettext "Invalid option") >&2 + echo >&2 + usage + exit 1 + ;; + :) + echo $(eval_gettext "Option - \$OPTARG requires an argument.") >&2 + echo >&2 + usage + exit 1 + ;; + esac +done + +[ -z ${WORKDIR} ] && { echo $(gettext "Work directory not set") ; echo ; usage; exit 1 ; } + +if [ ${FUNCTION} = 'mountimage' ] || [ $FUNCTION = 'new' ]; then + [ -z "${IMAGEFILE}" ] && { echo $(gettext "Image file name not set") ; echo ; usage; exit 1 ; } +fi + +if [ ${FUNCTION} = 'mountdevice' ]; then + [ -z "${DEVICE}" ] && { echo $(gettext "Device name not set") ; echo ; usage ; exit 1 ; } +fi + +if [ ${FUNCTION} = 'new' ]; then + [ -z ${BLOCKCOUNT} ] && { echo $(gettext "Block count not set") ; echo ; usage ; exit 1 ; } + [ -z ${BLOCKSIZE} ] && { echo $(gettext "Block size not set") ; echo ; usage ; exit 1 ; } + [ -z ${SPLIT} ] && { echo $(gettext "Split size not set") ; echo ; usage ; exit 1 ; } +fi + +case ${FUNCTION} in + cleanup) + clean_up ${WORKDIR} +# ${BOOTMP} ${ROOTMP} + ;; + mountimage) + mount_image ${WORKDIR} ${IMAGEFILE} ${BOOTMOUNTPOINT} ${ROOTMOUNTPOINT} + ;; + mountdevice) + mount_device ${WORKDIR} ${DEVICE} ${BOOTMOUNTPOINT} ${ROOTMOUNTPOINT} + ;; + new) + new_image ${WORKDIR} ${IMAGEFILE} ${BOOTLABEL} ${ROOTLABEL} ${BOOTMOUNTPOINT} ${ROOTMOUNTPOINT} ${BLOCKCOUNT} ${BLOCKSIZE} ${SPLIT} + ;; +esac + +exit 0 + + diff --git a/build/build/scripts/services-enable b/build/build/scripts/services-enable new file mode 100755 index 0000000..db46a0d --- /dev/null +++ b/build/build/scripts/services-enable @@ -0,0 +1,48 @@ +#!/bin/bash +# +# config-base +# +# Copyright 2018, F123 Consulting, +# Copyright 2018, Kyle, +# +# This is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free +# Software Foundation; either version 3, or (at your option) any later +# version. +# +# This software 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 +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this package; see the file COPYING. If not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. +# +#--code-- + +export TEXTDOMAIN=services-enable +export TEXTDOMAINDIR=../locale +#export TEXTDOMAINDIR=/usr/local/share/locale + +. gettext.sh + +. ./functions + +set -e + +if ! check_root ; then + PROGNAME=$0 + echo $(eval_gettext "Script must be run as root, try: sudo \$PROGNAME") ; echo + exit 1 +fi + +# Take the system root as the first argument and then chuck it. All the rest of the command line arguments will be treated as services to be enabled. +newroot=$1 +shift + +# Take each service and enable it. +for SERVICE in $@; do +manage_service "${newroot}" enable "${SERVICE}" +done diff --git a/build/build/scripts/utils/genpot.sh b/build/build/scripts/utils/genpot.sh new file mode 100755 index 0000000..eb4f53e --- /dev/null +++ b/build/build/scripts/utils/genpot.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +xgettext -L Shell -o - \ +bootstrap-f123pi \ +pacstrap-f123pi \ +pacstrap-f123pi.lib \ +config-base-f123pi | \ +sed -e 's|YEAR|2017|' \ +-e 's|=CHARSET|=UTF-8|' \ +-e 's|SOME DESCRIPTIVE TITLE|bootstrap-f123pi|' \ +-e "s|THE PACKAGE'S COPYRIGHT HOLDER|Mike Ray|" \ +-e 's|FIRST AUTHOR|Mike Ray|' \ +-e 's|EMAIL@ADDRESS|mike.ray@btinternet.com|' \ +-e 's|PACKAGE VERSION|0.1.0alpha|' \ +-e 's|FULL NAME|Mike Ray|' \ +> bootstrap-f123pi.pot + + + diff --git a/build/build/utils/genpot.sh b/build/build/utils/genpot.sh new file mode 100755 index 0000000..eb4f53e --- /dev/null +++ b/build/build/utils/genpot.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +xgettext -L Shell -o - \ +bootstrap-f123pi \ +pacstrap-f123pi \ +pacstrap-f123pi.lib \ +config-base-f123pi | \ +sed -e 's|YEAR|2017|' \ +-e 's|=CHARSET|=UTF-8|' \ +-e 's|SOME DESCRIPTIVE TITLE|bootstrap-f123pi|' \ +-e "s|THE PACKAGE'S COPYRIGHT HOLDER|Mike Ray|" \ +-e 's|FIRST AUTHOR|Mike Ray|' \ +-e 's|EMAIL@ADDRESS|mike.ray@btinternet.com|' \ +-e 's|PACKAGE VERSION|0.1.0alpha|' \ +-e 's|FULL NAME|Mike Ray|' \ +> bootstrap-f123pi.pot + + + diff --git a/build/doc/i18n/shell/workflow.md b/build/doc/i18n/shell/workflow.md new file mode 100644 index 0000000..9fea022 --- /dev/null +++ b/build/doc/i18n/shell/workflow.md @@ -0,0 +1,197 @@ + +# Shell Internationalization Workflow + +To provide translations for shell scripts we use the gettext package. + +## Preparing a Shell Script for Translation + +Shell scripts contain `echo` commands to provide user feedback. + +We need for the strings displayed by an `echo` command to be displayed in the language the user of +the machine is using. + +In the top of the script we put these lines: + + export TEXTDOMAIN=myscript + export TEXTDOMAINDIR=/usr/share/locale + + . gettext.sh + +In the above example `myscript` is an example script name. + +The `TEXTDOMAINDIR` above contains the usual path to localization for a typical Linux installation. +It may be raplaced with: + + export TEXTDOMAINDIR=$PWD/locale + +For testing a script's translation. + +The script author changes typical `cho` of this syntax: + + echo 'Press any key to continue' + +With: + + echo $(gettext "Press any key to continue") ; echo + +We place an extra `echo` with no arguments at the end because the `gettext` function does not add a line-feed. + +The `gettext` function is contained in the `gettext.sh` script included at the top of the script. + +If an echoed string contains any shell variables they must be replaced. + +For example: + + echo "Program name: $0" + +Becomes: + + PROGNAME=$0 + echo $(eval_gettext "Prog name: \$PROGNAME") ; echo + +The `eval_gettext` function is used instead of `gettext` and the dolla-sign is `escaped` with a +back-slash. + +Again an extra `echo` is put in after the command to echo a translated string. + +## Extracting Strings into a Portable Object Template (.pot) + +Now we run `xgettext` against our script to create a file of strings to translate. + +We do this in this fashion: + + xgettext -L Shell -o myscript.pot myscript + +This reads all the `echo` commands which contain references to the `gettext` and `eval_gettext` functions and writes them to a `.pot` (portable object template) file. + +Here is a simple example of the contents of a `.pot` file for a script which contains only one `echo` command: + + + + # SOME DESCRIPTIVE TITLE. + # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER + # This file is distributed under the same license as the PACKAGE package. + # FIRST AUTHOR , YEAR. + # + #, fuzzy + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: \n" + "POT-Creation-Date: 2017-04-19 22:52+0100\n" + "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" + "Last-Translator: FULL NAME \n" + "Language-Team: LANGUAGE \n" + "Language: \n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + # + #: myscript:10 + #, sh-format + msgid "Hello world: $PROGNAME" + msgstr "" + + +In the above example there are values in upper-case at the top in the comments which should be filled out with the details of the package-name, and the author details etc. + +And this line: + + "Content-Type: text/plain; charset=CHARSET\n" + +Should be changed to read: + + "Content-Type: text/plain; charset=UTF-8\n" + +Or whichever character-set we are using. + +## The Translation Process + +The first-cut `.pot` file should be passed to a translator with the name changed to drop the ending `t`: + + cp myscript.pot myscript.po + +Now give the `.po` (portable object) file to a translator. + +After the line which reads: + + "Content-Transfer-Encoding: 8bit\n" + +There will be entries of the form: + + msgid "Some string in the original language" + msgstr "" + +A translator places the translation of the string in the `msgid` entry in the `msgstr` entry between the quotes. + +The translator _MUST_ preserve any shell variable reference that is in the original string. For example: + + msgid "Attention! $ERRORCODE" + msgstr "Achtung! $ERRORCODE" + +In this way a translator goes right through the file and translates the strings, leaving the `msgid` entries as-is, and placing their translations in the corresponding `msgstr` entries. + +## Creating `Machine Object` Files + +The files which will actually be used when a script runs, to provide translated strings is a `.mo` file. + +We create this from a `.po` file like this: + + msgfmt -o myscript.mo myscript.po + +Which will create `myscript.mo` from `myscript.po`. + +## Merging New Strings + +Of course the development of a complex script is never static and it may be necessary to add new strings, or to remove old ones. We can use another utility to `merge` strings from a new `.pot` file into our `.po` file and re-create our `.mo` file. + +For this we use `msgmerge`, like this: + + msgmerge -U myscript.po myscript.pot + +This will search the `.pot` file for new or deleted strings and merge them into the `.po` file. In this way previous translation work is not lost when things change. + +And again we then create a new `.mo` file from the update `.po` file. + +## Installing a Translation + +Using our `myscript` example from above, the `.mo` file is installed in: + + /usr/share/locale//LC_MESSAGES/myscript.mo + +Where is the language into which the script has been translated. + +For example, for Brazilian Portuguese: + + /usr/share/locale/pt_BR/LC_MESSAGES/myscript.mo + +## The Worklow in Short + +1. Script is written and tested, including gettext support. +2. Run `xgettext` to extract all `echo` strings into a `.pot` file. +3. Rename the `.pot` file to `.po` and pass to translator. +4. When step 3 is done, run `msgfmt` to create the `.mo` file. +5. Install the `.mo` file (after testing). +6. If something new is written in the script, go to step 2 and repeat to step 5. + +## Notes/Suggestions + +The `.po` files to be translated should probably either be contained in a directory structure which clearly defines the language, or should contain the language in the file-name, although the completed `.mo` file cannot. + +So, for `myscript`, perhaps: + + myscript/ + en/myscript.en.po (English) + fr/myscript.fr.po (French) + pt_BR/myscript.pt_BR.po (Brazilian Portuguese) + + +## License + +This document is licensed under the creativecommons.org, 'Attribution-NonCommercial-ShareAlike 4.0 +International' license: + +https://creativecommons.org/licenses/by-nc-sa/4.0/ + +2017 Mike Ray, + diff --git a/build/doc/image/Build in Stages.md b/build/doc/image/Build in Stages.md new file mode 100644 index 0000000..1926a54 --- /dev/null +++ b/build/doc/image/Build in Stages.md @@ -0,0 +1,112 @@ +# Building an Image in Stages # +This document describes how to use the build stage scripts to perform a more manual build. +# Introduction # +Normally, in order to build an F123Light image for a Raspberry Pi computer, the script at build/build.sh is used, along with the configuration file that has the desired options configured. *See README.md at the top level of this repository for full documentation of the automated build process.* This document describes a more manual build that offers better control of the build process by using the stage scripts in build/scripts individually, using command line options rather than a configuration file. It is assumed that each script will be called from the build/scripts directory in this repository. Each script must be run as root, either as the logged in user or via sudo. Script calls in this document are written for sudo users; if not using sudo, just remove sudo from the beginning of the command line. It is also recommended that these scripts be called in the order listed below, but the build system is tolerant of some deviations from this order, as well as multiple calls in some cases. For example, it is possible to run gsettings either before or after aur-install, but the non-root user is required in order to build AUR packages or set gsettings keys, so config-base must run before either aur-install or gsettings. On the other hand, pacstrap may run any number of times using the same mount point, at any point in the build process, as long as its first run comes before config-base, as config-base requires at least a minimal system to be installed. +# rpi-image-tool # +This script creates, mounts, unmounts and manipulates two-partition Raspberry Pi image files. +## usage ## + ./rpi-image-tool -h + sudo ./rpi-image-tool [options] +## Operations, arguments and options ## +**-N -w -c [-z blocksize] [-s ] [-b ] [-r ]** +Create a new image with the given filename and parameters, then mount it. +*-w * +The work directory where the image is mounted. Package caches are also stored under this directory. +*-z * +The block size used when writing the empty image file. May be a number of bytes or a number with a K, M or G suffix, representing kilobytes, megabytes or gigabytes. Default is 1MB. +*-c * +The number of blocks to be written to the empty image file. +*-s * +Determines the size of the boot partition. May be a number of bytes or a number of kilobytes, megabytes or gigabytes, suffixed by K, M or G. Default is 64MB. +*-b * +Specify the volume label of the boot partition. Default is rpi-boot. +*-r * +Specify the volume label of the root partition. Default is rpi-root. + +**-M -w ** +Mount the specified image file under the specified work directory. + +**-D -w ** +Mount the specified device under the specified work directory. Device must be a two-partition Raspberry Pi image. + +**-C ** +Unmount a mounted image and cleanup the specified work directory, with the exception of package caches, which are always preserved. + +**-h** +Currently not fully implemented: display usage message. +# pacstrap # +This script installs packages to a mounted image or to the directory of your choice. +## Usage ## + ./pacstrap -h + sudo ./pacstrap [-d] [-c ] -l +## Options and Arguments ## +*-d* +Install packages to a directory rather than a mount point. + +*-c * +Use to store the persistent package cache. + +*-l * +Install all packages listed in * +The top level root of the installed system. Must be a mount point, unless *-d* is specified. + +*-h* +Currently not fully implemented: display usage message. +# config-base # +Configures the base system, including the hostname, root password, non-root username/password and system services. +## Usage ## +./config-base -h +sudo ./config-base [-o ] [-l ] [-u ] [-p ] +## Options and Arguments ## +*-o * +The hostname of the installed system. Default is alarmpi. + +*-r * +The password of the root user. Default is root. + +*-l * +The system locale (must exist in /etc/locale.gen) + +*-u * +The username of the non-root user. Default is alarm. + +*-p * +The password of the non-root user. Default is alarm. + +*systemroot>* +The top level root of the installed system. + +*-h* +Currently not fully implemented: display usage message. +# aur-install # +Builds and installs packages from the Arch User Repository (AUR), using the specified package list. +## Usage ## +./aur-install -h +sudo ./aur-install -l +## Options and arguments ## +*-l * +The file containing the list of packages to be built and installed. + +** +The top level root directory of the installed system. +*-h* +Currently not fully implemented: display usage message. +# services-enable # +Enables the specified systemd services in the specified system root. +## Usage ## +sudo ./services-enable [service ...] +## Arguments ## +** +The top level root directory of the installed system. + +* [service ...]* +One or more services to be enabled at boot time. All services must exist on the system image, as systemd is used to enable each service inside of a chroot. +# gsettings # +Sets various gsettings keys. This script must only be run if a gsettings compatible desktop has been installed. +## usage ## +sudo ./gsettings +## Options and Arguments ## +** +The top level root directory of the installed system. diff --git a/build/doc/image/rpi-image-tool.md b/build/doc/image/rpi-image-tool.md new file mode 100644 index 0000000..e69de29 diff --git a/build/installation/.gitkeep b/build/installation/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/build/notes/.gitkeep b/build/notes/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/content/F123/en_US.UTF-8/about.txt b/content/F123/en_US.UTF-8/about.txt new file mode 100644 index 0000000..bb78004 --- /dev/null +++ b/content/F123/en_US.UTF-8/about.txt @@ -0,0 +1,2 @@ +F123Light Copyright F123 Consulting +Version 18.11.28 diff --git a/content/F123/en_US.UTF-8/desktop.md b/content/F123/en_US.UTF-8/desktop.md new file mode 100644 index 0000000..65c4cb1 --- /dev/null +++ b/content/F123/en_US.UTF-8/desktop.md @@ -0,0 +1 @@ +Use thee arrow keys to explore the desktop. Use Control+Escape to access the menu. diff --git a/content/F123/en_US.UTF-8/quickstart1.txt b/content/F123/en_US.UTF-8/quickstart1.txt new file mode 100644 index 0000000..35e9587 --- /dev/null +++ b/content/F123/en_US.UTF-8/quickstart1.txt @@ -0,0 +1,30 @@ +Welcome to the F123Light Operating System! + +Since this is the first time you start your computer with F123Light, we will share with you introductory information on the screen reader, as well as present a few questions which will help you configure your system. + +F123Light has two screen readers, Orca and Fenrir. Fenrir is used most often by those who want to explore the command line, while just about everyone else will be using Orca. Since our objective is for you to feel right at home, we have modified both Orca and Fenrir keyboard commands so that they resemble as much as possible the keyboard shortcuts used by the NVDA screen reader. We have also selected other software, like the text editor and file manager, so that anybody who has used Windows in the past, will have an easy transition to F123Light. + +Just like in NVDA, both the Caps Lock and the Insert keys can be used to activate screen reader commands. Also, just like in NVDA, you can get to the settings for the screen reader by pressing Insert or Caps Lock, together with Ctrl+G. + +Insert+Ctrl+G is an important command because it lets you access screen reader settings and toggle between laptop and desktop keyboard layout. The default in F123Light is the desktop layout, but if you are using a laptop-style keyboard, which does not have a numeric keypad, then you will need to switch the keyboard mode pressing Caps Lock and Ctrl+G. + +Instead of saying Orca or Fenrir key, we will call the screen reader key just reader. So, for example, to get into "learn mode", which lets you hear the name and function of any key you press, just press reader+1. This means that you hold down either the Insert or Caps Lock key, press the number one on your keyboard, and then release all keys. + +If you have pressed reader+1, you can hear the name and function of any key or key combination without causing any changes on your computer. When you have learned what you needed, you can press 'ESC' or 'Escape' and the keyboard will be working normally again. + +You can start by adjusting speech volume and rate to whatever level you find most comfortable. Just like in NVDA, you can hold "reader+Control" and use the left and right arrow keys to select speech settings such as volume, rate, or pitch. Hold "reader+Control" and use the up and down arrows to adjust the selected speech setting higher or lower. + +To read by line, you can use the 7, 8, and 9 keys on your numeric keypad. Number 7 will read the previous line, 8 the current line, and 9 the next line. For those using a notebook-style keyboard, the same can be achieved holding down the CapsLock and pressing U, I, and O, for previous, current, and next line; and J, K, and L, for previous, current, and next word. + +In the event the system stops speaking completely, you can use a special shortcut to reset speech settings to factory-defaults, just press reader+Alt+S. + +To move to the next screen, press either the enter or escape key. The "Escape" key or "ESC" key is usually located on the top left corner of the keyboard. + +This introduction will now allow you to easily configure your new system. For any questions which you do not know the answer for or would prefer to answer at another time, press the "Escape" key. + +For security reasons, we recommend that you start by changing the default password to something that is actually secret. + +Start by changing the password you used to login. This password is also used for administration tasks such as installing new software. + +To continue with the setup process, press the "Enter" key. + diff --git a/content/F123/en_US.UTF-8/quickstart2.txt b/content/F123/en_US.UTF-8/quickstart2.txt new file mode 100644 index 0000000..0ed53ff --- /dev/null +++ b/content/F123/en_US.UTF-8/quickstart2.txt @@ -0,0 +1,11 @@ +Initial F123Light configuration is now complete. + +If you wish to further customize your computer, please open 'Settings' on the main menu. You can reach the main menu by pressing Ctrl+Escape or Alt+F1 after this computer restarts. + +The "Settings" menu also has an easy option to update F123Light, but we strongly recommend that you only update this system when a new version is announced on our e-mail lists. To learn more about our project and subscribe to our lists, please visit our guide at: +https://guide.f123.org/ + +Remember, reader+Ctrl+G takes you to screen reader settings and reader+Ctrl+arrows allows for quick changes to speech volume, rate, and pitch. + +Please press 'Enter' to restart this computer. + diff --git a/content/F123/locales/ar_EG.UTF-8/about.txt b/content/F123/locales/ar_EG.UTF-8/about.txt new file mode 100644 index 0000000..bb78004 --- /dev/null +++ b/content/F123/locales/ar_EG.UTF-8/about.txt @@ -0,0 +1,2 @@ +F123Light Copyright F123 Consulting +Version 18.11.28 diff --git a/content/F123/locales/ar_EG.UTF-8/quickstart.txt b/content/F123/locales/ar_EG.UTF-8/quickstart.txt new file mode 100644 index 0000000..6fa984a --- /dev/null +++ b/content/F123/locales/ar_EG.UTF-8/quickstart.txt @@ -0,0 +1,29 @@ +Welcome to the F123Light Operating System! + +Since this is the first time you start your computer with F123Light, we will share with you introductory information on the screen reader, as well as present a few questions which will help you configure your system. + +The screen reading software reading this text is called Fenrir. Many commands that control Fenrir involve a special key, which we call the Fenrir key. The Fenrir key is the "Insert" key on your numeric keypad, tipically found on the right of most full-size desktop keyboards. + +You can hold "Fenrir+Control" and use the left and right arrow keys to select speech settings such as pitch, rate, or volume. Hold "Fenrir+Control" and use the up and down arrows to adjust the selected speech setting. + +To read by line, you can use the 7, 8, and 9 keys on your numeric keypad. Number 7 will read the previous line, 8 the current line, and 9 the next line. + +If you find that something is not reading like it should, try using highlight mode. You can access this by pressing "Fenrir+numpad_star". One place where this is useful is the menu in the text editor. To get back to cursor tracking, the default, simply press the same shortcut again. + +In the event the system stops speaking completely, you can use the Fenrir script key, sometimes called the Windows or Super key, in combination with shift+r to run the restore-accessibility command. This should almost never be needed, but is in place to provide a rescue should a configuration file get changed to an unusable state by accident. + +You may explore these and other commands without causing any changes to the computer by entering Fenrir's learn mode by pressing "Fenrir+H". After entering "Fenrir+H", you can press any key combination you desire and the computer will describe its purpose. Once you press the "Escape" key, the screen will be active again and any key combination you press will actually work. + +Feel free to try "Insert+H" now, if you wish to explore the keyboard without causing this screen to change. + +To move to the next screen, press either the enter or escape key. The "Escape" key or "ESC" key is usually located on the top left corner of the keyboard. + + +This introduction will now allow you to easily configure your new system. For any questions which you do not know the answer for or would prefer to answer at another time, press the "Escape" key. + +For security reasons, we recommend that you start by changing the default passwords to something that is actually secret. + +Start by changing the password you used to login. This password is also used for administration tasks such as configuring your wireless network. + +To continue with the setup process, press the "Enter" key. + diff --git a/content/F123/locales/en_US.UTF-8/about.txt b/content/F123/locales/en_US.UTF-8/about.txt new file mode 100644 index 0000000..bb78004 --- /dev/null +++ b/content/F123/locales/en_US.UTF-8/about.txt @@ -0,0 +1,2 @@ +F123Light Copyright F123 Consulting +Version 18.11.28 diff --git a/content/F123/locales/en_US.UTF-8/quickstart.txt b/content/F123/locales/en_US.UTF-8/quickstart.txt new file mode 100644 index 0000000..6fa984a --- /dev/null +++ b/content/F123/locales/en_US.UTF-8/quickstart.txt @@ -0,0 +1,29 @@ +Welcome to the F123Light Operating System! + +Since this is the first time you start your computer with F123Light, we will share with you introductory information on the screen reader, as well as present a few questions which will help you configure your system. + +The screen reading software reading this text is called Fenrir. Many commands that control Fenrir involve a special key, which we call the Fenrir key. The Fenrir key is the "Insert" key on your numeric keypad, tipically found on the right of most full-size desktop keyboards. + +You can hold "Fenrir+Control" and use the left and right arrow keys to select speech settings such as pitch, rate, or volume. Hold "Fenrir+Control" and use the up and down arrows to adjust the selected speech setting. + +To read by line, you can use the 7, 8, and 9 keys on your numeric keypad. Number 7 will read the previous line, 8 the current line, and 9 the next line. + +If you find that something is not reading like it should, try using highlight mode. You can access this by pressing "Fenrir+numpad_star". One place where this is useful is the menu in the text editor. To get back to cursor tracking, the default, simply press the same shortcut again. + +In the event the system stops speaking completely, you can use the Fenrir script key, sometimes called the Windows or Super key, in combination with shift+r to run the restore-accessibility command. This should almost never be needed, but is in place to provide a rescue should a configuration file get changed to an unusable state by accident. + +You may explore these and other commands without causing any changes to the computer by entering Fenrir's learn mode by pressing "Fenrir+H". After entering "Fenrir+H", you can press any key combination you desire and the computer will describe its purpose. Once you press the "Escape" key, the screen will be active again and any key combination you press will actually work. + +Feel free to try "Insert+H" now, if you wish to explore the keyboard without causing this screen to change. + +To move to the next screen, press either the enter or escape key. The "Escape" key or "ESC" key is usually located on the top left corner of the keyboard. + + +This introduction will now allow you to easily configure your new system. For any questions which you do not know the answer for or would prefer to answer at another time, press the "Escape" key. + +For security reasons, we recommend that you start by changing the default passwords to something that is actually secret. + +Start by changing the password you used to login. This password is also used for administration tasks such as configuring your wireless network. + +To continue with the setup process, press the "Enter" key. + diff --git a/content/F123/locales/pt_BR.UTF-8/about.txt b/content/F123/locales/pt_BR.UTF-8/about.txt new file mode 100644 index 0000000..bb78004 --- /dev/null +++ b/content/F123/locales/pt_BR.UTF-8/about.txt @@ -0,0 +1,2 @@ +F123Light Copyright F123 Consulting +Version 18.11.28 diff --git a/content/F123/locales/pt_BR.UTF-8/quickstart.txt b/content/F123/locales/pt_BR.UTF-8/quickstart.txt new file mode 100644 index 0000000..aed1d63 --- /dev/null +++ b/content/F123/locales/pt_BR.UTF-8/quickstart.txt @@ -0,0 +1,29 @@ +Bem-vindo ao Sistema Operacional F123Light! + +Como é a primeira vez que você inicia seu computador com o F123Light, daremos a você informações introdutórias sobre o leitor de telas e faremos algumas perguntas que o ajudarão a configurar o sistema. + +O software leitor de telas que lê este texto é chamado Fenrir. Muitos comandos que controlam o Fenrir envolvem uma tecla especial, que por vezes chamamos de Tecla Fenrir. A Tecla Fenrir é a tecla "Insert" do teclado numérico, que se encontra normalmente à direita na maioria dos teclados de desktop de tamanho padrão. + +Por exemplo, manter "Fenrir" pressionada e apertar a Seta Cima aumenta o volume. "Fenrir+Seta Baixo" diminui o volume. Pode usar também "Fenrir+Esquerda" e "Fenrir+Direita" para reduzir e aumentar a velocidade com que o Fenrir lê a tela para você. + +Para ler por linha, pode usar as teclas 7, 8 e 9 do teclado numérico. O número 7 lê a linha anterior, 8 a linha atual e 9 a próxima linha. + +Você pode explorar estes e outros comandos sem fazer qualquer alteração no computador entrando no modo de aprendizado do Fenrir, pressionando "Fenrir+1". Após apertar "Fenrir+1",. Você pode pressionar qualquer combinação de teclas que desejar e o computador descreverá o propósito da mesma. Assim que você pressionar a tecla "Escape", a tela ficará ativa novamente e qualquer tecla que você pressionar vai realmente funcionar. + +In the event the system stops speaking completely, you can use the Fenrir script key, sometimes called the Windows or Super key, in combination with shift+r to run the restore-accessibility command. This should almost never be needed, but is in place to provide a rescue should a configuration file get changed to an unusable state by accident. + +You may explore these and other commands without causing any changes to the computer by entering Fenrir's learn mode by pressing "Fenrir+H". After entering "Fenrir+H", you can press any key combination you desire and the computer will describe its purpose. Once you press the "Escape" key, the screen will be active again and any key combination you press will actually work. + +Feel free to try "Insert+H" now, if you wish to explore the keyboard without causing this screen to change. + +To move to the next screen, press either the enter or escape key. The "Escape" key or "ESC" key is usually located on the top left corner of the keyboard. + + +This introduction will now allow you to easily configure your new system. For any questions which you do not know the answer for or would prefer to answer at another time, press the "Escape" key. + +For security reasons, we recommend that you start by changing the default passwords to something that is actually secret. + +Start by changing the password you used to login. This password is also used for administration tasks such as configuring your wireless network. + +To continue with the setup process, press the "Enter" key. + diff --git a/content/F123/locales/tips/ar_EG.UTF-8/barnard.txt b/content/F123/locales/tips/ar_EG.UTF-8/barnard.txt new file mode 100644 index 0000000..9dd276e --- /dev/null +++ b/content/F123/locales/tips/ar_EG.UTF-8/barnard.txt @@ -0,0 +1 @@ +Press F1 to toggle transmit mode, tab moves between chat and channel/user list, f10 exits. Highlight mode is useful in the channel/user list. diff --git a/content/F123/locales/tips/ar_EG.UTF-8/nano.txt b/content/F123/locales/tips/ar_EG.UTF-8/nano.txt new file mode 100644 index 0000000..eb89330 --- /dev/null +++ b/content/F123/locales/tips/ar_EG.UTF-8/nano.txt @@ -0,0 +1,12 @@ +You can use Control+Home and Control+End to quickly go to the top and bottom of the document. +You can use Home and End to quickly go to the beginning and end of the current line. +You can use Alt+W to hear how many words, lines, and characters your document has. +You can use F7 to spell check your document. +You can use Alt+Shift+Less than and Alt+Shift+Greater than to move to other documents which are opened on the text editor. +You can use Control+H to search and replace words, strings, or patterns. +You can use Control+F to search and find something on your document. +You can use Alt+C to let the editor try to complete a word you have started typing. You must have used that same word somewhere else on the same document. +You can hold down the Shift key and then move the cursor to highlight any text and then copy it with Control+C or cut it with Control+X. Then you can paste it in a new location in that document with Control+V. +If you have more than one document opened at the same time, you can use Alt+Spacebar to go to the next document or Control+Spacebar to go to the previous document. +You can use Control+O to open a new document. +In some places on this editor, the word "buffer" is used in place of the word "file", but it refers to the same thing. diff --git a/content/F123/locales/tips/ar_EG.UTF-8/ne.txt b/content/F123/locales/tips/ar_EG.UTF-8/ne.txt new file mode 100644 index 0000000..3b727cd --- /dev/null +++ b/content/F123/locales/tips/ar_EG.UTF-8/ne.txt @@ -0,0 +1,11 @@ +Pressing home while in the middle or end of a line goes to the begenning of the line. If you are already at the beginning of the line focus will jump to the top of the document. +Pressing end while in the middle or begenning of a line goes to the end of the line. If you are already at the end of the line focus will jump to the bottom of the document. +You can use Alt+W to hear how many words, lines, and characters your document has. +You can use F7 to spell check your document. +You can use Alt+Shift+Less than and Alt+Shift+Greater than to move to other documents which are opened on the text editor. +You can use Control+H to search and replace words, strings, or patterns. +You can use Control+F to search and find something on your document. +You can use Alt+C to let the editor try to complete a word you have started typing. You must have used that same word somewhere else on the same document. +You can mark the begenning of a block of text with control+B then move the cursor to the end of the text and then copy it with Control+C or cut it with Control+X. Then you can paste it in a new location in that document with Control+V. +You can use Control+O to open a new document. +In some places on this editor, the word "buffer" is used in place of the word "file", but it refers to the same thing. diff --git a/content/F123/locales/tips/en_US.UTF-8/barnard.txt b/content/F123/locales/tips/en_US.UTF-8/barnard.txt new file mode 100644 index 0000000..9dd276e --- /dev/null +++ b/content/F123/locales/tips/en_US.UTF-8/barnard.txt @@ -0,0 +1 @@ +Press F1 to toggle transmit mode, tab moves between chat and channel/user list, f10 exits. Highlight mode is useful in the channel/user list. diff --git a/content/F123/locales/tips/en_US.UTF-8/nano.txt b/content/F123/locales/tips/en_US.UTF-8/nano.txt new file mode 100644 index 0000000..eb89330 --- /dev/null +++ b/content/F123/locales/tips/en_US.UTF-8/nano.txt @@ -0,0 +1,12 @@ +You can use Control+Home and Control+End to quickly go to the top and bottom of the document. +You can use Home and End to quickly go to the beginning and end of the current line. +You can use Alt+W to hear how many words, lines, and characters your document has. +You can use F7 to spell check your document. +You can use Alt+Shift+Less than and Alt+Shift+Greater than to move to other documents which are opened on the text editor. +You can use Control+H to search and replace words, strings, or patterns. +You can use Control+F to search and find something on your document. +You can use Alt+C to let the editor try to complete a word you have started typing. You must have used that same word somewhere else on the same document. +You can hold down the Shift key and then move the cursor to highlight any text and then copy it with Control+C or cut it with Control+X. Then you can paste it in a new location in that document with Control+V. +If you have more than one document opened at the same time, you can use Alt+Spacebar to go to the next document or Control+Spacebar to go to the previous document. +You can use Control+O to open a new document. +In some places on this editor, the word "buffer" is used in place of the word "file", but it refers to the same thing. diff --git a/content/F123/locales/tips/en_US.UTF-8/ne.txt b/content/F123/locales/tips/en_US.UTF-8/ne.txt new file mode 100644 index 0000000..3b727cd --- /dev/null +++ b/content/F123/locales/tips/en_US.UTF-8/ne.txt @@ -0,0 +1,11 @@ +Pressing home while in the middle or end of a line goes to the begenning of the line. If you are already at the beginning of the line focus will jump to the top of the document. +Pressing end while in the middle or begenning of a line goes to the end of the line. If you are already at the end of the line focus will jump to the bottom of the document. +You can use Alt+W to hear how many words, lines, and characters your document has. +You can use F7 to spell check your document. +You can use Alt+Shift+Less than and Alt+Shift+Greater than to move to other documents which are opened on the text editor. +You can use Control+H to search and replace words, strings, or patterns. +You can use Control+F to search and find something on your document. +You can use Alt+C to let the editor try to complete a word you have started typing. You must have used that same word somewhere else on the same document. +You can mark the begenning of a block of text with control+B then move the cursor to the end of the text and then copy it with Control+C or cut it with Control+X. Then you can paste it in a new location in that document with Control+V. +You can use Control+O to open a new document. +In some places on this editor, the word "buffer" is used in place of the word "file", but it refers to the same thing. diff --git a/content/F123/locales/tips/pt_BR.UTF-8/barnard.txt b/content/F123/locales/tips/pt_BR.UTF-8/barnard.txt new file mode 100644 index 0000000..9dd276e --- /dev/null +++ b/content/F123/locales/tips/pt_BR.UTF-8/barnard.txt @@ -0,0 +1 @@ +Press F1 to toggle transmit mode, tab moves between chat and channel/user list, f10 exits. Highlight mode is useful in the channel/user list. diff --git a/content/F123/locales/tips/pt_BR.UTF-8/nano.txt b/content/F123/locales/tips/pt_BR.UTF-8/nano.txt new file mode 100644 index 0000000..eb89330 --- /dev/null +++ b/content/F123/locales/tips/pt_BR.UTF-8/nano.txt @@ -0,0 +1,12 @@ +You can use Control+Home and Control+End to quickly go to the top and bottom of the document. +You can use Home and End to quickly go to the beginning and end of the current line. +You can use Alt+W to hear how many words, lines, and characters your document has. +You can use F7 to spell check your document. +You can use Alt+Shift+Less than and Alt+Shift+Greater than to move to other documents which are opened on the text editor. +You can use Control+H to search and replace words, strings, or patterns. +You can use Control+F to search and find something on your document. +You can use Alt+C to let the editor try to complete a word you have started typing. You must have used that same word somewhere else on the same document. +You can hold down the Shift key and then move the cursor to highlight any text and then copy it with Control+C or cut it with Control+X. Then you can paste it in a new location in that document with Control+V. +If you have more than one document opened at the same time, you can use Alt+Spacebar to go to the next document or Control+Spacebar to go to the previous document. +You can use Control+O to open a new document. +In some places on this editor, the word "buffer" is used in place of the word "file", but it refers to the same thing. diff --git a/content/F123/locales/tips/pt_BR.UTF-8/ne.txt b/content/F123/locales/tips/pt_BR.UTF-8/ne.txt new file mode 100644 index 0000000..3b727cd --- /dev/null +++ b/content/F123/locales/tips/pt_BR.UTF-8/ne.txt @@ -0,0 +1,11 @@ +Pressing home while in the middle or end of a line goes to the begenning of the line. If you are already at the beginning of the line focus will jump to the top of the document. +Pressing end while in the middle or begenning of a line goes to the end of the line. If you are already at the end of the line focus will jump to the bottom of the document. +You can use Alt+W to hear how many words, lines, and characters your document has. +You can use F7 to spell check your document. +You can use Alt+Shift+Less than and Alt+Shift+Greater than to move to other documents which are opened on the text editor. +You can use Control+H to search and replace words, strings, or patterns. +You can use Control+F to search and find something on your document. +You can use Alt+C to let the editor try to complete a word you have started typing. You must have used that same word somewhere else on the same document. +You can mark the begenning of a block of text with control+B then move the cursor to the end of the text and then copy it with Control+C or cut it with Control+X. Then you can paste it in a new location in that document with Control+V. +You can use Control+O to open a new document. +In some places on this editor, the word "buffer" is used in place of the word "file", but it refers to the same thing. diff --git a/content/F123/pt_BR.UTF-8/about.txt b/content/F123/pt_BR.UTF-8/about.txt new file mode 100644 index 0000000..63598bb --- /dev/null +++ b/content/F123/pt_BR.UTF-8/about.txt @@ -0,0 +1,2 @@ +F123Light Copyright F123 Consulting +Versão 18.11.28 diff --git a/content/F123/pt_BR.UTF-8/desktop.md b/content/F123/pt_BR.UTF-8/desktop.md new file mode 100644 index 0000000..2a7b25b --- /dev/null +++ b/content/F123/pt_BR.UTF-8/desktop.md @@ -0,0 +1 @@ +Use as teclas de setas para explorar o ambiente. Use Control+Escape para acessar o menu. diff --git a/content/F123/pt_BR.UTF-8/quickstart1.txt b/content/F123/pt_BR.UTF-8/quickstart1.txt new file mode 100644 index 0000000..4d05394 --- /dev/null +++ b/content/F123/pt_BR.UTF-8/quickstart1.txt @@ -0,0 +1,30 @@ +Bem-vindo ao Sistema Operacional F123Light! + +Como é a primeira vez que você está ligando seu computador com o F123Light, daremos uma rápida apresentação do leitor de telas, e faremos algumas perguntas que o auxiliarão a configurar seu sistema. + +O F123Light possui dois leitores de tela: o Orca e o Fenrir. O Fenrir é mais utilizado por quem deseja explorar a linha de comandos, Enquanto a maioria estará utilizando o Orca. Como desejamos que você se sinta em casa, modificamos os comandos de teclado para ambos, Orca e Fenrir, para que se assemelhem o máximo possível aos comandos utilizados no leitor de tela NVDA. Também selecionamos outros programas, como o editor de textos e o gerenciador de arquivos, de modo que quem tenha utilizado o Windows anteriormente faça uma transição tranquila. + +Como no NVDA, no Orca e no Fenrir ambas as teclas Caps Lock e Insert podem ser utilizadas para ativar comandos do leitor de telas. + +Já que temos dois leitores de tela, para facilitar, ao invés de chamar tecla Orca ou tecla Fenrir, iremos chamar a tecla modificadora do leitor de tela simplesmente de "leitor". Então, por exemplo, para entrar em "modo de aprendizado", que lhe permite ouvir o nome e a função de qualquer tecla pressionada, pressione leitor+1, que significa que você deve manter pressionada a tecla Insert ou Caps Lock, pressionar o número um em seu teclado, e então soltar todas as teclas. + +Se você pressionou leitor+1, você poderá ouvir o nome e a função de qualquer tecla ou combinação de teclas sem causar nenhuma alteração no seu computador. Quando tiver aprendido o necessário, poderá pressionar 'ESC' ou 'Escape' para que o teclado volte a funcionar normalmente. + +Você pode começar ajustando o volume e a velocidade da fala para os níveis que achar mais confortáveis. Como no NVDA, você pode segurar "leitor+Control" e utilizar as setas esquerda e direita para encontrar o parâmetro tal como volume, velocidade ou tom. Segurando "leitor+Control", utilize setas acima e abaixo para ajustar o parâmetro, aumentando ou reduzindo seu valor. + +Uma leitura por linha pode ser feita com as teclas 7, 8 e 9 do seu teclado numérico. O número 7 irá ler a linha anterior, 8 a linha atual enquanto 9 lê a próxima linha. Para quem estiver utilizando um teclado ao estilo computador portátil, o mesmo pode ser conseguido pressionando o CapsLock e pressionando U, I e O, para a linha anterior, a linha atual e a próxima linha. J, K e L, para a palavra anterior, palavra atual e próxima palavra. + +Para alternar entre o layout de teclado de computador de mesa e computador portátil, simplesmente pressione leitor+Shift da esquerda. + +Se acontecer de o sistema parar de falar completamente, você pode utilizar um atalho especial para restaurar as configurações da fala para o "padrão de fábrica", apenas pressione leitor+Alt+S. + +Para prosseguir para a próxima tela, pressione enter ou escape. A tecla "Escape" ou "ESC" normalmente encontra-se no canto superior esquerdo do teclado. + +Agora vamos configurar seu sistema. São apenas algumas perguntas simples. Se você não souber como respondê-las ou se preferir respondê-las mais tarde, simplesmente pressione a tecla 'Escape'. + +Por motivos de segurança, recomendamos que você comece por alterar a senha padrão para algo que seja realmente secreto. + +Comece alterando a senha de login. Esta senha também é utilizada para tarefas administrativas como instalar novos programas. + +Para continuar o processo de configuração, pressione a tecla Enter. + diff --git a/content/F123/pt_BR.UTF-8/quickstart2.txt b/content/F123/pt_BR.UTF-8/quickstart2.txt new file mode 100644 index 0000000..3d0e47a --- /dev/null +++ b/content/F123/pt_BR.UTF-8/quickstart2.txt @@ -0,0 +1,6 @@ +As configurações iniciais do F123Light foram concluídas. + +Se você deseja personalizar ainda mais o seu computador, abra o menu 'Configurações' no menu principal. Você pode acessar o menu principal pressionando Ctrl+Escape ou Alt+F1 após o computador reiniciar. + +Pressione 'Enter' para reiniciar o computador agora. + diff --git a/content/F123/tips/en_US.UTF-8/barnard.txt b/content/F123/tips/en_US.UTF-8/barnard.txt new file mode 100644 index 0000000..9dd276e --- /dev/null +++ b/content/F123/tips/en_US.UTF-8/barnard.txt @@ -0,0 +1 @@ +Press F1 to toggle transmit mode, tab moves between chat and channel/user list, f10 exits. Highlight mode is useful in the channel/user list. diff --git a/content/F123/tips/en_US.UTF-8/nano.txt b/content/F123/tips/en_US.UTF-8/nano.txt new file mode 100644 index 0000000..eb89330 --- /dev/null +++ b/content/F123/tips/en_US.UTF-8/nano.txt @@ -0,0 +1,12 @@ +You can use Control+Home and Control+End to quickly go to the top and bottom of the document. +You can use Home and End to quickly go to the beginning and end of the current line. +You can use Alt+W to hear how many words, lines, and characters your document has. +You can use F7 to spell check your document. +You can use Alt+Shift+Less than and Alt+Shift+Greater than to move to other documents which are opened on the text editor. +You can use Control+H to search and replace words, strings, or patterns. +You can use Control+F to search and find something on your document. +You can use Alt+C to let the editor try to complete a word you have started typing. You must have used that same word somewhere else on the same document. +You can hold down the Shift key and then move the cursor to highlight any text and then copy it with Control+C or cut it with Control+X. Then you can paste it in a new location in that document with Control+V. +If you have more than one document opened at the same time, you can use Alt+Spacebar to go to the next document or Control+Spacebar to go to the previous document. +You can use Control+O to open a new document. +In some places on this editor, the word "buffer" is used in place of the word "file", but it refers to the same thing. diff --git a/content/F123/tips/en_US.UTF-8/ne.txt b/content/F123/tips/en_US.UTF-8/ne.txt new file mode 100644 index 0000000..3b727cd --- /dev/null +++ b/content/F123/tips/en_US.UTF-8/ne.txt @@ -0,0 +1,11 @@ +Pressing home while in the middle or end of a line goes to the begenning of the line. If you are already at the beginning of the line focus will jump to the top of the document. +Pressing end while in the middle or begenning of a line goes to the end of the line. If you are already at the end of the line focus will jump to the bottom of the document. +You can use Alt+W to hear how many words, lines, and characters your document has. +You can use F7 to spell check your document. +You can use Alt+Shift+Less than and Alt+Shift+Greater than to move to other documents which are opened on the text editor. +You can use Control+H to search and replace words, strings, or patterns. +You can use Control+F to search and find something on your document. +You can use Alt+C to let the editor try to complete a word you have started typing. You must have used that same word somewhere else on the same document. +You can mark the begenning of a block of text with control+B then move the cursor to the end of the text and then copy it with Control+C or cut it with Control+X. Then you can paste it in a new location in that document with Control+V. +You can use Control+O to open a new document. +In some places on this editor, the word "buffer" is used in place of the word "file", but it refers to the same thing. diff --git a/content/F123/tips/pt_BR.UTF-8/nano.txt b/content/F123/tips/pt_BR.UTF-8/nano.txt new file mode 100644 index 0000000..9fdab88 --- /dev/null +++ b/content/F123/tips/pt_BR.UTF-8/nano.txt @@ -0,0 +1,12 @@ +Você pode usar Control+Home e Control+End para ir rapidamente ao topo e ao fim do documento. +Pode usar Home e End para ir rapidamente ao início e ao fim da linha atual. +Pode usar Alt+W para ouvir quantas palavras, linhas e caracteres o documento possui. +Pode usar F7 para verificar erros de ortografia no documento. +Pode usar Alt+Shift+menor e Alt+Shift+maior para mover-se para outros documentos que estejam abertos no editor de texto. +Pode usar Control+H para localizar e substituir palavras, cadeias ou padrões. +Pode usar Control+F para procurar e achar alguma coisa no documento. +Pode usar Alt+C para que o editor tente completar uma palavra que você começou a digitar. Você já tem que ter usado essa mesma palavra em algum lugar do mesmo documento. +Pode manter pressionada a tecla Shift e então mover o cursor para selecionar algum texto e aí copiá-lo com Control+C ou cortá-lo com Control+X. Aí pode colá-lo num novo local do documento com Control+V. +Caso você tenha mais de um documento aberto ao mesmo tempo, pode usar Alt+Barra de Espaço para ir ao próximo documento ou Control+Barra de Espaço para ir ao documento anterior. +Pode usar Control+O para abrir um novo documento. +Em algumas partes deste editor, a palavra "buffer" é usada no lugar da palavra "arquivo", mas ela se refere à mesma coisa. diff --git a/content/LICENSE b/content/LICENSE new file mode 100644 index 0000000..24bdbe7 --- /dev/null +++ b/content/LICENSE @@ -0,0 +1,4 @@ +--- + +This work by [F123 Consulting](https://f123.org/en/) is licensed under a [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://creativecommons.org/licenses/by-nc-sa/4.0/). We also have another way for you to freely use our content, if this license does not meet your needs. [Contact us for alternative licensing options](mailto:license@f123.org). + diff --git a/content/README.md b/content/README.md new file mode 100644 index 0000000..151638b --- /dev/null +++ b/content/README.md @@ -0,0 +1,14 @@ +# Adding languages. + +## F123Light + +Add the new language to the languages array in build/F123Light.conf, for example: + + 'es_ES.UTF-8' + + +## files-F123Light + +In select language, add the new language to the array. Make sure the defaults will work for the new language, if not add to the case statement so that files will be properly configured. + + diff --git a/content/crowdin.yml b/content/crowdin.yml new file mode 100644 index 0000000..bd48d55 --- /dev/null +++ b/content/crowdin.yml @@ -0,0 +1,7 @@ +files: + - source: /pt_BR/**/*.md + translation: /locales/%locale_with_underscore%/**/%original_file_name% + - source: /F123/en_US.UTF-8/**/*.txt + translation: /F123/locales/%locale_with_underscore%.UTF-8/**/%original_file_name% + - source: /F123/tips/en_US.UTF-8/**/*.txt + translation: /F123/locales/tips/%locale_with_underscore%.UTF-8/**/%original_file_name% diff --git a/content/locales/ar_EG/index.md b/content/locales/ar_EG/index.md new file mode 100644 index 0000000..c537d80 --- /dev/null +++ b/content/locales/ar_EG/index.md @@ -0,0 +1,3 @@ +# Index + +@. Installation-and-Execution-of-Fenrir @. First-Steps-With-Fenrir @. Knowing-the-Computer@. First-Steps-With-Fenrir @. Operating-System @. Archiving @. Check-Directory @. Create-File @. Change-Directory @. Create-Directory @. Install-Packages @. Introduction-to-Irssi @. Messaging-With-Irssi @. Edition-With-Nano @. Nano-Navigation @. View-File-Content @. Using-Wget @. Play-Music-and-Video @. Using-Find @. Introduction-to-Markdown @. Emphasis-of-Texts @. Links-on-Markdown @. Convert-to-Markdown @. Manipulate-Files @. Compression-With-Tar @. Compression-With-Zip @. Using-Grep @. Protocols @. Servers @. Using-Rsync @. Using-SSH @. Using-Diff @. Introduction-to-Mutt @. Contact-List @. Lists-in-Markdown @. Footnotes @. Using-SFTP @. Using-Touch @. Advanced-Package-Management-Options @. Using-Alias @. Permissions @. Assign-Permission @. Change-File-Owner @. Introduction-to-Partitions @. File-System @. Identifying-Disks-and-Partitions @. Disk-Formatting @. Introduction-to-git @. Git-Configuration @. Cloning-and-Adding-Files @. Commit-Pull-and-Push @. Using-Screen @. Using-Sha1Sum @. Custom-Mutt-Shortcuts @. Configure-Fenrir-From-The-Settings-File @. Configure-Fenrir-From-The-Command-Line \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/compression-and-decompression/compactacao-e-descompactacao-com-tar-06-11-2017.md b/content/locales/ar_EG/lessons/compression-and-decompression/compactacao-e-descompactacao-com-tar-06-11-2017.md new file mode 100644 index 0000000..c936d54 --- /dev/null +++ b/content/locales/ar_EG/lessons/compression-and-decompression/compactacao-e-descompactacao-com-tar-06-11-2017.md @@ -0,0 +1,35 @@ +# Compactação e Descompactação + +## Compactação e Descompactação Com Tar + +Agora, veremos como trabalhar com compactação e descompactação com um padrão de compressão bastante popular no Linux, o "Tar". Vale notar que o "tar" sozinho não serve para compactar arquivos. Ele apenas os empacota, afim de facilitar a transferência. Portanto, utilizaremos o "tar" em conjunto com o "zip", o primeiro empacota e o segundo compacta. + +## Compactação + +Para compactar o diretório Documentos, utilizamos o seguinte comando: + +* tar -cz Documentos > doc.tar.gz* O parâmetro "-cz" indica que o arquivo "tar" será criado (-c), e será compactado pelo "zip" (-z) usando redirecionamento, representado pelo sinal de maior (>). Observação: O "tar" já é automaticamente recursivo. + +## Descompactação + +Para descompactar o arquivo ".tar.gz" que foi criado, usamos o seguinte comando: *tar -xz < doc.tar.gz* Perceba que há apenas duas diferenças em relação ao comando de compactação, a presença de "-x" de "extract", para extrair os arquivos e a direção do redirecionamento, representada pelo sinal de menor (<), que agora em vez de indicar saída de dados, indica entrada de dados. + +## Eliminando o Redirecionamento + +Trabalhar com redirecionamento não é uma boa ideia. Para resolver isso, o "tar" possui o parâmetro "-f". Exemplo: *tar -czf doc.tar.gz Documentos/* Desse modo, primeiro temos o nome do arquivo a ser gerado, e depois o diretório a compactar. + +Para descompactar, usamos o comando a seguir: *tar -xzf doc.tar.gz* + +O "tar" não é verborrágico por padrão, como o "zip". Mas se quiser exibir as informações, basta usar o parâmetro "-v". Exemplo: *tar -vxzf doc.tar.gz* + +### Exercícios + +1. Escolha um diretório para compactar e vá até seu diretório pai. + +2. Compacte o diretório usando o "tar" com redirecionamento e exiba as informações na tela. + +3. Remova o diretório e descompacte o arquivo com redirecionamento. + +4. Remova o arquivo anterior e compacte o diretório sem redirecionamento. + +5. Remova novamente o diretório e descompacte sem redirecionamento. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/compression-and-decompression/compactacao-e-descompactacao-com-zip-06-11-2017.md b/content/locales/ar_EG/lessons/compression-and-decompression/compactacao-e-descompactacao-com-zip-06-11-2017.md new file mode 100644 index 0000000..4102f92 --- /dev/null +++ b/content/locales/ar_EG/lessons/compression-and-decompression/compactacao-e-descompactacao-com-zip-06-11-2017.md @@ -0,0 +1,27 @@ +# Compactação e Descompactação + +## Compactação e Descompactação com zip + +O Linux, por padrão, possui vários utilitários de compressão de arquivos. Compactar arquivos e diretórios é uma boa prática para realização de "backups". Veremos alguns comandos de compressão, começando pelo zip. + +Vamos compactar o diretório Documentos criado anteriormente. Ele possui atualmente dois arquivos de texto, dados e teste. Dentro do diretório, primeiramente devemos usar o comando: *cd ..* Para voltar ao diretório pai. Para compactar um arquivo com o zip, é necessário adicionar o parâmetro "-r", caso contrário o arquivo compactado terá apenas um diretório vazio. O comando é composto pelo zip, seu parâmetro de recursividade, o nome do arquivo zip que pretende gerar, e, por último, o diretório a ser compactado no arquivo. Exemplo: *zip -r doc.zip Documentos/* O arquivo compactado doc.zip será gerado. Será exibido cada arquivo adicionado no arquivo compactado. + +Se quiser verificar o conteúdo do arquivo compactado, pode usar o comando: *unzip -l doc.zip* + +Para descompactar o arquivo, use o seguinte comando: *unzip doc.zip* + +Se o arquivo for descompactado no mesmo local e o diretório ainda existir, seu conteúdo será sobrescrito. Experimente remover o diretório anteriormente compactado antes de descompactar o arquivo gerado. Lembre-se de usar o comando: *ls* para verificar os resultados. + +Os comandos: *zip* e *unzip* são muito verborrágicos, ou seja, imprimem muita informação na tela. Se preferir ocultar essas mensagens, utilize o parâmetro "-q". Exemplos: *zip -rq doc.zip Documentos/* *unzip -q doc.zip* No caso do "zip", os parâmetros "-q" e "-r" podem ficar juntos, formando "-rq". + +### Exercícios + +1. Escolha um diretório para compactar. A partir dele, volte para o diretório pai. + +2. Compacte o diretório com todo o seu conteúdo. + +3. Verifique o conteúdo do arquivo compactado. + +4. Apague o diretório e descompacte o arquivo gerado. + +5. Utilize o parâmetro e oculte as mensagens da tela. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/concepts/conceito-de-arquivo-e-diretorio-29-11-2017.md b/content/locales/ar_EG/lessons/concepts/conceito-de-arquivo-e-diretorio-29-11-2017.md new file mode 100644 index 0000000..2aa1f45 --- /dev/null +++ b/content/locales/ar_EG/lessons/concepts/conceito-de-arquivo-e-diretorio-29-11-2017.md @@ -0,0 +1,21 @@ +# Conceitos Básicos + +## Conceito de Arquivo e Diretório + +## Arquivo + +Um arquivo é um recurso computacional para armazenar informações. O arquivo é durável, ou seja, continua disponível para a utilização mesmo após os programas em execução terem sido finalizados Arquivos de computador são o equivalente moderno dos documentos em papel, que tradicionalmente são armazenados em arquivos de escritórios e bibliotecas, sendo essa a origem do termo. O arquivo possui alguns dados que o identificam: Nome do arquivo: Damos ao criar um arquivo novo. Tamanho: O espaço que ele ocupa na mídia de armazenamento do computador. Extenção: Indica quais os programas podem abrir, ler e gravar no arquivo. A questão de extenção varia por sistema operacional, já que ele é o responsável por implementar o sistema de arquivos. O Linux, por exemplo, não se importa com a extenção do arquivo, deixando a responsabilidade de interpretá-lo corretamente para o programa que o abrir. + +## Diretório + +O diretório (também chamado de pasta), é considerado um grande arquivo, já que armazena várias informações. Armazena outros diretórios (subdiretórios, já que estão dentro de outro diretório) e arquivos. É uma maneira eficiente de organizar e separar as informações no computador. No Linux, o diretório principal é o "/", também conhecido como "root" ou raiz. Todos os outros subdiretórios e arquivos ficam dentro dele. Possui também um nome e tamanho, o tipo é "diretório". + +### Exercícios + +1. O que é um arquivo? + +2. Qual a origem do termo "arquivo"? + +3. Por que o diretório pode ser considerado como um tipo de arquivo? + +4. Cite um exemplo de sistema operacional que se importe com a extenção de cada arquivo. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/concepts/conhecendo-o-computador-28-11-2017.md b/content/locales/ar_EG/lessons/concepts/conhecendo-o-computador-28-11-2017.md new file mode 100644 index 0000000..f1d2346 --- /dev/null +++ b/content/locales/ar_EG/lessons/concepts/conhecendo-o-computador-28-11-2017.md @@ -0,0 +1,37 @@ +# Conceitos Básicos + +## Conhecendo o Computador + +O computador é uma máquina capaz de realizar qualquer tipo de computação, ou seja, processar e armazenar informações, realizar cálculos, dos básicos aos científicos, desenho, tratamento de imagens, entretenimento e cultura. Os computadores pessoais e laptops são os aparelhos mais populares quando nos referimos a computador, mas robôs, smartphones (celulares inteligentes) e câmeras também são bons exemplos. + +## Parte Física e Lógica + +O computador possui o hardware (parte física) e software (parte lógica. Os hardwares são todos os componentes físicos da máquina: Processador, memória, HD, teclado, caixas de som, etc. Os softwares são os programas instalados que fazem a máquina funcionar e executar tarefas específicas: O sistema operacional, o mais importante de todos, pois é ele que gerencia todos os outros programas e recursos do computador, reprodutor de áudio e vídeo, editor de textos, etc. + +## Principais Componentes Físicos + +É importante ressaltar que um computador é composto por dois tipos de dispositivos físicos: Dispositivos de entrada (input em inglês) e saída (output). Dispositivos de entrada: Responsáveis pela comunicação do homem com a máquina. Exemplos: Teclado, microfone e scanner. Dispositivos de saída: Responsáveis pela comunicação da máquina com o homem. Exemplos: Monitor de vídeo, caixas de som e impressora. + +## CPU + +CPU é a sigla em inglês de "Central Processing unit" (Unidade Central de Processamento). É o processador do computador, o componente responsável por realizar cálculos e processar informações. A velocidade do seu computador está diretamente ligada à velocidade desse componente. + +## RAM + +RAM é a sigla em inglês de "Random Access Memory" (Memória de Acesso Aleatório). Ela não armazena informações de forma permanente, é apenas um espaço de trabalho temporário. Por exemplo, quando você executa um programa, as informações necessárias ficam na memória RAM, e quando o programa deixa de ser utilizado, as informações referentes a ele são apagadas. Quando o computador é desligado, se ainda existir alguma informação na RAM, esta é apagada. + +## HD + +HD é a sigla em inglês de "Hard Disk" (Disco Rígido). É a memória permanente do computador, onde ficam armazenados o sistema operacional, programas e todos os arquivos pessoais do usuário. Não se apaga ao desligar o computador. + +### Exercícios + +1. Cite outros dois exemplos de dispositivos de entrada de dados. + +2. Cite outros dois exemplos de dispositivos de saída de dados. + +3. Cite dois exemplos de equipamentos que podem ser considerados como computadores. + +4. Conhecendo os dispositivos de entrada e saída em um computador convencional, quais são os dispositivos de entrada e saída de dados em um celular? + +5. Cite três exemplos de dispositivos de armazenamento de dados de forma permanente. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/concepts/permissoes-18-01-2018.md b/content/locales/ar_EG/lessons/concepts/permissoes-18-01-2018.md new file mode 100644 index 0000000..3002d49 --- /dev/null +++ b/content/locales/ar_EG/lessons/concepts/permissoes-18-01-2018.md @@ -0,0 +1,13 @@ +# Conceitos + +## Permissões + +As permissões são usadas para definir quem pode acessar determinados arquivos ou diretórios, assim mantendo segurança e organização em seu sistema. Cada arquivo ou diretório tem três permissões: (Usuário Dono) proprietário do arquivo, (Grupo Dono) um grupo com vários usuários e (Outros) outros usuários em geral. O comando "ls -l" mostra uma listagem detalhada com todas as permissões dos arquivos e diretórios no diretório corrente, onde: r: Representa leitura. w: Representa gravação. x: Representa execução Como as permissões são divididas em três, aparece da seguinte forma: (rwx)(rwx)(rwx) Nesse exemplo, o dono, o grupo e os demais usuários tem permissão de ler, gravar e executar. É possível definir as permissões por meio de letras ou números, mas será explicado em outra lição. + +### Exercícios + +1. Qual a finalidade do uso de permissões? + +2. Como as permissões são divididas e para quais tipos de usuários? + +3. O que representam as letras "rwx"? \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/concepts/protocolo-29-11-2017.md b/content/locales/ar_EG/lessons/concepts/protocolo-29-11-2017.md new file mode 100644 index 0000000..78c70d5 --- /dev/null +++ b/content/locales/ar_EG/lessons/concepts/protocolo-29-11-2017.md @@ -0,0 +1,41 @@ +# Conceitos Básicos + +## Protocolo + +Protocolo é um termo muito comum na informática. Mesmo que não pareça, seu significado é simples. O protocolo estabelece um padrão de comunicação, ou seja, regras para que dois programas diferentes consigam trocar informações. É como um idioma para o ser humano. Para que duas pessoas de países diferentes consigam se comunicar, é preciso que ambas conheçam um idioma (protocolo) em comum, caso contrário não é possível compreender um ao outro. O protocolo segue o mesmo raciocínio. Abaixo serão listados os protocolos mais comuns. + +## HTTP + +HTTP é a sigla em inglês de "HyperText Transfer Protocol" (Protocolo de Transferência de Hipertexto). É utilizado para exibir páginas HTML, os sites. Por isso todo endereço de site começa em: http:// e logo depois vem o endereço. É o HTTP que se comunica com o servidor para exibir a página que queremos acessar. + +## IP + +IP é a sigla em inglês de "Internet Protocol" (Protocolo de Internet). É uma identificação única para cada computador conectado. Pode ser comparado a um documento de identidade, por exemplo. O HTTP, como foi visto acima, depende do IP, pois é preciso saber qual a identificação da sua máquina e do servidor para estabelecer a comunicação + +## TCP. + +TCP é a sigla em inglês de "Transmission Control Protocol" (Protocolo de Controle de Transmição). Ele é o principal protocolo para enviar e receber informações, já que é o protocolo de controle de transmição. A maioria dos outros protocolos dependem do TCP. + +## SMTP + +SMTP é a sigla em inglês de "Simple Mail Transfer Protocol " (Protocolo de Transferência de Correio Simples). Esse protocolo é responsável por enviar e-mails na Internet. + +## POP3 + +POP3 é a sigla em inglês de "Post Office Protocol" (Protocolo de Correios). O 3 refere-se apenas à versão do POP. É utilizado para receber os e-mails do servidor de e-mail para seu computador. + +## IRC + +IRC é a sigla em inglês de "Internet Relay Chat". É um protocolo de comunicação na Internet, utilizado principalmente como bate-papo (chat). + +## SSH + +SSH é a sigla em inglês de "Segure Shell" (Shell Seguro). Esse protocolo fornece um canal seguro para enviar e receber informações, principalmente quando se está conectado a uma rede insegura. + +### Exercícios + +1. Por que o protocolo pode ser comparado a um idioma? + +2. Cite outro protocolo para recebimento de e-mails. + +3. Conhece algum outro protocolo que não foi mencionado acima? Qual? Para que serve? \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/concepts/servidor-30-11-2017.md b/content/locales/ar_EG/lessons/concepts/servidor-30-11-2017.md new file mode 100644 index 0000000..d1cce4d --- /dev/null +++ b/content/locales/ar_EG/lessons/concepts/servidor-30-11-2017.md @@ -0,0 +1,11 @@ +# Conceitos Básicos + +## Servidor + +Um servidor é um computador ou um programa que oferece serviços a uma rede, que é chamada de cliente, por ser ela a solicitar os serviços. Esses serviços podem ser variados, como arquivos e e-mail, por exemplo. Essa arquitetura é conhecida como cliente-servidor. Geralmente é usada em redes de médio e grande porte, onde há várias máquinas, ou em redes onde a segurança é extremamente importante. O termo servidor é geralmente aplicado a um computador completo, mas pode ser simplesmente um programa ou parte dele que oferece serviços. O servidor pode servir a vários clientes, e um cliente pode solicitar serviços a vários servidores. + +### Exercícios + +1. O que é um servidor? + +2. Cite três exemplos de serviços que podem ser oferecidos por um servidor. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/concepts/sistema-operacional-30-11-2017.md b/content/locales/ar_EG/lessons/concepts/sistema-operacional-30-11-2017.md new file mode 100644 index 0000000..faa9336 --- /dev/null +++ b/content/locales/ar_EG/lessons/concepts/sistema-operacional-30-11-2017.md @@ -0,0 +1,13 @@ +# Conceitos Básicos + +## Sistema Operacional + +O sistema operacional é o programa (software) mais importante do computador. É através dele que conseguimos executar tarefas no computador, ou seja, é o meio de comunicação entre o usuário e a máquina. Ele organiza gerencia todos os outros programas que você instalar no computador e também gerencia os recursos físicos (hardware). Existem vários sistemas operacionais, cada um com suas próprias características, vantagens e desvantagens. Alguns exemplos: Linux, Mac OS, Windows, etc. O próprio Linux possui várias distribuições diferentes (também conhecidas como distros). Cada uma surgiu com objetivos e características específicas. Alguns exemplos são: Ubuntu, Fedora, Debian, etc. + +1. O que é um sistema operacional? + +2. Cite exemplos de outras distros do Linux. + +3. Cite exemplos de outros sistemas operacionais. + +4. Quais são os sistemas operacionais mais populares para celulares? \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/disks-and-partitions/formatacao-de-discos-08-02-2018.md b/content/locales/ar_EG/lessons/disks-and-partitions/formatacao-de-discos-08-02-2018.md new file mode 100644 index 0000000..b7d8a61 --- /dev/null +++ b/content/locales/ar_EG/lessons/disks-and-partitions/formatacao-de-discos-08-02-2018.md @@ -0,0 +1,19 @@ +# Discos e Partições + +## Formatação de Disco + +Formatar um disco é útil em várias situações: Quando for necessário reinstalar o sistema operacional, ou quando for preciso utilizar outro sistema de arquivos. Para isso, será usado o programa mkfs. O mkfs torna fácil formatar drives de vários tipos no Linux, tais como pendrives, cartões de memória, HDs, SSDs, etc. O aplicativo permite várias opções e parâmetros de uso, que lhe conferem grande versatilidade para realizar a tarefa. Observação: É importante ser cuidadoso. Não é possível desfazer a formatação depois. Portanto, tenha sempre a certeza de que está formatando o drive certo. + +## Como Formatar + +Para formatar um pendrive, localizado em /dev/sdc1, por exemplo, deve-se primeiro desmontar o dispositivo com o comando: *sudo umount /dev/sdc1* Agora já é possível criar um sistema de arquivos nele. O comando a seguir formata e apaga todo o conteúdo do dispositivo e cria um sistema de arquivos ext3 nele: *sudo mkfs -t ext3 -l pendrive -I /dev/sdc1* Se você não especificar o sistema de arquivos a ser construído no dispositivo, o mkfs vai usar o ext2 como padrão. Os parâmetros usados tem o seguinte significado: -t: Tipo de sistema de arquivos. -n: Nome que será dado ao novo disco formatado. + +Para usar o novo disco, é preciso montá-lo com o seguinte comando: mount /dev/sdc1 /mnt -t ext3 + +### Exercícios + +1. Utilize uma unidade de armazenamento vazia, como um pendrive, por exemplo, e formate. + +2. Configure o sistema de arquivos ext4. + +3. Utilize a unidade formatada para armazenar conteúdo. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/disks-and-partitions/identificacao-de-discos-e-particoes-26-01-2018.md b/content/locales/ar_EG/lessons/disks-and-partitions/identificacao-de-discos-e-particoes-26-01-2018.md new file mode 100644 index 0000000..209b8ab --- /dev/null +++ b/content/locales/ar_EG/lessons/disks-and-partitions/identificacao-de-discos-e-particoes-26-01-2018.md @@ -0,0 +1,15 @@ +# Discos e Partições + +## Identificação de Discos e Partições + +No Linux, os dispositivos existentes em seu computador (como discos rígidos, pen-drives, tela, portas de impressora, modem, etc.,) são identificados por um arquivo referente a este dispositivo no diretório "/dev". A identificação é feita da seguinte forma: Diretório: Local onde são armazenados os dispositivos existentes. Sigla: Identifica o tipo de disco (sd: SATA/SCSI, hd: IDE, fd: Disquete, etc.). Letra: Identifica o disco rígido (A: 1º, B: 2º, etc.). Número: Identifica o número da partição no disco rígido. Veja alguns exemplos: /dev/fd0: Primeira unidade de disquetes. /dev/sda: Primeiro disco rígido SATA ou SCSI. /dev/sda1: Primeira partição do primeiro disco rígido SATA ou SCSI. /dev/sr0: Primeiro CD-ROM SATA ou SCSI. /dev/hda: Primeiro disco rígido IDE. /dev/hda1: Primeira partição do primeiro disco rígido IDE. Caso utilize pen-drives, memória flash, as unidades serão detectadas como sdc, sdd, e assim por diante. + +### Exercícios + +1. Como os discos e partições são identificados no Linux? + +2. Como seria identificada a segunda partição do segundo disco rígido SATA? + +3. Como seria identificado um pen-drive? + +4. Como seria identificada a terceira partição do primeiro disco rígido IDE? \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/disks-and-partitions/introducao-a-particoes-25-01-2018.md b/content/locales/ar_EG/lessons/disks-and-partitions/introducao-a-particoes-25-01-2018.md new file mode 100644 index 0000000..32305d4 --- /dev/null +++ b/content/locales/ar_EG/lessons/disks-and-partitions/introducao-a-particoes-25-01-2018.md @@ -0,0 +1,15 @@ +# Discos e Partições + +## Introdução a Partições + +Partições são divisões existentes no disco rígido que marcam onde começa e onde termina um sistema de arquivos. As partições nos permitem usar mais de um sistema operacional no mesmo computador, ou dividir o disco rígido em uma ou mais partes para ser usado por um único sistema operacional. Para gravar os dados, o disco rígido deve ser primeiro particionado, e depois a partição deve ser formatada. Após criada e formatada, a partição será automaticamente identificada como um dispositivo no diretório "/dev", e deve ser montada para permitir seu uso. Uma partição de disco não interfere em outras partições existentes. Para particionar o disco, é necessário um programa de particionamento. Os mais comuns são: "fdisk", "cfdisk", e "Disk Druid". Observação: Quando se apaga uma partição, você estará apagando TODOS os arquivos existentes nela! + +### Exercícios + +1. O que é uma partição? + +2. Quais as finalidades de uma partição? + +3. Onde as partições são identificadas no sistema? + +4. Quais os programas de particionamento de disco mais comuns no Linux? \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/disks-and-partitions/sistema-de-arquivos-25-01-2018.md b/content/locales/ar_EG/lessons/disks-and-partitions/sistema-de-arquivos-25-01-2018.md new file mode 100644 index 0000000..da770e0 --- /dev/null +++ b/content/locales/ar_EG/lessons/disks-and-partitions/sistema-de-arquivos-25-01-2018.md @@ -0,0 +1,15 @@ +# Discos e Partições + +## Sistema de Arquivos + +Um sistema de arquivos é um conjunto de estruturas lógicas e de rotinas, que permitem ao sistema operacional controlar o acesso ao disco rígido. O sistema de arquivos é criado durante a "formatação" da partição de disco. Após a formatação, toda a estrutura para leitura/gravação/permissões de arquivos e diretórios pelo sistema operacional estará pronta para ser usada. Normalmente este passo é feito durante a instalação de sua distribuição GNU/Linux. Cada sistema de arquivos tem uma característica em particular, mas seu propósito é o mesmo: Oferecer ao sistema operacional a estrutura necessária para ler/gravar os arquivos/diretórios. Abaixo segue alguns exemplos de sistemas de arquivos existentes: Ext2: Usado em partições Linux Nativas para o armazenamento de arquivos. Ext3: Este sistema de arquivos possui melhorias em relação ao ext2, como destaque o recurso de journaling e suporte a arquivos de até 16Gb. Ele também é totalmente compatível com o ext2 em estrutura. O journal mantém um log de todas as operações no sistema de arquivos, caso aconteça uma queda de energia elétrica (ou qualquer outra anormalidade que interrompa o funcionamento do sistema), o comando "fsck" verifica o sistema de arquivos no ponto em que estava quando houve a interrupção, evitando a demora para checar todo um sistema de arquivos (que pode levar minutos em sistemas de arquivos muito grandes). FAT32: Usado no DOS e oferece suporte a discos de até 2 Terabytes. Não possui suporte a permissões e journaling. NTFS: Formato nativo de discos de sistemas operacionais Windows XP e superiores. Possui suporte a permissões de acesso e compactação nativa. + +### Exercícios + +1. O que é um sistema de arquivos? + +2. Qual o objetivo do sistema de arquivos? + +3. Quando o sistema de arquivos é criado? + +4. Cite outros exemplos de sistemas de arquivos. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/fenrir/configuracoes-via-arquivo-20-04-2018.md b/content/locales/ar_EG/lessons/fenrir/configuracoes-via-arquivo-20-04-2018.md new file mode 100644 index 0000000..bc651ff --- /dev/null +++ b/content/locales/ar_EG/lessons/fenrir/configuracoes-via-arquivo-20-04-2018.md @@ -0,0 +1,16 @@ +# Configurações via Arquivo de Configuração + +É possível alterar e personalizar as configurações do leitor de tela a partir de um arquivo de configuração. O arquivo é: */etc/fenrir/settings/settings.conf* A sintaxe dos comandos de configuração não são complexas, e o arquivo está dividido em quatro partes: + +* Sessões: Uma sessão é um grupo de configurações. Geralmente está entre colchetes, como no exemplo: [sound]. Essa seria uma sessão de configurações de som. +* Configurações: São as configurações permitidas dentro de cada sessão. Geralmente são antecedidas por uma linha de comentário, explicando a configuração, e logo depois vem uma configuração com seu valor. Exemplo: driver=genericDriver. Essa configuração define um driver de som. +* Valores: São os valores que uma determinada configuração pode assumir. O valor fica sempre depois do sinal de igualdade. Como no exemplo acima, o nome do driver de som é o valor que a configuração driver recebeu. +* Comentários: São úteis para explicitar e detalhar as configurações e valores no arquivo. Toda linha iniciada pelo símbolo "#" é um comentário, e, portanto, desconsiderada pelo sistema. + +### Exercícios + +1. Abra o arquivo de configurações e localize uma sessão. + +2. Analise as configurações e escolha uma para alterar o valor. + +3. Comente a alteração feita no arquivo. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/fenrir/configuracoes-via-linha-de-comando-23-04-2018.md b/content/locales/ar_EG/lessons/fenrir/configuracoes-via-linha-de-comando-23-04-2018.md new file mode 100644 index 0000000..11c21af --- /dev/null +++ b/content/locales/ar_EG/lessons/fenrir/configuracoes-via-linha-de-comando-23-04-2018.md @@ -0,0 +1,9 @@ +# Configurações do Fenrir via Linha de Comando + +O Fenrir permite que você altere configurações sem acessar diretamente o arquivo de configurações, bastando digitar a alteração no terminal. A sintaxe da configuração é a seguinte: *fenrir -o "sessão#configuração=valor"* No exemplo a seguir, o driver de som será alterado: *fenrir -o "sound#driver=gstreamerDriver* Observação: É possível escrever vários comandos seguidos, basta colocar um ponto e vírgula ";" ao fim de cada comando. No exemplo a seguir, o driver de som será alterado e o braille desabilitado: *fenrir -o "sound#driver=gstreamerDriver;braille#enabled=False"* + +### Exercícios + +1. Altere uma configuração única do Fenrir. + +2. Altere três configurações na mesma linha. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/fenrir/instalacao-e-execucao-do-fenrir-02-04-2018.md b/content/locales/ar_EG/lessons/fenrir/instalacao-e-execucao-do-fenrir-02-04-2018.md new file mode 100644 index 0000000..caa2ad8 --- /dev/null +++ b/content/locales/ar_EG/lessons/fenrir/instalacao-e-execucao-do-fenrir-02-04-2018.md @@ -0,0 +1,23 @@ +# Instalação e Execução + +O Fenrir é um moderno leitor de tela feito para a linha de comando. Com ele, você poderá usar seu sistema com total acessibilidade. + +## Executando Sem Instalação + +Esse é um ponto muito interessante. Você pode executar o leitor de tela mesmo sem instalar, para isso você deve ter permissão de administrador e usar o comando: *src/fenrir/fenrir* Assim, é possível saber se tudo está funcionando bem. + +## Iniciando + +Com o leitor de tela instalado, use o comando: *systemctl start fenrir* para executar o Fenrir. Você também pode querer que o Fenrir comece a falar logo que o sistema inicie. Para isso, digite: *systemctl enable fenrir* + +## Sobre os Comandos + +A maioria dos comandos do Fenrir são acompanhados da "Tecla Fenrir", a tecla "Insert" do seu teclado. Para conhecer mais o leitor de tela, utilize: *Tecla Fenrir + H* para entrar no modo de ajuda. + +### Exercícios + +1. No seu terminal, execute o leitor de tela sem instalação. + +2. Habilite o leitor de tela para iniciar junto com o sistema. + +3. Entre no modo de ajuda e explore os recursos do leitor de tela. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/fenrir/primeiros-passos-30-04-2018.md b/content/locales/ar_EG/lessons/fenrir/primeiros-passos-30-04-2018.md new file mode 100644 index 0000000..36c4847 --- /dev/null +++ b/content/locales/ar_EG/lessons/fenrir/primeiros-passos-30-04-2018.md @@ -0,0 +1,15 @@ +# Primeiros Passos + +Após instalar e configurar o leitor de tela, é hora de conhecer os principais atalhos: Tecla Fenrir + Alt + Seta Acima: Aumenta o volume do sistema. Tecla Fenrir + Alt + Seta Abaixo: Diminui o volume do sistema. Tecla Fenrir + Seta Acima: Aumenta o volume da Fala. Tecla Fenrir + Seta Abaixo: Diminui o volume da fala. Tecla Fenrir + Seta Direita: Aumenta a velocidade da fala. Tecla Fenrir + Seta Esquerda: Diminui a velocidade da fala. Tecla Fenrir + Alt + Seta Direita: Aumenta o tom da fala. Tecla Fenrir + Alt + Seta Esquerda: Diminui o tom da fala. Tecla Fenrir + F3: Alterna entre som e mudo. Tecla Fenrir + F4: Alterna o modo de fala. Tecla Fenrir + Enter: Desabilita a fala temporariamente. Tecla Fenrir + Q: Sai do Fenrir. Tecla Fenrir + T: Fala a hora. Tecla Fenrir + T (duas vezes): Fala a data. Tecla Fenrir + C: Copia o texto selecionado para a área de transferência. Tecla Fenrir + V: Cola o texto da área de transferência. Para mais comandos, pressione a combinação Tecla Fenrir + H, assim você entra no modo de ajuda. + +### Exercícios + +1. Altere o volume do sistema. + +2. Altere o volume da voz. + +3. Altere a velocidade de leitura. + +4. Selecione e copie um texto para a área de transferência. Em seguida, cole o conteúdo. + +5. Verifique a hora e data atual. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/files-and-directories/criacao-de-diretorio-03-11-2017.md b/content/locales/ar_EG/lessons/files-and-directories/criacao-de-diretorio-03-11-2017.md new file mode 100644 index 0000000..a692d02 --- /dev/null +++ b/content/locales/ar_EG/lessons/files-and-directories/criacao-de-diretorio-03-11-2017.md @@ -0,0 +1,21 @@ +# Trabalhando Com Arquivos E Diretórios + +## Criando um diretório + +Para criar um diretório, usa-se o comando: *mkdir* seguido do nome do diretório + +Exemplo: *mkdir Documentos* + +O diretório Documentos será criado no diretório atual. + +Para conferir o resultado, basta digitar o comando: *ls* sem parâmetros, para exibir o conteúdo do diretório. + +### Exercícios + +1. Com base no exemplo acima, crie novos diretórios no diretório atual. + +2. Exiba o conteúdo do diretório corrente e verifique se seus diretórios foram criados. + +3. Exiba as informações detalhadas dos diretórios criados. + +4. Acesse cada diretório criado e volte para o diretório anterior. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/files-and-directories/criacao-e-escrita-em-arquivos-03-11-2017.md b/content/locales/ar_EG/lessons/files-and-directories/criacao-e-escrita-em-arquivos-03-11-2017.md new file mode 100644 index 0000000..0e083fc --- /dev/null +++ b/content/locales/ar_EG/lessons/files-and-directories/criacao-e-escrita-em-arquivos-03-11-2017.md @@ -0,0 +1,23 @@ +# Trabalhando com Diretórios e Arquivos + +## Criando e Escrevendo em Arquivos + +Agora vamos criar um arquivo. É possível criar um arquivo vazio usando o comando "touch". Exemplo: *touch "Bem Vindo.txt"* Observação: Para criar arquivos com mais de uma palavra, digite o nome entre " (aspas). + +Também podemos criar um arquivo e escrever um texto nele simultaneamente. Primeiramente vamos escolher um texto de exemplo que irá dentro desse arquivo. Para que o terminal imprima a mensagem "Bem vindo" podemos utilizar o comando echo, que irá imprimir esses dois argumentos ("Bem" e "vindo"): *echo Bem vindo* O resultado será a mensagem impressa no terminal. Enquanto digitamos comandos no terminal, uma espécie de histórico está sendo criada, se clicarmos no botão de seta para cima, voltamos ao comando anterior que foi executado. Usamos esse atalho para navegarmos pelos comandos, clicando mais vezes a seta pra cima, chegaremos a comandos digitados a mais tempo, a seta para baixo também funciona para voltar para os comandos mais atuais no histórico. Se quiser limpar o histórico de comandos, basta usar o comando: *clear* Mas antes disso, vamos usá-lo para voltar ao echo e passarmos apenas um argumento, colocando aspas duplas na mensagem que queremos imprimir: *echo "Bem vindo"* Mas o que queremos é executar esse comando redirecionando sua saída para um arquivo, para isso, utilizamos o caractere > (maior) depois da mensagem seguido pelo nome do arquivo que queremos salvar a mensagem: *echo "Bem vindo" > "Bem Vindo.txt"* O terminal já não imprime mais a mensagem, ela foi redirecionada para o arquivo, veja que se buscarmos novamente a lista de arquivos e diretórios usando o ls, teremos nosso arquivo Bem Vindo.txt listado. Observação 1: Cuidado com o parâmetro > (maior), pois este só adiciona conteúdo novo ao arquivo. Se for utilizado em um arquivo já escrito, o conteúdo anterior será apagado e substituído pelo atual. Para escrever mais conteúdo em um arquivo já escrito, utilize dois sinais de maior em vez de um. Exemplo: *echo "ao curso" >> "bem vindo.txt"* Agora o conteúdo contido no arquivo será: **Bem vindo ao curso** Veremos com detalhes na lição seguinte como ler arquivos inteiros ou trechos específicos deles. Observação 2: Ao redirecionar uma mensagem para um arquivo com o comando "echo", se este não existir, será criado no momento da execução do comando. + +### Exercícios + +1. Troque de diretório. + +2. Crie um arquivo vazio. + +3. Liste o conteúdo do diretório e verifique se o arquivo foi criado. + +4. Exiba uma mensagem no terminal. + +5. Volte no histórico de comandos digitados e redirecione a mensagem digitada para o arquivo criado anteriormente. + +6. Escreva outras mensagens no arquivo. Cuidado para não sobrescrever o conteúdo anterior. + +7. Limpe o histórico do terminal. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/files-and-directories/exibir-conteudo-de-arquivos-03-11-2017.md b/content/locales/ar_EG/lessons/files-and-directories/exibir-conteudo-de-arquivos-03-11-2017.md new file mode 100644 index 0000000..23957e7 --- /dev/null +++ b/content/locales/ar_EG/lessons/files-and-directories/exibir-conteudo-de-arquivos-03-11-2017.md @@ -0,0 +1,35 @@ +# Trabalhando Com Diretórios E Arquivos + +## Exibindo Conteúdo de Arquivos + +Para ler o conteúdo de arquivos no Terminal, usamos o comando: *cat* Exemplo: *cat "Bem Vindo.txt"* A saída do comando cat será o texto presente dentro do arquivo "Bem Vindo.txt". Você também pode exibir o conteúdo com numeração de linhas, para isso utilize o parâmetro: -n Exemplo: *cat -n "Bem Vindo.txt"* + +Observação: Para todos os comandos envolvendo arquivos ou diretórios, existe a possibilidade de escrevermos apenas uma parte do nome deles e buscar um específico utilizando a tecla "TAB". Se houver apenas um arquivo com o início do nome digitado, o terminal o preenche automaticamente ao apertarmos a tecla. + +## Criando e editando com Cat + +O comando "cat" tem outras funcionalidades bastante interessantes. Com ele, é possível criar um arquivo e inserir dados com o parâmetro: > (maior). Digite o seguinte comando: *cat > teste* Em seguida tecle "enter". O arquivo teste foi criado, e agora você pode inserir dados nele. Exemplo: *Este é um arquivo de teste.* Quando terminar de digitar, pressione o atalho "CTRL + D". O arquivo será salvo e a tela de edição será fechada. Confira o resultado digitando: *cat teste* A saída será: **Este é um arquivo de teste.** + +## Concatenação + +Também é possível utilizar o comando "cat" para concatenar conteúdo de arquivos. Vamos juntar o conteúdo do arquivo "Bem Vindo.txt" com o conteúdo do arquivo "teste" copiando para um novo arquivo. Digite: cat "Bem Vindo.txt" teste > arquivo_concatenado Agora verifique o conteúdo do arquivo "arquivo_concatenado". **Bem Vindo Este é um arquivo de teste.** + +## Exibindo início e fim de arquivos + +Existem dois comandos que permitem exibir o início e o fim de um arquivo, são eles "head" e "tail". O "head" exibe as primeiras linhas de um arquivo. Por padrão, ele exibe as 10 primeiras, mas é possível aumentar ou diminuir esse valor com o parâmetro: -n seguido do número de linhas que deseja exibir. Exemplo: *head -n 1 arquivo_concatenado* Ele exibirá apenas a primeira linha do arquivo. + +O "tail" exibe o fim do arquivo e funciona como o "head". Possui o mesmo valor padrão de linhas exibidas e o mesmo parâmetro para mudar a exibição. Exemplo: *tail -n 1 arquivo_concatenado* Ele exibirá apenas a última linha do arquivo. + +### Exercícios + +1. Verifique os arquivos existentes no diretório corrente. + +2. Exiba o conteúdo dos arquivos existentes. + +3. Crie um novo arquivo e insira dados nele. + +4. Copie os dados de vários arquivos para um arquivo novo. + +5. Leia o arquivo e numere as linhas. + +6. Exiba: a) As duas primeiras linhas do arquivo criado. b) As três últimas linhas do arquivo criado. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/files-and-directories/manipulacao-de-diretorios-e-arquivos-no-sistema-03-11-2017.md b/content/locales/ar_EG/lessons/files-and-directories/manipulacao-de-diretorios-e-arquivos-no-sistema-03-11-2017.md new file mode 100644 index 0000000..abe2577 --- /dev/null +++ b/content/locales/ar_EG/lessons/files-and-directories/manipulacao-de-diretorios-e-arquivos-no-sistema-03-11-2017.md @@ -0,0 +1,29 @@ +# Trabalhando Com Diretórios E Arquivos + +## Copiando, Movendo, Renomeando e Removendo + +Para copiar um arquivo, usamos o comando: *cp* Vamos copiar o arquivo teste para o diretório Documentos: *cp teste Documentos* Verifique com o comando "ls" e veja o resultado: *ls Documentos* Também é possível copiar o conteúdo de um arquivo para outro, utilizando o comando da mesma maneira. *cp teste teste2* O conteúdo de teste foi copiado para teste2. Para verificar, basta ler o conteúdo de ambos com o comando "cat". + +Para copiar um diretório para outro, basta usar o parâmetro "-r". Criaremos o diretório Documentos2 e copiaremos Documentos para dentro dele. Exemplo: *mkdir Documentos2* *cp -r Documentos Documentos2* O diretório Documentos foi copiado para Documentos2. Liste o conteúdo e verifique o resultado. + +Para mover um arquivo, utilizamos o comando "mv". Exemplo: *mv teste Documentos* O arquivo foi movido para o diretório Documentos. Verifique com o comando "ls". Para renomear um arquivo ou diretório, basta digitar primeiro o nome original e depois o novo nome. Exemplo: *mv teste teste2* O arquivo teste agora chama-se teste2. Para mover um diretório, basta fazer exatamente como foi feito com arquivos. O comando "mv" já é recursivo, o que dispensa o parâmetro "-r". + +Para remover um arquivo, usamos o comando "rm". Exemplo: *rm teste* O arquivo teste foi removido. Para remover um diretório vazio, usamos o comando "mrdir". Exemplo: *rmdir Documentos* Como temos arquivos nesse diretório, ele não foi removido. Portanto, para diretórios contendo conteúdo, usamos o comando "rm -r". Exemplo: *rm -r Documentos* Agora o diretório foi removido com todo o seu conteúdo. Não se esqueça de conferir o resultado de cada alteração com os comandos "ls" e "cat". + +### Exercícios + +1. Crie um arquivo, escreva um conteúdo e copie para outro diretório. + +2. Copie o conteúdo desse arquivo para outro arquivo. + +3. Copie um diretório para outro. + +4. Mova seus arquivos para outro diretório. + +5. Renomeie o arquivo de teste. + +6. Mova um diretório para outro. + +7. Apague o arquivo de teste. + +8. Apague o diretório criado para teste. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/files-and-directories/troca-de-diretorio-03-11-2017.md b/content/locales/ar_EG/lessons/files-and-directories/troca-de-diretorio-03-11-2017.md new file mode 100644 index 0000000..379eebc --- /dev/null +++ b/content/locales/ar_EG/lessons/files-and-directories/troca-de-diretorio-03-11-2017.md @@ -0,0 +1,35 @@ +# Trabalhando Com Diretórios E Arquivos + +## Trocando de Diretório + +Agora que já foi mostrado o conteúdo de diretórios, é hora de saber como navegar de um diretório para o outro. + +O comando usado para trocar de diretório é o: *cd* + +Existem vários parâmetros para combinarmos ao comando e trocar de diretórios. Eles serão listados a seguir: + +/ Este parâmetro navega até o diretório / mais conhecido por Diretório Raiz ou "Root". Todos os demais diretórios são criados dentro do diretório raiz. Exemplo: *cd /* Se listar o conteúdo do diretório, perceberá que foi alterado. + +~ Este parâmetro aponta diretamente para o diretório "Home" do usuário (ou pasta do usuário). Exemplo: *cd ~* + +- Este parâmetro navega até o último diretório em que esteve. Considerando que os comandos anteriores foram executados, se esteve no diretório raiz e em seguida foi para o diretório de usuário, usando o comando a seguir, voltará para o diretório raiz, que é o último visitado antes do diretório atual. Exemplo: *cd -* + +Para navegar até um diretório dentro do atual, basta digitar cd seguido do nome do diretório. No exemplo a seguir, utilizarei o diretório Documentos dentro da minha pasta "Home". Exemplo: *cd Documentos* Alternativamente, é possível digitar o caminho completo do diretório. Exemplo: *cd /home/roberta/Documentos* + +.. Este parâmetro volta ao diretório anterior na hierarquia. Considerando que estejamos no diretório Documentos, de acordo com o exemplo anterior, usando esse parâmetro é possível voltar para o diretório "home". Exemplo: *cd ..* + +Observação: Quando trocar de diretório, utilize o comando: *ls* para verificar o conteúdo do diretório e certificar-se de que navegou ao diretório correto. + +### Exercícios + +1. Navegue ao diretório raiz. + +2. Liste o conteúdo do diretório e entre em algum de sua escolha. + +3. Volte ao diretório anterior. + +4. Navegue até o diretório home. + +5. Navegue ao último diretório visitado. + +6. Navegue a outro diretório utilizando o caminho completo do mesmo. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/files-and-directories/uso-do-diff-15-01-2018.md b/content/locales/ar_EG/lessons/files-and-directories/uso-do-diff-15-01-2018.md new file mode 100644 index 0000000..c8f72ec --- /dev/null +++ b/content/locales/ar_EG/lessons/files-and-directories/uso-do-diff-15-01-2018.md @@ -0,0 +1,21 @@ +# Trabalhando Com Diretórios E Arquivos + +## Uso do Diff + +O comando "diff" compara o conteúdo de dois arquivos ou diretórios e exibe a diferença entre eles, e isso inclui arquivos compactados com gzip. Os parâmetros aceitos no comando são: -i: Ignora diferenças entre maiúsculas e minúsculas. -E: Ignora diferenças de tabulação. -b: Ignora diferenças de quantidade de espaços em branco. -w: Ignora qualquer espaço em branco. -B: Ignora linhas em branco. -a: Compara os arquivos como arquivos de texto, mesmo que não sejam. -q: Mostra apenas se o conteúdo é igual ou diferente. -y: Mostra os arquivos em colunas, exibindo as diferenças. -t: Converte tabulações em espaços. -r: Compara recursivamente o conteúdo de diretórios. + +O comando reporta, basicamente, o que é preciso alterar no arquivo que vem primeiro, para que fique igual ao último. + +Para comparar dois arquivos, digite: *diff arquivo1 arquivo2* Se os arquivos forem diferentes, vai aparecer o número da linha onde isso ocorre, seguido de uma letra: a: Indica que uma informação deve ser adicionada. c: Indica que uma informação deve ser substituída. d: Indica que uma informação deve ser deletada. + +> : Indica que a informação depois dele deve ser incluída. <: Indica que a informação depois dele deve ser excluída. -: Separa informações. + +Para comparar arquivos compactados, digite: *zdiff arquivo1.gz arquivo2.gz* + +### Exercícios + +1. Compare dois arquivos e exiba a saída em colunas. + +2. Compare dois arquivos ignorando diferença de maiúsculas e minúsculas. + +3. Compare dois arquivos compactados ignorando diferenças entre maiúscula e minúscula, espaços e linhas em branco e exiba o resultado em colunas. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/files-and-directories/uso-do-find-11-01-2018.md b/content/locales/ar_EG/lessons/files-and-directories/uso-do-find-11-01-2018.md new file mode 100644 index 0000000..3171e23 --- /dev/null +++ b/content/locales/ar_EG/lessons/files-and-directories/uso-do-find-11-01-2018.md @@ -0,0 +1,39 @@ +# Trabalhando Com Diretórios E Arquivos + +## Utilização do Find + +O comando "find" é utilizado para pesquisar arquivos e diretórios no sistema sob vários critérios. + +## Pesquisando Arquivos e Diretórios Pelo Nome + +Para pesquisar um arquivo pelo nome no diretório atual, digite: *find . -name Nome-ARQUIVO.txt* Observação: Esse comando diferencia maiúsculas de minúsculas. Para ignorá-las, basta utilizar a letra "i" antes do parâmetro "name", da seguinte forma: *find . -iname Nome-ARQUIVO.txt* + +Para pesquisar um arquivo pelo nome em um diretório específico, digite: *find diretorio -iname nome-arquivo.txt* + +Para pesquisar um diretório pelo nome, digite: *find / -type d -name NOME-do-Diretório* + +## Pesquisando Arquivos Por Extensão + +Para pesquisar arquivos pela sua extensão (txt, por exemplo), digite: *find / -type f -name “*.txt”* + +## Pesquisando Arquivos Por Tamanho + +Para pesquisar arquivos por tamanho (maiores que 500 MB, por exemplo), digite: *find diretorio -size +500M* Observação: Se quiser o tamanho em GB, basta substituir o "M" por "G". O sinal de mais pesquisa por tamanhos maiores e o sinal de menos por tamanhos menores. + +## Pesquisando Arquivos Com Modificações + +Para pesquisar arquivos modificados recentemente (nos últimos 5 dias, por exemplo), digite: *find /home/ -mtime -5* + +### Exercícios + +1. Pesquise arquivos pelo nome no diretório atual. + +2. Pesquise arquivos pelo nome em outros diretórios ignorando letras maiúsculas. + +3. Pesquise diretórios pelo nome ignorando letras maiúsculas. + +4. Pesquise arquivos com a extensão "pdf". + +5. Pesquise arquivos de tamanho superior a 1 GB. + +6. Pesquise arquivos que foram modificados no último dia. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/files-and-directories/uso-do-grep-11-01-2018.md b/content/locales/ar_EG/lessons/files-and-directories/uso-do-grep-11-01-2018.md new file mode 100644 index 0000000..b21673a --- /dev/null +++ b/content/locales/ar_EG/lessons/files-and-directories/uso-do-grep-11-01-2018.md @@ -0,0 +1,25 @@ +# Arquivos e Diretórios + +## Utilização do Grep + +O comando "grep" é utilizado para buscar palavras específicas no nome de um arquivo ou em seu conteúdo. + +## Pesquisando em Nomes de Arquivos + +Para encontrar arquivos que tenham determinada palavra (teste, por exemplo), digite: *ls | grep teste* Observação: O "ls" é usado para listar os arquivos que tem a palavra correspondente. + +Para pesquisar arquivos com extensão, digite: *ls | -E grep teste.txt* Observação: O parâmetro "E" é usado para que o "grep" aceite pontos e alguns outros caracteres. + +## Pesquisando no Conteúdo dos Arquivos + +Para pesquisar uma palavra ou frase contidas em um arquivo, digite: *grep oi teste.txt* O comando retorna todas as linhas do arquivo "teste.txt" que contenham "oi". Observação: Para definir uma frase, coloque entre aspas, caso contrário o "grep" considera que a segunda palavra já faz parte do nome do arquivo. Por exemplo: *grep "bom dia" teste.txt* O comando retornará todas as linhas que contenham a frase "bom dia". + +### Exercícios + +1. Pesquise palavras em nomes de arquivos. + +2. Pesquise palavras em nomes de arquivos com extensão. + +3. Pesquise palavras dentro de arquivos. + +4. Pesquise frases dentro de arquivos. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/files-and-directories/uso-do-touch-15-01-2018.md b/content/locales/ar_EG/lessons/files-and-directories/uso-do-touch-15-01-2018.md new file mode 100644 index 0000000..1b5c4c4 --- /dev/null +++ b/content/locales/ar_EG/lessons/files-and-directories/uso-do-touch-15-01-2018.md @@ -0,0 +1,25 @@ +# Trabalhando Com Diretórios E Arquivos + +## Uso do Touch + +O comando "touch é usado para alterar a data e hora de acesso e de modificação de arquivos. É possível alterar as duas simultaneamente ou apenas uma delas. Antes de prosseguir, veja a legenda abaixo: A: Representa os dígitos do ano. M: Representa os dígitos do mês. D: Representa os dígitos do dia. H: Representa os dígitos da hora. M: Representa os dígitos do minuto. S: Representa os dígitos do segundo. + +## Alterando a Data e hora de Acesso + +Para alterar a data e hora de acesso de um arquivo, digite o seguinte comando: *touch -t AAAAMMDDhhmm.ss -a arquivo* O parâmetro "-a" indica acesso. + +## Alterando a Data e Hora de Modificação + +Para alterar a data e hora de modificação de um arquivo, digite o seguinte comando: *touch -t AAAAMMDDhhmm.ss -m arquivo* O parâmetro "-m" indica modificação. + +## Alterando a data e hora de acesso e modificação + +Para alterar data e hora de acesso e modificação de um arquivo simultaneamente, digite o seguinte comando: *touch -t AAAAMMDDhhmm.ss arquivo* Observação: Se o arquivo não existir, ele será criado com a data e hora definidas no comando. + +### Exercícios + +1. Altere a data e hora de acesso de um arquivo para 25/03/2009 06:25:44. + +2. Altere a data e hora de modificação de um arquivo para o dia anterior ao meio-dia. + +3. Altere a data e hora de acesso e modificação de um arquivo. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/files-and-directories/verificacao-do-diretorio-03-11-2017.md b/content/locales/ar_EG/lessons/files-and-directories/verificacao-do-diretorio-03-11-2017.md new file mode 100644 index 0000000..bd15ae1 --- /dev/null +++ b/content/locales/ar_EG/lessons/files-and-directories/verificacao-do-diretorio-03-11-2017.md @@ -0,0 +1,48 @@ +# Trabalhando Com Diretórios E Arquivos + +## Verificando o Diretório Atual e Seu Conteúdo + +Para iniciar as atividades, é fundamental conhecer o terminal e seu conteúdo. + +Ao abrir o terminal, estamos em algum diretório do sistema. Para descobrir o diretório, basta digitar o comando: *pwd* +A saída será algo parecido com: **/home/roberta** + +O nome depois de /home varia, de acordo com o usuário logado no sistema. + +Para exibir a lista de diretórios e arquivos existentes dentro do diretório atual, basta utilizar o comando: *ls* + +Exemplo: *ls* + +Será exibido na tela algo como: **Documentos** **Teste.txt** + +Note que há um diretório criado, o diretório Documentos. Também há o arquivo Teste.txt. Posteriormente será ensinado como criar diretórios e arquivos. + +O comando ls possui alguns outros parâmetros importantes, que serão listados abaixo: + +-l Exibe informações dos arquivos e diretórios, como tamanho, dono, grupo, data, etc. Se for diretório, as informações começarão com a letra 'd'. Exemplo: *ls -l* Todas as informações dos seus arquivos e diretórios serão exibidas. + +-a Lista arquivos e diretórios ocultos. Exemplo: *ls -a* Todos os arquivos e diretórios ocultos serão exibidos. Observação: Nomes de diretórios e arquivos ocultos começam com um . (ponto). + +Os parâmetros também podem ser combinados, veja o exemplo: *ls -la* Este comando exibe as informações de todo o conteúdo, inclusive do conteúdo oculto. + +Existe um atalho equivalente ao comando acima: *ll* Exibirá exatamente o mesmo conteúdo do comando anterior. + +* Exibe o conteúdo do diretório corrente e, caso exista diretórios dentro deste, exibe também o conteúdo deles. Exemplo: *ls * * + +Existe também outro comando bem útil, que permite saber o tipo de cada arquivo. Exemplo: *file teste.txt* A saída será algo parecido com: **Teste.txt: ASCII Text** Serve também para diretórios, veja o exemplo: *file Documentos* A saída será parecida com: **Documentos: Directory** + +Observação: No terminal, há diferença entre maiúsculas e minúsculas. Portanto, preste atenção ao digitar comandos, nomes de diretórios e arquivos. + +### Exercícios + +1. Descubra qual o diretório atual em que se encontra. + +2. Exiba o conteúdo do diretório corrente. + +3. Exiba informações dos arquivos e diretórios. + +4. Exiba o conteúdo oculto dentro do diretório corrente. + +5. Exiba informações de todos os arquivos e diretórios, incluindo os ocultos. Em seguida, faça o mesmo utilizando o atalho. + +6. Verifique o tipo de cada conteúdo, inclusive diretórios. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/git-and-github/clone-e-adicao-de-arquivos-08-02-2018.md b/content/locales/ar_EG/lessons/git-and-github/clone-e-adicao-de-arquivos-08-02-2018.md new file mode 100644 index 0000000..5cd73d5 --- /dev/null +++ b/content/locales/ar_EG/lessons/git-and-github/clone-e-adicao-de-arquivos-08-02-2018.md @@ -0,0 +1,17 @@ +# Git + +## Clone e Adição de Arquivos + +Com o Git configurado e uma conta criada no GitHub, é hora de começar a trabalhar em um projeto. Para isso, é necessário clonar o repositório criado previamente no GitHub em seu computador. + +Abra o terminal e navegue até uma pasta que queira utilizar para essa finalidade. Execute o seguinte comando: *git clone https://github.com/usuario/repositorio.git* Onde: usuario: É o nome do seu usuário no GitHub. repositorio: É o nome que você digitou na criação do repositório. + +Uma pasta com o nome do seu repositório será criada. Navegue até ela para começar a interagir com o repositório. Como exemplo, crie um arquivo de texto nessa pasta e digite algo. Salve e feche o arquivo. Agora, execute o seguinte comando: *git status* Esse comando mostra o status do seu trabalho, como por exemplo os arquivos, modificações e se estão prontos para serem publicados. Nesse caso, o seu arquivo de texto não está pronto para ser enviado ao GitHub. Para isso ainda falta um comando: *git add .* Ao contrário do que parece, esse comando não está adicionando um arquivo novo no repositório, e sim preparando os arquivos para serem enviados ao GitHub. Você também pode definir apenas arquivos específicos digitando seus nomes, se não quiser enviar todos eles. + +### Exercícios + +1. Abra o terminal, navegue até uma pasta nova de trabalho e clone seu repositório criado anteriormente no GitHub. + +2. Vá até a pasta criada e crie arquivos nela. + +3. Adicione os arquivos, preparando-os para serem enviados para o GitHub. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/git-and-github/commit,-pull-e-push-08-02-2018.md b/content/locales/ar_EG/lessons/git-and-github/commit,-pull-e-push-08-02-2018.md new file mode 100644 index 0000000..732d6c4 --- /dev/null +++ b/content/locales/ar_EG/lessons/git-and-github/commit,-pull-e-push-08-02-2018.md @@ -0,0 +1,25 @@ +# Git + +## Commit, Pull e Push + +Agora que arquivos já foram adicionados e preparados para envio, será demonstrado como enviar esses arquivos para o GitHub. + +## Commit + +Um commit serve para documentar as alterações feitas naquele projeto. Com os arquivos já preparados com o comando "git add .", é hora de fazer o primeiro commit: *git commit -m "Escreva as alterações realizadas aqui". Pronto, suas alterações já estão documentadas, prontas para serem publicadas. + +## Pull + +O pull serve para atualizar o repositório na sua máquina. Se alguém já alterou o projeto antes de você, é necessário obter essas modificações antes de enviar as suas, para manter o repositório sempre atualizado. Para isso, basta digitar: *git pull* + +## Push + +Você modificou os arquivos, commitou descrevendo o que fez exatamente naquela modificação e agora precisa enviar tudo isso para o servidor. O push empurra as suas modificações para o servidor, incluindo-as no histórico do projeto. Execute: *git push -u origin master* Pronto, suas alterações foram enviadas para o repositório no GitHub. + +### Exercícios + +1. Faça seu primeiro commit e adicione um comentário. + +2. Faça um pull do projeto. + +3. Envie as alterações para o GitHub. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/git-and-github/configuracao-do-git-08-02-2018.md b/content/locales/ar_EG/lessons/git-and-github/configuracao-do-git-08-02-2018.md new file mode 100644 index 0000000..8014e0c --- /dev/null +++ b/content/locales/ar_EG/lessons/git-and-github/configuracao-do-git-08-02-2018.md @@ -0,0 +1,21 @@ +# Git + +## Configuração do Git + +Com o Git em seu sistema, basta configurá-lo para ter acesso à sua conta e repositórios no GitHub. Você só precisa fazer uma vez. As configurações serão mantidas entre atualizações. Você também poderá alterá-las a qualquer momento executando os comandos novamente. + +O Git vem com uma ferramenta chamada git config que permite a você ler e definir variáveis de configuração que controlam todos os aspectos de como o Git opera. Abra o terminal e digite os comandos a seguir: *git config --global user.name "Seu Nome"* *git config --global user.email "Seu e-mail"* Estas configurações ficam alocadas no arquivo "~/.gitconfig", onde o ~ é o seu diretório home. Quando precisar definir um nome e e-mail específicos para um projeto, basta repetir os comandos sem o parâmetro "--global". + +## Configuração do Repositório + +Para enviar e receber as alterações corretamente, é necessário configurar o repositório no computador. O primeiro passo é transformar uma pasta em um repositório. Crie uma nova pasta e execute o comando: *git init* Um repositório vazio será iniciado. + +## Adicionando o Endereço do Repositório + +Agora, o endereço do repositório criado anteriormente no GitHub será configurado no terminal. Execute o comando: *git remote add origin https://github.com/usuario/repositorio.git* A expressão "origin" será usada toda vez que for enviar alterações para esse repositório. Você pode atribuir outro nome, basta não se esquecer dele na hora de publicar novidades no GitHub. Para ver a lista de todos os repositórios adicionados, digite: *git remote* + +### Exercícios + +1. Abra o terminal e configure o Git para um único projeto. + +2. Configure o Git de forma global, para todos os projetos que for criar. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/git-and-github/introducao-ao-git-08-02-2018.md b/content/locales/ar_EG/lessons/git-and-github/introducao-ao-git-08-02-2018.md new file mode 100644 index 0000000..6698dcf --- /dev/null +++ b/content/locales/ar_EG/lessons/git-and-github/introducao-ao-git-08-02-2018.md @@ -0,0 +1,23 @@ +# Git + +## Introdução ao Git e GitHub + +## O Que é Git? + +O Git é um sistema de controle de versão de arquivos. Através dele, podemos desenvolver projetos na qual diversas pessoas podem contribuir simultaneamente no mesmo, editando e criando novos arquivos e permitindo que os mesmos possam existir sem o risco de suas alterações serem sobrescritas. Se não houver um sistema de versão, imagine o caos entre duas pessoas abrindo o mesmo arquivo ao mesmo tempo. Uma das aplicações do git é justamente essa, permitir que um arquivo possa ser editado ao mesmo tempo por pessoas diferentes. Basta instalar o Git utilizando o terminal. + +## O que é github? + +O GitHub é um serviço web que pode ser usado gratuitamente e oferece diversas funcionalidades extras aplicadas ao git. Resumindo, você poderá usar gratuitamente o github para hospedar seus projetos pessoais online. Para isso, basta criar uma conta no site e configurar suas informações de usuário e senha no Git via terminal. O github não possui instalação, ele é um serviço, e caso você não tenha uma conta, chegou a hora de criá-la no seguinte endereço: [Link para o GitHub](https://github.com/) Após criar a conta, basta navegar pela página e criar um novo repositório. Quando o repositório é criado, existe um arquivo chamado "readme.md" que vai conter a descrição do seu novo projeto. Após a criação, o repositório estará disponível em um link composto da seguinte maneira: *https://github.com/usuario/repositorio* Onde: usuario: É seu nome de usuário do GitHub. repositorio: É o nome que você deu ao novo repositório. + +### Exercícios + +1. O que é Git? + +2. O que é GitHub? + +3. Qual a função do arquivo "Readme.md"? + +4. Acesse o site do GitHub e crie uma conta. + +5. Crie um repositório no GitHub. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/irssi/comunicacao-no-irssi-17-11-2017.md b/content/locales/ar_EG/lessons/irssi/comunicacao-no-irssi-17-11-2017.md new file mode 100644 index 0000000..a8677a8 --- /dev/null +++ b/content/locales/ar_EG/lessons/irssi/comunicacao-no-irssi-17-11-2017.md @@ -0,0 +1,17 @@ +# Utilizando o Cliente IRC Irssi + +## Comunicação no Irssi + +Agora que já conhecemos o básico do Irssi, vamos demonstrar como conversar com outras pessoas. Um servidor IRC é composto de diversos canais dos mais variados temas. Primeiramente, vamos nos conectar de novo ao servidor. *irssi -c irc.freenode.net -n Roberta* Agora que estamos conectados, que tal verificar a lista dos canais disponíveis? Para isso, execute o comando: */list channel* Os canais disponíveis serão exibidos. Se quiser entrar em um desses canais, por exemplo, o canal "RPG", execute: */j rpg* Logo estará conectado, algumas informações do canal serão exibidas. Para conversar com todos os usuários de um canal, basta digitar normalmente e teclar "Enter" para enviar a mensagem. Para mandar uma mensagem privada para alguém, João, por exemplo, digite: */msg João Olá.* Assim, você envia uma mensagem privada para o usuário João. Se quiser trocar de canal novamente, basta executar o comando citado acima. + +### Exercícios + +1. Conecte-se a um servidor IRC de sua preferência. + +2. Liste os canais desse servidor. + +3. Escolha um canal e entre. + +4. Converse com os usuários, envie também mensagens privadas. + +5. Desconecte-se do servidor e feche o cliente. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/irssi/introducao-ao-cliente-irssi-17-11-2017.md b/content/locales/ar_EG/lessons/irssi/introducao-ao-cliente-irssi-17-11-2017.md new file mode 100644 index 0000000..7dcaffd --- /dev/null +++ b/content/locales/ar_EG/lessons/irssi/introducao-ao-cliente-irssi-17-11-2017.md @@ -0,0 +1,21 @@ +# Utilizando o Cliente IRC Irssi + +## Abrindo e Fechando Conexão Com um Servidor + +Nessa lição, será ensinado como utilizar o cliente Irssi para se comunicar utilizando o protocolo IRC. Primeiramente, o IRC é um protocolo de comunicação usado principalmente em bate-papo. Para utilizá-lo, precisamos de um cliente para conectar a um servidor IRC, e será utilizado o Irssi. Para instalar o Irssi, digite: *sudo apt-get install irssi* + +Depois de instalado, vamos nos conectar a um servidor. Neste exemplo, usaremos o "FreeNode", um servidor bastante popular e com canais variados. Antes disso, no entanto, mostrarei alguns parâmetros que podem ser usados na conexão: *-c* Esse parâmetro serve para indicar o endereço do servidor. *-n* Esse parâmetro indica seu apelido. *-p* Esse parâmetro indica a porta do servidor. De modo geral, não é necessário utilizá-lo. Agora sim, vamos realizar a conexão. Veja o exemplo: *irssi -c irc.freenode.net -n Roberta* Estamos nos conectando ao endereço "irc.freenode.net" com o nick "Roberta". Se quiser, pode primeiro abrir o Irssi, digitando o comando: *irssi* e depois se conectando ao servidor, digitando: */server irc.freenode.net* + +Para encerrar uma conexão, digite: */disconnect* Para fechar o Irssi, digite: */exit* Para sair do servidor e fechá-lo ao mesmo tempo, também pode usar o comando: */quit* Nesta aula, demonstramos como abrir e fechar conexão com um servidor IRC. + +### Exercícios + +1. Instale o Irssi no seu computador. + +2. Execute o programa e se conecte a um servidor. + +3. Desconecte e feche o Irssi. + +4. Se conecte novamente, agora usando os parâmetros do Irssi. + +5. Desconecte e feche o programa com um único comando. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/markdown/converter-textos-markdown-28-11-2017.md b/content/locales/ar_EG/lessons/markdown/converter-textos-markdown-28-11-2017.md new file mode 100644 index 0000000..a732ce0 --- /dev/null +++ b/content/locales/ar_EG/lessons/markdown/converter-textos-markdown-28-11-2017.md @@ -0,0 +1,19 @@ +# Introdução ao Markdown + +## Convertendo Textos + +Depois de aprender alguns símbolos que permitem formatar textos com o Markdown, agora será mostrado como converter esses textos para outros formatos. Para converter, utilizaremos um programa chamado Pandoc. Este programa aceita vários formatos, tanto de entrada (arquivo original que deseja converter), quanto de saída (arquivo que será gerado a partir do arquivo original). Abaixo serão listados os principais formatos suportados: Formatos de entrada: Markdown, TXT, HTML, EPUB, DOC e DOCX (formato de arquivos do Word a partir da versão 2007). Formatos de saída: Markdown, TXT, HTML, RTF, EPUB, DOC e DOCX. + +## Convertendo o Arquivo + +Vamos converter o arquivo já criado para outros formatos. Para isso, abra o terminal, mude para o diretório onde está o arquivo e digite o seguinte comando: *pandoc -o Testando Markdown.doc Testando Markdown.txt* Esse comando está escrito da seguinte forma: Primeiro vem o nome do programa, o Pandoc. Em seguida, vem o parâmetro "-o", que representa o arquivo de saída (output em inglês). Depois do parâmetro vem o nome e o formato do arquivo a ser gerado, e em seguida, o nome e extenção do arquivo original. "Pandoc, o arquivo de saída (representado pelo parâmetro -o) será Testando Markdown.doc, e o arquivo a ser convertido é Testando Markdown.txt". Esse é o comando para converter qualquer formato que desejar. Observação: Os arquivos formatados com Markdown geralmente possuem a extenção (.md), mas também podem ser escritos em arquivos de texto simples (.txt). + +### Exercícios + +1. Abra o terminal, vá até o diretório onde salvou o arquivo das aulas anteriores e o converta para o próprio formato do markdown. + +2. Converta o mesmo arquivo para formatos do Word (DOC e DOCX). + +3. Tente fazer o inverso, converta os arquivos gerados novamente para Markdown (experimente mudar o nome do arquivo a ser gerado para não perder o original). + +4. Converta para outros formatos disponíveis e veja o resultado. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/markdown/enfase-de-textos-em-markdown-26-11-2017.md b/content/locales/ar_EG/lessons/markdown/enfase-de-textos-em-markdown-26-11-2017.md new file mode 100644 index 0000000..e1bf874 --- /dev/null +++ b/content/locales/ar_EG/lessons/markdown/enfase-de-textos-em-markdown-26-11-2017.md @@ -0,0 +1,29 @@ +# Introdução ao Markdown + +## Ênfase de Textos + +Em certos momentos, destacar uma determinada frase ou palavra no texto é conveniente, principalmente para reforçar o sentido daquele trecho. Para isso, existem duas formas: Itálico e negrito. A principal diferença entre eles é que o itálico deixa as letras mais deitadas, enquanto o negrito deixa mais forte a cor das letras destacadas. + +## Escrevendo em Itálico + +Para escrever uma palavra ou frase em itálico, basta colocar um "*" (asterisco) no começo e outro no fim da mesma. Exemplo: *Esta frase está em itálico.* + +## Escrevendo em Negrito + +O negrito é muito semelhante. Mas em vez de um, são dois asteriscos no início e dois no fim. Exemplo: **Esta frase está em negrito.** + +## Itálico e Negrito + +Também é possível deixar um texto em itálico e negrito simultaneamente. Para isso, basta utilizar três asteriscos no início e no fim do texto. Exemplo: ***Esse texto está em itálico e negrito.*** + +### Exercícios + +1. Abra o mesmo arquivo de testes em markdown para editá-lo. + +2. Escreva palavras e frases em itálico. + +3. Escreva palavras e frases em negrito. + +4. Formate textos com itálico e negrito simultaneamente. + +5. Salve e feche o arquivo. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/markdown/introducao-ao-markdown-26-11-2017.md b/content/locales/ar_EG/lessons/markdown/introducao-ao-markdown-26-11-2017.md new file mode 100644 index 0000000..98ea9f7 --- /dev/null +++ b/content/locales/ar_EG/lessons/markdown/introducao-ao-markdown-26-11-2017.md @@ -0,0 +1,25 @@ +# Introdução ao Markdown + +O Markdown é uma simples linguagem de marcação. Com poucos e simples caracteres, é possível formatar seu texto em um simples editor, adicionar títulos, subtítulos, links, listas, etc., e depois converter para vários outros formatos. Para converter esses textos, utilizaremos o programa Pandoc, que permite conversões entre vários formatos diferentes. + +Começaremos com simples exemplos de formatação com Markdown. Depois, será ensinado como realizar a conversão. + +## Parágrafos + +Um parágrafo é uma linha de texto comum, não exige nenhum caractere especial. Basta dar alguns espaços antes de começar a escrever na linha para indicar que é um parágrafo. + +## Títulos e Subtítulos + +Os títulos são marcados com um "#" (cardinal ou jogo-da-velha) no início da sua linha. Os títulos vão do nível 1 a 6. O título de nível 1 é o que possui letras maiores, e quanto maior o nível, menor o título. Ou seja, os demais podem ser considerados subtítulos. Ou, supondo que tenhamos um título de nível 3 e outro de nível 4, o de nível 4 é um subtítulo em relação ao de nível 3. O nível do título é definido pela quantidade de "#" antes dele. Ou seja, se tivermos: *# Este Exemplo* é de nível 1, *## O Segundo Exemplo* é de nível 2, e assim sucessivamente. + +Antes de avançarmos, vale uma observação importante apartir de agora. Como já foi possível notar, o Markdown usa caracteres bastante comuns para formatar o texto. E se você quiser usar algum deles, como um "#", mas sem querer indicar um título? Para isso, usamos o caractere "\" (barra invertida) antes do caractere que deseja usar. Assim, ele assume o sentido literal e não é interpretado pelo Markdown. Se quiser usar a própria barra invertida, basta digitá-la duas vezes. + +### Exercícios + +1. Abra seu editor de textos favorito, crie um arquivo chamado "Testando Markdown.txt", por exemplo, e comece a escrever um texto com os primeiros caracteres de formatação ensinados. + +2. Escreva títulos e subtítulos. + +3. Escreva o símbolo "#" antes de algum texto, mas faça com que não seja interpretado como caractere de formatação. + +4. Salve o arquivo criado. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/markdown/links-e-imagens-em-markdown-27-11-2017.md b/content/locales/ar_EG/lessons/markdown/links-e-imagens-em-markdown-27-11-2017.md new file mode 100644 index 0000000..2d2355f --- /dev/null +++ b/content/locales/ar_EG/lessons/markdown/links-e-imagens-em-markdown-27-11-2017.md @@ -0,0 +1,29 @@ +# Introdução ao Markdown + +## Incerindo Links e Imagens + +Ao escrever um texto, você pode precisar incerir um link de algum site ou imagem disponível na Internet. O Markdown também possui caracteres especiais para esses casos. Quanto aos links, existem os internos, que referenciam para outros trechos do próprio documento, e os externos, que referenciam para outros sites. + +## Links Internos + +Para referenciar um trecho do próprio documento, como um link que leve de volta ao início do texto, por exemplo, faça o seguinte. Primeiro, escreva o texto que vai referenciar o link de referência. Logo em seguida, coloque o nome do link entre colchetes. Na linha seguinte, escreva novamente o nome que deu ao link entre colchetes e, logo depois, coloque o símbolo de "#" e o identificador do trecho onde deseja referenciar. Exemplo: Voltar ao [Início](#inicio). + +## Links Externos + +Para incerir o link de um site e algum texto que o descreva, siga os seguintes passos: Primeiro, coloque o texto descritivo do link entre colchetes. Logo em seguida, na mesma linha, o endereço do link deve estar entre parênteses. Exemplo: *[F123](http://f123.org)* + +## Imagens + +Incerir imagens é bem semelhante, a única diferença é que deve ser incerido um ponto de exclamação "!" antes de abrir o colchete. *![Foto de um computador pequeno](http://f123.org/wp-content/uploads/2017/07/F123-Talking-Computer-2.jpg)* + +### Exercícios + +1. Abra o arquivo "Testando Markdown.txt" e vá para o fim do mesmo. + +2. Incira uma referência para outro trecho do documento. + +3. Incira um link de algum site de sua preferência e coloque um texto descritivo. + +4. Faça o mesmo com uma imagem. + +5. Salve e feche o arquivo. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/markdown/listas-em-markdown-27-11-2017.md b/content/locales/ar_EG/lessons/markdown/listas-em-markdown-27-11-2017.md new file mode 100644 index 0000000..52b9ef3 --- /dev/null +++ b/content/locales/ar_EG/lessons/markdown/listas-em-markdown-27-11-2017.md @@ -0,0 +1,44 @@ +# Introdução ao Markdown + +## Listas + +As listas são bastante convenientes. Listar tópicos, enumerar uma sequência determinada de instruções, tudo isso é possível com listas. Existem dois tipos de listas: Listas com Marcadores (ou simplesmente listas não ordenadas) e listas ordenadas. Vamos diferenciar ambas e descobrir como fazer? + +## Listas Não Ordenadas + +Essas listas são bastante convenientes quando necessitamos listar tópicos, mas que não necessariamente sigam alguma ordem específica. Possuem apenas marcadores, mas não são ordenadas. O Markdown possui três caracteres diferentes para formatar essas listas, são equivalentes. Os caracteres são: "*" (asterisco), "+" (mais) e "-" (menos). Veja os exemplos: + +Lista com asteriscos: + +- Primeiro tópico. +- Segundo tópico. + +Lista com sinal de mais + +- Primeiro tópico. +- Segundo tópico. + +Lista com sinal de menos + +- Primeiro tópico. +- Segundo tópico. + +## Listas Ordenadas + +As listas ordenadas são bastante úteis quando há a necessidade de ordenar os tópicos, como o passo a passo de uma receita, por exemplo, que precisa seguir uma sequência para dar certo. Para formatar esse tipo de lista, utilize o símbolo "@" (arroba) seguido de um ponto. A lista será ordenada automaticamente. + +Exemplo: @. Primeiro tópico. @. Segundo tópico. + +### Exercícios + +1. Abra o arquivo "Testando Markdown.txt" e vá para o final. + +2. Escreva uma lista com marcadores usando asterisco. + +3. Escreva uma lista com marcadores usando mais. + +4. Escreva uma lista com marcadores usando menos. + +5. Escreva uma lista ordenada. + +6. Salve e feche o arquivo. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/markdown/notas-de-rodape-08-12-2017.md b/content/locales/ar_EG/lessons/markdown/notas-de-rodape-08-12-2017.md new file mode 100644 index 0000000..8634722 --- /dev/null +++ b/content/locales/ar_EG/lessons/markdown/notas-de-rodape-08-12-2017.md @@ -0,0 +1,13 @@ +# Introdução ao Markdown + +## Notas de Rodapé + +Uma nota de rodapé é bastante útil para referenciar um site, link ou detalhes a respeito de determinado assunto. A nota é composta por dois elementos: Uma marcação no texto que fará referência a essa nota, e uma definição da nota que aparecerá no fim do documento. Veja o exemplo: *Leia sobre isso no livro. [^1]* + +Ou seja, o "1" na primeira linha está referenciando os detalhes que estão na segunda. Note que o "1" é apenas uma referência para marcar a nota, poderia escrever qualquer outro número, a ordem nesse caso não importa. As notas serão ordenadas à medida que forem referenciadas no texto. + +### Exercícios + +1. Abra o arquivo de testes do markdown. + +2. Incira notas de rodapé espalhadas pelo texto. Não se importe com a ordem dos números. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/music/reproducao-de-musicas-e-videos-09-01-2018.md b/content/locales/ar_EG/lessons/music/reproducao-de-musicas-e-videos-09-01-2018.md new file mode 100644 index 0000000..b1369f8 --- /dev/null +++ b/content/locales/ar_EG/lessons/music/reproducao-de-musicas-e-videos-09-01-2018.md @@ -0,0 +1,35 @@ +# Músicas + +## Reprodução de Músicas e Vídeos + +É possível reproduzir músicas e vídeos usando o terminal. Para isso, será utilizado o reprodutor Mplayer, um excelente programa de reprodução. + +Após instalá-lo, acompanhe as instruções abaixo. + +## Reprodução de Músicas + +Para reproduzir músicas, digite o seguinte comando: *mplayer musica.mp3* Se você não estiver localizado no diretório onde estão salvas as suas músicas, é preciso digitar o caminho completo. Você também pode reproduzir um diretório inteiro. Para isso, digite: *mplayer caminho-do-diretorio * * O asterisco informa ao Mplayer para reproduzir todo o conteúdo do diretório. + +## Reprodução de Vídeos + +Para reproduzir vídeos, basta executar o mesmo comando executado anteriormente para músicas, o que muda é a extensão. Para reproduzir um vídeo em formato MP4, digite: *mplayer video.mp4* + +## Opções + +Veja abaixo algumas opções do Mplayer: + +Setas esquerda e direita: Avança e volta em segundos. PageDown e PageUP: Avança e volta em minutos. P ou barra de espaço: Pausar. F: Muda de janela para tela inteira e vice versa. / e \*: Controle de volume. + +### Exercícios + +1. Instale o Mplayer, navege até um diretório de músicas e reproduza uma delas. + +2. Navegue até um diretório de vídeos e reproduza um deles. + +3. Reproduza uma música passando o caminho completo do diretório. + +4. Reproduza um vídeo passando o caminho completo do diretório. + +5. Reproduza um diretório completo de música e vídeo. + +6. Avance, retroceda e altere o volume. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/mutt-client/lista-de-contatos-28-12-2017.md b/content/locales/ar_EG/lessons/mutt-client/lista-de-contatos-28-12-2017.md new file mode 100644 index 0000000..955db07 --- /dev/null +++ b/content/locales/ar_EG/lessons/mutt-client/lista-de-contatos-28-12-2017.md @@ -0,0 +1,13 @@ +# Cliente Mutt + +## Lista de Contatos + +É fundamental ter uma lista com os endereços de e-mail que você precisa contatar com frequência. Para adicionar um contato na lista, abra o Mutt e digite "a". Será solicitado o apelido, o endereço de e-mail e o nome do contato. Essa lista pode ser editada no arquivo *~/.muttrc* quando necessário. O contato é definido por (alias) no arquivo. + +### Exercícios + +1. Abra o Mutt e adicione contatos à lista. + +2. Salve os contatos e feche o programa. + +3. Abra o arquivo de configurações, procure os contatos e edite. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/mutt-client/personalizacao-de-atalhos-no-mutt-01-03-2018.md b/content/locales/ar_EG/lessons/mutt-client/personalizacao-de-atalhos-no-mutt-01-03-2018.md new file mode 100644 index 0000000..efc0a1f --- /dev/null +++ b/content/locales/ar_EG/lessons/mutt-client/personalizacao-de-atalhos-no-mutt-01-03-2018.md @@ -0,0 +1,19 @@ +# Cliente Mutt + +## Personalizando Atalhos + +No Mutt, é possível personalizar os atalhos, atribuindo atalhos à sua escolha, substituindo os originais. Isso é feito no arquivo .muttrc. Se for feito no arquivo que fica na sua pasta de usuário, as alterações só funcionarão no seu usuário. Se quiser aplicar as alterações em todo o sistema, basta fazer as alterações no arquivo de mesmo nome na pasta /etc. + +O Mutt possui vários tipos de menus, e os atalhos devem ser associados a um ou mais deles. Para associar um atalho a vários menus, basta separá-los por vírgulas. Alguns menus existentes são: pager: É o modo usado para exibir dados de mensagens / anexos e listas de ajuda. attach: É usado para acessar os anexos nas mensagens recebidas. index: É a lista de mensagens contidas em uma caixa de correio. compose: É a tela usada ao enviar uma nova mensagem. + +Existem mais menus, que podem ser consultados nos manuais do programa. A atribuição é feita da seguinte forma: bind menu atalho função Onde: bind: Indica a atribuição de um atalho. menu: Indica o menu a qual aquele atalho pertence, ou seja, qual o tipo de ação será executada (navegação, ajuda, anexos, etc.). atalho: A combinação de teclas atribuída por você. função: A função que o atalho executará naquele menu. Nos manuais existe uma tabela completa de funções e teclas que podem ser atribuídas. Para atribuir o control, por exemplo, e mais uma letra, basta escrever: \cx Onde: c: Representa a tecla Control. x: Representa a combinação atribuída, pode ser qualquer letra disponível. Observação: No caso do Ctrl, maiúsculas e minúsculas são ignoradas tanto para ele quanto para a letra que o acompanha. Nos demais casos, maiúsculas e minúsculas não são ignoradas. Segue abaixo alguns exemplos de atribuições: bind pager j next-line bind pager k previous-line bind pager g top bind pager G bottom bind attach,index g first-entry bind attach,index G last-entry bind attach,index,pager \CD next-page bind attach,index,pager \CU previous-page + +Note que, no exemplo acima, a letra "g" foi usada várias vezes. Mas em alguns comandos estava maiúscula, e em outros minúscula. E, mesmo assim, note que elas se repetiram, mas para menus diferentes. + +### Exercícios + +1. Antes de qualquer alteração, faça uma cópia do seu arquivo .muttrc original para outra pasta. Dessa forma, qualquer alteração errada pode ser reparada, bastando copiar o arquivo original novamente para sua pasta de usuário. + +2. Personalize seu arquivo .muttrc. + +3. Utilize a tabela de funções, menus e teclas para criar suas próprias combinações. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/mutt-client/primeiros-passos-28-12-2017.md b/content/locales/ar_EG/lessons/mutt-client/primeiros-passos-28-12-2017.md new file mode 100644 index 0000000..33497e0 --- /dev/null +++ b/content/locales/ar_EG/lessons/mutt-client/primeiros-passos-28-12-2017.md @@ -0,0 +1,37 @@ +# Cliente Mutt + +## Primeiros Passos + +Hoje o e-mail executa um papel absolutamente essencial no processo da comunicação. A praticidade e rapidez com que se pode enviar mensagens pela internet a vários destinatários elegeu esta ferramenta como um dos principais recursos de comunicação utilizados na atualidade. O Mutt é um excelente cliente de e-mail para terminal. Depois de instalado, basta digitar "mutt" no terminal para executá-lo. Ele pode parecer meio sem graça no começo, mas não se preocupe. A configuração inicial não é muito amigável, mas é possível resolver de forma simples. O arquivo *~/.muttrc* deve ser criado e configurado para ficar do jeito que você quer. Abaixo seguem algumas configurações básicas: Observação: Para colocar comentários no arquivo de configuração, basta iniciar a linha com um "#". Isso é importante antes de cada configuração, para não esquecer o que ela significa. + +# Configuração do SMTP + +set smtp_url = "smtp://email@smtp.dominio.com:587/" + +# set smtp_pass = "senha" + +set from = "email@dominio.com" set realname = "Seu Nome" + +# Configurações Imap + +# Ativação da segurança TLS + +set ssl_starttls=yes + +# Sempre usar TLS + +set ssl_force_tls=yes + +Basta salvar o arquivo e executar o Mutt. Alguns comandos básicos ao abrir o Mutt: q: Sai do Mutt. d: Apaga a mensagem. u: Desfaz a ação do delete. r: Responde um e-mail. g: Responde para todos os endereços que constam na mensagem. @: Mostra o e-mail do autor. v: Mostra os arquivos anexos. m: Cria uma nova mensagem. ?: Ajuda do programa. + +Para enviar um e-mail, faça o seguinte: *echo 'Conteúdo do e-mail' | mutt -s 'Assunto do e-mail' email-do-destinatario@dominio.com* Para enviar um anexo, faça o seguinte: *echo 'Conteúdo do e-mail' | mutt -s 'Assunto do e-mail' -a anexo1.txt anexo2.txt -- email-do-destinatario@dominio.com* + +### Exercícios + +1. Configure o Mutt. + +2. Execute o programa e teste suas opções. + +3. Envie um e-mail de teste. + +4. Envie um e-mail de teste com anexo. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/nano-editor/edicao-de-arquivos-com-nano-08-11-2017.md b/content/locales/ar_EG/lessons/nano-editor/edicao-de-arquivos-com-nano-08-11-2017.md new file mode 100644 index 0000000..1b21878 --- /dev/null +++ b/content/locales/ar_EG/lessons/nano-editor/edicao-de-arquivos-com-nano-08-11-2017.md @@ -0,0 +1,40 @@ +# Editor Nano + +## Edição de Arquivos Com Nano + + O Nano é uma alternativa para edição de textos no terminal, e está disponível + + +em quase todas as distribuições Linux. + +O Nano é uma boa escolha para iniciantes por ser mais fácil de usar e possuir uma interface bastante intuitiva. + +Vamos abrir o nano e conhecer um pouco sobre esse editor: Para abrir um novo arquivo, digite o comando: *nano novo_arquivo.txt* + +Para abrir um arquivo existente, o nosso antigo arquivo de testes, por exemplo, digite: *nano teste* Observação: Se o arquivo não existir, será criado automaticamente. + +Para abrir o Nano sem carregar nenhum arquivo, basta digitar: *nano* Depois, basta usar o comando: *^r* e informar o nome do arquivo que deseja abrir. + +Ao abrir o editor, várias funções são anunciadas. Vale notar que ^ (circunflexo) é o mesmo que Ctrl, sendo assim, ^G significa Ctrl + G. + +Abaixo, seguem algumas opções do editor: + +^G: apresenta a tela de ajuda sobre mais comandos do editor. ^X: sai do editor; se o arquivo não estiver salvo será solicitado para salvar antes de sair. ^O: salva um arquivo. ^R: Solicita o nome de um arquivo para abrir. Setas: Navegam pelo texto. + +Edite o arquivo normalmente, use "enter" para mudar de linha. + +Feche o arquivo. Se ele não estiver salvo e quiser salvá-lo, siga as instruções. Digite: *y* Para confirmar que deseja salvar, depois pedirá o nome do arquivo. Basta teclar "enter". Se quiser, modifique o nome do arquivo e confirme com "y". + +Você pode ler o arquivo com o próprio Nano ou com o comando "cat" para conferir o conteúdo. + +### Exercícios + +1. Crie um novo arquivo com o nano. + +2. Escreva um texto e salve o arquivo. + +3. Escreva mais texto e feche o editor. Salve o arquivo quando for solicitado. + +4. Verifique se o arquivo foi criado. Abra-o com o nano e leia o conteúdo com as setas. + +5. Edite o arquivo e feche o editor. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/nano-editor/navegando-pelo-nano-08-11-2017.md b/content/locales/ar_EG/lessons/nano-editor/navegando-pelo-nano-08-11-2017.md new file mode 100644 index 0000000..7206dbb --- /dev/null +++ b/content/locales/ar_EG/lessons/nano-editor/navegando-pelo-nano-08-11-2017.md @@ -0,0 +1,49 @@ +# Editor Nano + +## Navegando Pelo Editor + +Depois de editar textos com o Nano, abordaremos alguns comandos de navegação pelo texto. + +Confira a seguir: + +Abrir vários arquivos simultaneamente: *nano teste1 teste2* Neste caso, apenas o primeiro será exibido. Para navegar entre os arquivos, utilize: *Alt + >* (maior) para navegar para frente, e: *Alt + <* (menor) para navegar para trás. + +Abrir um arquivo em modo somente-leitura: *nano -v teste* + +Ir para uma linha e coluna específicas (com o arquivo já aberto): *Alt + g* O número da coluna é opcional. + +Levar o cursor para o início e para o final do documento: Para o início: *Alt + * Para o final: Alt + / + +Rolar uma página para frente e para trás: Para frente: *^v* Para trás: *^y* + +Recortar a linha toda onde se encontra o cursor e guardá-la no buffer de transferência: *^k* Essa opção pode ser usada para apagar uma linha inteira. + +Colar o conteúdo do buffer de transferência no local onde se encontra o cursor: *^u* + +Efetuar uma busca por palavra no texto: *^w* Para repetir a busca pela mesma palavra, digite *Alt + w* + +A ajuda do programa: *^g* + +Selecionar texto (região) para copiar ou recortar trechos de texto: Primeiramente, posicione o cursor no local a partir de onde o texto desejado será selecionado (a seleção pode ser feita tanto para frente quanto para trás) Pressionar a combinação de teclas: *Alt + a* para ativar a marcação de textos (modo de seleção). Efetuar a seleção usando as setas direcionais do teclado. Após selecionar o texto desejado como mostrado no item #13, pressione agora a combinação de teclas *Alt + 6* para copiar o conteúdo selecionado para o buffer de transferência. Para colar o texto em outro local dentro do arquivo, posicione o cursor no destino e use a combinação: *^u* + +Mostrar a posição atual do cursor dentro do texto, incluindo linha, coluna e número do caractere: *^c* + +Observação: Lembre-se que ^ (circunflexo) representa "ctrl". + +### Exercícios + +1. Crie outro arquivo com o Nano, escreva um texto e salve o arquivo. + +2. Abra os dois arquivos simultaneamente com o Nano e navegue entre eles. + +3. Escolha um dos arquivos, copie uma linha de texto e cole no outro arquivo. + +4. Escolha uma linha de texto de sua preferência e a remova. + +5. Cole a linha anteriormente removida no outro arquivo. + +6. Verifique qual a posição atual do cursor no texto. + +7. Mova o cursor para o início do texto e vá para uma linha e coluna expecíficas. Depois role até o fim do arquivo. + +8. Busque por uma palavra repetidas vezes em ambos os arquivos e verifique os resultados. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/network/uso-do-rsync-27-12-2017.md b/content/locales/ar_EG/lessons/network/uso-do-rsync-27-12-2017.md new file mode 100644 index 0000000..02a7b1e --- /dev/null +++ b/content/locales/ar_EG/lessons/network/uso-do-rsync-27-12-2017.md @@ -0,0 +1,27 @@ +# Rede + +## Utilização do Rsync + +O Rsync, como o nome sugere, é um programa que copia e sincroniza remotamente os dados entre duas máquinas. O software herdou as propriedades de criptografia do protocolo SSH, o que torna sua transmissão de dados mais segura que o FTP. Ele é excelente para copiar e fazer backup de informações. Para funcionar, o Rsync e o SSH devem estar instalados em ambas as máquinas que vão se comunicar. Alguns parâmetros do Rsync são: -v: Verborrágico, o programa mostrará todas as ações na tela. -r: Cópias de dados de maneira recursiva. -a: Modo de arquivamento, o modo de arquivo permite a cópia de arquivos de forma recursiva e também preserva links simbólicos e permissões de arquivos. -z: Arquivos serão comprimidos. -h: Deixa a saída de forma legível para seres humanos. + +## Copiando ou Sincronizando Diretórios Locais + +A sintaxe fica da seguinte forma: *rsync parâmetros origem destino* Se o diretório de destino não existir, será criado automaticamente. + +## Copiando ou Sincronizando Arquivos Locais Para um Servidor Remoto + +Um pré-requisito para enviar seus arquivos para o servidor remoto é possuir uma conta de usuário no sistema. A sintaxe fica da seguinte forma: rsync parâmetros diretorio-local usuario@servidor:/diretorio-remoto* A senha de usuário será solicitada. Basta digitá-la e os arquivos serão copiados. + +## Copiando ou Sincronizando Arquivos do Servidor Para Sua Máquina Local + +Esta situação também requer um login para autenticação no servidor,. + +Se você entendeu como funciona o comando anterior, basta inverter a ordem dos parâmetros. A sintaxe fica da seguinte forma: *rsync parâmetros usuario@servidor:/diretorio-remoto diretorio-local* + +### Exercícios + +1. Copie ou sincronize seus arquivos no seu computador com o Rsync. + +2. Copie ou sincronize seus arquivos do computador com um servidor remoto. + +3. Copie ou sincronize arquivos do servidor para seu computador. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/network/uso-do-sftp-02-01-2018.md b/content/locales/ar_EG/lessons/network/uso-do-sftp-02-01-2018.md new file mode 100644 index 0000000..5f004db --- /dev/null +++ b/content/locales/ar_EG/lessons/network/uso-do-sftp-02-01-2018.md @@ -0,0 +1,25 @@ +# Rede + +## Utilização do SFTP + +FTP (Protocolo de Transferência de Arquivos) é um protocolo popular de transferência de arquivos entre sistemas. SFTP (Protocolo de Transferência de Arquivos com SSH) é um protocolo separado, empacotado com SSH que funciona de forma similar em cima de uma conexão segura. O FTP não é recomendado, já que não tem segurança. Para se conectar com SFTP, basta seguir o mesmo estilo de conexão SSH da seguinte forma: *sftp usuario@servidor* Para navegar no SFTP os comandos são os mesmos do terminal. Se precisar, digite: *help* para obter ajuda. Os comandos exibirão o conteúdo do servidor. Mas e se quiser ver os arquivos e diretórios da sua máquina? Isso é possível, caso contrário não seria interessante transferir arquivos do computador para o servidor e do servidor para o computador. Para ver o conteúdo do seu computador, basta preceder cada comando pela letra "l". Por exemplo, para exibir o conteúdo de um diretório local, digite: *lls* e para trocar de diretório, digite: *lcd diretório*. + +## Download de Arquivos e Diretórios + +Para transferir um arquivo do servidor para o computador, utiliza-se o comando "get". Digite: *get nome-do-arquivo*. Se você quiser copiar o arquivo com um outro nome, digite: *get nome-do-arquivo novo-nome*. Para transferir um diretório inteiro com seu conteúdo, digite: *get -r Diretório*. Observação: O parâmetro "-r" indica recursão. Sem ele, o diretório será copiado, mas sem seu conteúdo. + +## Upload de Arquivos e Diretórios + +Para transferir arquivos do computador para o servidor, o comando utilizado é o "put". Funciona de maneira semelhante ao "get". Digite: *put Nome-do-Arquivo*. Para copiar o arquivo com um novo nome, digite: *put Nome-do-Arquivo Novo-Nome* Para transferir um diretório inteiro com seu conteúdo, digite: *put -r Diretório*. + +### Exercícios + +1. Conecte-se com SFTP e navegue pelos diretórios. + +2. Transfira um arquivo do servidor para seu computador. + +3. Transfira um diretório do servidor para seu computador. + +4. Transfira um arquivo do seu computador para o servidor. + +5. Transfira um diretório do seu computador para o servidor. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/network/uso-do-ssh-27-12-2017.md b/content/locales/ar_EG/lessons/network/uso-do-ssh-27-12-2017.md new file mode 100644 index 0000000..61f17ca --- /dev/null +++ b/content/locales/ar_EG/lessons/network/uso-do-ssh-27-12-2017.md @@ -0,0 +1,21 @@ +# Rede + +## Utilização do SSH + +SSH (Shell Seguro) é um protocolo de administração remota que permite aos usuários controlar e modificar seus servidores pela Internet. O serviço foi criado como uma substituição segura para o Telnet, e usa técnicas criptográficas para garantir que todas as comunicações do servidor remoto aconteçam de forma criptografada. Ele fornece um mecanismo para autenticar um usuário remoto, transferindo entradas do cliente para o servidor de hospedagem e retransmitindo a saída para o cliente. Você pode executar comandos de segurança de modo remoto, como se você estivesse operando fisicamente o computador. O comando SSH é dividido em três partes: ssh 'usuario'@'endereço do servidor' O SSH indica que você deseja abrir uma conexão segura. O usuário representa a conta que você quer acessar, a raiz, por exemplo. O endereço do servidor representa o computador que você quer acessar. Pode ser um endereço IP, como por exemplo: 244.235.23.19, ou um endereço de domínio, por exemplo: www.exemplodeendereco.com. Ao pressionar "enter", será solicitada a senha da conta que você quer acessar. Basta digitá-la e acessar o servidor. Nada aparece na tela, mas a senha é enviada. + +Os comandos são os mesmos de um computador local. Para copiar arquivos entre sua máquina e o servidor, existe uma versão segura do comando "cp", o "scp" (Secure Copy). Para copiar arquivos da máquina local para o servidor, faça o seguinte: *scp diretorio-local usuario@servidor:/diretorio-remoto* + +Para copiar do computador remoto para o local, basta inverter os parâmetros: *scp usuario@servidor:/diretorio-remoto diretorio-local* + +### Exercícios + +1. Abra o terminal e faça uma conexão SSH. + +2. Liste os arquivos do diretório. + +3. Troque de diretório. + +4. Copie arquivos do seu computador para o servidor usando o comando de cópia segura. + +5. Copie arquivos do servidor para seu computador. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/network/uso-do-wget-02-01-2018.md b/content/locales/ar_EG/lessons/network/uso-do-wget-02-01-2018.md new file mode 100644 index 0000000..f8c377f --- /dev/null +++ b/content/locales/ar_EG/lessons/network/uso-do-wget-02-01-2018.md @@ -0,0 +1,15 @@ +# Rede + +## Utilização do Wget + +O Wget é muito útil para fazer downloads de endereços na Internet. Suas principais vantagens é a possibilidade de restringir o tipo de arquivo a ser baixado e a possibilidade de retomar o download de onde parou, caso este seja interrompido. Para fazer um download, basta fornecer o link do que desejar baixar. Exemplo: *wget http://www.site.com.br/download/arquivo-exemplo.zip* Abaixo, seguem alguns parâmetros do Wget: -r: Download recursivo. -nd: Não baixar diretórios, apenas os arquivos. -c: Retomar o download de onde parou. Exemplo: *wget -c http://www.site.com.br/download/arquivo-exemplo.zip* --accept=: Baixar apenas arquivos especificados. Por exemplo, se quiser baixar apenas arquivos .zip, digite: *wget -r --accept=zip http://www.site.com.br/download//*. É possível especificar várias extensões, separando por vírgulas. Se quiser fazer vários downloads, basta colocar todos os links em um arquivo e passar o caminho dele como parâmetro. Exemplo: *wget -i arquivo_com_urls.txt* + +### Exercícios + +1. Faça um download da Internet. + +2. Faça download de arquivos com a mesma extensão. + +3. Baixe arquivos sem seus diretórios. + +4. Reuna vários links em um arquivo e faça download. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/package-management/instalando-e-removendo-pacotes-29-12-2017.md b/content/locales/ar_EG/lessons/package-management/instalando-e-removendo-pacotes-29-12-2017.md new file mode 100644 index 0000000..70b7dd3 --- /dev/null +++ b/content/locales/ar_EG/lessons/package-management/instalando-e-removendo-pacotes-29-12-2017.md @@ -0,0 +1,31 @@ +# Gerenciamento de Pacotes + +## Instalando e Removendo Pacotes + +No Linux, os programas são disponibilizados em forma de pacotes. Existem repositórios (o local onde os pacotes ficam armazenados) oficiais e dos próprios usuários. + +## Instalando um Pacote + +Para instalar um pacote ou programa, execute o seguinte comando no terminal: *sudo pacman -S pacote* Será solicitada a sua senha de administrador. Basta digitá-la e pressionar "enter". + +## Removendo um Pacote + +Para remover um pacote, execute o seguinte comando: *sudo pacman -R pacote* + +## Opções: + +Abaixo serão listadas algumas opções extras do comando "pacman": Procurar pacote: *sudo pacman -Ss pacote* Listar todos os pacotes instalados: *sudo pacman -Q* Desinstalar pacotes, dependências e todos os registros: *sudo pacman -Rscn* Procurar atualização: *sudo pacman -Su* + +### Exercícios + +1. Pesquise um pacote. + +2. Instale um pacote no computador. + +3. Procure atualizações dos pacotes. + +4. Liste todos os pacotes instalados no computador. + +5. Remova um pacote. + +6. Remova um pacote com todas as dependências e registros. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/package-management/opcoes-avancadas-29-12-2017.md b/content/locales/ar_EG/lessons/package-management/opcoes-avancadas-29-12-2017.md new file mode 100644 index 0000000..5c95444 --- /dev/null +++ b/content/locales/ar_EG/lessons/package-management/opcoes-avancadas-29-12-2017.md @@ -0,0 +1,15 @@ +# Gerenciamento de Pacotes + +## Opções Avançadas + +O "pacman" tem opções interessantes para gerenciar pacotes. Abaixo serão listados mais alguns comandos úteis: Instalar pacotes sem precisar de confirmação: *sudo pacman -S pacote noconfirm* Instalar pacotes sem dependências: *sudo pacman -Sdd* Listar pacotes desnecessários (sem dependências): *sudo pacman -Qdt* Apagar pacotes desnecessários (sem dependências): *sudo pacman -Rns $(pacman -Qqdt)* Apagar pacotes e deixar suas dependências no computador: *sudo pacman -Rdd* + +### Exercícios + +1. Instale pacotes ignorando as dependências. + +2. Instale pacotes sem precisar de confirmação. + +3. Liste pacotes que não possuem dependências e os remova. + +4. Remova pacotes deixando as dependências no computador. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/permission/alterando-dono-e-grupo-de-arquivos-17-01-2018.md b/content/locales/ar_EG/lessons/permission/alterando-dono-e-grupo-de-arquivos-17-01-2018.md new file mode 100644 index 0000000..b40c135 --- /dev/null +++ b/content/locales/ar_EG/lessons/permission/alterando-dono-e-grupo-de-arquivos-17-01-2018.md @@ -0,0 +1,13 @@ +# Permissões + +## Alterando o Dono e / ou Grupo de Arquivos + +O comando "chown" permite alterar o dono e/ou grupo de um arquivo. Os parâmetros do comando são: -c: Informa quais arquivos estão sendo alterados. -R: Altera, recursivamente, o dono e/ou grupo. Exemplo: *chown -Rc aluno:informatica teste* O comando acima atribui o diretório teste e todos os arquivos dele ao usuário aluno e ao grupo informática. Para alterar apenas o dono, digite: *chown -Rc aluno teste* Para alterar apenas o grupo, digite: *chown -Rc :informatica teste* + +### Exercícios + +1. Altere o dono do diretório teste para seu nome e o grupo para informática. + +2. Altere apenas o dono do diretório. + +3. Altere apenas o grupo do diretório. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/permission/atribuindo-permissoes-17-01-2018.md b/content/locales/ar_EG/lessons/permission/atribuindo-permissoes-17-01-2018.md new file mode 100644 index 0000000..84b50f0 --- /dev/null +++ b/content/locales/ar_EG/lessons/permission/atribuindo-permissoes-17-01-2018.md @@ -0,0 +1,17 @@ +# Permissões + +## Atribuindo Permissões + +O comando "chmod" atribui permições de acesso a um arquivo ou diretório. Os parâmetros são: u: Permissão para o dono (user). g: Permissão para o grupo (group). o: Permissão para usuários que não são membros do grupo (others). a: Permissão para todos (all). r: Leitura. w: Gravação. x: Execução (para arquivos) ou autorização de acesso (para diretórios). Exemplo: *chmod ug+rw teste.txt* O comando define que o arquivo "teste.txt" tem permissão de leitura (r) e gravação (r) para usuários e membros do grupo. Também é possível definir permissões com números: 0: Sem permissão. 1: Permissão de execução. 2: Permissão de gravação. 3: Permissão de gravação e execução. 4: Permissão de leitura. 5: Permissão de leitura e execução. 6: Permissão de leitura e gravação. 7: Permição de leitura, gravação e execução. Os números são interpretados da direita para a esquerda, de modo que o último número definido no comando será a permissão para outros usuários, o do meio será para membros do grupo e o primeiro para o dono. Exemplo: *chmod 764 teste.txt* O comando acima define permissão de leitura, gravação e execução para o dono (7), leitura e gravação para os membros do grupo (6) e somente leitura para outros usuários (4). + +### Exercícios + +1. Defina permissão de leitura, gravação e execução para o dono do arquivo, para membros do grupo, e somente leitura para outros usuários. + +2. Defina permissão de leitura, gravação e execução para o dono, somente leitura para o grupo e nenhuma permissão para outros usuários. + +3. Defina permissão de leitura, gravação e execução para o grupo e somente leitura para outros usuários. + +4. Defina permissão de leitura, gravação e execução para todos. + +5. Defina permissão de leitura, gravação e execução para o dono, leitura e execução para membros do grupo e somente execução para todos os usuários. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/uso-de-alias-12-01-2018.md b/content/locales/ar_EG/lessons/uso-de-alias-12-01-2018.md new file mode 100644 index 0000000..1f4f749 --- /dev/null +++ b/content/locales/ar_EG/lessons/uso-de-alias-12-01-2018.md @@ -0,0 +1,19 @@ +# Utilização de Alias + +Um recurso muito interessante disponível no sistema operacional é o Alias. Um Alias nada mais é do que um apelido para determinada instrução. É muito útil, especialmente, para comandos grandes e que necessitam ser usados com frequência. Para conhecer a lista de alias disponível, digite: *alias* + +## Criando um Alias + +É muito simples criar um alias. Por exemplo, em vez de digitar "clear" para limpar o terminal, poderíamos digitar apenas "cl". Para isso, digite: *alias cl='clear'* O comando funciona da seguinte forma: Em primeiro lugar vem o apelido, e depois a instrução correspondente. + +## Tornando o Alias Fixo + +O único problema é que todo alias criado dessa forma só funcionará enquanto o seu usuário estiver ativo. Para tornar um alias fixo no seu usuário, é preciso adicioná-lo no arquivo ".bashrc" que está na pasta home do usuário em questão. Ao abrir o arquivo, note que existem várias configurações. Existe uma sessão específica para alias. Procure por: "# some more ls aliases". Adicione seu alias nessa sessão, com a mesma sintaxe já feita no terminal. Salve o arquivo e saia do editor. Depois, tente executar seu alias. Ele não funcionará, pois o terminal ainda não leu o arquivo para aplicar a configuração. Para isso, você pode encerrar o terminal e abrir novamente, ou então utilizar o comando "source" da seguinte forma: *source .bashrc* Agora sim, digite novamente seu alias e veja que funcionará normalmente. + +### Exercícios + +1. Atribua um apelido a um comando que julgue importante. + +2. Edite o arquivo de configuração e torne seus aliases fixos. + +3. Escolha um dos métodos para que o terminal leia o arquivo e aplique a configuração. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/uso-do-screen-09-02-2018.md b/content/locales/ar_EG/lessons/uso-do-screen-09-02-2018.md new file mode 100644 index 0000000..fe70a22 --- /dev/null +++ b/content/locales/ar_EG/lessons/uso-do-screen-09-02-2018.md @@ -0,0 +1,23 @@ +# Screen + +## Uso do Screen + +O Screen é um multiplexador de terminais que permite ao usuário, em uma mesma sessão, abrir várias janelas e realizar atividades paralelas. Se você precisa realizar outra tarefa enquanto faz um download, por exemplo, o screen é muito útil, já que é possível abrir outra tela de terminal enquanto seu download é feito em segundo plano. + +## Utilização + +Para utilizar o screen, basta digitar: *screen* Nada vai aparecer, mas o screen estará aberto nesse momento. Agora, você pode executar a tarefa que quer deixar em segundo plano enquanto faz outras. Depois disso, pressione a combinação: *Ctrl+A D* Essa combinação de teclas fará com que essa sessão virtual seja separada (detached) da sessão original, liberando por consequência o terminal para realização de outra tarefa. Para listar as sessões abertas, digite: *screen -ls* Se você estiver em outra sessão e quiser restaurar a anterior, para verificar o estado de download, por exemplo, digite: *screen -r* Observação: Quando o comando tem uma letra separada, como o comando visto acima (Ctrl+A D, por exemplo), significa que Ctrl+A devem ser pressionadas ao mesmo tempo, e o D deve ser pressionado só após soltar as teclas anteriores. + +## Múltiplas Telas + +Para criar e navegar por mútiplas telas dentro do screen, veja os comandos a seguir: Ctrl+A c: Criar nova janela. Ctrl+A p: Ir para a tela anterior. Ctrl+A n: Ir para a tela seguinte. Para fechar o screen, execute: *exit* + +### Exercícios + +1. Abra o terminal, execute o screen e inicie o download de um arquivo grande. + +2. Crie mais telas e execute outras tarefas. + +3. Navegue entre as telas, indo para as telas seguintes e voltando. + +4. Restaure a tela do download para verificar seu andamento. \ No newline at end of file diff --git a/content/locales/ar_EG/lessons/uso-do-sha1sum-20-02-2018.md b/content/locales/ar_EG/lessons/uso-do-sha1sum-20-02-2018.md new file mode 100644 index 0000000..9864331 --- /dev/null +++ b/content/locales/ar_EG/lessons/uso-do-sha1sum-20-02-2018.md @@ -0,0 +1,13 @@ +# Sha1Sum + +Ao baixar uma imagem de um sistema operacional, é importante verificar sua integridade antes de executá-la, evitando, assim, futuros erros. O Sha1Sum permite verificar se o arquivo baixado está com alguma falha ou corrompido. + +## Utilização + +Você pode executá-lo diretamente na pasta onde está o arquivo baixado, ou digitar o caminho completo do arquivo. Digite: *sha1sum nome-do-arquivo.iso* Uma resposta será exibida, informando o estado do arquivo atual. + +### Exercícios + +1. Baixe um arquivo ISO da internet. + +2. Execute o comando e verifique a integridade do arquivo. \ No newline at end of file diff --git a/content/locales/ar_SA/lessons/files-and-directories/manipulacao-de-diretorios-e-arquivos-no-sistema-03-11-2017.md b/content/locales/ar_SA/lessons/files-and-directories/manipulacao-de-diretorios-e-arquivos-no-sistema-03-11-2017.md new file mode 100644 index 0000000..abe2577 --- /dev/null +++ b/content/locales/ar_SA/lessons/files-and-directories/manipulacao-de-diretorios-e-arquivos-no-sistema-03-11-2017.md @@ -0,0 +1,29 @@ +# Trabalhando Com Diretórios E Arquivos + +## Copiando, Movendo, Renomeando e Removendo + +Para copiar um arquivo, usamos o comando: *cp* Vamos copiar o arquivo teste para o diretório Documentos: *cp teste Documentos* Verifique com o comando "ls" e veja o resultado: *ls Documentos* Também é possível copiar o conteúdo de um arquivo para outro, utilizando o comando da mesma maneira. *cp teste teste2* O conteúdo de teste foi copiado para teste2. Para verificar, basta ler o conteúdo de ambos com o comando "cat". + +Para copiar um diretório para outro, basta usar o parâmetro "-r". Criaremos o diretório Documentos2 e copiaremos Documentos para dentro dele. Exemplo: *mkdir Documentos2* *cp -r Documentos Documentos2* O diretório Documentos foi copiado para Documentos2. Liste o conteúdo e verifique o resultado. + +Para mover um arquivo, utilizamos o comando "mv". Exemplo: *mv teste Documentos* O arquivo foi movido para o diretório Documentos. Verifique com o comando "ls". Para renomear um arquivo ou diretório, basta digitar primeiro o nome original e depois o novo nome. Exemplo: *mv teste teste2* O arquivo teste agora chama-se teste2. Para mover um diretório, basta fazer exatamente como foi feito com arquivos. O comando "mv" já é recursivo, o que dispensa o parâmetro "-r". + +Para remover um arquivo, usamos o comando "rm". Exemplo: *rm teste* O arquivo teste foi removido. Para remover um diretório vazio, usamos o comando "mrdir". Exemplo: *rmdir Documentos* Como temos arquivos nesse diretório, ele não foi removido. Portanto, para diretórios contendo conteúdo, usamos o comando "rm -r". Exemplo: *rm -r Documentos* Agora o diretório foi removido com todo o seu conteúdo. Não se esqueça de conferir o resultado de cada alteração com os comandos "ls" e "cat". + +### Exercícios + +1. Crie um arquivo, escreva um conteúdo e copie para outro diretório. + +2. Copie o conteúdo desse arquivo para outro arquivo. + +3. Copie um diretório para outro. + +4. Mova seus arquivos para outro diretório. + +5. Renomeie o arquivo de teste. + +6. Mova um diretório para outro. + +7. Apague o arquivo de teste. + +8. Apague o diretório criado para teste. \ No newline at end of file diff --git a/content/locales/ar_SA/lessons/files-and-directories/troca-de-diretorio-03-11-2017.md b/content/locales/ar_SA/lessons/files-and-directories/troca-de-diretorio-03-11-2017.md new file mode 100644 index 0000000..379eebc --- /dev/null +++ b/content/locales/ar_SA/lessons/files-and-directories/troca-de-diretorio-03-11-2017.md @@ -0,0 +1,35 @@ +# Trabalhando Com Diretórios E Arquivos + +## Trocando de Diretório + +Agora que já foi mostrado o conteúdo de diretórios, é hora de saber como navegar de um diretório para o outro. + +O comando usado para trocar de diretório é o: *cd* + +Existem vários parâmetros para combinarmos ao comando e trocar de diretórios. Eles serão listados a seguir: + +/ Este parâmetro navega até o diretório / mais conhecido por Diretório Raiz ou "Root". Todos os demais diretórios são criados dentro do diretório raiz. Exemplo: *cd /* Se listar o conteúdo do diretório, perceberá que foi alterado. + +~ Este parâmetro aponta diretamente para o diretório "Home" do usuário (ou pasta do usuário). Exemplo: *cd ~* + +- Este parâmetro navega até o último diretório em que esteve. Considerando que os comandos anteriores foram executados, se esteve no diretório raiz e em seguida foi para o diretório de usuário, usando o comando a seguir, voltará para o diretório raiz, que é o último visitado antes do diretório atual. Exemplo: *cd -* + +Para navegar até um diretório dentro do atual, basta digitar cd seguido do nome do diretório. No exemplo a seguir, utilizarei o diretório Documentos dentro da minha pasta "Home". Exemplo: *cd Documentos* Alternativamente, é possível digitar o caminho completo do diretório. Exemplo: *cd /home/roberta/Documentos* + +.. Este parâmetro volta ao diretório anterior na hierarquia. Considerando que estejamos no diretório Documentos, de acordo com o exemplo anterior, usando esse parâmetro é possível voltar para o diretório "home". Exemplo: *cd ..* + +Observação: Quando trocar de diretório, utilize o comando: *ls* para verificar o conteúdo do diretório e certificar-se de que navegou ao diretório correto. + +### Exercícios + +1. Navegue ao diretório raiz. + +2. Liste o conteúdo do diretório e entre em algum de sua escolha. + +3. Volte ao diretório anterior. + +4. Navegue até o diretório home. + +5. Navegue ao último diretório visitado. + +6. Navegue a outro diretório utilizando o caminho completo do mesmo. \ No newline at end of file diff --git a/content/locales/ar_SA/lessons/files-and-directories/uso-do-diff-15-01-2018.md b/content/locales/ar_SA/lessons/files-and-directories/uso-do-diff-15-01-2018.md new file mode 100644 index 0000000..c8f72ec --- /dev/null +++ b/content/locales/ar_SA/lessons/files-and-directories/uso-do-diff-15-01-2018.md @@ -0,0 +1,21 @@ +# Trabalhando Com Diretórios E Arquivos + +## Uso do Diff + +O comando "diff" compara o conteúdo de dois arquivos ou diretórios e exibe a diferença entre eles, e isso inclui arquivos compactados com gzip. Os parâmetros aceitos no comando são: -i: Ignora diferenças entre maiúsculas e minúsculas. -E: Ignora diferenças de tabulação. -b: Ignora diferenças de quantidade de espaços em branco. -w: Ignora qualquer espaço em branco. -B: Ignora linhas em branco. -a: Compara os arquivos como arquivos de texto, mesmo que não sejam. -q: Mostra apenas se o conteúdo é igual ou diferente. -y: Mostra os arquivos em colunas, exibindo as diferenças. -t: Converte tabulações em espaços. -r: Compara recursivamente o conteúdo de diretórios. + +O comando reporta, basicamente, o que é preciso alterar no arquivo que vem primeiro, para que fique igual ao último. + +Para comparar dois arquivos, digite: *diff arquivo1 arquivo2* Se os arquivos forem diferentes, vai aparecer o número da linha onde isso ocorre, seguido de uma letra: a: Indica que uma informação deve ser adicionada. c: Indica que uma informação deve ser substituída. d: Indica que uma informação deve ser deletada. + +> : Indica que a informação depois dele deve ser incluída. <: Indica que a informação depois dele deve ser excluída. -: Separa informações. + +Para comparar arquivos compactados, digite: *zdiff arquivo1.gz arquivo2.gz* + +### Exercícios + +1. Compare dois arquivos e exiba a saída em colunas. + +2. Compare dois arquivos ignorando diferença de maiúsculas e minúsculas. + +3. Compare dois arquivos compactados ignorando diferenças entre maiúscula e minúscula, espaços e linhas em branco e exiba o resultado em colunas. \ No newline at end of file diff --git a/content/locales/ar_SA/lessons/files-and-directories/uso-do-find-11-01-2018.md b/content/locales/ar_SA/lessons/files-and-directories/uso-do-find-11-01-2018.md new file mode 100644 index 0000000..3171e23 --- /dev/null +++ b/content/locales/ar_SA/lessons/files-and-directories/uso-do-find-11-01-2018.md @@ -0,0 +1,39 @@ +# Trabalhando Com Diretórios E Arquivos + +## Utilização do Find + +O comando "find" é utilizado para pesquisar arquivos e diretórios no sistema sob vários critérios. + +## Pesquisando Arquivos e Diretórios Pelo Nome + +Para pesquisar um arquivo pelo nome no diretório atual, digite: *find . -name Nome-ARQUIVO.txt* Observação: Esse comando diferencia maiúsculas de minúsculas. Para ignorá-las, basta utilizar a letra "i" antes do parâmetro "name", da seguinte forma: *find . -iname Nome-ARQUIVO.txt* + +Para pesquisar um arquivo pelo nome em um diretório específico, digite: *find diretorio -iname nome-arquivo.txt* + +Para pesquisar um diretório pelo nome, digite: *find / -type d -name NOME-do-Diretório* + +## Pesquisando Arquivos Por Extensão + +Para pesquisar arquivos pela sua extensão (txt, por exemplo), digite: *find / -type f -name “*.txt”* + +## Pesquisando Arquivos Por Tamanho + +Para pesquisar arquivos por tamanho (maiores que 500 MB, por exemplo), digite: *find diretorio -size +500M* Observação: Se quiser o tamanho em GB, basta substituir o "M" por "G". O sinal de mais pesquisa por tamanhos maiores e o sinal de menos por tamanhos menores. + +## Pesquisando Arquivos Com Modificações + +Para pesquisar arquivos modificados recentemente (nos últimos 5 dias, por exemplo), digite: *find /home/ -mtime -5* + +### Exercícios + +1. Pesquise arquivos pelo nome no diretório atual. + +2. Pesquise arquivos pelo nome em outros diretórios ignorando letras maiúsculas. + +3. Pesquise diretórios pelo nome ignorando letras maiúsculas. + +4. Pesquise arquivos com a extensão "pdf". + +5. Pesquise arquivos de tamanho superior a 1 GB. + +6. Pesquise arquivos que foram modificados no último dia. \ No newline at end of file diff --git a/content/locales/ar_SA/lessons/files-and-directories/uso-do-grep-11-01-2018.md b/content/locales/ar_SA/lessons/files-and-directories/uso-do-grep-11-01-2018.md new file mode 100644 index 0000000..b21673a --- /dev/null +++ b/content/locales/ar_SA/lessons/files-and-directories/uso-do-grep-11-01-2018.md @@ -0,0 +1,25 @@ +# Arquivos e Diretórios + +## Utilização do Grep + +O comando "grep" é utilizado para buscar palavras específicas no nome de um arquivo ou em seu conteúdo. + +## Pesquisando em Nomes de Arquivos + +Para encontrar arquivos que tenham determinada palavra (teste, por exemplo), digite: *ls | grep teste* Observação: O "ls" é usado para listar os arquivos que tem a palavra correspondente. + +Para pesquisar arquivos com extensão, digite: *ls | -E grep teste.txt* Observação: O parâmetro "E" é usado para que o "grep" aceite pontos e alguns outros caracteres. + +## Pesquisando no Conteúdo dos Arquivos + +Para pesquisar uma palavra ou frase contidas em um arquivo, digite: *grep oi teste.txt* O comando retorna todas as linhas do arquivo "teste.txt" que contenham "oi". Observação: Para definir uma frase, coloque entre aspas, caso contrário o "grep" considera que a segunda palavra já faz parte do nome do arquivo. Por exemplo: *grep "bom dia" teste.txt* O comando retornará todas as linhas que contenham a frase "bom dia". + +### Exercícios + +1. Pesquise palavras em nomes de arquivos. + +2. Pesquise palavras em nomes de arquivos com extensão. + +3. Pesquise palavras dentro de arquivos. + +4. Pesquise frases dentro de arquivos. \ No newline at end of file diff --git a/content/locales/ar_SA/lessons/files-and-directories/uso-do-touch-15-01-2018.md b/content/locales/ar_SA/lessons/files-and-directories/uso-do-touch-15-01-2018.md new file mode 100644 index 0000000..1b5c4c4 --- /dev/null +++ b/content/locales/ar_SA/lessons/files-and-directories/uso-do-touch-15-01-2018.md @@ -0,0 +1,25 @@ +# Trabalhando Com Diretórios E Arquivos + +## Uso do Touch + +O comando "touch é usado para alterar a data e hora de acesso e de modificação de arquivos. É possível alterar as duas simultaneamente ou apenas uma delas. Antes de prosseguir, veja a legenda abaixo: A: Representa os dígitos do ano. M: Representa os dígitos do mês. D: Representa os dígitos do dia. H: Representa os dígitos da hora. M: Representa os dígitos do minuto. S: Representa os dígitos do segundo. + +## Alterando a Data e hora de Acesso + +Para alterar a data e hora de acesso de um arquivo, digite o seguinte comando: *touch -t AAAAMMDDhhmm.ss -a arquivo* O parâmetro "-a" indica acesso. + +## Alterando a Data e Hora de Modificação + +Para alterar a data e hora de modificação de um arquivo, digite o seguinte comando: *touch -t AAAAMMDDhhmm.ss -m arquivo* O parâmetro "-m" indica modificação. + +## Alterando a data e hora de acesso e modificação + +Para alterar data e hora de acesso e modificação de um arquivo simultaneamente, digite o seguinte comando: *touch -t AAAAMMDDhhmm.ss arquivo* Observação: Se o arquivo não existir, ele será criado com a data e hora definidas no comando. + +### Exercícios + +1. Altere a data e hora de acesso de um arquivo para 25/03/2009 06:25:44. + +2. Altere a data e hora de modificação de um arquivo para o dia anterior ao meio-dia. + +3. Altere a data e hora de acesso e modificação de um arquivo. \ No newline at end of file diff --git a/content/locales/en_US/lessons/files-and-directories/troca-de-diretorio-03-11-2017.md b/content/locales/en_US/lessons/files-and-directories/troca-de-diretorio-03-11-2017.md new file mode 100644 index 0000000..379eebc --- /dev/null +++ b/content/locales/en_US/lessons/files-and-directories/troca-de-diretorio-03-11-2017.md @@ -0,0 +1,35 @@ +# Trabalhando Com Diretórios E Arquivos + +## Trocando de Diretório + +Agora que já foi mostrado o conteúdo de diretórios, é hora de saber como navegar de um diretório para o outro. + +O comando usado para trocar de diretório é o: *cd* + +Existem vários parâmetros para combinarmos ao comando e trocar de diretórios. Eles serão listados a seguir: + +/ Este parâmetro navega até o diretório / mais conhecido por Diretório Raiz ou "Root". Todos os demais diretórios são criados dentro do diretório raiz. Exemplo: *cd /* Se listar o conteúdo do diretório, perceberá que foi alterado. + +~ Este parâmetro aponta diretamente para o diretório "Home" do usuário (ou pasta do usuário). Exemplo: *cd ~* + +- Este parâmetro navega até o último diretório em que esteve. Considerando que os comandos anteriores foram executados, se esteve no diretório raiz e em seguida foi para o diretório de usuário, usando o comando a seguir, voltará para o diretório raiz, que é o último visitado antes do diretório atual. Exemplo: *cd -* + +Para navegar até um diretório dentro do atual, basta digitar cd seguido do nome do diretório. No exemplo a seguir, utilizarei o diretório Documentos dentro da minha pasta "Home". Exemplo: *cd Documentos* Alternativamente, é possível digitar o caminho completo do diretório. Exemplo: *cd /home/roberta/Documentos* + +.. Este parâmetro volta ao diretório anterior na hierarquia. Considerando que estejamos no diretório Documentos, de acordo com o exemplo anterior, usando esse parâmetro é possível voltar para o diretório "home". Exemplo: *cd ..* + +Observação: Quando trocar de diretório, utilize o comando: *ls* para verificar o conteúdo do diretório e certificar-se de que navegou ao diretório correto. + +### Exercícios + +1. Navegue ao diretório raiz. + +2. Liste o conteúdo do diretório e entre em algum de sua escolha. + +3. Volte ao diretório anterior. + +4. Navegue até o diretório home. + +5. Navegue ao último diretório visitado. + +6. Navegue a outro diretório utilizando o caminho completo do mesmo. \ No newline at end of file diff --git a/content/locales/en_US/lessons/files-and-directories/uso-do-diff-15-01-2018.md b/content/locales/en_US/lessons/files-and-directories/uso-do-diff-15-01-2018.md new file mode 100644 index 0000000..c8f72ec --- /dev/null +++ b/content/locales/en_US/lessons/files-and-directories/uso-do-diff-15-01-2018.md @@ -0,0 +1,21 @@ +# Trabalhando Com Diretórios E Arquivos + +## Uso do Diff + +O comando "diff" compara o conteúdo de dois arquivos ou diretórios e exibe a diferença entre eles, e isso inclui arquivos compactados com gzip. Os parâmetros aceitos no comando são: -i: Ignora diferenças entre maiúsculas e minúsculas. -E: Ignora diferenças de tabulação. -b: Ignora diferenças de quantidade de espaços em branco. -w: Ignora qualquer espaço em branco. -B: Ignora linhas em branco. -a: Compara os arquivos como arquivos de texto, mesmo que não sejam. -q: Mostra apenas se o conteúdo é igual ou diferente. -y: Mostra os arquivos em colunas, exibindo as diferenças. -t: Converte tabulações em espaços. -r: Compara recursivamente o conteúdo de diretórios. + +O comando reporta, basicamente, o que é preciso alterar no arquivo que vem primeiro, para que fique igual ao último. + +Para comparar dois arquivos, digite: *diff arquivo1 arquivo2* Se os arquivos forem diferentes, vai aparecer o número da linha onde isso ocorre, seguido de uma letra: a: Indica que uma informação deve ser adicionada. c: Indica que uma informação deve ser substituída. d: Indica que uma informação deve ser deletada. + +> : Indica que a informação depois dele deve ser incluída. <: Indica que a informação depois dele deve ser excluída. -: Separa informações. + +Para comparar arquivos compactados, digite: *zdiff arquivo1.gz arquivo2.gz* + +### Exercícios + +1. Compare dois arquivos e exiba a saída em colunas. + +2. Compare dois arquivos ignorando diferença de maiúsculas e minúsculas. + +3. Compare dois arquivos compactados ignorando diferenças entre maiúscula e minúscula, espaços e linhas em branco e exiba o resultado em colunas. \ No newline at end of file diff --git a/content/locales/en_US/lessons/files-and-directories/uso-do-find-11-01-2018.md b/content/locales/en_US/lessons/files-and-directories/uso-do-find-11-01-2018.md new file mode 100644 index 0000000..3171e23 --- /dev/null +++ b/content/locales/en_US/lessons/files-and-directories/uso-do-find-11-01-2018.md @@ -0,0 +1,39 @@ +# Trabalhando Com Diretórios E Arquivos + +## Utilização do Find + +O comando "find" é utilizado para pesquisar arquivos e diretórios no sistema sob vários critérios. + +## Pesquisando Arquivos e Diretórios Pelo Nome + +Para pesquisar um arquivo pelo nome no diretório atual, digite: *find . -name Nome-ARQUIVO.txt* Observação: Esse comando diferencia maiúsculas de minúsculas. Para ignorá-las, basta utilizar a letra "i" antes do parâmetro "name", da seguinte forma: *find . -iname Nome-ARQUIVO.txt* + +Para pesquisar um arquivo pelo nome em um diretório específico, digite: *find diretorio -iname nome-arquivo.txt* + +Para pesquisar um diretório pelo nome, digite: *find / -type d -name NOME-do-Diretório* + +## Pesquisando Arquivos Por Extensão + +Para pesquisar arquivos pela sua extensão (txt, por exemplo), digite: *find / -type f -name “*.txt”* + +## Pesquisando Arquivos Por Tamanho + +Para pesquisar arquivos por tamanho (maiores que 500 MB, por exemplo), digite: *find diretorio -size +500M* Observação: Se quiser o tamanho em GB, basta substituir o "M" por "G". O sinal de mais pesquisa por tamanhos maiores e o sinal de menos por tamanhos menores. + +## Pesquisando Arquivos Com Modificações + +Para pesquisar arquivos modificados recentemente (nos últimos 5 dias, por exemplo), digite: *find /home/ -mtime -5* + +### Exercícios + +1. Pesquise arquivos pelo nome no diretório atual. + +2. Pesquise arquivos pelo nome em outros diretórios ignorando letras maiúsculas. + +3. Pesquise diretórios pelo nome ignorando letras maiúsculas. + +4. Pesquise arquivos com a extensão "pdf". + +5. Pesquise arquivos de tamanho superior a 1 GB. + +6. Pesquise arquivos que foram modificados no último dia. \ No newline at end of file diff --git a/content/locales/en_US/lessons/files-and-directories/uso-do-grep-11-01-2018.md b/content/locales/en_US/lessons/files-and-directories/uso-do-grep-11-01-2018.md new file mode 100644 index 0000000..b21673a --- /dev/null +++ b/content/locales/en_US/lessons/files-and-directories/uso-do-grep-11-01-2018.md @@ -0,0 +1,25 @@ +# Arquivos e Diretórios + +## Utilização do Grep + +O comando "grep" é utilizado para buscar palavras específicas no nome de um arquivo ou em seu conteúdo. + +## Pesquisando em Nomes de Arquivos + +Para encontrar arquivos que tenham determinada palavra (teste, por exemplo), digite: *ls | grep teste* Observação: O "ls" é usado para listar os arquivos que tem a palavra correspondente. + +Para pesquisar arquivos com extensão, digite: *ls | -E grep teste.txt* Observação: O parâmetro "E" é usado para que o "grep" aceite pontos e alguns outros caracteres. + +## Pesquisando no Conteúdo dos Arquivos + +Para pesquisar uma palavra ou frase contidas em um arquivo, digite: *grep oi teste.txt* O comando retorna todas as linhas do arquivo "teste.txt" que contenham "oi". Observação: Para definir uma frase, coloque entre aspas, caso contrário o "grep" considera que a segunda palavra já faz parte do nome do arquivo. Por exemplo: *grep "bom dia" teste.txt* O comando retornará todas as linhas que contenham a frase "bom dia". + +### Exercícios + +1. Pesquise palavras em nomes de arquivos. + +2. Pesquise palavras em nomes de arquivos com extensão. + +3. Pesquise palavras dentro de arquivos. + +4. Pesquise frases dentro de arquivos. \ No newline at end of file diff --git a/content/locales/en_US/lessons/files-and-directories/uso-do-touch-15-01-2018.md b/content/locales/en_US/lessons/files-and-directories/uso-do-touch-15-01-2018.md new file mode 100644 index 0000000..1b5c4c4 --- /dev/null +++ b/content/locales/en_US/lessons/files-and-directories/uso-do-touch-15-01-2018.md @@ -0,0 +1,25 @@ +# Trabalhando Com Diretórios E Arquivos + +## Uso do Touch + +O comando "touch é usado para alterar a data e hora de acesso e de modificação de arquivos. É possível alterar as duas simultaneamente ou apenas uma delas. Antes de prosseguir, veja a legenda abaixo: A: Representa os dígitos do ano. M: Representa os dígitos do mês. D: Representa os dígitos do dia. H: Representa os dígitos da hora. M: Representa os dígitos do minuto. S: Representa os dígitos do segundo. + +## Alterando a Data e hora de Acesso + +Para alterar a data e hora de acesso de um arquivo, digite o seguinte comando: *touch -t AAAAMMDDhhmm.ss -a arquivo* O parâmetro "-a" indica acesso. + +## Alterando a Data e Hora de Modificação + +Para alterar a data e hora de modificação de um arquivo, digite o seguinte comando: *touch -t AAAAMMDDhhmm.ss -m arquivo* O parâmetro "-m" indica modificação. + +## Alterando a data e hora de acesso e modificação + +Para alterar data e hora de acesso e modificação de um arquivo simultaneamente, digite o seguinte comando: *touch -t AAAAMMDDhhmm.ss arquivo* Observação: Se o arquivo não existir, ele será criado com a data e hora definidas no comando. + +### Exercícios + +1. Altere a data e hora de acesso de um arquivo para 25/03/2009 06:25:44. + +2. Altere a data e hora de modificação de um arquivo para o dia anterior ao meio-dia. + +3. Altere a data e hora de acesso e modificação de um arquivo. \ No newline at end of file diff --git a/content/locales/es_ES/lessons/files-and-directories/troca-de-diretorio-03-11-2017.md b/content/locales/es_ES/lessons/files-and-directories/troca-de-diretorio-03-11-2017.md new file mode 100644 index 0000000..379eebc --- /dev/null +++ b/content/locales/es_ES/lessons/files-and-directories/troca-de-diretorio-03-11-2017.md @@ -0,0 +1,35 @@ +# Trabalhando Com Diretórios E Arquivos + +## Trocando de Diretório + +Agora que já foi mostrado o conteúdo de diretórios, é hora de saber como navegar de um diretório para o outro. + +O comando usado para trocar de diretório é o: *cd* + +Existem vários parâmetros para combinarmos ao comando e trocar de diretórios. Eles serão listados a seguir: + +/ Este parâmetro navega até o diretório / mais conhecido por Diretório Raiz ou "Root". Todos os demais diretórios são criados dentro do diretório raiz. Exemplo: *cd /* Se listar o conteúdo do diretório, perceberá que foi alterado. + +~ Este parâmetro aponta diretamente para o diretório "Home" do usuário (ou pasta do usuário). Exemplo: *cd ~* + +- Este parâmetro navega até o último diretório em que esteve. Considerando que os comandos anteriores foram executados, se esteve no diretório raiz e em seguida foi para o diretório de usuário, usando o comando a seguir, voltará para o diretório raiz, que é o último visitado antes do diretório atual. Exemplo: *cd -* + +Para navegar até um diretório dentro do atual, basta digitar cd seguido do nome do diretório. No exemplo a seguir, utilizarei o diretório Documentos dentro da minha pasta "Home". Exemplo: *cd Documentos* Alternativamente, é possível digitar o caminho completo do diretório. Exemplo: *cd /home/roberta/Documentos* + +.. Este parâmetro volta ao diretório anterior na hierarquia. Considerando que estejamos no diretório Documentos, de acordo com o exemplo anterior, usando esse parâmetro é possível voltar para o diretório "home". Exemplo: *cd ..* + +Observação: Quando trocar de diretório, utilize o comando: *ls* para verificar o conteúdo do diretório e certificar-se de que navegou ao diretório correto. + +### Exercícios + +1. Navegue ao diretório raiz. + +2. Liste o conteúdo do diretório e entre em algum de sua escolha. + +3. Volte ao diretório anterior. + +4. Navegue até o diretório home. + +5. Navegue ao último diretório visitado. + +6. Navegue a outro diretório utilizando o caminho completo do mesmo. \ No newline at end of file diff --git a/content/locales/es_ES/lessons/files-and-directories/uso-do-diff-15-01-2018.md b/content/locales/es_ES/lessons/files-and-directories/uso-do-diff-15-01-2018.md new file mode 100644 index 0000000..c8f72ec --- /dev/null +++ b/content/locales/es_ES/lessons/files-and-directories/uso-do-diff-15-01-2018.md @@ -0,0 +1,21 @@ +# Trabalhando Com Diretórios E Arquivos + +## Uso do Diff + +O comando "diff" compara o conteúdo de dois arquivos ou diretórios e exibe a diferença entre eles, e isso inclui arquivos compactados com gzip. Os parâmetros aceitos no comando são: -i: Ignora diferenças entre maiúsculas e minúsculas. -E: Ignora diferenças de tabulação. -b: Ignora diferenças de quantidade de espaços em branco. -w: Ignora qualquer espaço em branco. -B: Ignora linhas em branco. -a: Compara os arquivos como arquivos de texto, mesmo que não sejam. -q: Mostra apenas se o conteúdo é igual ou diferente. -y: Mostra os arquivos em colunas, exibindo as diferenças. -t: Converte tabulações em espaços. -r: Compara recursivamente o conteúdo de diretórios. + +O comando reporta, basicamente, o que é preciso alterar no arquivo que vem primeiro, para que fique igual ao último. + +Para comparar dois arquivos, digite: *diff arquivo1 arquivo2* Se os arquivos forem diferentes, vai aparecer o número da linha onde isso ocorre, seguido de uma letra: a: Indica que uma informação deve ser adicionada. c: Indica que uma informação deve ser substituída. d: Indica que uma informação deve ser deletada. + +> : Indica que a informação depois dele deve ser incluída. <: Indica que a informação depois dele deve ser excluída. -: Separa informações. + +Para comparar arquivos compactados, digite: *zdiff arquivo1.gz arquivo2.gz* + +### Exercícios + +1. Compare dois arquivos e exiba a saída em colunas. + +2. Compare dois arquivos ignorando diferença de maiúsculas e minúsculas. + +3. Compare dois arquivos compactados ignorando diferenças entre maiúscula e minúscula, espaços e linhas em branco e exiba o resultado em colunas. \ No newline at end of file diff --git a/content/locales/es_ES/lessons/files-and-directories/uso-do-find-11-01-2018.md b/content/locales/es_ES/lessons/files-and-directories/uso-do-find-11-01-2018.md new file mode 100644 index 0000000..3171e23 --- /dev/null +++ b/content/locales/es_ES/lessons/files-and-directories/uso-do-find-11-01-2018.md @@ -0,0 +1,39 @@ +# Trabalhando Com Diretórios E Arquivos + +## Utilização do Find + +O comando "find" é utilizado para pesquisar arquivos e diretórios no sistema sob vários critérios. + +## Pesquisando Arquivos e Diretórios Pelo Nome + +Para pesquisar um arquivo pelo nome no diretório atual, digite: *find . -name Nome-ARQUIVO.txt* Observação: Esse comando diferencia maiúsculas de minúsculas. Para ignorá-las, basta utilizar a letra "i" antes do parâmetro "name", da seguinte forma: *find . -iname Nome-ARQUIVO.txt* + +Para pesquisar um arquivo pelo nome em um diretório específico, digite: *find diretorio -iname nome-arquivo.txt* + +Para pesquisar um diretório pelo nome, digite: *find / -type d -name NOME-do-Diretório* + +## Pesquisando Arquivos Por Extensão + +Para pesquisar arquivos pela sua extensão (txt, por exemplo), digite: *find / -type f -name “*.txt”* + +## Pesquisando Arquivos Por Tamanho + +Para pesquisar arquivos por tamanho (maiores que 500 MB, por exemplo), digite: *find diretorio -size +500M* Observação: Se quiser o tamanho em GB, basta substituir o "M" por "G". O sinal de mais pesquisa por tamanhos maiores e o sinal de menos por tamanhos menores. + +## Pesquisando Arquivos Com Modificações + +Para pesquisar arquivos modificados recentemente (nos últimos 5 dias, por exemplo), digite: *find /home/ -mtime -5* + +### Exercícios + +1. Pesquise arquivos pelo nome no diretório atual. + +2. Pesquise arquivos pelo nome em outros diretórios ignorando letras maiúsculas. + +3. Pesquise diretórios pelo nome ignorando letras maiúsculas. + +4. Pesquise arquivos com a extensão "pdf". + +5. Pesquise arquivos de tamanho superior a 1 GB. + +6. Pesquise arquivos que foram modificados no último dia. \ No newline at end of file diff --git a/content/locales/es_ES/lessons/files-and-directories/uso-do-grep-11-01-2018.md b/content/locales/es_ES/lessons/files-and-directories/uso-do-grep-11-01-2018.md new file mode 100644 index 0000000..b21673a --- /dev/null +++ b/content/locales/es_ES/lessons/files-and-directories/uso-do-grep-11-01-2018.md @@ -0,0 +1,25 @@ +# Arquivos e Diretórios + +## Utilização do Grep + +O comando "grep" é utilizado para buscar palavras específicas no nome de um arquivo ou em seu conteúdo. + +## Pesquisando em Nomes de Arquivos + +Para encontrar arquivos que tenham determinada palavra (teste, por exemplo), digite: *ls | grep teste* Observação: O "ls" é usado para listar os arquivos que tem a palavra correspondente. + +Para pesquisar arquivos com extensão, digite: *ls | -E grep teste.txt* Observação: O parâmetro "E" é usado para que o "grep" aceite pontos e alguns outros caracteres. + +## Pesquisando no Conteúdo dos Arquivos + +Para pesquisar uma palavra ou frase contidas em um arquivo, digite: *grep oi teste.txt* O comando retorna todas as linhas do arquivo "teste.txt" que contenham "oi". Observação: Para definir uma frase, coloque entre aspas, caso contrário o "grep" considera que a segunda palavra já faz parte do nome do arquivo. Por exemplo: *grep "bom dia" teste.txt* O comando retornará todas as linhas que contenham a frase "bom dia". + +### Exercícios + +1. Pesquise palavras em nomes de arquivos. + +2. Pesquise palavras em nomes de arquivos com extensão. + +3. Pesquise palavras dentro de arquivos. + +4. Pesquise frases dentro de arquivos. \ No newline at end of file diff --git a/content/locales/es_ES/lessons/files-and-directories/uso-do-touch-15-01-2018.md b/content/locales/es_ES/lessons/files-and-directories/uso-do-touch-15-01-2018.md new file mode 100644 index 0000000..1b5c4c4 --- /dev/null +++ b/content/locales/es_ES/lessons/files-and-directories/uso-do-touch-15-01-2018.md @@ -0,0 +1,25 @@ +# Trabalhando Com Diretórios E Arquivos + +## Uso do Touch + +O comando "touch é usado para alterar a data e hora de acesso e de modificação de arquivos. É possível alterar as duas simultaneamente ou apenas uma delas. Antes de prosseguir, veja a legenda abaixo: A: Representa os dígitos do ano. M: Representa os dígitos do mês. D: Representa os dígitos do dia. H: Representa os dígitos da hora. M: Representa os dígitos do minuto. S: Representa os dígitos do segundo. + +## Alterando a Data e hora de Acesso + +Para alterar a data e hora de acesso de um arquivo, digite o seguinte comando: *touch -t AAAAMMDDhhmm.ss -a arquivo* O parâmetro "-a" indica acesso. + +## Alterando a Data e Hora de Modificação + +Para alterar a data e hora de modificação de um arquivo, digite o seguinte comando: *touch -t AAAAMMDDhhmm.ss -m arquivo* O parâmetro "-m" indica modificação. + +## Alterando a data e hora de acesso e modificação + +Para alterar data e hora de acesso e modificação de um arquivo simultaneamente, digite o seguinte comando: *touch -t AAAAMMDDhhmm.ss arquivo* Observação: Se o arquivo não existir, ele será criado com a data e hora definidas no comando. + +### Exercícios + +1. Altere a data e hora de acesso de um arquivo para 25/03/2009 06:25:44. + +2. Altere a data e hora de modificação de um arquivo para o dia anterior ao meio-dia. + +3. Altere a data e hora de acesso e modificação de um arquivo. \ No newline at end of file diff --git a/content/locales/pt_BR/index.md b/content/locales/pt_BR/index.md new file mode 100644 index 0000000..c537d80 --- /dev/null +++ b/content/locales/pt_BR/index.md @@ -0,0 +1,3 @@ +# Index + +@. Installation-and-Execution-of-Fenrir @. First-Steps-With-Fenrir @. Knowing-the-Computer@. First-Steps-With-Fenrir @. Operating-System @. Archiving @. Check-Directory @. Create-File @. Change-Directory @. Create-Directory @. Install-Packages @. Introduction-to-Irssi @. Messaging-With-Irssi @. Edition-With-Nano @. Nano-Navigation @. View-File-Content @. Using-Wget @. Play-Music-and-Video @. Using-Find @. Introduction-to-Markdown @. Emphasis-of-Texts @. Links-on-Markdown @. Convert-to-Markdown @. Manipulate-Files @. Compression-With-Tar @. Compression-With-Zip @. Using-Grep @. Protocols @. Servers @. Using-Rsync @. Using-SSH @. Using-Diff @. Introduction-to-Mutt @. Contact-List @. Lists-in-Markdown @. Footnotes @. Using-SFTP @. Using-Touch @. Advanced-Package-Management-Options @. Using-Alias @. Permissions @. Assign-Permission @. Change-File-Owner @. Introduction-to-Partitions @. File-System @. Identifying-Disks-and-Partitions @. Disk-Formatting @. Introduction-to-git @. Git-Configuration @. Cloning-and-Adding-Files @. Commit-Pull-and-Push @. Using-Screen @. Using-Sha1Sum @. Custom-Mutt-Shortcuts @. Configure-Fenrir-From-The-Settings-File @. Configure-Fenrir-From-The-Command-Line \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/compression-and-decompression/compactacao-e-descompactacao-com-tar-06-11-2017.md b/content/locales/pt_BR/lessons/compression-and-decompression/compactacao-e-descompactacao-com-tar-06-11-2017.md new file mode 100644 index 0000000..c936d54 --- /dev/null +++ b/content/locales/pt_BR/lessons/compression-and-decompression/compactacao-e-descompactacao-com-tar-06-11-2017.md @@ -0,0 +1,35 @@ +# Compactação e Descompactação + +## Compactação e Descompactação Com Tar + +Agora, veremos como trabalhar com compactação e descompactação com um padrão de compressão bastante popular no Linux, o "Tar". Vale notar que o "tar" sozinho não serve para compactar arquivos. Ele apenas os empacota, afim de facilitar a transferência. Portanto, utilizaremos o "tar" em conjunto com o "zip", o primeiro empacota e o segundo compacta. + +## Compactação + +Para compactar o diretório Documentos, utilizamos o seguinte comando: + +* tar -cz Documentos > doc.tar.gz* O parâmetro "-cz" indica que o arquivo "tar" será criado (-c), e será compactado pelo "zip" (-z) usando redirecionamento, representado pelo sinal de maior (>). Observação: O "tar" já é automaticamente recursivo. + +## Descompactação + +Para descompactar o arquivo ".tar.gz" que foi criado, usamos o seguinte comando: *tar -xz < doc.tar.gz* Perceba que há apenas duas diferenças em relação ao comando de compactação, a presença de "-x" de "extract", para extrair os arquivos e a direção do redirecionamento, representada pelo sinal de menor (<), que agora em vez de indicar saída de dados, indica entrada de dados. + +## Eliminando o Redirecionamento + +Trabalhar com redirecionamento não é uma boa ideia. Para resolver isso, o "tar" possui o parâmetro "-f". Exemplo: *tar -czf doc.tar.gz Documentos/* Desse modo, primeiro temos o nome do arquivo a ser gerado, e depois o diretório a compactar. + +Para descompactar, usamos o comando a seguir: *tar -xzf doc.tar.gz* + +O "tar" não é verborrágico por padrão, como o "zip". Mas se quiser exibir as informações, basta usar o parâmetro "-v". Exemplo: *tar -vxzf doc.tar.gz* + +### Exercícios + +1. Escolha um diretório para compactar e vá até seu diretório pai. + +2. Compacte o diretório usando o "tar" com redirecionamento e exiba as informações na tela. + +3. Remova o diretório e descompacte o arquivo com redirecionamento. + +4. Remova o arquivo anterior e compacte o diretório sem redirecionamento. + +5. Remova novamente o diretório e descompacte sem redirecionamento. \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/compression-and-decompression/compactacao-e-descompactacao-com-zip-06-11-2017.md b/content/locales/pt_BR/lessons/compression-and-decompression/compactacao-e-descompactacao-com-zip-06-11-2017.md new file mode 100644 index 0000000..4102f92 --- /dev/null +++ b/content/locales/pt_BR/lessons/compression-and-decompression/compactacao-e-descompactacao-com-zip-06-11-2017.md @@ -0,0 +1,27 @@ +# Compactação e Descompactação + +## Compactação e Descompactação com zip + +O Linux, por padrão, possui vários utilitários de compressão de arquivos. Compactar arquivos e diretórios é uma boa prática para realização de "backups". Veremos alguns comandos de compressão, começando pelo zip. + +Vamos compactar o diretório Documentos criado anteriormente. Ele possui atualmente dois arquivos de texto, dados e teste. Dentro do diretório, primeiramente devemos usar o comando: *cd ..* Para voltar ao diretório pai. Para compactar um arquivo com o zip, é necessário adicionar o parâmetro "-r", caso contrário o arquivo compactado terá apenas um diretório vazio. O comando é composto pelo zip, seu parâmetro de recursividade, o nome do arquivo zip que pretende gerar, e, por último, o diretório a ser compactado no arquivo. Exemplo: *zip -r doc.zip Documentos/* O arquivo compactado doc.zip será gerado. Será exibido cada arquivo adicionado no arquivo compactado. + +Se quiser verificar o conteúdo do arquivo compactado, pode usar o comando: *unzip -l doc.zip* + +Para descompactar o arquivo, use o seguinte comando: *unzip doc.zip* + +Se o arquivo for descompactado no mesmo local e o diretório ainda existir, seu conteúdo será sobrescrito. Experimente remover o diretório anteriormente compactado antes de descompactar o arquivo gerado. Lembre-se de usar o comando: *ls* para verificar os resultados. + +Os comandos: *zip* e *unzip* são muito verborrágicos, ou seja, imprimem muita informação na tela. Se preferir ocultar essas mensagens, utilize o parâmetro "-q". Exemplos: *zip -rq doc.zip Documentos/* *unzip -q doc.zip* No caso do "zip", os parâmetros "-q" e "-r" podem ficar juntos, formando "-rq". + +### Exercícios + +1. Escolha um diretório para compactar. A partir dele, volte para o diretório pai. + +2. Compacte o diretório com todo o seu conteúdo. + +3. Verifique o conteúdo do arquivo compactado. + +4. Apague o diretório e descompacte o arquivo gerado. + +5. Utilize o parâmetro e oculte as mensagens da tela. \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/concepts/conceito-de-arquivo-e-diretorio-29-11-2017.md b/content/locales/pt_BR/lessons/concepts/conceito-de-arquivo-e-diretorio-29-11-2017.md new file mode 100644 index 0000000..2aa1f45 --- /dev/null +++ b/content/locales/pt_BR/lessons/concepts/conceito-de-arquivo-e-diretorio-29-11-2017.md @@ -0,0 +1,21 @@ +# Conceitos Básicos + +## Conceito de Arquivo e Diretório + +## Arquivo + +Um arquivo é um recurso computacional para armazenar informações. O arquivo é durável, ou seja, continua disponível para a utilização mesmo após os programas em execução terem sido finalizados Arquivos de computador são o equivalente moderno dos documentos em papel, que tradicionalmente são armazenados em arquivos de escritórios e bibliotecas, sendo essa a origem do termo. O arquivo possui alguns dados que o identificam: Nome do arquivo: Damos ao criar um arquivo novo. Tamanho: O espaço que ele ocupa na mídia de armazenamento do computador. Extenção: Indica quais os programas podem abrir, ler e gravar no arquivo. A questão de extenção varia por sistema operacional, já que ele é o responsável por implementar o sistema de arquivos. O Linux, por exemplo, não se importa com a extenção do arquivo, deixando a responsabilidade de interpretá-lo corretamente para o programa que o abrir. + +## Diretório + +O diretório (também chamado de pasta), é considerado um grande arquivo, já que armazena várias informações. Armazena outros diretórios (subdiretórios, já que estão dentro de outro diretório) e arquivos. É uma maneira eficiente de organizar e separar as informações no computador. No Linux, o diretório principal é o "/", também conhecido como "root" ou raiz. Todos os outros subdiretórios e arquivos ficam dentro dele. Possui também um nome e tamanho, o tipo é "diretório". + +### Exercícios + +1. O que é um arquivo? + +2. Qual a origem do termo "arquivo"? + +3. Por que o diretório pode ser considerado como um tipo de arquivo? + +4. Cite um exemplo de sistema operacional que se importe com a extenção de cada arquivo. \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/concepts/conhecendo-o-computador-28-11-2017.md b/content/locales/pt_BR/lessons/concepts/conhecendo-o-computador-28-11-2017.md new file mode 100644 index 0000000..f1d2346 --- /dev/null +++ b/content/locales/pt_BR/lessons/concepts/conhecendo-o-computador-28-11-2017.md @@ -0,0 +1,37 @@ +# Conceitos Básicos + +## Conhecendo o Computador + +O computador é uma máquina capaz de realizar qualquer tipo de computação, ou seja, processar e armazenar informações, realizar cálculos, dos básicos aos científicos, desenho, tratamento de imagens, entretenimento e cultura. Os computadores pessoais e laptops são os aparelhos mais populares quando nos referimos a computador, mas robôs, smartphones (celulares inteligentes) e câmeras também são bons exemplos. + +## Parte Física e Lógica + +O computador possui o hardware (parte física) e software (parte lógica. Os hardwares são todos os componentes físicos da máquina: Processador, memória, HD, teclado, caixas de som, etc. Os softwares são os programas instalados que fazem a máquina funcionar e executar tarefas específicas: O sistema operacional, o mais importante de todos, pois é ele que gerencia todos os outros programas e recursos do computador, reprodutor de áudio e vídeo, editor de textos, etc. + +## Principais Componentes Físicos + +É importante ressaltar que um computador é composto por dois tipos de dispositivos físicos: Dispositivos de entrada (input em inglês) e saída (output). Dispositivos de entrada: Responsáveis pela comunicação do homem com a máquina. Exemplos: Teclado, microfone e scanner. Dispositivos de saída: Responsáveis pela comunicação da máquina com o homem. Exemplos: Monitor de vídeo, caixas de som e impressora. + +## CPU + +CPU é a sigla em inglês de "Central Processing unit" (Unidade Central de Processamento). É o processador do computador, o componente responsável por realizar cálculos e processar informações. A velocidade do seu computador está diretamente ligada à velocidade desse componente. + +## RAM + +RAM é a sigla em inglês de "Random Access Memory" (Memória de Acesso Aleatório). Ela não armazena informações de forma permanente, é apenas um espaço de trabalho temporário. Por exemplo, quando você executa um programa, as informações necessárias ficam na memória RAM, e quando o programa deixa de ser utilizado, as informações referentes a ele são apagadas. Quando o computador é desligado, se ainda existir alguma informação na RAM, esta é apagada. + +## HD + +HD é a sigla em inglês de "Hard Disk" (Disco Rígido). É a memória permanente do computador, onde ficam armazenados o sistema operacional, programas e todos os arquivos pessoais do usuário. Não se apaga ao desligar o computador. + +### Exercícios + +1. Cite outros dois exemplos de dispositivos de entrada de dados. + +2. Cite outros dois exemplos de dispositivos de saída de dados. + +3. Cite dois exemplos de equipamentos que podem ser considerados como computadores. + +4. Conhecendo os dispositivos de entrada e saída em um computador convencional, quais são os dispositivos de entrada e saída de dados em um celular? + +5. Cite três exemplos de dispositivos de armazenamento de dados de forma permanente. \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/concepts/permissoes-18-01-2018.md b/content/locales/pt_BR/lessons/concepts/permissoes-18-01-2018.md new file mode 100644 index 0000000..3002d49 --- /dev/null +++ b/content/locales/pt_BR/lessons/concepts/permissoes-18-01-2018.md @@ -0,0 +1,13 @@ +# Conceitos + +## Permissões + +As permissões são usadas para definir quem pode acessar determinados arquivos ou diretórios, assim mantendo segurança e organização em seu sistema. Cada arquivo ou diretório tem três permissões: (Usuário Dono) proprietário do arquivo, (Grupo Dono) um grupo com vários usuários e (Outros) outros usuários em geral. O comando "ls -l" mostra uma listagem detalhada com todas as permissões dos arquivos e diretórios no diretório corrente, onde: r: Representa leitura. w: Representa gravação. x: Representa execução Como as permissões são divididas em três, aparece da seguinte forma: (rwx)(rwx)(rwx) Nesse exemplo, o dono, o grupo e os demais usuários tem permissão de ler, gravar e executar. É possível definir as permissões por meio de letras ou números, mas será explicado em outra lição. + +### Exercícios + +1. Qual a finalidade do uso de permissões? + +2. Como as permissões são divididas e para quais tipos de usuários? + +3. O que representam as letras "rwx"? \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/concepts/protocolo-29-11-2017.md b/content/locales/pt_BR/lessons/concepts/protocolo-29-11-2017.md new file mode 100644 index 0000000..78c70d5 --- /dev/null +++ b/content/locales/pt_BR/lessons/concepts/protocolo-29-11-2017.md @@ -0,0 +1,41 @@ +# Conceitos Básicos + +## Protocolo + +Protocolo é um termo muito comum na informática. Mesmo que não pareça, seu significado é simples. O protocolo estabelece um padrão de comunicação, ou seja, regras para que dois programas diferentes consigam trocar informações. É como um idioma para o ser humano. Para que duas pessoas de países diferentes consigam se comunicar, é preciso que ambas conheçam um idioma (protocolo) em comum, caso contrário não é possível compreender um ao outro. O protocolo segue o mesmo raciocínio. Abaixo serão listados os protocolos mais comuns. + +## HTTP + +HTTP é a sigla em inglês de "HyperText Transfer Protocol" (Protocolo de Transferência de Hipertexto). É utilizado para exibir páginas HTML, os sites. Por isso todo endereço de site começa em: http:// e logo depois vem o endereço. É o HTTP que se comunica com o servidor para exibir a página que queremos acessar. + +## IP + +IP é a sigla em inglês de "Internet Protocol" (Protocolo de Internet). É uma identificação única para cada computador conectado. Pode ser comparado a um documento de identidade, por exemplo. O HTTP, como foi visto acima, depende do IP, pois é preciso saber qual a identificação da sua máquina e do servidor para estabelecer a comunicação + +## TCP. + +TCP é a sigla em inglês de "Transmission Control Protocol" (Protocolo de Controle de Transmição). Ele é o principal protocolo para enviar e receber informações, já que é o protocolo de controle de transmição. A maioria dos outros protocolos dependem do TCP. + +## SMTP + +SMTP é a sigla em inglês de "Simple Mail Transfer Protocol " (Protocolo de Transferência de Correio Simples). Esse protocolo é responsável por enviar e-mails na Internet. + +## POP3 + +POP3 é a sigla em inglês de "Post Office Protocol" (Protocolo de Correios). O 3 refere-se apenas à versão do POP. É utilizado para receber os e-mails do servidor de e-mail para seu computador. + +## IRC + +IRC é a sigla em inglês de "Internet Relay Chat". É um protocolo de comunicação na Internet, utilizado principalmente como bate-papo (chat). + +## SSH + +SSH é a sigla em inglês de "Segure Shell" (Shell Seguro). Esse protocolo fornece um canal seguro para enviar e receber informações, principalmente quando se está conectado a uma rede insegura. + +### Exercícios + +1. Por que o protocolo pode ser comparado a um idioma? + +2. Cite outro protocolo para recebimento de e-mails. + +3. Conhece algum outro protocolo que não foi mencionado acima? Qual? Para que serve? \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/concepts/servidor-30-11-2017.md b/content/locales/pt_BR/lessons/concepts/servidor-30-11-2017.md new file mode 100644 index 0000000..d1cce4d --- /dev/null +++ b/content/locales/pt_BR/lessons/concepts/servidor-30-11-2017.md @@ -0,0 +1,11 @@ +# Conceitos Básicos + +## Servidor + +Um servidor é um computador ou um programa que oferece serviços a uma rede, que é chamada de cliente, por ser ela a solicitar os serviços. Esses serviços podem ser variados, como arquivos e e-mail, por exemplo. Essa arquitetura é conhecida como cliente-servidor. Geralmente é usada em redes de médio e grande porte, onde há várias máquinas, ou em redes onde a segurança é extremamente importante. O termo servidor é geralmente aplicado a um computador completo, mas pode ser simplesmente um programa ou parte dele que oferece serviços. O servidor pode servir a vários clientes, e um cliente pode solicitar serviços a vários servidores. + +### Exercícios + +1. O que é um servidor? + +2. Cite três exemplos de serviços que podem ser oferecidos por um servidor. \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/concepts/sistema-operacional-30-11-2017.md b/content/locales/pt_BR/lessons/concepts/sistema-operacional-30-11-2017.md new file mode 100644 index 0000000..faa9336 --- /dev/null +++ b/content/locales/pt_BR/lessons/concepts/sistema-operacional-30-11-2017.md @@ -0,0 +1,13 @@ +# Conceitos Básicos + +## Sistema Operacional + +O sistema operacional é o programa (software) mais importante do computador. É através dele que conseguimos executar tarefas no computador, ou seja, é o meio de comunicação entre o usuário e a máquina. Ele organiza gerencia todos os outros programas que você instalar no computador e também gerencia os recursos físicos (hardware). Existem vários sistemas operacionais, cada um com suas próprias características, vantagens e desvantagens. Alguns exemplos: Linux, Mac OS, Windows, etc. O próprio Linux possui várias distribuições diferentes (também conhecidas como distros). Cada uma surgiu com objetivos e características específicas. Alguns exemplos são: Ubuntu, Fedora, Debian, etc. + +1. O que é um sistema operacional? + +2. Cite exemplos de outras distros do Linux. + +3. Cite exemplos de outros sistemas operacionais. + +4. Quais são os sistemas operacionais mais populares para celulares? \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/disks-and-partitions/formatacao-de-discos-08-02-2018.md b/content/locales/pt_BR/lessons/disks-and-partitions/formatacao-de-discos-08-02-2018.md new file mode 100644 index 0000000..b7d8a61 --- /dev/null +++ b/content/locales/pt_BR/lessons/disks-and-partitions/formatacao-de-discos-08-02-2018.md @@ -0,0 +1,19 @@ +# Discos e Partições + +## Formatação de Disco + +Formatar um disco é útil em várias situações: Quando for necessário reinstalar o sistema operacional, ou quando for preciso utilizar outro sistema de arquivos. Para isso, será usado o programa mkfs. O mkfs torna fácil formatar drives de vários tipos no Linux, tais como pendrives, cartões de memória, HDs, SSDs, etc. O aplicativo permite várias opções e parâmetros de uso, que lhe conferem grande versatilidade para realizar a tarefa. Observação: É importante ser cuidadoso. Não é possível desfazer a formatação depois. Portanto, tenha sempre a certeza de que está formatando o drive certo. + +## Como Formatar + +Para formatar um pendrive, localizado em /dev/sdc1, por exemplo, deve-se primeiro desmontar o dispositivo com o comando: *sudo umount /dev/sdc1* Agora já é possível criar um sistema de arquivos nele. O comando a seguir formata e apaga todo o conteúdo do dispositivo e cria um sistema de arquivos ext3 nele: *sudo mkfs -t ext3 -l pendrive -I /dev/sdc1* Se você não especificar o sistema de arquivos a ser construído no dispositivo, o mkfs vai usar o ext2 como padrão. Os parâmetros usados tem o seguinte significado: -t: Tipo de sistema de arquivos. -n: Nome que será dado ao novo disco formatado. + +Para usar o novo disco, é preciso montá-lo com o seguinte comando: mount /dev/sdc1 /mnt -t ext3 + +### Exercícios + +1. Utilize uma unidade de armazenamento vazia, como um pendrive, por exemplo, e formate. + +2. Configure o sistema de arquivos ext4. + +3. Utilize a unidade formatada para armazenar conteúdo. \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/disks-and-partitions/identificacao-de-discos-e-particoes-26-01-2018.md b/content/locales/pt_BR/lessons/disks-and-partitions/identificacao-de-discos-e-particoes-26-01-2018.md new file mode 100644 index 0000000..209b8ab --- /dev/null +++ b/content/locales/pt_BR/lessons/disks-and-partitions/identificacao-de-discos-e-particoes-26-01-2018.md @@ -0,0 +1,15 @@ +# Discos e Partições + +## Identificação de Discos e Partições + +No Linux, os dispositivos existentes em seu computador (como discos rígidos, pen-drives, tela, portas de impressora, modem, etc.,) são identificados por um arquivo referente a este dispositivo no diretório "/dev". A identificação é feita da seguinte forma: Diretório: Local onde são armazenados os dispositivos existentes. Sigla: Identifica o tipo de disco (sd: SATA/SCSI, hd: IDE, fd: Disquete, etc.). Letra: Identifica o disco rígido (A: 1º, B: 2º, etc.). Número: Identifica o número da partição no disco rígido. Veja alguns exemplos: /dev/fd0: Primeira unidade de disquetes. /dev/sda: Primeiro disco rígido SATA ou SCSI. /dev/sda1: Primeira partição do primeiro disco rígido SATA ou SCSI. /dev/sr0: Primeiro CD-ROM SATA ou SCSI. /dev/hda: Primeiro disco rígido IDE. /dev/hda1: Primeira partição do primeiro disco rígido IDE. Caso utilize pen-drives, memória flash, as unidades serão detectadas como sdc, sdd, e assim por diante. + +### Exercícios + +1. Como os discos e partições são identificados no Linux? + +2. Como seria identificada a segunda partição do segundo disco rígido SATA? + +3. Como seria identificado um pen-drive? + +4. Como seria identificada a terceira partição do primeiro disco rígido IDE? \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/disks-and-partitions/introducao-a-particoes-25-01-2018.md b/content/locales/pt_BR/lessons/disks-and-partitions/introducao-a-particoes-25-01-2018.md new file mode 100644 index 0000000..32305d4 --- /dev/null +++ b/content/locales/pt_BR/lessons/disks-and-partitions/introducao-a-particoes-25-01-2018.md @@ -0,0 +1,15 @@ +# Discos e Partições + +## Introdução a Partições + +Partições são divisões existentes no disco rígido que marcam onde começa e onde termina um sistema de arquivos. As partições nos permitem usar mais de um sistema operacional no mesmo computador, ou dividir o disco rígido em uma ou mais partes para ser usado por um único sistema operacional. Para gravar os dados, o disco rígido deve ser primeiro particionado, e depois a partição deve ser formatada. Após criada e formatada, a partição será automaticamente identificada como um dispositivo no diretório "/dev", e deve ser montada para permitir seu uso. Uma partição de disco não interfere em outras partições existentes. Para particionar o disco, é necessário um programa de particionamento. Os mais comuns são: "fdisk", "cfdisk", e "Disk Druid". Observação: Quando se apaga uma partição, você estará apagando TODOS os arquivos existentes nela! + +### Exercícios + +1. O que é uma partição? + +2. Quais as finalidades de uma partição? + +3. Onde as partições são identificadas no sistema? + +4. Quais os programas de particionamento de disco mais comuns no Linux? \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/disks-and-partitions/sistema-de-arquivos-25-01-2018.md b/content/locales/pt_BR/lessons/disks-and-partitions/sistema-de-arquivos-25-01-2018.md new file mode 100644 index 0000000..da770e0 --- /dev/null +++ b/content/locales/pt_BR/lessons/disks-and-partitions/sistema-de-arquivos-25-01-2018.md @@ -0,0 +1,15 @@ +# Discos e Partições + +## Sistema de Arquivos + +Um sistema de arquivos é um conjunto de estruturas lógicas e de rotinas, que permitem ao sistema operacional controlar o acesso ao disco rígido. O sistema de arquivos é criado durante a "formatação" da partição de disco. Após a formatação, toda a estrutura para leitura/gravação/permissões de arquivos e diretórios pelo sistema operacional estará pronta para ser usada. Normalmente este passo é feito durante a instalação de sua distribuição GNU/Linux. Cada sistema de arquivos tem uma característica em particular, mas seu propósito é o mesmo: Oferecer ao sistema operacional a estrutura necessária para ler/gravar os arquivos/diretórios. Abaixo segue alguns exemplos de sistemas de arquivos existentes: Ext2: Usado em partições Linux Nativas para o armazenamento de arquivos. Ext3: Este sistema de arquivos possui melhorias em relação ao ext2, como destaque o recurso de journaling e suporte a arquivos de até 16Gb. Ele também é totalmente compatível com o ext2 em estrutura. O journal mantém um log de todas as operações no sistema de arquivos, caso aconteça uma queda de energia elétrica (ou qualquer outra anormalidade que interrompa o funcionamento do sistema), o comando "fsck" verifica o sistema de arquivos no ponto em que estava quando houve a interrupção, evitando a demora para checar todo um sistema de arquivos (que pode levar minutos em sistemas de arquivos muito grandes). FAT32: Usado no DOS e oferece suporte a discos de até 2 Terabytes. Não possui suporte a permissões e journaling. NTFS: Formato nativo de discos de sistemas operacionais Windows XP e superiores. Possui suporte a permissões de acesso e compactação nativa. + +### Exercícios + +1. O que é um sistema de arquivos? + +2. Qual o objetivo do sistema de arquivos? + +3. Quando o sistema de arquivos é criado? + +4. Cite outros exemplos de sistemas de arquivos. \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/fenrir/configuracoes-via-arquivo-20-04-2018.md b/content/locales/pt_BR/lessons/fenrir/configuracoes-via-arquivo-20-04-2018.md new file mode 100644 index 0000000..bc651ff --- /dev/null +++ b/content/locales/pt_BR/lessons/fenrir/configuracoes-via-arquivo-20-04-2018.md @@ -0,0 +1,16 @@ +# Configurações via Arquivo de Configuração + +É possível alterar e personalizar as configurações do leitor de tela a partir de um arquivo de configuração. O arquivo é: */etc/fenrir/settings/settings.conf* A sintaxe dos comandos de configuração não são complexas, e o arquivo está dividido em quatro partes: + +* Sessões: Uma sessão é um grupo de configurações. Geralmente está entre colchetes, como no exemplo: [sound]. Essa seria uma sessão de configurações de som. +* Configurações: São as configurações permitidas dentro de cada sessão. Geralmente são antecedidas por uma linha de comentário, explicando a configuração, e logo depois vem uma configuração com seu valor. Exemplo: driver=genericDriver. Essa configuração define um driver de som. +* Valores: São os valores que uma determinada configuração pode assumir. O valor fica sempre depois do sinal de igualdade. Como no exemplo acima, o nome do driver de som é o valor que a configuração driver recebeu. +* Comentários: São úteis para explicitar e detalhar as configurações e valores no arquivo. Toda linha iniciada pelo símbolo "#" é um comentário, e, portanto, desconsiderada pelo sistema. + +### Exercícios + +1. Abra o arquivo de configurações e localize uma sessão. + +2. Analise as configurações e escolha uma para alterar o valor. + +3. Comente a alteração feita no arquivo. \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/fenrir/configuracoes-via-linha-de-comando-23-04-2018.md b/content/locales/pt_BR/lessons/fenrir/configuracoes-via-linha-de-comando-23-04-2018.md new file mode 100644 index 0000000..11c21af --- /dev/null +++ b/content/locales/pt_BR/lessons/fenrir/configuracoes-via-linha-de-comando-23-04-2018.md @@ -0,0 +1,9 @@ +# Configurações do Fenrir via Linha de Comando + +O Fenrir permite que você altere configurações sem acessar diretamente o arquivo de configurações, bastando digitar a alteração no terminal. A sintaxe da configuração é a seguinte: *fenrir -o "sessão#configuração=valor"* No exemplo a seguir, o driver de som será alterado: *fenrir -o "sound#driver=gstreamerDriver* Observação: É possível escrever vários comandos seguidos, basta colocar um ponto e vírgula ";" ao fim de cada comando. No exemplo a seguir, o driver de som será alterado e o braille desabilitado: *fenrir -o "sound#driver=gstreamerDriver;braille#enabled=False"* + +### Exercícios + +1. Altere uma configuração única do Fenrir. + +2. Altere três configurações na mesma linha. \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/fenrir/instalacao-e-execucao-do-fenrir-02-04-2018.md b/content/locales/pt_BR/lessons/fenrir/instalacao-e-execucao-do-fenrir-02-04-2018.md new file mode 100644 index 0000000..caa2ad8 --- /dev/null +++ b/content/locales/pt_BR/lessons/fenrir/instalacao-e-execucao-do-fenrir-02-04-2018.md @@ -0,0 +1,23 @@ +# Instalação e Execução + +O Fenrir é um moderno leitor de tela feito para a linha de comando. Com ele, você poderá usar seu sistema com total acessibilidade. + +## Executando Sem Instalação + +Esse é um ponto muito interessante. Você pode executar o leitor de tela mesmo sem instalar, para isso você deve ter permissão de administrador e usar o comando: *src/fenrir/fenrir* Assim, é possível saber se tudo está funcionando bem. + +## Iniciando + +Com o leitor de tela instalado, use o comando: *systemctl start fenrir* para executar o Fenrir. Você também pode querer que o Fenrir comece a falar logo que o sistema inicie. Para isso, digite: *systemctl enable fenrir* + +## Sobre os Comandos + +A maioria dos comandos do Fenrir são acompanhados da "Tecla Fenrir", a tecla "Insert" do seu teclado. Para conhecer mais o leitor de tela, utilize: *Tecla Fenrir + H* para entrar no modo de ajuda. + +### Exercícios + +1. No seu terminal, execute o leitor de tela sem instalação. + +2. Habilite o leitor de tela para iniciar junto com o sistema. + +3. Entre no modo de ajuda e explore os recursos do leitor de tela. \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/fenrir/primeiros-passos-30-04-2018.md b/content/locales/pt_BR/lessons/fenrir/primeiros-passos-30-04-2018.md new file mode 100644 index 0000000..36c4847 --- /dev/null +++ b/content/locales/pt_BR/lessons/fenrir/primeiros-passos-30-04-2018.md @@ -0,0 +1,15 @@ +# Primeiros Passos + +Após instalar e configurar o leitor de tela, é hora de conhecer os principais atalhos: Tecla Fenrir + Alt + Seta Acima: Aumenta o volume do sistema. Tecla Fenrir + Alt + Seta Abaixo: Diminui o volume do sistema. Tecla Fenrir + Seta Acima: Aumenta o volume da Fala. Tecla Fenrir + Seta Abaixo: Diminui o volume da fala. Tecla Fenrir + Seta Direita: Aumenta a velocidade da fala. Tecla Fenrir + Seta Esquerda: Diminui a velocidade da fala. Tecla Fenrir + Alt + Seta Direita: Aumenta o tom da fala. Tecla Fenrir + Alt + Seta Esquerda: Diminui o tom da fala. Tecla Fenrir + F3: Alterna entre som e mudo. Tecla Fenrir + F4: Alterna o modo de fala. Tecla Fenrir + Enter: Desabilita a fala temporariamente. Tecla Fenrir + Q: Sai do Fenrir. Tecla Fenrir + T: Fala a hora. Tecla Fenrir + T (duas vezes): Fala a data. Tecla Fenrir + C: Copia o texto selecionado para a área de transferência. Tecla Fenrir + V: Cola o texto da área de transferência. Para mais comandos, pressione a combinação Tecla Fenrir + H, assim você entra no modo de ajuda. + +### Exercícios + +1. Altere o volume do sistema. + +2. Altere o volume da voz. + +3. Altere a velocidade de leitura. + +4. Selecione e copie um texto para a área de transferência. Em seguida, cole o conteúdo. + +5. Verifique a hora e data atual. \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/files-and-directories/criacao-de-diretorio-03-11-2017.md b/content/locales/pt_BR/lessons/files-and-directories/criacao-de-diretorio-03-11-2017.md new file mode 100644 index 0000000..a692d02 --- /dev/null +++ b/content/locales/pt_BR/lessons/files-and-directories/criacao-de-diretorio-03-11-2017.md @@ -0,0 +1,21 @@ +# Trabalhando Com Arquivos E Diretórios + +## Criando um diretório + +Para criar um diretório, usa-se o comando: *mkdir* seguido do nome do diretório + +Exemplo: *mkdir Documentos* + +O diretório Documentos será criado no diretório atual. + +Para conferir o resultado, basta digitar o comando: *ls* sem parâmetros, para exibir o conteúdo do diretório. + +### Exercícios + +1. Com base no exemplo acima, crie novos diretórios no diretório atual. + +2. Exiba o conteúdo do diretório corrente e verifique se seus diretórios foram criados. + +3. Exiba as informações detalhadas dos diretórios criados. + +4. Acesse cada diretório criado e volte para o diretório anterior. \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/files-and-directories/criacao-e-escrita-em-arquivos-03-11-2017.md b/content/locales/pt_BR/lessons/files-and-directories/criacao-e-escrita-em-arquivos-03-11-2017.md new file mode 100644 index 0000000..0e083fc --- /dev/null +++ b/content/locales/pt_BR/lessons/files-and-directories/criacao-e-escrita-em-arquivos-03-11-2017.md @@ -0,0 +1,23 @@ +# Trabalhando com Diretórios e Arquivos + +## Criando e Escrevendo em Arquivos + +Agora vamos criar um arquivo. É possível criar um arquivo vazio usando o comando "touch". Exemplo: *touch "Bem Vindo.txt"* Observação: Para criar arquivos com mais de uma palavra, digite o nome entre " (aspas). + +Também podemos criar um arquivo e escrever um texto nele simultaneamente. Primeiramente vamos escolher um texto de exemplo que irá dentro desse arquivo. Para que o terminal imprima a mensagem "Bem vindo" podemos utilizar o comando echo, que irá imprimir esses dois argumentos ("Bem" e "vindo"): *echo Bem vindo* O resultado será a mensagem impressa no terminal. Enquanto digitamos comandos no terminal, uma espécie de histórico está sendo criada, se clicarmos no botão de seta para cima, voltamos ao comando anterior que foi executado. Usamos esse atalho para navegarmos pelos comandos, clicando mais vezes a seta pra cima, chegaremos a comandos digitados a mais tempo, a seta para baixo também funciona para voltar para os comandos mais atuais no histórico. Se quiser limpar o histórico de comandos, basta usar o comando: *clear* Mas antes disso, vamos usá-lo para voltar ao echo e passarmos apenas um argumento, colocando aspas duplas na mensagem que queremos imprimir: *echo "Bem vindo"* Mas o que queremos é executar esse comando redirecionando sua saída para um arquivo, para isso, utilizamos o caractere > (maior) depois da mensagem seguido pelo nome do arquivo que queremos salvar a mensagem: *echo "Bem vindo" > "Bem Vindo.txt"* O terminal já não imprime mais a mensagem, ela foi redirecionada para o arquivo, veja que se buscarmos novamente a lista de arquivos e diretórios usando o ls, teremos nosso arquivo Bem Vindo.txt listado. Observação 1: Cuidado com o parâmetro > (maior), pois este só adiciona conteúdo novo ao arquivo. Se for utilizado em um arquivo já escrito, o conteúdo anterior será apagado e substituído pelo atual. Para escrever mais conteúdo em um arquivo já escrito, utilize dois sinais de maior em vez de um. Exemplo: *echo "ao curso" >> "bem vindo.txt"* Agora o conteúdo contido no arquivo será: **Bem vindo ao curso** Veremos com detalhes na lição seguinte como ler arquivos inteiros ou trechos específicos deles. Observação 2: Ao redirecionar uma mensagem para um arquivo com o comando "echo", se este não existir, será criado no momento da execução do comando. + +### Exercícios + +1. Troque de diretório. + +2. Crie um arquivo vazio. + +3. Liste o conteúdo do diretório e verifique se o arquivo foi criado. + +4. Exiba uma mensagem no terminal. + +5. Volte no histórico de comandos digitados e redirecione a mensagem digitada para o arquivo criado anteriormente. + +6. Escreva outras mensagens no arquivo. Cuidado para não sobrescrever o conteúdo anterior. + +7. Limpe o histórico do terminal. \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/files-and-directories/exibir-conteudo-de-arquivos-03-11-2017.md b/content/locales/pt_BR/lessons/files-and-directories/exibir-conteudo-de-arquivos-03-11-2017.md new file mode 100644 index 0000000..23957e7 --- /dev/null +++ b/content/locales/pt_BR/lessons/files-and-directories/exibir-conteudo-de-arquivos-03-11-2017.md @@ -0,0 +1,35 @@ +# Trabalhando Com Diretórios E Arquivos + +## Exibindo Conteúdo de Arquivos + +Para ler o conteúdo de arquivos no Terminal, usamos o comando: *cat* Exemplo: *cat "Bem Vindo.txt"* A saída do comando cat será o texto presente dentro do arquivo "Bem Vindo.txt". Você também pode exibir o conteúdo com numeração de linhas, para isso utilize o parâmetro: -n Exemplo: *cat -n "Bem Vindo.txt"* + +Observação: Para todos os comandos envolvendo arquivos ou diretórios, existe a possibilidade de escrevermos apenas uma parte do nome deles e buscar um específico utilizando a tecla "TAB". Se houver apenas um arquivo com o início do nome digitado, o terminal o preenche automaticamente ao apertarmos a tecla. + +## Criando e editando com Cat + +O comando "cat" tem outras funcionalidades bastante interessantes. Com ele, é possível criar um arquivo e inserir dados com o parâmetro: > (maior). Digite o seguinte comando: *cat > teste* Em seguida tecle "enter". O arquivo teste foi criado, e agora você pode inserir dados nele. Exemplo: *Este é um arquivo de teste.* Quando terminar de digitar, pressione o atalho "CTRL + D". O arquivo será salvo e a tela de edição será fechada. Confira o resultado digitando: *cat teste* A saída será: **Este é um arquivo de teste.** + +## Concatenação + +Também é possível utilizar o comando "cat" para concatenar conteúdo de arquivos. Vamos juntar o conteúdo do arquivo "Bem Vindo.txt" com o conteúdo do arquivo "teste" copiando para um novo arquivo. Digite: cat "Bem Vindo.txt" teste > arquivo_concatenado Agora verifique o conteúdo do arquivo "arquivo_concatenado". **Bem Vindo Este é um arquivo de teste.** + +## Exibindo início e fim de arquivos + +Existem dois comandos que permitem exibir o início e o fim de um arquivo, são eles "head" e "tail". O "head" exibe as primeiras linhas de um arquivo. Por padrão, ele exibe as 10 primeiras, mas é possível aumentar ou diminuir esse valor com o parâmetro: -n seguido do número de linhas que deseja exibir. Exemplo: *head -n 1 arquivo_concatenado* Ele exibirá apenas a primeira linha do arquivo. + +O "tail" exibe o fim do arquivo e funciona como o "head". Possui o mesmo valor padrão de linhas exibidas e o mesmo parâmetro para mudar a exibição. Exemplo: *tail -n 1 arquivo_concatenado* Ele exibirá apenas a última linha do arquivo. + +### Exercícios + +1. Verifique os arquivos existentes no diretório corrente. + +2. Exiba o conteúdo dos arquivos existentes. + +3. Crie um novo arquivo e insira dados nele. + +4. Copie os dados de vários arquivos para um arquivo novo. + +5. Leia o arquivo e numere as linhas. + +6. Exiba: a) As duas primeiras linhas do arquivo criado. b) As três últimas linhas do arquivo criado. \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/files-and-directories/manipulacao-de-diretorios-e-arquivos-no-sistema-03-11-2017.md b/content/locales/pt_BR/lessons/files-and-directories/manipulacao-de-diretorios-e-arquivos-no-sistema-03-11-2017.md new file mode 100644 index 0000000..abe2577 --- /dev/null +++ b/content/locales/pt_BR/lessons/files-and-directories/manipulacao-de-diretorios-e-arquivos-no-sistema-03-11-2017.md @@ -0,0 +1,29 @@ +# Trabalhando Com Diretórios E Arquivos + +## Copiando, Movendo, Renomeando e Removendo + +Para copiar um arquivo, usamos o comando: *cp* Vamos copiar o arquivo teste para o diretório Documentos: *cp teste Documentos* Verifique com o comando "ls" e veja o resultado: *ls Documentos* Também é possível copiar o conteúdo de um arquivo para outro, utilizando o comando da mesma maneira. *cp teste teste2* O conteúdo de teste foi copiado para teste2. Para verificar, basta ler o conteúdo de ambos com o comando "cat". + +Para copiar um diretório para outro, basta usar o parâmetro "-r". Criaremos o diretório Documentos2 e copiaremos Documentos para dentro dele. Exemplo: *mkdir Documentos2* *cp -r Documentos Documentos2* O diretório Documentos foi copiado para Documentos2. Liste o conteúdo e verifique o resultado. + +Para mover um arquivo, utilizamos o comando "mv". Exemplo: *mv teste Documentos* O arquivo foi movido para o diretório Documentos. Verifique com o comando "ls". Para renomear um arquivo ou diretório, basta digitar primeiro o nome original e depois o novo nome. Exemplo: *mv teste teste2* O arquivo teste agora chama-se teste2. Para mover um diretório, basta fazer exatamente como foi feito com arquivos. O comando "mv" já é recursivo, o que dispensa o parâmetro "-r". + +Para remover um arquivo, usamos o comando "rm". Exemplo: *rm teste* O arquivo teste foi removido. Para remover um diretório vazio, usamos o comando "mrdir". Exemplo: *rmdir Documentos* Como temos arquivos nesse diretório, ele não foi removido. Portanto, para diretórios contendo conteúdo, usamos o comando "rm -r". Exemplo: *rm -r Documentos* Agora o diretório foi removido com todo o seu conteúdo. Não se esqueça de conferir o resultado de cada alteração com os comandos "ls" e "cat". + +### Exercícios + +1. Crie um arquivo, escreva um conteúdo e copie para outro diretório. + +2. Copie o conteúdo desse arquivo para outro arquivo. + +3. Copie um diretório para outro. + +4. Mova seus arquivos para outro diretório. + +5. Renomeie o arquivo de teste. + +6. Mova um diretório para outro. + +7. Apague o arquivo de teste. + +8. Apague o diretório criado para teste. \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/files-and-directories/troca-de-diretorio-03-11-2017.md b/content/locales/pt_BR/lessons/files-and-directories/troca-de-diretorio-03-11-2017.md new file mode 100644 index 0000000..379eebc --- /dev/null +++ b/content/locales/pt_BR/lessons/files-and-directories/troca-de-diretorio-03-11-2017.md @@ -0,0 +1,35 @@ +# Trabalhando Com Diretórios E Arquivos + +## Trocando de Diretório + +Agora que já foi mostrado o conteúdo de diretórios, é hora de saber como navegar de um diretório para o outro. + +O comando usado para trocar de diretório é o: *cd* + +Existem vários parâmetros para combinarmos ao comando e trocar de diretórios. Eles serão listados a seguir: + +/ Este parâmetro navega até o diretório / mais conhecido por Diretório Raiz ou "Root". Todos os demais diretórios são criados dentro do diretório raiz. Exemplo: *cd /* Se listar o conteúdo do diretório, perceberá que foi alterado. + +~ Este parâmetro aponta diretamente para o diretório "Home" do usuário (ou pasta do usuário). Exemplo: *cd ~* + +- Este parâmetro navega até o último diretório em que esteve. Considerando que os comandos anteriores foram executados, se esteve no diretório raiz e em seguida foi para o diretório de usuário, usando o comando a seguir, voltará para o diretório raiz, que é o último visitado antes do diretório atual. Exemplo: *cd -* + +Para navegar até um diretório dentro do atual, basta digitar cd seguido do nome do diretório. No exemplo a seguir, utilizarei o diretório Documentos dentro da minha pasta "Home". Exemplo: *cd Documentos* Alternativamente, é possível digitar o caminho completo do diretório. Exemplo: *cd /home/roberta/Documentos* + +.. Este parâmetro volta ao diretório anterior na hierarquia. Considerando que estejamos no diretório Documentos, de acordo com o exemplo anterior, usando esse parâmetro é possível voltar para o diretório "home". Exemplo: *cd ..* + +Observação: Quando trocar de diretório, utilize o comando: *ls* para verificar o conteúdo do diretório e certificar-se de que navegou ao diretório correto. + +### Exercícios + +1. Navegue ao diretório raiz. + +2. Liste o conteúdo do diretório e entre em algum de sua escolha. + +3. Volte ao diretório anterior. + +4. Navegue até o diretório home. + +5. Navegue ao último diretório visitado. + +6. Navegue a outro diretório utilizando o caminho completo do mesmo. \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/files-and-directories/uso-do-diff-15-01-2018.md b/content/locales/pt_BR/lessons/files-and-directories/uso-do-diff-15-01-2018.md new file mode 100644 index 0000000..c8f72ec --- /dev/null +++ b/content/locales/pt_BR/lessons/files-and-directories/uso-do-diff-15-01-2018.md @@ -0,0 +1,21 @@ +# Trabalhando Com Diretórios E Arquivos + +## Uso do Diff + +O comando "diff" compara o conteúdo de dois arquivos ou diretórios e exibe a diferença entre eles, e isso inclui arquivos compactados com gzip. Os parâmetros aceitos no comando são: -i: Ignora diferenças entre maiúsculas e minúsculas. -E: Ignora diferenças de tabulação. -b: Ignora diferenças de quantidade de espaços em branco. -w: Ignora qualquer espaço em branco. -B: Ignora linhas em branco. -a: Compara os arquivos como arquivos de texto, mesmo que não sejam. -q: Mostra apenas se o conteúdo é igual ou diferente. -y: Mostra os arquivos em colunas, exibindo as diferenças. -t: Converte tabulações em espaços. -r: Compara recursivamente o conteúdo de diretórios. + +O comando reporta, basicamente, o que é preciso alterar no arquivo que vem primeiro, para que fique igual ao último. + +Para comparar dois arquivos, digite: *diff arquivo1 arquivo2* Se os arquivos forem diferentes, vai aparecer o número da linha onde isso ocorre, seguido de uma letra: a: Indica que uma informação deve ser adicionada. c: Indica que uma informação deve ser substituída. d: Indica que uma informação deve ser deletada. + +> : Indica que a informação depois dele deve ser incluída. <: Indica que a informação depois dele deve ser excluída. -: Separa informações. + +Para comparar arquivos compactados, digite: *zdiff arquivo1.gz arquivo2.gz* + +### Exercícios + +1. Compare dois arquivos e exiba a saída em colunas. + +2. Compare dois arquivos ignorando diferença de maiúsculas e minúsculas. + +3. Compare dois arquivos compactados ignorando diferenças entre maiúscula e minúscula, espaços e linhas em branco e exiba o resultado em colunas. \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/files-and-directories/uso-do-find-11-01-2018.md b/content/locales/pt_BR/lessons/files-and-directories/uso-do-find-11-01-2018.md new file mode 100644 index 0000000..3171e23 --- /dev/null +++ b/content/locales/pt_BR/lessons/files-and-directories/uso-do-find-11-01-2018.md @@ -0,0 +1,39 @@ +# Trabalhando Com Diretórios E Arquivos + +## Utilização do Find + +O comando "find" é utilizado para pesquisar arquivos e diretórios no sistema sob vários critérios. + +## Pesquisando Arquivos e Diretórios Pelo Nome + +Para pesquisar um arquivo pelo nome no diretório atual, digite: *find . -name Nome-ARQUIVO.txt* Observação: Esse comando diferencia maiúsculas de minúsculas. Para ignorá-las, basta utilizar a letra "i" antes do parâmetro "name", da seguinte forma: *find . -iname Nome-ARQUIVO.txt* + +Para pesquisar um arquivo pelo nome em um diretório específico, digite: *find diretorio -iname nome-arquivo.txt* + +Para pesquisar um diretório pelo nome, digite: *find / -type d -name NOME-do-Diretório* + +## Pesquisando Arquivos Por Extensão + +Para pesquisar arquivos pela sua extensão (txt, por exemplo), digite: *find / -type f -name “*.txt”* + +## Pesquisando Arquivos Por Tamanho + +Para pesquisar arquivos por tamanho (maiores que 500 MB, por exemplo), digite: *find diretorio -size +500M* Observação: Se quiser o tamanho em GB, basta substituir o "M" por "G". O sinal de mais pesquisa por tamanhos maiores e o sinal de menos por tamanhos menores. + +## Pesquisando Arquivos Com Modificações + +Para pesquisar arquivos modificados recentemente (nos últimos 5 dias, por exemplo), digite: *find /home/ -mtime -5* + +### Exercícios + +1. Pesquise arquivos pelo nome no diretório atual. + +2. Pesquise arquivos pelo nome em outros diretórios ignorando letras maiúsculas. + +3. Pesquise diretórios pelo nome ignorando letras maiúsculas. + +4. Pesquise arquivos com a extensão "pdf". + +5. Pesquise arquivos de tamanho superior a 1 GB. + +6. Pesquise arquivos que foram modificados no último dia. \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/files-and-directories/uso-do-grep-11-01-2018.md b/content/locales/pt_BR/lessons/files-and-directories/uso-do-grep-11-01-2018.md new file mode 100644 index 0000000..b21673a --- /dev/null +++ b/content/locales/pt_BR/lessons/files-and-directories/uso-do-grep-11-01-2018.md @@ -0,0 +1,25 @@ +# Arquivos e Diretórios + +## Utilização do Grep + +O comando "grep" é utilizado para buscar palavras específicas no nome de um arquivo ou em seu conteúdo. + +## Pesquisando em Nomes de Arquivos + +Para encontrar arquivos que tenham determinada palavra (teste, por exemplo), digite: *ls | grep teste* Observação: O "ls" é usado para listar os arquivos que tem a palavra correspondente. + +Para pesquisar arquivos com extensão, digite: *ls | -E grep teste.txt* Observação: O parâmetro "E" é usado para que o "grep" aceite pontos e alguns outros caracteres. + +## Pesquisando no Conteúdo dos Arquivos + +Para pesquisar uma palavra ou frase contidas em um arquivo, digite: *grep oi teste.txt* O comando retorna todas as linhas do arquivo "teste.txt" que contenham "oi". Observação: Para definir uma frase, coloque entre aspas, caso contrário o "grep" considera que a segunda palavra já faz parte do nome do arquivo. Por exemplo: *grep "bom dia" teste.txt* O comando retornará todas as linhas que contenham a frase "bom dia". + +### Exercícios + +1. Pesquise palavras em nomes de arquivos. + +2. Pesquise palavras em nomes de arquivos com extensão. + +3. Pesquise palavras dentro de arquivos. + +4. Pesquise frases dentro de arquivos. \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/files-and-directories/uso-do-touch-15-01-2018.md b/content/locales/pt_BR/lessons/files-and-directories/uso-do-touch-15-01-2018.md new file mode 100644 index 0000000..1b5c4c4 --- /dev/null +++ b/content/locales/pt_BR/lessons/files-and-directories/uso-do-touch-15-01-2018.md @@ -0,0 +1,25 @@ +# Trabalhando Com Diretórios E Arquivos + +## Uso do Touch + +O comando "touch é usado para alterar a data e hora de acesso e de modificação de arquivos. É possível alterar as duas simultaneamente ou apenas uma delas. Antes de prosseguir, veja a legenda abaixo: A: Representa os dígitos do ano. M: Representa os dígitos do mês. D: Representa os dígitos do dia. H: Representa os dígitos da hora. M: Representa os dígitos do minuto. S: Representa os dígitos do segundo. + +## Alterando a Data e hora de Acesso + +Para alterar a data e hora de acesso de um arquivo, digite o seguinte comando: *touch -t AAAAMMDDhhmm.ss -a arquivo* O parâmetro "-a" indica acesso. + +## Alterando a Data e Hora de Modificação + +Para alterar a data e hora de modificação de um arquivo, digite o seguinte comando: *touch -t AAAAMMDDhhmm.ss -m arquivo* O parâmetro "-m" indica modificação. + +## Alterando a data e hora de acesso e modificação + +Para alterar data e hora de acesso e modificação de um arquivo simultaneamente, digite o seguinte comando: *touch -t AAAAMMDDhhmm.ss arquivo* Observação: Se o arquivo não existir, ele será criado com a data e hora definidas no comando. + +### Exercícios + +1. Altere a data e hora de acesso de um arquivo para 25/03/2009 06:25:44. + +2. Altere a data e hora de modificação de um arquivo para o dia anterior ao meio-dia. + +3. Altere a data e hora de acesso e modificação de um arquivo. \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/files-and-directories/verificacao-do-diretorio-03-11-2017.md b/content/locales/pt_BR/lessons/files-and-directories/verificacao-do-diretorio-03-11-2017.md new file mode 100644 index 0000000..bd15ae1 --- /dev/null +++ b/content/locales/pt_BR/lessons/files-and-directories/verificacao-do-diretorio-03-11-2017.md @@ -0,0 +1,48 @@ +# Trabalhando Com Diretórios E Arquivos + +## Verificando o Diretório Atual e Seu Conteúdo + +Para iniciar as atividades, é fundamental conhecer o terminal e seu conteúdo. + +Ao abrir o terminal, estamos em algum diretório do sistema. Para descobrir o diretório, basta digitar o comando: *pwd* +A saída será algo parecido com: **/home/roberta** + +O nome depois de /home varia, de acordo com o usuário logado no sistema. + +Para exibir a lista de diretórios e arquivos existentes dentro do diretório atual, basta utilizar o comando: *ls* + +Exemplo: *ls* + +Será exibido na tela algo como: **Documentos** **Teste.txt** + +Note que há um diretório criado, o diretório Documentos. Também há o arquivo Teste.txt. Posteriormente será ensinado como criar diretórios e arquivos. + +O comando ls possui alguns outros parâmetros importantes, que serão listados abaixo: + +-l Exibe informações dos arquivos e diretórios, como tamanho, dono, grupo, data, etc. Se for diretório, as informações começarão com a letra 'd'. Exemplo: *ls -l* Todas as informações dos seus arquivos e diretórios serão exibidas. + +-a Lista arquivos e diretórios ocultos. Exemplo: *ls -a* Todos os arquivos e diretórios ocultos serão exibidos. Observação: Nomes de diretórios e arquivos ocultos começam com um . (ponto). + +Os parâmetros também podem ser combinados, veja o exemplo: *ls -la* Este comando exibe as informações de todo o conteúdo, inclusive do conteúdo oculto. + +Existe um atalho equivalente ao comando acima: *ll* Exibirá exatamente o mesmo conteúdo do comando anterior. + +* Exibe o conteúdo do diretório corrente e, caso exista diretórios dentro deste, exibe também o conteúdo deles. Exemplo: *ls * * + +Existe também outro comando bem útil, que permite saber o tipo de cada arquivo. Exemplo: *file teste.txt* A saída será algo parecido com: **Teste.txt: ASCII Text** Serve também para diretórios, veja o exemplo: *file Documentos* A saída será parecida com: **Documentos: Directory** + +Observação: No terminal, há diferença entre maiúsculas e minúsculas. Portanto, preste atenção ao digitar comandos, nomes de diretórios e arquivos. + +### Exercícios + +1. Descubra qual o diretório atual em que se encontra. + +2. Exiba o conteúdo do diretório corrente. + +3. Exiba informações dos arquivos e diretórios. + +4. Exiba o conteúdo oculto dentro do diretório corrente. + +5. Exiba informações de todos os arquivos e diretórios, incluindo os ocultos. Em seguida, faça o mesmo utilizando o atalho. + +6. Verifique o tipo de cada conteúdo, inclusive diretórios. \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/git-and-github/clone-e-adicao-de-arquivos-08-02-2018.md b/content/locales/pt_BR/lessons/git-and-github/clone-e-adicao-de-arquivos-08-02-2018.md new file mode 100644 index 0000000..5cd73d5 --- /dev/null +++ b/content/locales/pt_BR/lessons/git-and-github/clone-e-adicao-de-arquivos-08-02-2018.md @@ -0,0 +1,17 @@ +# Git + +## Clone e Adição de Arquivos + +Com o Git configurado e uma conta criada no GitHub, é hora de começar a trabalhar em um projeto. Para isso, é necessário clonar o repositório criado previamente no GitHub em seu computador. + +Abra o terminal e navegue até uma pasta que queira utilizar para essa finalidade. Execute o seguinte comando: *git clone https://github.com/usuario/repositorio.git* Onde: usuario: É o nome do seu usuário no GitHub. repositorio: É o nome que você digitou na criação do repositório. + +Uma pasta com o nome do seu repositório será criada. Navegue até ela para começar a interagir com o repositório. Como exemplo, crie um arquivo de texto nessa pasta e digite algo. Salve e feche o arquivo. Agora, execute o seguinte comando: *git status* Esse comando mostra o status do seu trabalho, como por exemplo os arquivos, modificações e se estão prontos para serem publicados. Nesse caso, o seu arquivo de texto não está pronto para ser enviado ao GitHub. Para isso ainda falta um comando: *git add .* Ao contrário do que parece, esse comando não está adicionando um arquivo novo no repositório, e sim preparando os arquivos para serem enviados ao GitHub. Você também pode definir apenas arquivos específicos digitando seus nomes, se não quiser enviar todos eles. + +### Exercícios + +1. Abra o terminal, navegue até uma pasta nova de trabalho e clone seu repositório criado anteriormente no GitHub. + +2. Vá até a pasta criada e crie arquivos nela. + +3. Adicione os arquivos, preparando-os para serem enviados para o GitHub. \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/git-and-github/commit,-pull-e-push-08-02-2018.md b/content/locales/pt_BR/lessons/git-and-github/commit,-pull-e-push-08-02-2018.md new file mode 100644 index 0000000..732d6c4 --- /dev/null +++ b/content/locales/pt_BR/lessons/git-and-github/commit,-pull-e-push-08-02-2018.md @@ -0,0 +1,25 @@ +# Git + +## Commit, Pull e Push + +Agora que arquivos já foram adicionados e preparados para envio, será demonstrado como enviar esses arquivos para o GitHub. + +## Commit + +Um commit serve para documentar as alterações feitas naquele projeto. Com os arquivos já preparados com o comando "git add .", é hora de fazer o primeiro commit: *git commit -m "Escreva as alterações realizadas aqui". Pronto, suas alterações já estão documentadas, prontas para serem publicadas. + +## Pull + +O pull serve para atualizar o repositório na sua máquina. Se alguém já alterou o projeto antes de você, é necessário obter essas modificações antes de enviar as suas, para manter o repositório sempre atualizado. Para isso, basta digitar: *git pull* + +## Push + +Você modificou os arquivos, commitou descrevendo o que fez exatamente naquela modificação e agora precisa enviar tudo isso para o servidor. O push empurra as suas modificações para o servidor, incluindo-as no histórico do projeto. Execute: *git push -u origin master* Pronto, suas alterações foram enviadas para o repositório no GitHub. + +### Exercícios + +1. Faça seu primeiro commit e adicione um comentário. + +2. Faça um pull do projeto. + +3. Envie as alterações para o GitHub. \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/git-and-github/configuracao-do-git-08-02-2018.md b/content/locales/pt_BR/lessons/git-and-github/configuracao-do-git-08-02-2018.md new file mode 100644 index 0000000..8014e0c --- /dev/null +++ b/content/locales/pt_BR/lessons/git-and-github/configuracao-do-git-08-02-2018.md @@ -0,0 +1,21 @@ +# Git + +## Configuração do Git + +Com o Git em seu sistema, basta configurá-lo para ter acesso à sua conta e repositórios no GitHub. Você só precisa fazer uma vez. As configurações serão mantidas entre atualizações. Você também poderá alterá-las a qualquer momento executando os comandos novamente. + +O Git vem com uma ferramenta chamada git config que permite a você ler e definir variáveis de configuração que controlam todos os aspectos de como o Git opera. Abra o terminal e digite os comandos a seguir: *git config --global user.name "Seu Nome"* *git config --global user.email "Seu e-mail"* Estas configurações ficam alocadas no arquivo "~/.gitconfig", onde o ~ é o seu diretório home. Quando precisar definir um nome e e-mail específicos para um projeto, basta repetir os comandos sem o parâmetro "--global". + +## Configuração do Repositório + +Para enviar e receber as alterações corretamente, é necessário configurar o repositório no computador. O primeiro passo é transformar uma pasta em um repositório. Crie uma nova pasta e execute o comando: *git init* Um repositório vazio será iniciado. + +## Adicionando o Endereço do Repositório + +Agora, o endereço do repositório criado anteriormente no GitHub será configurado no terminal. Execute o comando: *git remote add origin https://github.com/usuario/repositorio.git* A expressão "origin" será usada toda vez que for enviar alterações para esse repositório. Você pode atribuir outro nome, basta não se esquecer dele na hora de publicar novidades no GitHub. Para ver a lista de todos os repositórios adicionados, digite: *git remote* + +### Exercícios + +1. Abra o terminal e configure o Git para um único projeto. + +2. Configure o Git de forma global, para todos os projetos que for criar. \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/git-and-github/introducao-ao-git-08-02-2018.md b/content/locales/pt_BR/lessons/git-and-github/introducao-ao-git-08-02-2018.md new file mode 100644 index 0000000..6698dcf --- /dev/null +++ b/content/locales/pt_BR/lessons/git-and-github/introducao-ao-git-08-02-2018.md @@ -0,0 +1,23 @@ +# Git + +## Introdução ao Git e GitHub + +## O Que é Git? + +O Git é um sistema de controle de versão de arquivos. Através dele, podemos desenvolver projetos na qual diversas pessoas podem contribuir simultaneamente no mesmo, editando e criando novos arquivos e permitindo que os mesmos possam existir sem o risco de suas alterações serem sobrescritas. Se não houver um sistema de versão, imagine o caos entre duas pessoas abrindo o mesmo arquivo ao mesmo tempo. Uma das aplicações do git é justamente essa, permitir que um arquivo possa ser editado ao mesmo tempo por pessoas diferentes. Basta instalar o Git utilizando o terminal. + +## O que é github? + +O GitHub é um serviço web que pode ser usado gratuitamente e oferece diversas funcionalidades extras aplicadas ao git. Resumindo, você poderá usar gratuitamente o github para hospedar seus projetos pessoais online. Para isso, basta criar uma conta no site e configurar suas informações de usuário e senha no Git via terminal. O github não possui instalação, ele é um serviço, e caso você não tenha uma conta, chegou a hora de criá-la no seguinte endereço: [Link para o GitHub](https://github.com/) Após criar a conta, basta navegar pela página e criar um novo repositório. Quando o repositório é criado, existe um arquivo chamado "readme.md" que vai conter a descrição do seu novo projeto. Após a criação, o repositório estará disponível em um link composto da seguinte maneira: *https://github.com/usuario/repositorio* Onde: usuario: É seu nome de usuário do GitHub. repositorio: É o nome que você deu ao novo repositório. + +### Exercícios + +1. O que é Git? + +2. O que é GitHub? + +3. Qual a função do arquivo "Readme.md"? + +4. Acesse o site do GitHub e crie uma conta. + +5. Crie um repositório no GitHub. \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/network/uso-do-wget-02-01-2018.md b/content/locales/pt_BR/lessons/network/uso-do-wget-02-01-2018.md new file mode 100644 index 0000000..f8c377f --- /dev/null +++ b/content/locales/pt_BR/lessons/network/uso-do-wget-02-01-2018.md @@ -0,0 +1,15 @@ +# Rede + +## Utilização do Wget + +O Wget é muito útil para fazer downloads de endereços na Internet. Suas principais vantagens é a possibilidade de restringir o tipo de arquivo a ser baixado e a possibilidade de retomar o download de onde parou, caso este seja interrompido. Para fazer um download, basta fornecer o link do que desejar baixar. Exemplo: *wget http://www.site.com.br/download/arquivo-exemplo.zip* Abaixo, seguem alguns parâmetros do Wget: -r: Download recursivo. -nd: Não baixar diretórios, apenas os arquivos. -c: Retomar o download de onde parou. Exemplo: *wget -c http://www.site.com.br/download/arquivo-exemplo.zip* --accept=: Baixar apenas arquivos especificados. Por exemplo, se quiser baixar apenas arquivos .zip, digite: *wget -r --accept=zip http://www.site.com.br/download//*. É possível especificar várias extensões, separando por vírgulas. Se quiser fazer vários downloads, basta colocar todos os links em um arquivo e passar o caminho dele como parâmetro. Exemplo: *wget -i arquivo_com_urls.txt* + +### Exercícios + +1. Faça um download da Internet. + +2. Faça download de arquivos com a mesma extensão. + +3. Baixe arquivos sem seus diretórios. + +4. Reuna vários links em um arquivo e faça download. \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/package-management/instalando-e-removendo-pacotes-29-12-2017.md b/content/locales/pt_BR/lessons/package-management/instalando-e-removendo-pacotes-29-12-2017.md new file mode 100644 index 0000000..70b7dd3 --- /dev/null +++ b/content/locales/pt_BR/lessons/package-management/instalando-e-removendo-pacotes-29-12-2017.md @@ -0,0 +1,31 @@ +# Gerenciamento de Pacotes + +## Instalando e Removendo Pacotes + +No Linux, os programas são disponibilizados em forma de pacotes. Existem repositórios (o local onde os pacotes ficam armazenados) oficiais e dos próprios usuários. + +## Instalando um Pacote + +Para instalar um pacote ou programa, execute o seguinte comando no terminal: *sudo pacman -S pacote* Será solicitada a sua senha de administrador. Basta digitá-la e pressionar "enter". + +## Removendo um Pacote + +Para remover um pacote, execute o seguinte comando: *sudo pacman -R pacote* + +## Opções: + +Abaixo serão listadas algumas opções extras do comando "pacman": Procurar pacote: *sudo pacman -Ss pacote* Listar todos os pacotes instalados: *sudo pacman -Q* Desinstalar pacotes, dependências e todos os registros: *sudo pacman -Rscn* Procurar atualização: *sudo pacman -Su* + +### Exercícios + +1. Pesquise um pacote. + +2. Instale um pacote no computador. + +3. Procure atualizações dos pacotes. + +4. Liste todos os pacotes instalados no computador. + +5. Remova um pacote. + +6. Remova um pacote com todas as dependências e registros. \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/package-management/opcoes-avancadas-29-12-2017.md b/content/locales/pt_BR/lessons/package-management/opcoes-avancadas-29-12-2017.md new file mode 100644 index 0000000..5c95444 --- /dev/null +++ b/content/locales/pt_BR/lessons/package-management/opcoes-avancadas-29-12-2017.md @@ -0,0 +1,15 @@ +# Gerenciamento de Pacotes + +## Opções Avançadas + +O "pacman" tem opções interessantes para gerenciar pacotes. Abaixo serão listados mais alguns comandos úteis: Instalar pacotes sem precisar de confirmação: *sudo pacman -S pacote noconfirm* Instalar pacotes sem dependências: *sudo pacman -Sdd* Listar pacotes desnecessários (sem dependências): *sudo pacman -Qdt* Apagar pacotes desnecessários (sem dependências): *sudo pacman -Rns $(pacman -Qqdt)* Apagar pacotes e deixar suas dependências no computador: *sudo pacman -Rdd* + +### Exercícios + +1. Instale pacotes ignorando as dependências. + +2. Instale pacotes sem precisar de confirmação. + +3. Liste pacotes que não possuem dependências e os remova. + +4. Remova pacotes deixando as dependências no computador. \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/permission/alterando-dono-e-grupo-de-arquivos-17-01-2018.md b/content/locales/pt_BR/lessons/permission/alterando-dono-e-grupo-de-arquivos-17-01-2018.md new file mode 100644 index 0000000..b40c135 --- /dev/null +++ b/content/locales/pt_BR/lessons/permission/alterando-dono-e-grupo-de-arquivos-17-01-2018.md @@ -0,0 +1,13 @@ +# Permissões + +## Alterando o Dono e / ou Grupo de Arquivos + +O comando "chown" permite alterar o dono e/ou grupo de um arquivo. Os parâmetros do comando são: -c: Informa quais arquivos estão sendo alterados. -R: Altera, recursivamente, o dono e/ou grupo. Exemplo: *chown -Rc aluno:informatica teste* O comando acima atribui o diretório teste e todos os arquivos dele ao usuário aluno e ao grupo informática. Para alterar apenas o dono, digite: *chown -Rc aluno teste* Para alterar apenas o grupo, digite: *chown -Rc :informatica teste* + +### Exercícios + +1. Altere o dono do diretório teste para seu nome e o grupo para informática. + +2. Altere apenas o dono do diretório. + +3. Altere apenas o grupo do diretório. \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/permission/atribuindo-permissoes-17-01-2018.md b/content/locales/pt_BR/lessons/permission/atribuindo-permissoes-17-01-2018.md new file mode 100644 index 0000000..84b50f0 --- /dev/null +++ b/content/locales/pt_BR/lessons/permission/atribuindo-permissoes-17-01-2018.md @@ -0,0 +1,17 @@ +# Permissões + +## Atribuindo Permissões + +O comando "chmod" atribui permições de acesso a um arquivo ou diretório. Os parâmetros são: u: Permissão para o dono (user). g: Permissão para o grupo (group). o: Permissão para usuários que não são membros do grupo (others). a: Permissão para todos (all). r: Leitura. w: Gravação. x: Execução (para arquivos) ou autorização de acesso (para diretórios). Exemplo: *chmod ug+rw teste.txt* O comando define que o arquivo "teste.txt" tem permissão de leitura (r) e gravação (r) para usuários e membros do grupo. Também é possível definir permissões com números: 0: Sem permissão. 1: Permissão de execução. 2: Permissão de gravação. 3: Permissão de gravação e execução. 4: Permissão de leitura. 5: Permissão de leitura e execução. 6: Permissão de leitura e gravação. 7: Permição de leitura, gravação e execução. Os números são interpretados da direita para a esquerda, de modo que o último número definido no comando será a permissão para outros usuários, o do meio será para membros do grupo e o primeiro para o dono. Exemplo: *chmod 764 teste.txt* O comando acima define permissão de leitura, gravação e execução para o dono (7), leitura e gravação para os membros do grupo (6) e somente leitura para outros usuários (4). + +### Exercícios + +1. Defina permissão de leitura, gravação e execução para o dono do arquivo, para membros do grupo, e somente leitura para outros usuários. + +2. Defina permissão de leitura, gravação e execução para o dono, somente leitura para o grupo e nenhuma permissão para outros usuários. + +3. Defina permissão de leitura, gravação e execução para o grupo e somente leitura para outros usuários. + +4. Defina permissão de leitura, gravação e execução para todos. + +5. Defina permissão de leitura, gravação e execução para o dono, leitura e execução para membros do grupo e somente execução para todos os usuários. \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/uso-de-alias-12-01-2018.md b/content/locales/pt_BR/lessons/uso-de-alias-12-01-2018.md new file mode 100644 index 0000000..1f4f749 --- /dev/null +++ b/content/locales/pt_BR/lessons/uso-de-alias-12-01-2018.md @@ -0,0 +1,19 @@ +# Utilização de Alias + +Um recurso muito interessante disponível no sistema operacional é o Alias. Um Alias nada mais é do que um apelido para determinada instrução. É muito útil, especialmente, para comandos grandes e que necessitam ser usados com frequência. Para conhecer a lista de alias disponível, digite: *alias* + +## Criando um Alias + +É muito simples criar um alias. Por exemplo, em vez de digitar "clear" para limpar o terminal, poderíamos digitar apenas "cl". Para isso, digite: *alias cl='clear'* O comando funciona da seguinte forma: Em primeiro lugar vem o apelido, e depois a instrução correspondente. + +## Tornando o Alias Fixo + +O único problema é que todo alias criado dessa forma só funcionará enquanto o seu usuário estiver ativo. Para tornar um alias fixo no seu usuário, é preciso adicioná-lo no arquivo ".bashrc" que está na pasta home do usuário em questão. Ao abrir o arquivo, note que existem várias configurações. Existe uma sessão específica para alias. Procure por: "# some more ls aliases". Adicione seu alias nessa sessão, com a mesma sintaxe já feita no terminal. Salve o arquivo e saia do editor. Depois, tente executar seu alias. Ele não funcionará, pois o terminal ainda não leu o arquivo para aplicar a configuração. Para isso, você pode encerrar o terminal e abrir novamente, ou então utilizar o comando "source" da seguinte forma: *source .bashrc* Agora sim, digite novamente seu alias e veja que funcionará normalmente. + +### Exercícios + +1. Atribua um apelido a um comando que julgue importante. + +2. Edite o arquivo de configuração e torne seus aliases fixos. + +3. Escolha um dos métodos para que o terminal leia o arquivo e aplique a configuração. \ No newline at end of file diff --git a/content/locales/pt_BR/lessons/uso-do-screen-09-02-2018.md b/content/locales/pt_BR/lessons/uso-do-screen-09-02-2018.md new file mode 100644 index 0000000..fe70a22 --- /dev/null +++ b/content/locales/pt_BR/lessons/uso-do-screen-09-02-2018.md @@ -0,0 +1,23 @@ +# Screen + +## Uso do Screen + +O Screen é um multiplexador de terminais que permite ao usuário, em uma mesma sessão, abrir várias janelas e realizar atividades paralelas. Se você precisa realizar outra tarefa enquanto faz um download, por exemplo, o screen é muito útil, já que é possível abrir outra tela de terminal enquanto seu download é feito em segundo plano. + +## Utilização + +Para utilizar o screen, basta digitar: *screen* Nada vai aparecer, mas o screen estará aberto nesse momento. Agora, você pode executar a tarefa que quer deixar em segundo plano enquanto faz outras. Depois disso, pressione a combinação: *Ctrl+A D* Essa combinação de teclas fará com que essa sessão virtual seja separada (detached) da sessão original, liberando por consequência o terminal para realização de outra tarefa. Para listar as sessões abertas, digite: *screen -ls* Se você estiver em outra sessão e quiser restaurar a anterior, para verificar o estado de download, por exemplo, digite: *screen -r* Observação: Quando o comando tem uma letra separada, como o comando visto acima (Ctrl+A D, por exemplo), significa que Ctrl+A devem ser pressionadas ao mesmo tempo, e o D deve ser pressionado só após soltar as teclas anteriores. + +## Múltiplas Telas + +Para criar e navegar por mútiplas telas dentro do screen, veja os comandos a seguir: Ctrl+A c: Criar nova janela. Ctrl+A p: Ir para a tela anterior. Ctrl+A n: Ir para a tela seguinte. Para fechar o screen, execute: *exit* + +### Exercícios + +1. Abra o terminal, execute o screen e inicie o download de um arquivo grande. + +2. Crie mais telas e execute outras tarefas. + +3. Navegue entre as telas, indo para as telas seguintes e voltando. + +4. Restaure a tela do download para verificar seu andamento. \ No newline at end of file diff --git a/content/site/advanced/00-00-header.md b/content/site/advanced/00-00-header.md new file mode 100644 index 0000000..1f95c1e --- /dev/null +++ b/content/site/advanced/00-00-header.md @@ -0,0 +1,8 @@ +% Guide for Technical Users of F123Light + +This guide is intended for those who are more experienced (or are not very experienced but want to learn more technically advanced things), about the F123Light operating system. Should you need information about the overall strategy of the project, our motivations, or other non-technical matters, please read our [general project guide](strategy.html). + +Should you have suggestions, corrections, new content, new code, or other contributions to this project, please [join one of our e-mail lists](https://public.f123.org/guide/getting-started.html#our-e-mail-lists) and let us know about it. + +--- + diff --git a/content/site/advanced/00-01-introduction0.md b/content/site/advanced/00-01-introduction0.md new file mode 100644 index 0000000..bc93ac5 --- /dev/null +++ b/content/site/advanced/00-01-introduction0.md @@ -0,0 +1,2 @@ +# Introduction to the Advanced Guide + diff --git a/content/site/advanced/00-01-introduction1.md b/content/site/advanced/00-01-introduction1.md new file mode 100644 index 0000000..3367be7 --- /dev/null +++ b/content/site/advanced/00-01-introduction1.md @@ -0,0 +1,4 @@ +This guide is intended for those who are more experienced (or are not very experienced but want to learn more technically advanced things), about the F123Light operating system. Should you need information about the overall strategy of the project, our motivations, or other non-technical matters, please read our [general project guide](strategy.html). + +Should you have suggestions, corrections, new content, new code, or other contributions to this project, please [join one of our e-mail lists](getting-started.html#our-e-mail-lists) and let us know about it. + diff --git a/content/site/advanced/01-00-build.md b/content/site/advanced/01-00-build.md new file mode 100644 index 0000000..8b87097 --- /dev/null +++ b/content/site/advanced/01-00-build.md @@ -0,0 +1,26 @@ +## Updating F123Light on the Command Line + +Advanced users can perform an update from the command line with the command: "update-f123light" + +If such a user is helping us test recent changes to the code, he or she can use a special parameter to update from the development branch. To specify the development branch, the correct command would be: "update-f123light -b dev + +## Building Your Own F123Light Image + +Experienced users also have the option of generating or building their own image. Every copy of F123Light includes the command "build-f123light", which automatically generates the image file, which can then be burned or flashed to a MicroSD card for use. Please make sure your working SD card has at least 8Gb of free space to perform this procedure. + +## Burning/Flashing Your New Image Using the Command Line + +Experienced or ambitious users can burn the image they have just built on their own Raspberry Pi by using the "sudo fdisk -l" command to identify which device or drive name to use, after plugging-in the USB adapter containing the target MicroSD card. + +*Warning*: This is a risky procedure, so it should not be attempted by inexperienced users or those with valuable information on their computers, or who do not have an up-to-date backup of same. + +Once the user has identified what device holds his or her operating system, and which device will be used to burn the image, the user can type something like the following to actually flash the image which was just created: + +sudo dd if=filename of=device-path bs=2M + +The "sudo" string is used for important commands which require admin powers. The "dd" command is also called disk-dump, and it is used to make exact copies of disks or to burn images on same. The "if" and "of" parameters, stand for input file and output file, and the "bs" parameter stands for block size. Specifying block size is optional, but we have found that using "2M" speeds-up the process. Do note that the "M" in this parameter must be capitalized. + +## Pre-Configuring Wireless Access (WiFi) + +Anyone using our "build-f123light" build script to create an image, can include his or her wireless network information on the configuration file under F123Light/build/ and the computer will boot already with WiFi access to the Internet. However, if you do this, make sure you also change the default passwords for both the normal and root users. + diff --git a/content/site/advanced/01-00-image-burn.md b/content/site/advanced/01-00-image-burn.md new file mode 100644 index 0000000..4395889 --- /dev/null +++ b/content/site/advanced/01-00-image-burn.md @@ -0,0 +1,22 @@ +## Building Your Own F123Light Image + +Experienced users have the option of generating or building their own image. Every copy of F123Light includes the command "build-f123light", which automatically generates the image file, which can then be burned or flashed to a MicroSD card for use. + +To build a new image, you will need to make sure you have at least 8GB of free space. You may need aditional space for the work directory. If you try to build an image with out enough free space the script will alert you to the issue and stop. + +To build an image with all default parameters, go to the command line and enter the following: + + build-f123light + +## Burning/Flashing Your New Image Using the Command Line + +Experienced or ambitious users can burn the image they have just built on their own Raspberry Pi by using the "sudo fdisk -l" command to identify which device or drive name to use, after plugging-in the USB adapter containing the target MicroSD card. + +*Warning*: This is a risky procedure, so it should not be attempted by inexperienced users or those with valuable information on their computers, or who do not have an up-to-date backup of same. + +Once the user has identified what device holds his or her operating system, and which device will be used to burn the image, the user can type something like the following to actually flash the image which was just created: + +sudo dd if=filename of=device-path bs=2M + +The "sudo" string is used for important commands which require admin powers. The "dd" command is also called disk-dump, and it is used to make exact copies of disks or to burn images on same. The "if" and "of" parameters, stand for input file and output file, and the "bs" parameter stands for block size. Specifying block size is optional, but we have found that using "2M" speeds-up the process. Do note that the "M" in this parameter must be capitalized. + diff --git a/content/site/advanced/01-01-image-release-candidate.md b/content/site/advanced/01-01-image-release-candidate.md new file mode 100644 index 0000000..20f3703 --- /dev/null +++ b/content/site/advanced/01-01-image-release-candidate.md @@ -0,0 +1,15 @@ +# Downloading, Updating, and Building Images + +## Downloading the Latest Release Candidate Image + +Experienced users may wish to assist us in testing new features and updates. One way to do this is by downloading and trying the latest release candidate image. + +You may find our latest release candidate here: + + +To verify file integrity after download, you may use the [sha1sum signature for the above image](https://public.f123.org/releaseCandidate.sha1sum). + +Please be aware that this is a test image and there may be bugs, some of which could be severe. Please do not use test installations as your primary machine or in production environments. + +If you are not an experienced computer user, we recommend that you use instead our [latest stable version of F123Light](https://guide.f123.org/getting-started.html#download), as it has been tested more thoroughly than the above version. + diff --git a/content/site/advanced/01-01-image-standard.md b/content/site/advanced/01-01-image-standard.md new file mode 100644 index 0000000..9b0dc78 --- /dev/null +++ b/content/site/advanced/01-01-image-standard.md @@ -0,0 +1,8 @@ +## Build a Standard Image with F123Light Itself + +To build a new image, you will need to make sure you have at least 8GB of free space. You may need aditional space for the work directory. If you try to build an image with out enough free space the script will alert you to the issue and stop. + +To build an image with all default parameters, go to the command line and enter the following: + + build-f123light + diff --git a/content/site/advanced/01-01-update.md b/content/site/advanced/01-01-update.md new file mode 100644 index 0000000..b1fe84b --- /dev/null +++ b/content/site/advanced/01-01-update.md @@ -0,0 +1,10 @@ +## Updating F123Light on the Command Line + +Advanced users can perform an update from the command line with the command: + + update-f123light + +If such a user is helping us test recent changes to the code, he or she can use a special parameter to update from the development branch. To specify the development branch, the correct command would be: + + update-f123light -b dev + diff --git a/content/site/advanced/01-02-image-custom.md b/content/site/advanced/01-02-image-custom.md new file mode 100644 index 0000000..f0e2a7f --- /dev/null +++ b/content/site/advanced/01-02-image-custom.md @@ -0,0 +1,25 @@ +## Build a Custom Image + +To build a new image, you will need to make sure you have at least 8GB of free space. You may need aditional space for the work directory. If you try to build an image with out enough free space the script will alert you to the issue and stop. + +You can customize your image by passing special parameters to it. Here is a list of things you can customize about your image: + +* -d or --work-directory : The working directory where the image is created and mounted and packages are cached. The default is the current directory. +* -o or --output-file : the name of the image file. The default is F123Light-yy.mm.dd.img where yy.mm..dd is the 2 digit year, 2digit month, and 2 digit day. +* -H or --hostname : The host name of the installed OS. The default is f123light. +* -r or --root-password : The root user's password. The default is root. +* -u or --user=: The name of the regular non-root user. The default is f123. +* -p or --password=: the regular user's password. The default is f123. +* -n or --network-name : The name of a preconfigured wifi network access point. +* -w or --wifi-password : A preconfigured wifi network password. Requires --network-name. Remember to inclose the password in 'apostrophees or single quotes' if it contains special characters or spaces. + +Here are a couple of examples of building an image with some parameters given on the command line: + + build-f123light --output-file custom.img + +This will make an image called custom.img. + + build-f123light -n wifi-network-name -w 'your-password' + +This example creates an image which already contains your Wifi login, so you will not have to re-enter your WiFi password at boot time. Just like the two examples above, you can enter all the parameters listed above and the image will be built with all that information already included. + diff --git a/content/site/advanced/01-03-file-locations.md b/content/site/advanced/01-03-file-locations.md new file mode 100644 index 0000000..232ef1a --- /dev/null +++ b/content/site/advanced/01-03-file-locations.md @@ -0,0 +1,25 @@ +## Important locations and File Structure + +With the exceptions of update-f123light, build-f123light, and first-boot, the scripts that power F123Light reside in the /usr/lib/F123-wrappers and /usr/lib/F123-includes directories. + +Each file is named according to what it does, and there is a brief description at the top of the file with the copyright notice. The files in /usr/lib/F123-wrappers are the end product that present information to the user. The files in /usr/lib/F123-includes are functions and code that gets reused almost everywhere to make things easier to extend. + +So, to have menus and input boxes, etc, similar to what we use, you can include something like the following in your scripts: + + # Load F123 includes + if [[ -d /usr/lib/F123-includes/ ]]; then + for i in /usr/lib/F123-includes/*.sh ; do + source $i + done + fi + +If you need to interact with the preferences, which include such things as tip display options, preferred browser, email client, etc, you can get access to it by sourcing the ~/.preferences file like so: + + source ~/.preferences + +Preferences are stored in an associative array. In order to keep the preferences file well formatted and readable, when writing new preferences please use the write_preferences function defined in /usr/lib/F123-includes/preferences-manager.sh. + +F123Light specific overwrites for applications are in /etc/F123-Config/. This allows different behavior for applications such as irssi when called from the help menu as apposed to when it is called by the user specifically. Users will be able to customize their day to day copy of irssi as much as they want, and the chat support option from the menu will still work as designed when needed. + +Also in /etc/F123-Config/ is a subdirectory called backup. This contains a copy of speechd.conf and any other files that may be necessary to reset something vital to a working state. + diff --git a/content/site/advanced/02-00-fenrir.md b/content/site/advanced/02-00-fenrir.md new file mode 100644 index 0000000..21a01c6 --- /dev/null +++ b/content/site/advanced/02-00-fenrir.md @@ -0,0 +1,2 @@ +# Fenrir - A Modern Console Screen Reader + diff --git a/content/site/advanced/02-01-fenrir-select.md b/content/site/advanced/02-01-fenrir-select.md new file mode 100644 index 0000000..63d4890 --- /dev/null +++ b/content/site/advanced/02-01-fenrir-select.md @@ -0,0 +1,14 @@ +## Selecting Fenrir Screen Reader Branches + +Sometimes you may want to try a new feature in Fenrir that has not made it to the stable release. For this, you can exit to the command line, then run the following command: + + select-fenrir + +You will be presented with a list of branches in the git repository. Simply select the branch you want a and press enter. The current version of Fenrir will shut down and the version from the selected branch will start. + +There are safeguards in place to make sure you do not end up with a broken Fenrir. If you hear Fenrir speaking, you can press enter to use the selected version. If you do not press enter with in 30 seconds, the computer will restart and you will be using the stable, installed version. + +You can get back to your installed copy of Fenrir by selecting "stable" from the list of branches or by restarting your computer. Also, if you already know the branch you want, you can specify it on the command line and skip the menu system altogether. For example, type the following to launch Fenrir from the master branch: + + select-fenrir master + diff --git a/content/site/advanced/02-02-00-fenrir-code.md b/content/site/advanced/02-02-00-fenrir-code.md new file mode 100644 index 0000000..e0e3d30 --- /dev/null +++ b/content/site/advanced/02-02-00-fenrir-code.md @@ -0,0 +1,2 @@ +## Fenrir's Source Code + diff --git a/content/site/advanced/02-02-01-folder-structure.md b/content/site/advanced/02-02-01-folder-structure.md new file mode 100644 index 0000000..f83463e --- /dev/null +++ b/content/site/advanced/02-02-01-folder-structure.md @@ -0,0 +1,36 @@ +### Folder Structure + +Fenrir's source code is organized in the git tree as follows: + +* src/ + This is the top level of the source code, and contains the executables: + + fenrir + run fenrir in foreground (useful for testing or terminal emulation) + + fenrir-pypy + run fenrir in foreground using the faster pypy python JIT compiler (also useful for testing or terminal emulation) + + fenrir-daemon + spawns fenrir as daemon (used for the "global" background service to read the TTYs). + + fenrir-daemon-pypy + spawns fenrir as daemon using the faster pypy python JIT compiler which gives better performance (also used for the "global" background service to read the TTYs). + + + src/fenrirscreenreader/ + The top level of the core and modular Fenrir code + - brailleDriver + Contains all braille drivers, currently incomplete. brailleDriver modules are loaded and accessed in core/outputManager.py. All files here are inherited from core/brailleDriver.py. + - commands: + Contains a substructure for all commands, vMenus and triggers. + - core + Contains all the core classes. Its the fenrir API itself. Holds the settings and loads the drivers. + - inputDriver + Contains all input drivers. inputDriver modules are loaded and accessed in core/inputManager.py. All files here are inherited from core/inputDriver.py + - remoteDriver + Contains all remote drivers that give access using the remote subsystem. remoteDriver modules are loaded and accessed in core/remoteManager.py. All files here are inherited from core/remoteDriver.py + - screenDriver + Contains the screen drivers that collect information about the screen and its contents. screenDriver modules are loaded and accessed in core/screenManager.py. All files here are inherited from core/screenDriver.py + - soundDriver + Contains the sound drivers for the soundicons. soundDriver modules are loaded and accessed in core/outputManager.py. All files here are inherited from core/soundDriver.py + - speechDriver + Contains the text to speech engine drivers. speechDriver modules are loaded and accessed in core/outputManager.py. All files here are inherited from core/speechDriver.py + - utils + Contains usefull functions for word wrapping and more. + diff --git a/content/site/advanced/02-02-02-core-classes.md b/content/site/advanced/02-02-02-core-classes.md new file mode 100644 index 0000000..2fad507 --- /dev/null +++ b/content/site/advanced/02-02-02-core-classes.md @@ -0,0 +1,197 @@ +### Core Classes + +These core classes define the heart of Fenrir, found in src/fenrirscreenreader/core. + +* applicationManager.py +Currently unused. It was initially used to detect the currently running application to automatically load application profiles, but no reliable detection method was found for applications running inside of screen or tmux. + +* attributeManager.py +This is currently the API to handle all kinds of attribute stuff. The hilight tracking is also analyzed here, i.e. +```attributeManager.getAttributeByXY(0,0)``` +gives the attributes for the first cell and row (starting at the upper left corner on the screen). An attribute set looks like the following list: + +``` #start attribute +[ + 'default', # fg + 'default', # bg + False, # bold + False, # italics + False, # underscore + False, # strikethrough + False, # reverse + False, # blink + 'default', # fontsize + 'default' # fontfamily +] + #end attribute``` + +Attribute[2] indicates whether or not the cell is bold. + +* barrierManager.py +Manages the barrier feature. It chains the current window down to the configured barriers. + +* brailleDriver.py +Is the base class for all brailleDrivers. + +* byteManager.py +Handles byte input used in terminal emulation mode. It's the opposite of inputManager, which consumes key press/ release events. + +* commandData.py +This is a container to hold command information. It will be deprecated in the future. + +* commandManager.py +loa + +- cursorManager.py +Holds all cursor related information and handles the review cursor. + +- debug.py +Contains the debug states (Info, warning, error) + +* debugManager.py +produces the debug output and writes it to a file or prints it on screen. + +- environment.py +The environment contains almost everything fenrir is, and it's passed to every object fenrir loads, to have information available everywhere. This makes it quite easy to create plugins, as the commands get the information as well. It's a python dictionary. It's mostly named self.env. The only place where it is named environment is the fenrirManager class (for historical reasons). The environment looks like this: + +```environment = { +'screen': screenData, # contains the screen information, better access it using the API in cursorManager and screenManager. This will be deprecated. +'runtime': runtimeData, # contains all in "core/*Manager.py" classes. its the point to communicate with the fenrir core. its very important example below. +'general': generalData, # contains the general information, better access it using the API in fenrirManager will eventually be deprecated +'settings': settingsData, # contains the settings information, better access it using the API in settingsManager. this is not going to be deprecated +'commandInfo': commandData.commandInfo, # contains global command info like last execution times, itwill be removed, as it was not used. +'commandBuffer': commandData.commandBuffer, # contains information that is needed to sored persistent, like the begin and end mark. for this we have the memoryManager now. this is going to be deprecated in fenrir 3 +'input': inputData, # contains the input information, better access it using the API in inputManager. This will be deprecated. +'punctuation': punctuationData, # contains the punctuation information, better access it using the API in punctuationManager This will be deprecated. +'output': outputData, # contains the output information, better access it using the API in outputManager This will be deprecated. +'soundIcons': {}, # contains the soundicons +'bindings': {}, # contains the key bindings +'commands':{} # contains all the commands loaded by the commandManager +}``` + +example of environ usage: +```self.env['runtime']['outputManager'].presentText('hello world' , soundIcon='', interrupt=True)``` +runtime contains all managers (without the .py) as dict entries, so the functions could be used there. The output manager has the method "presentText" that is called here + +Get the setting dateFormat in section general using the settings manager: +```dateFormat = self.env['runtime']['settingsManager'].getSetting('general', 'dateFormat')``` + +getSetting returns text. There are others to cast as bool or int. Here is an exemple for bool: +```isAutoReadIncomming = self.env['runtime']['settingsManager'].getSettingAsBool('speech', 'autoReadIncoming')``` + +Settings can also be set here. The following disables "autoReadIncomming": +```self.env['runtime']['settingsManager'].setSetting('speech', 'autoReadIncoming', str(False))``` + +* eventData.py +An enum with all event types + +* eventManager.py +This is the queue for events. It has some methods to add events to the queue and dispatches the events to the right places. Most of them are passed to the fenrirManager. + +* fenrirManager.py +This is used for startup. It ties all the event cases together where they are passed to the right managers. It also checks for shortcuts and consumes the input, i.e. +```input event -> eventManager -> fenrirManager -> inputManager +screen change event -> eventManager -> fenrirManager -> screenManager``` + +* generalData.py +This is a container to hold general information. It will be deprecated in the future. + +* helpManager.py +Creates the tutorial information and controls the navigation in tutorial mode + +* i18n.py +Loads the gettext and translation module. + +- inputData.py +This is a container to hold input information. It will be deprecated in the future. + +* inputDriver.py +This is the base class for all input drivers + +* inputManager.py +Gets key input events like "key a pressed" and "key a released" and tracks the current pressed keys. +event chain: +input driver (PlugInputDevice) -> eventManager -> fenrirManager -> inputManager +input driver (KeyboardInput) -> eventManager -> fenrirManager -> inputManager + +* memoryManager.py +Exists to manage persistent memory like the clipboard. + +* outputData.py +This is a container to hold output information. It will be deprecated in the future. + +* outputManager.py +This contains methods for playing sound icons and speaking. + +* processManager.py +This spawns the threads needed for the drivers to progress more quickly. Fenrir is multithreaded and multiprocessed. so it can split out drivers workers to own processes to get multi cpu core power. + +* punctuationData.py +This is a container to hold punctuation information. It will be deprecated in the future. + +* punctuationManager.py +Prepares the punctuation for output, replaces custom dicts and removes what will not be spoken. + +* quickMenuManager.py +Manages the NVDA like arrow menu for speech rate, volume and pitch. + +* remoteDriver.py +The base class for remote drivers. + +* remoteManager.py +Loads the remote drivers. Accepts and proceeds all incomming commands. +event chain: +remote driver (RemoteIncomming) -> eventManager -> fenrirManager -> remoteManager + +* runtimeData.py +This is just a placeholder an will be removed. + +* sayAllManager.py +This is a WIP for the say all functionality + +* screenData.py +This is a container to hold screen information. It will be deprecated in the future. + +* screenDriver.py +This is the base class for all screen drivers. + +* screenManager.py +Creates the diff and tracks the cursor. +event chain: +screen driver (ScreenUpdate) -> eventManager -> fenrirManager -> screenManager +screen driver (ScreenChanged) -> eventManager -> fenrirManager -> screenManager + +* settingsData.py +Holds the default settings. + +* settingsManager.py +The settings manager contains all methods to load, save and querry settings. + +* soundDriver.py +Base class for sound drivers. + +* speechDriver.py +Base class for speech drivers. + +* tableManager.py +WIP for a table cell based review. It should speak the cellname in review mode. Example +ps +```PID TTY +123 TTY1``` +it should not navigate: +PID, TTY, 123, TTY1 +but +PID: 123, TTY: TTY1 +to keep track of the current cell + +* textManager.py +Used to manipulate the output for speech, i.e. +########## +is transformed to: +10 times # + +* vmenuManager.py +Rebinds the vMenu keys, loads the vMenu, contains the navigation for vMenu, etc. + +most of the *Data.py should be moved to the managers in future. + diff --git a/content/site/advanced/02-02-03-command-classes.md b/content/site/advanced/02-02-03-command-classes.md new file mode 100644 index 0000000..151cb60 --- /dev/null +++ b/content/site/advanced/02-02-03-command-classes.md @@ -0,0 +1,68 @@ +### Commands + +This is the commands class used to build and work with Fenrir commands, i.e. what happens when the user presses a Fenrir key shortcut. The folder structure for building various types of commands is also found here in src/fenrirscreenreader/commands. + +* command_template.py +Contains a basic command skeleton that is used for all but onSwitchApplicationProfile commands, last uses switchTrigger_template (as there are load and unload functions) + +#### basic functions: + +1. initialize is called on command creation. It's an own function rather than in custructure. +2. shutdown is called if the command is reloaded or fenrir gets shutdown (thought to clean up things) +3. getDescription: gives a description for tutorial mode, or in case of vMenu, it's the entry name +4. run() is executed if the command is invoked +5. the callback function is currently unused. It's thought for special cases like in "sayAll," to notify that the current word is spoken and invoke the next one, so custom usage. + +* switchTrigger_template.py +These are the currently disabled application profiles. + +* commands +The commands folder contains the "normal" commands like review or say time. Just copy the commands_template.py above into it and add your specific command code. To assign the command in this folder to a keyboard binding, just assign the keys to the command filename without .py. example: +Assign add_word_to_spell_check.py to 2 times fenrir + S +```2,KEY_FENRIR,KEY_S=add_word_to_spell_check``` +fenrir will read all python files in a command folder and match the filename to the shortcut without .py. The keybindings are found in config/keyboard/. + +* help +Contains the automatically assigned navigation for tutorial mode. + +* onApplicationChange +All commands in this folder are triggerd in order if the current foreground application changes - currently disabled + +* onByteInput +All commands in this folder are triggerd in order if a byte input event was fired + +* onCursorChange +All commands in this folder are triggerd in order if the cursor position changes + +* onHeartBeat +All commands in this folder are triggerd in order on heartbeat (a timer defined in the Fenrir code). + +* onKeyInput +All commands in this folder are triggerd in order if a key input event was fired. + +* onPlugInputDevice +All commands in this folder are triggerd in order if a plug input device event was fired. + +* onScreenChanged +All commands in this folder are triggerd in order if an on screen change event was fired (i.e. as you switch from TTY3 to TTY5). + +* onScreenUpdate +All commands in this folder are triggerd in order if an on screen update event was fired (as new text appears on the current screen). + +* onSwitchApplicationProfile +Contains the application profiles. It matches the application by name and calls the oldApplication.unload and newApplication.load functions, currently disabled. + +* quickMenu +Contains the NVDA quick menu navigation. + +* sayAll +Contains the callbacks for WIP say all. + +* vmenu-navigation +Contains the automatically assigned navigation keys for the vMenu. + +* vmenu-profiles +Contains the vMenu structure itself. + +It is only necessary to place a command in the folder that corresponds to the event where it should be executed. Fenrir will read all commands in the event folder and execute them in numerical order. If it is desirable to execute commands within an event folder in a specific order, place numbers at the beginning of their filenames, i.e. 00-do-something.py and 01-do-something-else.py. + diff --git a/content/site/advanced/02-02-fenrir-virtual-menu.md b/content/site/advanced/02-02-fenrir-virtual-menu.md new file mode 100644 index 0000000..2da546b --- /dev/null +++ b/content/site/advanced/02-02-fenrir-virtual-menu.md @@ -0,0 +1,10 @@ +## Fenrir Virtual Menus + +Fenrir has a new feature that will perform key presses for you. This feature is very powerful, because it can provide easy to use shortcuts and menus that work the same across applications. + +For example, if you have two editors, Nano and Vim, they save files in different ways. In F123Light, to save a file in Nano, you press control+s. In Vim, however, you must make sure you are in command mode by pressing the escape key, then enter the command :w. If Fenrir has a menu defined for both text editors, you could simply activate the menu by pressing Fenrir+F10 or Fenrir+Alt, then press f for files, and s for save. + +You can also use the arrow keys and enter to select menu choices. If you open the menu and change your mind, simply press escape to close it. If you type a letter that does not exist as a menu option, Fenrir will make an error sound. + +You can already try virtual menus on the Nano text editor. + diff --git a/content/site/advanced/02-03-virtual-menu-creation.md b/content/site/advanced/02-03-virtual-menu-creation.md new file mode 100644 index 0000000..76e38ad --- /dev/null +++ b/content/site/advanced/02-03-virtual-menu-creation.md @@ -0,0 +1,68 @@ +## Creating a Virtual menu in Fenrir + +Since F123Light uses many console applications with non-standard keybindings, the virtual menu is a Fenrir add on which will translate more conventional key combinations into those unusual ones, so the end-user does not have to worry about learning entirely new keyboard shortcuts. + +Fenrir is a flexible framework to create screenreaders for the commandline. It is entirely plugin driven. The virtual menu is no different, as it uses the same simple structure. Its a class named command() with 3 funktions: + +1. initialize(environment) +Is invoked by fenrir while loading. The Parameter „environment“ is the complete fenrir runtime, drivers, managers, settings and all kinds of data. Its like the engine in an car. This is the most complex part. Anybody interested in additional details in this area should ask about it in: or . + +2. getDescription() returns a text spoken in tutorial mode or is used as menu entry name. + +3. run, this is fired on activation. It can access all kind of information and functionality with environment. + +Especially for virtual menu, we have created a key sequencer that uses evdev key names with states. A special sequence name with the name sleep gives a small break. + +The menu by itself is structured by folders. With KEY (for key devices) and BYTE for terminal emulation (using escape sequences). +Above those folders is a folder per application, as shown below. The user can be locked in those applications menus using the remote manager so they will not get confused by wrong entrys) + +For F123Light, the code for virtual menus resides in: +/usr/share/fenrirscreenreader/menus/KEY/ + +Inside this directory is the actual macro structure. The Directories directly under KEY are application names that contain the menu for the application. + + % ls + vim/ nano/ mutt/ mc/ + +Inside those directories are the actual virtual menu directories, so "file", "Tools", etc. + +Here, from the File directory for Nano, is the save command. This activates control+S which is the Fenrir command for Nano. Description is the help text for it if you are trying to learn the keys. + + # Code + + #!/usr/bin/env python + # -*- encoding: utf-8 + from fenrirscreenreader.core import debug + + + class command(): + def __init__(self): + pass + + def initialize(self, environment): + self.env = environment + self.keyMakro = [[1, 'KEY_LEFTCTRL'], + [1, 'KEY_S'], + [0.05, 'SLEEP'], + [0, 'KEY_S'], + [0, 'KEY_LEFTCTRL']] + + def shutdown(self): + pass + + def getDescription(self): + return "Save your work." + + def run(self): + self.env['runtime']['outputManager'].presentText( + "Okay, you will now be asked to save your work.", interrupt=True) + if self.env['runtime']['inputManager'].getShortcutType() in ['KEY']: + self.env['runtime']['inputManager'].sendKeys(self.keyMakro) + elif self.env['runtime']['inputManager'].getShortcutType() in ['BYTE']: + self.env['runtime']['byteManager'].sendBytes(self.byteMakro) + + def setCallback(self, callback): + pass + + # End Code + diff --git a/content/site/advanced/02-04-fenrir-developers.md b/content/site/advanced/02-04-fenrir-developers.md new file mode 100644 index 0000000..4bc691f --- /dev/null +++ b/content/site/advanced/02-04-fenrir-developers.md @@ -0,0 +1,11 @@ +## Fenrir Resources and Contacting Developers + +The best places to find Fenrir contributors are: + +* Voice chat: +* IRC: , Room: #a11y +* Web site: +* E-mail list: +* Wiki: +* Source Code: + diff --git a/content/site/advanced/03-01-menu-custom.md b/content/site/advanced/03-01-menu-custom.md new file mode 100644 index 0000000..8e772e3 --- /dev/null +++ b/content/site/advanced/03-01-menu-custom.md @@ -0,0 +1,42 @@ +# Customizing the F123Light Menus + +You may want to add your favorite application to the menu system for easy launching. To do this, create a file called menu under ~/.config/F123 like this: + + mkdir -p ~/.config/F123 + nano ~/.config/F123/menu + +The process for adding a command line based application is pretty straight forward. This, for example, will add vim: + + exec:Vim Text Editor::vim + +Some applications require special directives to pdmenu, those that do not stay open for example, may need the pause flag. For more information, please read: + + man pdmenurc + +Adding graphical applications, such as chromium takes a bit more work. To do this, we have to suspend Fenrir so that it and Orca aren't trying to read at the same time. We then have to call the graphical application with a special script that loads all the X session components and starts the Orca screen reader. Here is an example to add lxterminal to your personal menu: + + group:LXTerminal + exec:::python /usr/share/fenrirscreenreader/tools/fenrir-ignore-screen &> /dev/null + exec:::echo -n "setting set screen#suspendingScreen=$( /dev/null + exec:::echo -n "setting set screen#suspendingScreen=$( + diff --git a/content/site/autoresponder/00-header.md b/content/site/autoresponder/00-header.md new file mode 100644 index 0000000..f89c6c1 --- /dev/null +++ b/content/site/autoresponder/00-header.md @@ -0,0 +1,8 @@ +Thank you for your interest in F123 (pronounced F 1 2 3). + +Messages in Spanish should be sent to: + + +Messages in Portuguese should be sent to: + + diff --git a/content/site/autoresponder/03-F123Light.md b/content/site/autoresponder/03-F123Light.md new file mode 100644 index 0000000..2370b35 --- /dev/null +++ b/content/site/autoresponder/03-F123Light.md @@ -0,0 +1,12 @@ +If you would like to learn more about the world's most affordable fully-functional talking computer for the blind, please visit our F123Light page at: +https://guide.f123.org/ + +If you have software-related questions, suggestions, comments, and contributions, please join one of our e-mail lists at: +https://guide.f123.org/getting-started.html#our-e-mail-lists + +To volunteer, help, and contribute in various ways, please look at: +https://guide.f123.org/getting-started.html#contributing-time-talent-contacts-etc + +To download the latest version of the F123Light operating system, please visit: +https://guide.f123.org/getting-started.html#download + diff --git a/content/site/autoresponder/09-footer.md b/content/site/autoresponder/09-footer.md new file mode 100644 index 0000000..e4da8f6 --- /dev/null +++ b/content/site/autoresponder/09-footer.md @@ -0,0 +1,16 @@ +If you are writing regarding other topics, we will respond as soon as possible. + +Thank you, + +The F123 Team + + + +P.S.: Our team does not generally follow nor respond to posts on Facebook, Youtube, Twitter, or LinkedIn. We prioritize messages on our e-mail lists and those e-mailed directly to us. However, we do post occasional announcements in social networks, so if you would like to follow us, please use: + + + + + +--- + diff --git a/content/site/getting-started/01-01-release-download.md b/content/site/getting-started/01-01-release-download.md new file mode 100644 index 0000000..3c5012a --- /dev/null +++ b/content/site/getting-started/01-01-release-download.md @@ -0,0 +1,27 @@ +# Latest Release + +## Download + +This release is still Alpha code, which means that it is under development and it has important problems and limitations. + +We have a single installation file for all available languages, but not all translations are equally complete. Much work remains to be done and any help is most welcome. + +You can find the compressed image file here: + + + We are also including the [sha1sum signature for the image](latestImage.sha1sum) file, so you can verify file integrity after download. Please note that the image is compressed with the xz format, which is more efficient than the zip format. You may find [information on how to uncompress xz files here](http://www.e7z.org/open-xz-txz.htm). + +### The First Time You Turn-On the Computer + +During the first time you start or boot the computer, the software will auto-expand the partition and file system to match the size of the Micro-SD card, so it can take a minute and a half or more for the Raspberry Pi 3B+ computer to be ready. Subsequent boots will be faster, i.e. around 30 seconds. + +### Default Username and Passwords + +the default username is: f123 + +The default user and admin password is lowercase: f123 + +The hostname is (lowercase): f123light + +Advanced users can easily build images with WiFi and other passwords already set to personalized values. [Information on custom images can be found here](advanced.html#build-a-custom-image). + diff --git a/content/site/getting-started/01-02-release-burn.md b/content/site/getting-started/01-02-release-burn.md new file mode 100644 index 0000000..8f627c0 --- /dev/null +++ b/content/site/getting-started/01-02-release-burn.md @@ -0,0 +1,8 @@ +## Burning/Flashing the F123Light Image File to the Micro-SD Card + +Once you download and verify the integrity of the compressed version of the image file, you must uncompress this file and flash or burn it to the micro-SD card which you will use on the Raspberry Pi computer. We recommend that you use a micro-SD card of at least 16Gb in size, but an 8Gb card should also work, even though little disk space will be available for your own files. + +The expressions "flash" or "burn the image" is used because this is not the same as a copy and paste file transfer. While there are many ways to "flash" the image to the card, we have heard good things about both [Etcher](https://etcher.io/) and [Rufus](https://rufus.ie/) software. Etcher apparently works well in Windows, Mac, and Linux, whereas Rufus works well on Windows. + +It is also worth mentioning that burning an image will not prevent you from reformatting or burning other images on the SD card in the future. In other words, even though people use the word "burn", the process is not permanent. It is just another method for temporarily saving a file. + diff --git a/content/site/getting-started/01-03-release-update.md b/content/site/getting-started/01-03-release-update.md new file mode 100644 index 0000000..98d4265 --- /dev/null +++ b/content/site/getting-started/01-03-release-update.md @@ -0,0 +1,8 @@ +## Updating the F123Light Operating System + +In the "Main Menu" there is a sub-menu called "Settings", which has an option that makes it easy to update the system, called: "Check for system updates" + +Thanks to this option, it is usually not necessary to flash a new image or use complicated commands whenever a new version of F123Light is available. However, we do recommend that you stay in touch with our team, as at this stage in the project, new versions are sometimes experimental, and are not recommended for all users. + +If you are a technically-oriented or advanced computer user, you might want to explore the more advanced options described in [our technical guide](advanced.html). + diff --git a/content/site/getting-started/01-04-release-build.md b/content/site/getting-started/01-04-release-build.md new file mode 100644 index 0000000..20e8187 --- /dev/null +++ b/content/site/getting-started/01-04-release-build.md @@ -0,0 +1,12 @@ +# Developers and Other Advanced Users + +## Updating F123Light on the Command Line + +Advanced users can perform an update from the command line with the command: "update-f123light" + +If such a user is helping us test recent changes to the code, he or she can use a special parameter to update from the development branch. To specify the development branch, the correct command would be: "update-f123light -b dev + +## Building Your Own F123Light Image + +Experienced users also have the option of generating or building their own image. Every copy of F123Light includes the command "build-f123light", which automatically generates the image file, which can then be burned or flashed to a MicroSD card for use. Please make sure your working SD card has at least 8Gb of free space to perform this procedure. You may lern more about building your own image in our [resources for advanced users page](advanced.html). + diff --git a/content/site/getting-started/01-09-acknowledgement.md b/content/site/getting-started/01-09-acknowledgement.md new file mode 100644 index 0000000..c62a2ee --- /dev/null +++ b/content/site/getting-started/01-09-acknowledgement.md @@ -0,0 +1,4 @@ +## Acknowledgements + +Our work is only possible thanks to a [wide variety of persons and organizations](https://f123.org/en/acknowledgements), from volunteers and our own users, to developers, translators, journalists, teachers, funders, and many more. Thank you all! + diff --git a/content/site/getting-started/02-00-configuration.md b/content/site/getting-started/02-00-configuration.md new file mode 100644 index 0000000..5a1f017 --- /dev/null +++ b/content/site/getting-started/02-00-configuration.md @@ -0,0 +1,4 @@ +## Initial Operating System Configuration + +The very first time you start-up your computer with the MicroSD card containing F123Light, the start-up or boot process will take longer than usual, as the system is uncompressing and preparing the file system for use. The larger the capacity in your MicroSD card (i.e. the more memory it has), the longer this process will take. In any case, it will generally be two or three minutes at the most. + diff --git a/content/site/getting-started/02-01-fenrir-basics.md b/content/site/getting-started/02-01-fenrir-basics.md new file mode 100644 index 0000000..7446b80 --- /dev/null +++ b/content/site/getting-started/02-01-fenrir-basics.md @@ -0,0 +1,28 @@ +### Basic Commands for the Fenrir Screen Reader + +Most users will be very happy to know that for maybe the first time in history, using a new screen reader will not necessarily require you to learn new keyboard commands. This is because, if you already use the NVDA screen reader, you will probably feel right at home with the key combinations used by Fenrir, the main screen reader of F123Light. + +#### Controls for Speech Volume, Rate, and Pitch + +Just like in NVDA, you can use Insert, Control, and the arrow keys to modify speech parameters like volume, rate, and pitch. Insert, also called the Fenrir key or the NVDA key, depending on which manual you are reading, can also be the CapsLock key, if you are using the screen reader in laptop mode. + +To change speech volume, rate, or pitch, hold down the Fenrir key and the Control key, and use the left and right arrow keys to select if you want to change volume, rate, or pitch. Once you are on the parameter you wish to change, use the up and down arrow keys to increase or decrease that parameter. + +Once the speech volume, rate, or pitch is at the level you desire, simply release the Fenrir and the Control keys, and continue using your computer normally. + +#### Using Tutorial, Help, or Learn Mode + +Pressing the Fenrir and F1 keys, your screen reader will activate its "Tutorial Mode", which allows you to press just about any key, and hear its name and function, if it has a special screen reader function. When you are in "Tutorial Mode", you can press keys and, other than telling you what they normally do, the system will not do anything else. It is an excellent way to learn your way around Fenrir and your keyboard. + +To deactivate "Tutorial Mode", simply press Fenrir and F1 again, or press the 'Escape' key, also often labeled as 'ESC'. The 'Escape' key is found usually at the top left of most keyboards. + +#### Reviewing the Screen + +Just like with most screen readers, Fenrir uses the numeric keypad on the full desktop keyboard for many of its commands. This is especially true for those which involve movement, such as reading previous or next line, word, or character. + +Assuming that you are using a full-size desktop keyboard, which has a numeric keypad to its right, you can use: numbers 7, 8, and 9, to read previous, current, and next line; numbers 4, 5, and 6, to read previous, current, and next word; and numbers 1, 2, and 3, to read previous, current, and next character. + +If you are using Fenrir in laptop mode, in other words, assuming you do not have a numeric keypad on your keyboard, then you must hold down the CapsLock key, which becomes the new Fenrir key, and press letters U, I, and O, for previous, current, and next line; letters J, K, and L, for previous, current, and next word; and N, M, and the comma symbol, for previous, current, and next character. + +Of course, if you used our fast language switching command to change language, the keyboard layout as well as the instant spell checker, will also change. However, the location remains the same. You will still use your right hand in its standard positioning on the keyboard, to read around the screen when holding down the CapsLock key. + diff --git a/content/site/getting-started/02-02-language-selection.md b/content/site/getting-started/02-02-language-selection.md new file mode 100644 index 0000000..55a1607 --- /dev/null +++ b/content/site/getting-started/02-02-language-selection.md @@ -0,0 +1,8 @@ +### Selecting the Operating System Language + +The very first version of F123Light is available in English, but shortly will also be available in Brazilian Portuguese, Spanish, and Arabic. Please [join the e-mail list corresponding to the language you are interested in](guide.html#our-e-mail-lists), and you will be notified when it becomes available. + +The very first time F123Light loads, it gives you a chance to select the language you will use the system in. Press 'Enter' for English, or use the up and down arrow keys to select another option and press 'Enter'. Once you do this, the system will make a sound and restart in the language you selected. + +If you selected a language which is still not officially supported, the interface might still not be entirely translated. + diff --git a/content/site/getting-started/02-03-system-passwords.md b/content/site/getting-started/02-03-system-passwords.md new file mode 100644 index 0000000..1c3eb51 --- /dev/null +++ b/content/site/getting-started/02-03-system-passwords.md @@ -0,0 +1,18 @@ +### Change System Passwords + +Another question that comes-up when you boot your computer for the first time, relates to changing system passwords. If you are just testing the system and have no plans to use it for more than a few minutes, then there is no nee for you to change system passwords. However, if you will use the system for more than just a few minutes, we recommend that you change the default passwords. + +If you press "Enter" for "Yes", you will have a chance to change both the password for the normal user, and the administrator's password. Here is some information which might come-in handy: + +The name of the default user in F123Light is: f123 + +Please note that this name is with a lowercase "f". + +The default password for the normal user is exactly the same: f123 + +The default name of the root or administrator, is: root + +Here also, the name is entirely in lowercase. + +The default password for the administrator or root user is exactly the same, also in lowercase: root + diff --git a/content/site/getting-started/02-04-configuring-wifi.md b/content/site/getting-started/02-04-configuring-wifi.md new file mode 100644 index 0000000..f89e06d --- /dev/null +++ b/content/site/getting-started/02-04-configuring-wifi.md @@ -0,0 +1,9 @@ +### Configuring WiFi + +The quickest way to get internet access is usually to just plug-in an Ethernet cable connected to a router providing that access. However, most often people end-up using wireless access through WiFi. + +The configuration process which helps you setup your system when you turn it on for the first time, will also help you configure WiFi, since this access will be required when it is time to select the region where you live. + +Setting-up WiFi is easy, just use the up and down arrow keys to select the name of your WiFi network from the provided list and press 'Enter'. + +Next, enter the password for that WiFi network or access point diff --git a/content/site/getting-started/02-05-region-selection.md b/content/site/getting-started/02-05-region-selection.md new file mode 100644 index 0000000..837f60c --- /dev/null +++ b/content/site/getting-started/02-05-region-selection.md @@ -0,0 +1,8 @@ +### Selecting Your Region + +The F123Light operating system sometimes needs to know where in the world you are located. This is helpful so it can find out what day and time it is, and it can then figure-out if, for example, a new update to the software is actually new. + +First you must use the up and down arrow keys to select the region where you are and then press 'Enter'. + +Then you need to select the city where you live from a list and again press 'Enter'. Since the list only contains the largest cities, your own city might not be on the list. If this happens, please select another city which is near-by, or at least in the same timezone. + diff --git a/content/site/getting-started/03-00-basics-introduction.md b/content/site/getting-started/03-00-basics-introduction.md new file mode 100644 index 0000000..cc8bef1 --- /dev/null +++ b/content/site/getting-started/03-00-basics-introduction.md @@ -0,0 +1,4 @@ +# Introduction to the Basics + +In this section we will describe the commands and shortcuts you can use for routine operations with F123Light. Since the system is undergoing rapid development, there may be times in which the documentation does not perfectly match the latest version of the software. If you encounter difficulties, please [let us know through one of our e-mail lists](guide.html#our-e-mail-lists). + diff --git a/content/site/getting-started/03-02-bluetooth.md b/content/site/getting-started/03-02-bluetooth.md new file mode 100644 index 0000000..581cde1 --- /dev/null +++ b/content/site/getting-started/03-02-bluetooth.md @@ -0,0 +1,40 @@ +# Bluetooth in F123Light + +Connecting bluetooth devices such as headsets and keyboards is fairly straightforward in F123Light. + +## Common Steps to Get Started + +* Start by navigating to the Settings menu by pressing s. +* Press b to open the bluetooth manager. +* You will hear "screen reader on" followed by "Bluetooth devices frame." Note: this may take up to 15 seconds. +* Put your device into pairing or discovery mode. Each device can be different, so it helps to know how to do this on the specific device. For example, some devices allow you to hold in the power button, while others have dedicated pairing buttons. +* The "Search button" in the bluetooth device manager is already focused. Press the space bar to activate it. +* Press the tab key twice. You will hear some table information that you can ignore. +* Use the up and down arrow keys to navigate to the device you want to pair. + +## Pairing Headsets and Speakers + +* Press the tab key to leave the list of devices and focus the search button. +* Press the right arrow key twice. The first time you will hear "trust push button." The next time you will hear "Setup ... push button." +* Press the space bar to activate setup. +* The pairing method is already set, so you can press shift+tab to the "Next push button." +* "Audio sink" is selected by default, so again press shift+tab to the "Next push button." +* Your headset or speakers should now be connected. Press the space bar to close the setup application. +* Press the left arrow once to "Trust push button" and press the space bar. +* If you want to pair another device, put the new device into pairing mode, press the left arrow again to the "Search push button" and then tab + to go back to the list and find the new device. Repeat either the pairing steps for headsets or speakers, or if your device is a keyboard, continue to the next heading. + +## Pairing a keyboard + +* Press the tab key to leave the list and press the right arrow to the "Pair push button." +* Press the space bar on your USB keyboard to begin the pairing process. +* You will hear "pairing request for" followed by a string of letters and numbers, followed by a short pause and a 6-digit pairing code, all numbers. On the bluetooth keyboard, type in the 6-digit code followed by the enter key. +* Be sure to listen for all 6 digits of the code; it is spoken as a whole number. However, speech is interrupted as you type on the bluetooth keyboard, so you can listen for the code again if you get stuck in the middle. +* You should hear "Authorization request for" followed by the letters and numbers you heard when pairing. Press the tab key on the USB keyboard to accept the request. +* Once you accept the authorization request, you should hear an upward sweeping tone. This indicates that your keyboard is connected. +* Press the escape key until you hear "Bluetooth Devices frame" again. Press the left arrow to the "Trust push button" and press the space bar. + +## All Devices Are Paired and Connected + +* Press alt+F4 to return to the settings menu and the escape key to return to the F123Light main menu. + diff --git a/content/site/getting-started/03-02-editor.md b/content/site/getting-started/03-02-editor.md new file mode 100644 index 0000000..bd754d2 --- /dev/null +++ b/content/site/getting-started/03-02-editor.md @@ -0,0 +1,34 @@ +## An Introduction to the Text Editor + +The default text editor in the F123Light system is called Nice Editor (NE). This editor is small in size, fast, easy to use, and feature rich. + +The keyboard shortcuts or key bindings used in the F123Light version of Nice Editor are modified so that anybody who has used an editor under Windows or other graphical user interfaces (GUIS), will have a very easy time using it. + +You will also notice that for some functions, more than one shortcut is available. This is because depending on what editor you use the most, you might for example, close a document with Ctrl+W or maybe with Ctrl+Q. Since both combinations work on F123Light's version of Nano, you will probably be able to just keep using what you are used-to. + +Here is a list of shortcuts. Remember, you can also use Fenrir's virtual menu system (Insert+F10), if you get stuck or can't remember something: + +* Control+O: Open a new file. This does not close any previous files you have open. +* Control+S: Save current file. +* Control+w: Save the current file and exit if there are no other open files. +* Control+q: Save the current file and exit if there are no other open files. +* F4: Save the current file and exit if there are no other open files. +* F7: Activates the spellchecker. +* Hold down the Shift key and move with the arrow keys to highlight portions of the text and use Ctrl+X, Ctrl+C, and Ctrl+V to cut, copy, and paste. +* Press Home or End to move directly to the beginning or end of the current line. +* Press Control and left or right arrow to move one word at a time. +* Press Ctrl+Home or Ctrl+End to move directly to the beginning or end of the current file. +* Control+x: Cut the current line so you can use Control+V to move it, i.e. paste it, elsewhere. (only available inside Nano) +* Control+c: Copy the current line so you can use Control+V to paste it elsewhere. (only available inside Nano) +* Control+v: Paste the current clipboard to the file. (only available inside Nano) +* Alt+Space: Changes to the next file, if you have more than one open. +* Control+Space: Changes to the previous file, if you have more than one open. +* Control+f: Find text within the current document. +* Control+h: Find and replace text in the current document. +* Alt+c: Try to complete the current word. For this to work, the word you want to complete must already exist somewhere in the document. +* Alt+m: Get character, line, and word count for the current document. + +Please note that the Nice Editor sometimes calls files "buffers". You can consider buffers the exact same thing as a file. The only reason this term is used, is because it refers to information that resides on memory and might not be already saved to disk. + +If you forget any of these commands, you can always find this text inside the Virtual Menu (Insert+F10), under the "Help" menu, under "About Nice Editor". + diff --git a/content/site/getting-started/03-04-language-switching.md b/content/site/getting-started/03-04-language-switching.md new file mode 100644 index 0000000..8c660bf --- /dev/null +++ b/content/site/getting-started/03-04-language-switching.md @@ -0,0 +1,6 @@ +## Fast Language Switching + +If you know more than one language, you can quickly switch between them with Fenrir. Press the Fenrir script key. The Script key is the Super key located between the left control and alt keys. Your Super key may have the Windows logo on it. + +To add a new language, or remove one, open "Configure fast language switching" located under the "Settings" menu. + diff --git a/content/site/getting-started/03-08-remote-assistance.md b/content/site/getting-started/03-08-remote-assistance.md new file mode 100644 index 0000000..fc6e93c --- /dev/null +++ b/content/site/getting-started/03-08-remote-assistance.md @@ -0,0 +1,12 @@ +## Getting Remote Assistance + +If you are ever stuck, or have broken something and cannot figure out how to fix it, one of our team members may be able to help you. If you go to the help menu and select "Request remote assistance with my computer", a request for help will be issued to the F123 team. + +To get help simply write a brief description of the problem you have. To send the request, type . on a line by itself. + +Please note that this service is experimental at this point and is not yet available 24 hours a day, and for now, it is only available in English. In the near future we will share more details on time and language options in our lists and blog. + +### Important Notice on Remote Assistance + +Requesting remote assistance allows a team member full access to your computer. Anything the root user can do is available to the support staff who answers your request for assistance. You can request a log of everything done in the help session. + diff --git a/content/site/getting-started/03-09-basics-lists.md b/content/site/getting-started/03-09-basics-lists.md new file mode 100644 index 0000000..ab7bb46 --- /dev/null +++ b/content/site/getting-started/03-09-basics-lists.md @@ -0,0 +1,32 @@ +# Finding or Offering Help + +## Contributing Time, Talent, Contacts, Etc + +If you value the work we do, please help us out. You can help in many ways. here are some ideas: + +* [Watch and like this video](https://youtu.be/KBM8Nq-f2T4) so we can win the Holman Prize and offer computer-building workshops in over 12 countries. +* Tell a blind friend or blindness-related organization about us, this is our main page for F123Light: +* [Donate a couple of hours a week as a volunteer](https://public.f123.org/F123-Seeks-Volunteers.html), [helping us with translations](https://crwd.in/f123light), proposal-writing, or marketing efforts. +* Help with [software development](advanced.html) +* [Buy the parts](https://f123.org/partes-f123light) or donate used equipment, and help a blind kid build his or her own talking computer. +* Buy a talking computer and give it to a blind kid. +* [Introduce us](mailto:information@f123.org?subject=Introducing F123) to a wealthy individual, foundation, or government agency that wants to assist the blind in their education, social inclusion, or employment prospects. Even though we prefer e-mail and dislike all types of social networks, if necessary and unavoidable, you can [introduce us using LinkedIn](https://br.linkedin.com/pub/fernando-botelho/5/a4a/6a2). +* [Sponsor one of our courses or computer-building workshops](mailto:information@f123.org?subject=Sponsor F123). + +## Our E-mail Lists + +To join any of the following e-mail lists, you can send a blank e-mail message to the indicated address. You will then receive an e-mail message from the list, requesting confirmation. Just responding to that confirmation e-mail, i.e. pressing "reply" on your e-mail software, and sending the message without writing anything wil confirm and subscribe you to the list. + +If all you want is to get an occasional e-mail from us, sharing the latest news, [join our announcement list](mailto:f123light+subscribe@groups.io). The plan is to send just one message per month, maybe even less. + +* Technically inclined users who can communicate in English should subscribe e-mailing [F123e+subscribe@groups.io](mailto:F123e+subscribe@groups.io) +* English speakers who are not developers or technically inclined, but are interested in the project for day-to-day use in note-taking, office work, project management, and other activities, subscribe by sending an e-mail to [F123-Visual-English+subscribe@groups.io](mailto:F123-Visual-English+subscribe@groups.io) +* Non-technical users who speak Spanish can join our group by sending an e-mail message to [F123-Visual-espanol+subscribe@groups.io](mailto:F123-Visual-espanol+subscribe@groups.io) +* Non-technical users who speak Portuguese can join by sending an e-mail message to [F123-Visual-portugues+subscribe@groups.io](mailto:F123-Visual-portugues+subscribe@groups.io) + +Those who want to keep in touch with the project through social networks, should know that we rarely respond to posts on social networks. Ideally, please get in touch with us via the above lists or via direct e-mail. + +## Contacting Our Team Directly + +Some messages are best sent directly to our team. E-mail [messages in English can be sent to this address](mailto:information@f123.org), [in Spanish to this address](mailto:informacion@f123.org), and [in Portuguese to this address](mailto:info@f123.org). + diff --git a/content/site/guide-index/.html-.md b/content/site/guide-index/.html-.md new file mode 100644 index 0000000..be45faa --- /dev/null +++ b/content/site/guide-index/.html-.md @@ -0,0 +1,16 @@ +% Online Guide to the F123Light Project + +Welcome to the F123Light Project Online Guide. These pages are also available in Portuguese. Additional languages to be announced in the near future. + +--- + +Click [here for a description of the challenges we seek to overcome and our overall strategy](strategy.html); [here for practical guidance on how to download and use F123Light](getting-started.html), and [here for more advanced technical information](advanced.html). + +If you have questions which are not addressed in any of the above pages or want to run a computer-building workshop, please join one of our [e-mail lists]() and tell us about it. You will also find an announcement list, in case you just want to hear our latest news once a month. + +If you have a couple of hours a week or more, which you would like to use to [remotely volunteer for our cause, please checkout this document]() describing some of the opportunities we have. + +We generally do not follow nor respond to social media, so if you need to get in touch with us, the best way is our lists. If it is something you rather write directly to us, here are our direct e-mail addresses according to language. + +This document is version number: 19.02.25 + diff --git a/content/site/guide-index/.html.html b/content/site/guide-index/.html.html new file mode 100644 index 0000000..2aa9137 --- /dev/null +++ b/content/site/guide-index/.html.html @@ -0,0 +1,22 @@ + + + + + + + Online Guide to the F123Light Project + + + + +

Welcome to the F123Light Project Online Guide. These pages are also available in Portuguese. Additional languages to be announced in the near future.

+
+

Click here for a description of the challenges we seek to overcome and our overall strategy; here for practical guidance on how to download and use F123Light, and here for more advanced technical information.

+

If you have questions which are not addressed in any of the above pages or want to run a computer-building workshop, please join one of our e-mail lists and tell us about it. You will also find an announcement list, in case you just want to hear our latest news once a month.

+

If you have a couple of hours a week or more, which you would like to use to remotely volunteer for our cause, please checkout this document describing some of the opportunities we have.

+

We generally do not follow nor respond to social media, so if you need to get in touch with us, the best way is our lists. If it is something you rather write directly to us, here are our direct e-mail addresses according to language.

+

This document is version number: 19.02.25

+ + diff --git a/content/site/guide-index/01-00-header.md b/content/site/guide-index/01-00-header.md new file mode 100644 index 0000000..9d21688 --- /dev/null +++ b/content/site/guide-index/01-00-header.md @@ -0,0 +1,2 @@ +% Online Guide to the F123Light Project + diff --git a/content/site/guide-index/01-01-welcome.md b/content/site/guide-index/01-01-welcome.md new file mode 100644 index 0000000..13925da --- /dev/null +++ b/content/site/guide-index/01-01-welcome.md @@ -0,0 +1,4 @@ +Welcome to the F123Light Project Online Guide. These pages are also available in Portuguese. Additional languages to be announced in the near future. + +--- + diff --git a/content/site/guide-index/02-01-index.md b/content/site/guide-index/02-01-index.md new file mode 100644 index 0000000..2246f96 --- /dev/null +++ b/content/site/guide-index/02-01-index.md @@ -0,0 +1,16 @@ +Feel free to suggest additional resources for this page. Here is what we already have: + +* [The Challenges We Will Overcome and How](strategy.html) +* [Practical Guidance on How to Download and Use F123Light](getting-started.html) +* [Advanced Technical Information](advanced.html) +* [Different Ways in Which You Can Help](https://guide.f123.org/getting-started.html#contributing-time-talent-contacts-etc) +* [Our E-mail Lists for Announcements, Questions, and Suggestions](https://public.f123.org/guide/getting-started.html#our-e-mail-lists) + +## Computer-Building Workshops + +If you would like to be part of one such workshop, please join one of our lists and [watch and like this video](https://youtu.be/KBM8Nq-f2T4), so we can win the Holman Prize. Thanks! + +## Social Media and Lists + +We generally do not follow nor respond to social media, so if you need to get in touch with us, the best way is [our lists](https://guide.f123.org/getting-started.html#our-e-mail-lists). If it is something you rather write directly to us, here are [our e-mail addresses according to language](https://public.f123.org/guide/getting-started.html#contacting-our-team-directly). + diff --git a/content/site/guide-index/content-license.md b/content/site/guide-index/content-license.md new file mode 100644 index 0000000..24bdbe7 --- /dev/null +++ b/content/site/guide-index/content-license.md @@ -0,0 +1,4 @@ +--- + +This work by [F123 Consulting](https://f123.org/en/) is licensed under a [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://creativecommons.org/licenses/by-nc-sa/4.0/). We also have another way for you to freely use our content, if this license does not meet your needs. [Contact us for alternative licensing options](mailto:license@f123.org). + diff --git a/content/site/strategy/01-01-introduction-general.md b/content/site/strategy/01-01-introduction-general.md new file mode 100644 index 0000000..b86cb69 --- /dev/null +++ b/content/site/strategy/01-01-introduction-general.md @@ -0,0 +1,7 @@ +# Introduction + +The [F123 Consulting](https://www.F123.org/en/) team has developed [F123Light](https://guide.f123.org/), the world's most affordable fully functional talking computer for the blind. The project's objective is to enhance access to education and employment for the blind through the use of low-cost competitive technologies, training, and technical support. The strategy is to scale-up through the use of mass-produced and easily assembled hardware kits, as well as freely distributed and cooperatively developed open source software. + +The first version of F123Light will be launched in early 2019 and will be available in English, Brazilian Portuguese, Spanish, and Arabic. Contributors to F123Light come from countries as varied as Algeria, Brazil, Egypt, Germany, India, Latvia, +Russia, the United Arab Emirates, the United Kingdom, and the United States. + diff --git a/content/site/strategy/02-01-problem-complexity.md b/content/site/strategy/02-01-problem-complexity.md new file mode 100644 index 0000000..e5d6fc9 --- /dev/null +++ b/content/site/strategy/02-01-problem-complexity.md @@ -0,0 +1,4 @@ +# Defining the Problem + +Improving access to education and employment opportunities for the blind is, as is the case with most social challenges, a complex problem which involves a variety of social, economic, and technological factors. The following are some of the problems we have identified as important and which we hope to address through our F123Light initiative. + diff --git a/content/site/strategy/02-02-0problem-cost.md b/content/site/strategy/02-02-0problem-cost.md new file mode 100644 index 0000000..c4d7275 --- /dev/null +++ b/content/site/strategy/02-02-0problem-cost.md @@ -0,0 +1,10 @@ +## The Typically High Cost of Assistive Technology + +Most companies which develop and market sophisticated assistive technologies, such as screen reading software, are based in developed countries where they depend largely on government purchases to sustain their work. As a result, their business model is not optimized for affordability, as tends to be the case with any corporation that sells primarily to governments. As an example, the cost for [Jaws for Windows](https://www.freedomscientific.com/Products/Blindness/JAWS), a screen reader which is quite popular among wealthy governments, is about US$2000 per license. + +In addition, there are other factors, such as the high complexity of some of these technologies, the high level of specialization required of developers, and the high marketing and distribution costs for assistive technologies. High marketing costs are particularly the case among the blind, who tend to be widely dispersed geographically, as well as in all social classes, ethnicities, nationalities, and age groups. + +In addition, the cost of hardware products for the blind also tends to be very high, relative to their features and overall technical characteristics. The reason for this seems to be that, in addition to reduced competition due to the small market size, custom-made hardware is always more expensive when its production volumes are smaller than those reached by mainstream products. This is the case, because even though persons with disabilities are an estimated 10 to 15 percent of the overall population, within that group there is great diversity. For example, persons who are blind are estimated to be only about [two to three percent of the overall population in the United States](http://www.disabilitystatistics.org/reports/acs.cfm?statistic=1). + +Finally, cost is a relative concept, as it depends greatly on the income level of the potential customer. In this regard assistive technology tends to be very expensive given that the prevalence of poverty, i.e. the [percentage of visually impaired persons living below the poverty line in the United States is roughly one third](http://www.disabilitystatistics.org/reports/acs.cfm?statistic=7). World-wide the problem persists, with [persons with disabilities being the poorest among the poor](https://siteresources.worldbank.org/SOCIALPROTECTION/Resources/SP-Discussion-papers/Disability-DP/1109.pdf). + diff --git a/content/site/strategy/02-03-problem-replication.md b/content/site/strategy/02-03-problem-replication.md new file mode 100644 index 0000000..d53057f --- /dev/null +++ b/content/site/strategy/02-03-problem-replication.md @@ -0,0 +1,10 @@ +## Social Impact and Value Versus Price Confusion + +The high relative and absolute cost of most assistive technologies negatively impact the blind at multiple levels. In addition to restricting immediate access to software and devices, it can also have negative consequences even when funding is obtained to purchase the needed technology. + +The classic model in most non-profits is to request funding from government agencies or foundations, purchase equipment and software, hire a teacher, and then offer training for the blind. This approach quickly fails in its greater goal of improving access to education and employment for the blind, since as soon as the training is finished, it becomes abundantly clear that neither the blind person, his or her family or school, nor local companies are able to afford the technology in which training was offered. + +When nobody in the local community can afford to purchase the selected technology, it also means that even the rare donation is not usually maintained or replaced when necessary. As a result costs with virus protection, backups, and physical upgrades, as well as maintenance and security cannot be absorbed, and the donated technology becomes progressively less useful and the users increasingly less productive. Since talking computers can have such a substantial impact on the productivity and competitiveness of the blind, their malfunction can also close the doors that might have been opened with great effort. + +In sum, the "best" technology is a relative concept, and the choice of the most expensive options rarely if ever substitute for a careful analysis of local circumstances. This is the reason why so many pilot projects are never scaled-up and so many initiatives fail as soon as external funding ends. + diff --git a/content/site/strategy/03-01-strategy-introduction.md b/content/site/strategy/03-01-strategy-introduction.md new file mode 100644 index 0000000..9de3b1f --- /dev/null +++ b/content/site/strategy/03-01-strategy-introduction.md @@ -0,0 +1,4 @@ +# The F123 Strategy + +Many traditional businesses attempt to centralize control over as many aspects of the production, distribution, and [maitenance](https://www.consumerreports.org/consumer-protection/right-to-repair-laws-could-make-it-easier-to-get-a-phone-or-laptop-fixed/) processes of their services and products, even when such control is not strictly necessary for the proper operation of the product nor optimal in increasing overall efficiency. In other words, there are costs which are imposed artificially, which go above and beyond what would be necessary to provide the product or service, but which are imposed exclusively as a means to increase short-term profits. Sometimes these business choices are called [market failures](https://en.wikipedia.org/wiki/Market_failure)), since they restrict market competition and increase prices, However, F123 Consulting takes a different approach. Many of our choices tend to be a conscious reversal of these choices in order to ensure low cost, high efficiency, and great longevity for everything we do. + diff --git a/content/site/strategy/03-02-strategy-software.md b/content/site/strategy/03-02-strategy-software.md new file mode 100644 index 0000000..3b2323f --- /dev/null +++ b/content/site/strategy/03-02-strategy-software.md @@ -0,0 +1,26 @@ +## Mass-Partnering for Software Development and Maintenance + +The use of free and open source software has always been at the core of the F123 strategy to achieve as much as possible with scarce resources. The greatest advantage of open source is not its short-term pricing advantage, but its licensing structure and community of developers, which makes it possible to achieve [massive and widespread cooperation](https://thenewstack.io/contributes-linux-kernel/) without the need for specific partnership contracts between all organizations or individuals. Even [industry leaders who have traditionally attempted to undermine advancements in the adoption of the open source development model](https://www.extremetech.com/computing/239616-hell-freezes-microsoft-joins-linux-foundation), have changed their approach to working with this large segment of the software world. + +In the context of digital accessibility for the blind, there is already [ample evidence](http://community.nvda-project.org/usersByCountry.html) of the widespread use of free and open source software. F123 [supports projects such as NVDA](https://duckduckgo.com/?q=NVDA+conference+F123.access&t=ffsb&atb=v53-1&ia=web), yet, the F123Light initiative seeks to address a different set of needs among the blind who live in developing countries. + +### Cost Revisited + +While an initiative such as the free and open source [NVDA screen reader](https://www.nvaccess.org/) is extremely valuable, the F123 team is pushing the envelope of what is possible to accomplish with [ultra-low-cost computers](https://www.raspberrypi.org/). NVDA enables blind persons to save thousands of dollars, as they are no longer forced to buy expensive traditional proprietary screen readers such as Jaws for Windows, but it still requires them to absorb the cost of the Windows operating system, hardware which is powerful enough to run it, and related costs such as antivirus software. In other words, the blind are still forced to deal with and find funding for the [planned obsolescence strategy](https://www.gaia.com/article/how-is-planned-obsolescence-harmful-to-the-environment) of various companies, in addition to the natural wear and tear of hardware and overall technological change. + +Our choice of computers based on ARM processors such as the Raspberry Pi stems from the fact that they tend to be dramatically more affordable and still offer sufficient computing performance given our needs and design choices. Specifically, despite the fact that we are using an extremely affordable computer, our device boots-up faster than most conventional laptops and still allows our users to be productive and competitive in their use of e-mail, text editors, spreadsheets, and web browsers. In this regard, our most interesting decision was to emphasize text-based interfaces over the traditional [graphical user interface](https://en.wikipedia.org/wiki/Graphical_user_interface) (GUI). + +Graphical interfaces tend to demand a lot of computing power for visual effects that are entirely irrelevant for the blind. In fact, the only advantage of GUI's for the blind is the use of menus, which present the user with multiple choices instead of requiring that he or she type complicated-sounding commands on the command line interface (CLI). However, [there are text-based menus](http://joeyh.name/code/pdmenu/) which allow us to make our text-based environment as friendly or more friendly than any graphical interface we have ever tested. + +## Software Choices and Universal Design Considerations + +In a perfect world, all software companies would adopt "[universal design](https://en.wikipedia.org/wiki/Universal_design)" principles, and other than our need for more efficient and fast computing, there would be no need for us to work with text-only menus. However, both in desktop and web interfaces, the blind are not a priority, even for the most powerful and resource-rich companies. This [was the case in the 1990's](https://nfb.org/images/nfb/publications/bm/bm99/bm991201.htm) and is still the case on the 21st century, even in companies which are [supposed to be the gold standard in accessibility](https://www.marcozehe.de/2015/01/06/apple-are-losing-their-edge-also-in-accessibility-quality/). + +Many organizations and companies claim that they do not have the resources or expertise to offer fully accessible software or web pages, but if even the most successful companies fail to deliver consistently accessible products, lack of resources seems to be at the very least, an insufficient explanation. At other times it is claimed that legislation should be better, but it is impossible to correctly regulate technologies which have not yet emerged, and dangerous to establish too many restrictions for companies which then may lose their leadership in the marketplace to foreign competitors without such concerns. This probably explains why many large companies seem to launch accessibility campaigns only after they have established themselves as leaders in their industry and need to look for expansion in what they consider niche markets, in order to try to sustain growth. + +In our view, the blind, their friends, and their organizations must keep their pressure and advocacy efforts to ensure continued progress (or at least prevent regression), but we do not expect such efforts to, on average, be more powerful than the competitive pressures companies face every day nor the influence from so many groups which governments also must respond to. In other words, the overall patterns observed in the last 30+ years are likely to persist and the blind community better have a "plan B" for its most basic computing needs, if it wants consistent, productive, affordable, stable, long-term digital accessibility. + +## Software at the Core of Our Strategy + +Since our team does not have any truly innovative means to pressure for new and more effective legislation nor better compliance with existing accessibility laws, we will focus our energies and creativity on ensuring that basic computing functionality will always be affordable, effective, and efficient for our community. The objective is not to find a perfect solution nor break new ground in artificial intelligence or any other fashionable area, but to utilize that which is proven, accessible for decades, and ensure that non-technical persons also have the luxury of resilience in the face of ever changing priorities and fads among industry leaders and governments. + diff --git a/content/site/strategy/03-03-strategy-hardware.md b/content/site/strategy/03-03-strategy-hardware.md new file mode 100644 index 0000000..f3d7af5 --- /dev/null +++ b/content/site/strategy/03-03-strategy-hardware.md @@ -0,0 +1,36 @@ +## Our Hardware Choices + +Two important challenges faced by projects who want to make it easy for non-technical persons to enjoy the benefits of free and open source software are distribution and installation. The F123 team is addressing these obstacles by helping technically-inclined blind persons support other less-technical blind persons, and by standardizing our work around specific hardware platforms. At this time, our software is designed to work with the [Raspberry Pi 3 Model B+](https://www.raspberrypi.org/products/raspberry-pi-3-model-b-plus/). + +Of course, our software can and has been used in other computers, but the decision to standardize on the Raspberry Pi 3 Model B+, which is sufficiently powerful for productive use of text-based applications, saves a lot of time and effort for both the development team and our users. Issues with software drivers are resolved more easily, testing is simpler, efficient distribution is already taken care of, and potential help from sighted users of these devices already exists around the world. + +### List of Computer Parts + +Since extreme affordability is absolutely essential, [every part selected for use in our project is both produced and distributed world-wide in mass](https://f123.org/partes-f123light). In addition to the Raspberry Pi computer, we also use: + +@. A Micro SD memory card. + +This is the computer's hard disk. + +@. Heat sinks and computer case. + +Parts which protect the circuit board and help cool it. + +@. AC Adapter. + +Allows you to connect the computer to the electrical outlet. + +@. Power Pack or Battery Pack. + +Many versions of this part exist. These are usually used to recharge cell phones, but we can use it to power the talking computer for many hours. + +@. Standard USB keyboard. + +@. Standard headphones with 3.5mm audio jack. + +There are of course, Bluetooth keyboards and headphones, with a wide variety of prices and reliability, but in our experience, none of those are as affordable, durable, and easy-to-find and maintain as the traditional wired originals. + +Actually, there is one exception to the rule of only using widely available parts and that is the computer carrying case. This part is very helpful, but at the same time, in a worse-case scenario, importing it across continents can be considered somewhat optional. Any person or organization with experience working with textiles should be able to put together a carrying case, and we have heard of users carrying their talking computer even in plastic shopping bags. + +Finally, what brings it all together and makes this device so helpful is our F123Light software, which combines a wide variety of free and open source software, many developed, maintained, and used by organizations big and small for purposes which often have nothing to do with blindness. In other words, we have designed the entire project to minimize costs, and maximize productivity, sustainability, decentralization, and longevity. + diff --git a/content/site/strategy/04-01-questions.md b/content/site/strategy/04-01-questions.md new file mode 100644 index 0000000..785e5c1 --- /dev/null +++ b/content/site/strategy/04-01-questions.md @@ -0,0 +1,4 @@ +# Common Questions and Suggestions + +Questions and suggestions are always welcome. The following are some of the more common questions and suggestions we receive, and we are sharing them here as these might be helpful in focusing your creativity in new areas. Please always feel free to ask new questions, request clarifications, or make suggestions on [our e-mail lists or directly with our team](https://guide.f123.org/getting-started.html#finding-or-offering-help). + diff --git a/content/site/strategy/04-02-questions-smartphones.md b/content/site/strategy/04-02-questions-smartphones.md new file mode 100644 index 0000000..7a1059a --- /dev/null +++ b/content/site/strategy/04-02-questions-smartphones.md @@ -0,0 +1,15 @@ +## Using Smartphones Instead of the Raspberry Pi Computer + +We are frequently asked why we are not using smartphones instead of Raspberry Pi computers, as smartphones are so powerful, affordable, and widely available today. While we do not automatically exclude the possibility of using smartphones in the future, the reasons why we believe it is not currently a better alternative to the Raspberry Pi for young blind students and others are: + +* Competitive pressures force manufacturers to continuously update hardware and software features on phones, so any scarce resources invested in adapting these devices to productive and blind-accessible educational uses, are quickly lost due to the rapid changes in phone operating systems and the unavailability of slightly older phone models. +* Smartphones are optimized in every way for the visual consumption of information and their lack of keyboards and delicate glass screens make them sub optimal for the daily use of children in a school setting. These phones are too easily damaged or broken, and if used without major software changes, become distraction machines rather than educational tools. +* Competitive pressures also foster phone designs which do not allow the end-user to exchange the battery, so the cost of medium to long-term maintenance is unnecessarily high, and probably significantly higher than that of a Raspberry Pi that uses a phone charger or power bank. +* There is ample evidence that due to the extreme competitive pressures faced by the smartphone industry, too often either phone manufacturers or phone companies install software that tracks and monitors users in order to display advertising, or sell user location information to commercial entities, or both. This seems to be especially true with the most affordable phone models. We believe that this is undesirable for users of any age, and entirely unacceptable for children. + +Our choice of the Raspberry Pi as a platform, minimizes distractions, as we have greater control over what software is installed. Greater security, as neither the manufacturer nor the phone company have a chance to install tracking and advertising software of any kind. Finally, even though the Raspberry Pi hardware evolves, it retains its technical patterns for a much longer time period, extending the usefulness of our work for much longer. + +In sum, affordable phones based on the Android operating system are not durable, are not secure from digital attacks, are expensive to maintain in realistic day-to-day use by children, offer too many distractions if the operating system is not entirely modified, and change too often as a platform for most software development investment to continue being useful across time and phone models. + +We have also been asked about recycling discarded tablets for use by the blind, and many of the same issues described above also apply in that case. + diff --git a/content/site/strategy/04-03-questions-buying.md b/content/site/strategy/04-03-questions-buying.md new file mode 100644 index 0000000..6ca771a --- /dev/null +++ b/content/site/strategy/04-03-questions-buying.md @@ -0,0 +1,8 @@ +## Buying Versus Assembling the F123Light Computer + +Some people have asked if they can buy one of these talking computers already assembled and with the F123Light software preinstalled: + +We can assemble the computer in Brazil and ship to anywhere in the world. So [get in touch with us via e-mail](https://guide.f123.org/getting-started.html#contacting-our-team-directly) if you need one urgently. In the next few months we will also setup a partnership with an international manufacturer. As soon as that is finalized, we will provide links to their online store in our pages. + +People who are blind and wish to become local distributors, should get in touch with us via e-mail. + diff --git a/content/site/strategy/04-04-questions-braille.md b/content/site/strategy/04-04-questions-braille.md new file mode 100644 index 0000000..6bda5fa --- /dev/null +++ b/content/site/strategy/04-04-questions-braille.md @@ -0,0 +1,8 @@ +## Using Braille with the F123Light Computer + +We have been asked if the F123Light computer is compatible with Braille displays available for use with various electronic devices ranging from laptops to smartphones and conventional computers: + +Since our initial focus was to create the world's most affordable fully functional talking computer for the blind, we did not include a Braille display in our first few prototypes. However, we have been asked for this option and will start researching low-cost Braille displays which we can include in the near future. We expect that integrating any of the major brands into our device will not be difficult. + +Once the Braille display option becomes available, we will announce it in our e-mail lists and web pages. + diff --git a/content/site/strategy/04-05-questions-technology.md b/content/site/strategy/04-05-questions-technology.md new file mode 100644 index 0000000..6e00d89 --- /dev/null +++ b/content/site/strategy/04-05-questions-technology.md @@ -0,0 +1,9 @@ +## Technology Cannot be the Main Focus in Education + +Sometimes it is said that our societies are giving too much emphasis to technological tools rather than values and personal development: + +We believe that no technology can substitute for personal growth and a proper education. This is why we give as much emphasis to training as we do to actual software development. Good technology is that which becomes invisible so that children can study and adults can work, without worrying or being distracted by the digital tools they might be using. + +We also believe strongly that at the end of the day, it is not our tools but our personalities and values that actually have the greatest influence in our lives, so in some ways, our technological strategy is just a smaller side-effect from a greater objective, which is to give a chance for the blind to learn to use, maintain, and improve their own tools, and have the confidence and generosity of spirit to teach one another as well. A good example of this is our campaign to teach the blind to help one-another to build their own talking computers in workshops all over the world: + + diff --git a/content/site/strategy/04-06-questions-sustainability.md b/content/site/strategy/04-06-questions-sustainability.md new file mode 100644 index 0000000..ea1dab1 --- /dev/null +++ b/content/site/strategy/04-06-questions-sustainability.md @@ -0,0 +1,12 @@ +## Where is the Catch? + +It is understandable that an often unasked but important question is: How can you survive if you distribute your software for free and anyone can assemble this computer from widely available standard parts? + +The simple and short answer is that we have been around for about a decade now, offering project management and consulting services to organizations, foundations, and government agencies interested in helping the blind in an effective, efficient, and scalable way, and will probably continue to be around for many more years. However, our strategy is designed to ensure that no dependency is created on F123 Consulting. + +The more complete answer is that when one uses hardware that is generic and available everywhere from multiple manufacturers and distributors; software that is freely available world-wide and licensed in a way that allows for distribution, modification, and copying by anyone (i.e. open source); and documentation and other materials also licensed in a similar way (i.e. [Creative Commons](https://creativecommons.org/licenses/by-nc-sa/4.0/)); there is nothing to stop anyone from continuing our work whether we are still here or have long since stopped providing our services. In fact, decentralized replication and continuation is part of our plan. + +In sum, most mathematics teachers or cooks do not make a living because they teach secret formulas or cook secret recipes, they make a living because enough people do not have time to teach mathematics to their own kids, and do not have time to cook their own meal. Of course, it is not a strategy or business model that is conducive to making excessive amounts of money, but then, there are more important things in life. + +Of course, we do ask that you help society reward this type of courage by [contributing to this initiative in some way](https://guide.f123.org/getting-started.html#contributing-time-talent-contacts-etc). + diff --git a/files/LICENSE b/files/LICENSE new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/files/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/files/README.md b/files/README.md new file mode 100644 index 0000000..7587dd8 --- /dev/null +++ b/files/README.md @@ -0,0 +1 @@ +# files-F123Light \ No newline at end of file diff --git a/files/crowdin.yml b/files/crowdin.yml new file mode 100644 index 0000000..55fa02f --- /dev/null +++ b/files/crowdin.yml @@ -0,0 +1,7 @@ +files: + - source: /files/usr/lib/F123-wrappers/ + translation: /files/usr/lib/F123-wrappers/%locale%/%original_file_name% + - source: /files/usr/bin/ + translation: /files/usr/bin/%locale%/%original_file_name% + - source: /scripts/update-f123light + translation: /scripts/%locale%/%original_file_name% diff --git a/files/files/boot/cmdline.txt b/files/files/boot/cmdline.txt new file mode 100755 index 0000000..b837a36 --- /dev/null +++ b/files/files/boot/cmdline.txt @@ -0,0 +1 @@ +root=/dev/mmcblk0p2 rw rootwait quiet loglevel=0 systemd.show_status=false console=ttyAMA0,115200 console=tty1 selinux=0 plymouth.enable=0 logo.nologo vga=current smsc95xx.turbo_mode=N dwc_otg.lpm_enable=0 kgdboc=ttyAMA0,115200 elevator=noop fsck.repair=yes init=/usr/lib/raspi-config/init_resize.sh rd.systemd.show_status=false rd.udev.log_priority=3 diff --git a/files/files/boot/config.txt b/files/files/boot/config.txt new file mode 100755 index 0000000..4e69e88 --- /dev/null +++ b/files/files/boot/config.txt @@ -0,0 +1,13 @@ +# See /boot/overlays/README for all available options + +initramfs initramfs-linux.img followkernel +disable_splash=1 +gpu_mem=64 +dtparam=audio=on +hdmi_force_hotplug=1 +hdmi_drive=2 +avoid_warnings=2 +dtoverlay=vc4-fkms-v3d + +framebuffer_width=1280 +framebuffer_height=720 diff --git a/files/files/etc/F123-Config/backup/fenrir.conf b/files/files/etc/F123-Config/backup/fenrir.conf new file mode 100644 index 0000000..5093eee --- /dev/null +++ b/files/files/etc/F123-Config/backup/fenrir.conf @@ -0,0 +1,193 @@ +[sound] +enabled=True +driver=genericDriver +theme=default +volume=1.0 +# shell commands for generic sound driver +genericPlayFileCommand=play -q -v fenrirVolume fenrirSoundFile +genericFrequencyCommand=play -q -v fenrirVolume -n -c1 synth fenrirDuration sine fenrirFrequence + +[speech] +enabled=True +driver=speechdDriver +#driver=genericDriver +serverPath= +rate=0.50 +pitch=0.5 +# Pitch for capital letters +capitalPitch=0.9 +#module=espeak +#voice=bdl +#language=en +volume=1.0 +autoReadIncoming=True + +# genericSpeechCommand is the command that is executed for talking +# the following variables are replaced with values +# fenrirText = is the text that should be spoken +# fenrirModule = may be the speech module like used in speech-dispatcher, not every TTY need this +# fenrirLanguage = the language +# fenrirVoice = is the current voice that should be used +# the current volume, pitch and rate is calculated like this +# value = min + settingValue * (min - max ) +# fenrirVolume = is replaced with the current volume +# fenrirPitch = is replaced with the current pitch +# fenrirRate = is replaced with the current speed (speech rate) +genericSpeechCommand=espeak -a fenrirVolume -s fenrirRate -p fenrirPitch -v fenrirVoice -- "fenrirText" + +# these are the min and max values of the TTS system that is used in genericSpeechCommand +fenrirMinVolume=0 +fenrirMaxVolume=200 +fenrirMinPitch=0 +fenrirMaxPitch=99 +fenrirMinRate=80 +fenrirMaxRate=890 + +[braille] +enabled=False +driver=dummyDriver +layout=en +# to what should the flush timeout relate to +# word = flush after (number of words to display) * seconds +# char = flush after (number of chars to display) * seconds +# fix = flush after X seconds +# none = no automatic flush (manual via shortcut) +flushMode=word +# seconds to flush or +# -1 = no automatic flush (manual via shortcut) +flushTimeout=3 +# how should the cursor be focused? +# page = if cursor cross the border move to next page and start at beginn +# fixCell = ajust the cursor on an special cell where it is always placed. the display scroll here more smooth. +cursorFocusMode=page +# define the cell on the Braille device where fenrir should scroll and keep the cursor +# 0 = first cell on device +# -1 = last cell on device +# >0 = fix cell number +fixCursorOnCell=-1 +#How should the braille follow the focus +# none = no automatic toggle command used +# review = priority to review +# last = follow last used cursor +cursorFollowMode=review +# number of cells in panning (horizontal) +# 0 = display size, >0 number of cells +panSizeHorizontal=0 + +[screen] +driver=vcsaDriver +encoding=auto +screenUpdateDelay=0.05 +suspendingScreen= +autodetectSuspendingScreen=True + +[keyboard] +driver=evdevDriver +# filter input devices NOMICE, ALL or a DEVICE NAME +device=ALL +grabDevices=True +ignoreShortcuts=False +keyboardLayout=nvda-desktop +charEcho=False +charDeleteEcho=True +wordEcho=True +interruptOnKeyPress=True +# you can filter the keys on that the speech should interrupt (empty = all keys, otherwhise the given keys) +interruptOnKeyPressFilter= +# timeout for double tap in sec +doubleTapTimeout=0.2 + +[general] +debugLevel=1 +# debugMode sets where the debug output should send to: +# debugMode=File writes to debugFile (Default: /var/log/fenrirscreenreader/fenrir.log) +# debugMode=Print just prints on the screen +debugMode=File +debugFile=/var/log/fenrirscreenreader/fenrir.log +punctuationProfile=default +punctuationLevel=some +respectPunctuationPause=True +newLinePause=True +numberOfClipboards=10 +# used path for "export_clipboard_to_file" +# $user is replaced by username +clipboardExportPath=/tmp/fenrirClipboard +emoticons=True +fenrirKeys=KEY_KP0,KEY_CAPSLOCK +scriptKeys=KEY_META,KEY_COMPOSE +timeFormat=%H:%M:%P +dateFormat="%A, %B %d, %Y" +autoSpellCheck=True +spellCheckLanguage=en_US +scriptPath=/usr/share/fenrirscreenreader/scripts +# overload commands, and create new one without changing Fenrir default +commandPath= +#fenrirBGColor = the backgroundcolor +#fenrirFGColor = the foregroundcolor +#fenrirUnderline = speak the underline attribute +#fenrirBold = speak the bold attribute +#fenrirBlink = speak the blink attribute +#fenrirFont = the font +#fenrirFontSize = the fontsize +attributeFormatString=Background fenrirBGColor,Foreground fenrirFGColor,fenrirUnderline,fenrirBold,fenrirBlink, Font fenrirFont,Fontsize fenrirFontSize +autoPresentIndent=False +# play a sound when attributes are changeing +hasAttributes=False +# shell for PTY emulatiun (empty = default shell) +shell= + +[focus] +#follow the text cursor +cursor=True +#follow highlighted text changes +highlight=False + +[remote] +enable=True +# connection type +# unix = unix sockets +# tcp = tcp (localhost only) +method=unix +# tcp port +port=22447 +# socket filepath +socketpath=/tmp/ +# allow settings to overwrite +enableSettingsRemote=True +# allow commands to be executed +enableCommandRemote=True + +[barrier] +enabled=True +leftBarriers=│└┌─ +rightBarriers=│┘┐─ + +[review] +lineBreak=True +endOfScreen=True +# leave the review when pressing a key +leaveReviewOnCursorChange=True +# leave the review when changing the screen +leaveReviewOnScreenChange=True + +[promote] +enabled=True +inactiveTimeoutSec=120 +list= + +[time] +# automatic time anouncement +enabled=False +# present time +presentTime=True +# present date (on change) +presentDate=True +# present time after x seconds +delaySec=0 +# present time after to given minutes example every 15 minutes: 00,15,30,45 +# if delaySec is >0 onMinutes is ignored +onMinutes=00,30 +# announce via soundicon +announce=True +# interrupt current speech for time announcement +interrupt=False diff --git a/files/files/etc/F123-Config/backup/speechd.conf b/files/files/etc/F123-Config/backup/speechd.conf new file mode 100644 index 0000000..5135e46 --- /dev/null +++ b/files/files/etc/F123-Config/backup/speechd.conf @@ -0,0 +1,290 @@ + + # Global configuration for Speech Dispatcher + # ========================================== + + # -----SYSTEM OPTIONS----- + + # CommunicationMethod specifies the method to be used by Speech Dispatcher to communicate with + # its clients. Two basic methods are "unix_socket" and "inet_socket". + # + # unix_socket -- communication over Unix sockets represented by a file in the + # filesystem (see SocketPath below). This method works only locally, but is + # prefered for standard session setup, where every user runs his own instance of Speech + # Dispatcher to get voice feedback on his own computer. + # + # inet_socket -- alternatively, you can start Speech Dispatcher on + # a TCP port and connect to it via hostname/port. This allows for a more + # flexible setup, where you can use Speech Dispatcher over network + # from different machines. See also the Port and LocalhostAccessOnly + # configuration variables. + # + # CommunicationMethod "unix_socket" + + # SocketPath is either "default" or a full path to the filesystem + # where the driving Unix socket file should be created in case the + # CommunicationMethod is set to "unix_socket". The default is + # $XDG_RUNTIME_DIR/speech-dispatcher/speechd.sock where $XDG_RUNTIME_DIR + # is the directory specified by the XDG Base Directory Specification. + # Do not change this unless you have a reason and know what you are doing. + + # SocketPath "default" + + # The Port on which Speech Dispatcher should be available to clients if the "inet_socket" + # communication method is used. + + # Port 6560 + + # By default, if "inet_socket" communication method is used, the specified port is opened only + # for connections coming from localhost. If LocalhostAccessOnly is set to 0 it disables this + # access control. It means that the port will be accessible from all computers on the + # network. If you turn off this option, please make sure you set up some system rules on what + # computers are and are not allowed to access the Speech Dispatcher port. + + # LocalhostAccessOnly 1 + + # By default, Speech Dispatcher is configured to shut itself down after a period of + # time if no clients are connected. The timeout value is in seconds, and is started when + # the last client disconnects. A value of 0 disables the timeout. + + # Timeout 5 + + # -----LOGGING CONFIGURATION----- + + # The LogLevel is a number between 0 and 5 specifying the + # verbosity of information to the logfile or screen + # 0 means nothing, 5 means everything (not recommended). + + LogLevel 3 + + # The LogDir specifies where the Speech Dispatcher logs reside + # Specify "stdout" for standard console output + # or a custom log directory path. 'default' means + # the logs are written to the default destination (e.g. a preconfigured + # system directory or the home directory if .speech-dispatcher is present) + # DO NOT COMMENT OUT THIS OPTION, leave as "default" for standard logging + + LogDir "default" + #LogDir "/var/log/speech-dispatcher/" + #LogDir "stdout" + + # The CustomLogFile allows logging all messages # regardless of + # priority, to the given destination. + #CustomLogFile "protocol" "/var/log/speech-dispatcher/speech-dispatcher-protocol.log" + + # ----- VOICE PARAMETERS ----- + + # The DefaultRate controls how fast the synthesizer is going to speak. + # The value must be between -100 (slowest) and +100 (fastest), default + # is 0. + + DefaultRate 0 + + # The DefaultPitch controls the pitch of the synthesized voice. The + # value must be between -100 (lowest) and +100 (highest), default is + # 0. + + DefaultPitch 0 + + # The DefaultPitchRange controls the pitch range of the synthesized voice. The + # value must be between -100 (lowest) and +100 (highest), default is + # 0. + + DefaultPitchRange 0 + + # The DefaultVolume controls the default volume of the voice. It is + # a value between -100 (softly) and +100 (loudly). Currently, +100 + # maps to the default volume of the synthesizer. + + DefaultVolume 100 + + # The DefaultVoiceType controls which voice type should be used by + # default. Voice types are symbolic names which map to particular + # voices provided by the synthesizer according to the output module + # configuration. Please see the synthesizer-specific configuration + # in etc/speech-dispatcher/modules/ to see which voices are assigned to + # different symbolic names. The following symbolic names are + # currently supported: MALE1, MALE2, MALE3, FEMALE1, FEMALE2, FEMALE3, + # CHILD_MALE, CHILD_FEMALE + + # DefaultVoiceType "MALE1" + + # The Default language with which to speak + + DefaultLanguage en + + + # ----- MESSAGE DISPATCHING CONTROL ----- + + # The DefaultClientName specifies the name of a client who didn't + # introduce himself at the beginning of an SSIP session. + + # DefaultClientName "unknown:unknown:unknown" + + # The Default Priority. Use with caution, normally this shouldn't be + # changed globally (at this place) + + # DefaultPriority "text" + + # The DefaultPauseContext specifies by how many index marks a speech + # cursor should return when resuming after a pause. This is roughly + # equivalent to the number of sentences before the place of the + # execution of pause that will be repeated. + + # DefaultPauseContext 0 + + # -----SPELLING/PUNCTUATION/CAPITAL LETTERS CONFIGURATION----- + + # The DefaultPunctuationMode sets the way dots, comas, exclamation + # marks, question marks etc. are interpreted. none: they are ignored + # some: some of them are sent to synthesis (see + # DefaultPunctuationSome) all: all punctuation marks are sent to + # synthesis + + # DefaultPunctuationMode "none" + + # Whether to use server-side symbols pre-processing by default. + # This controls whether the server should pre-process the messages to insert + # the appropriate words or if the output module is responsible for speaking + # symbols and punctuation. + + DefaultSymbolsPreprocessing 0 + + # The DefaultCapLetRecognition: if set to "spell", capital letters + # should be spelled (e.g. "capital b"), if set to "icon", + # capital letters are indicated by inserting a special sound + # before them but they should be read normally, it set to "none" + # capital letters are not recognized (by default) + + # DefaultCapLetRecognition "none" + + # The DefaultSpelling: if set to On, all messages will be spelt + # unless set otherwise (this is usually not something you want to do.) + + # DefaultSpelling Off + + # ----- AUDIO CONFIGURATION ----------- + + # -- AUDIO OUTPUT -- + + # Chooses between the possible sound output systems: + # "pulse" - PulseAudio + # "alsa" - Advanced Linux Sound System + # "oss" - Open Sound System + # "nas" - Network Audio System + # "libao" - A cross platform audio library + # Pulse audio is the default and recommended sound server. OSS and ALSA + # are only provided for compatibility with architectures that do not + # include Pulse Audio. NAS provides network transparency, but is not + # very well tested. libao is a cross platform library with plugins for + # different sound systems and provides alternative output for Pulse Audio + # and ALSA as well as for other backends. + + AudioOutputMethod pulse + + # -- Pulse Audio parameters -- + + # Pulse audio server name or "default" for the default pulse server + + #AudioPulseServer "default" + + #AudioPulseMinLength 100 + + # -- ALSA parameters -- + + # Audio device for ALSA output + + #AudioALSADevice "default" + + # -- OSS parameters -- + + # Audio device for OSS output + + #AudioOSSDevice "/dev/dsp" + + # -- NAS parameters -- + + # Route to the Network Audio System server when NAS + # is chosen for the audio output. Note that NAS + # server doesn't need to run on your machine, + # you can use it also over network (for instance + # when working on remote machines). + + #AudioNASServer "tcp/localhost:5450" + + + + # -----OUTPUT MODULES CONFIGURATION----- + + # Each AddModule line loads an output module. + # Syntax: AddModule "name" "binary" "configuration" "logfile" + # - name is the name under which you can access this module + # - binary is the path to the binary executable of this module, + # either relative (to lib/speech-dispatcher-modules/) or absolute + # - configuration is the path to the config file of this module, + # either relative (to etc/speech-dispatcher/modules/) or absolute + + #AddModule "espeak" "sd_espeak" "espeak.conf" + AddModule "espeak-ng" "sd_espeak-ng" "espeak-ng.conf" + #AddModule "festival" "sd_festival" "festival.conf" + #AddModule "flite" "sd_flite" "flite.conf" + #AddModule "ivona" "sd_ivona" "ivona.conf" + #AddModule "pico" "sd_pico" "pico.conf" + AddModule "pico" "sd_generic" "nanotts-generic.conf" +#AddModule "espeak-generic" "sd_generic" "espeak-generic.conf" + AddModule "espeak-ng-mbrola-generic" "sd_generic" "espeak-ng-mbrola-generic.conf" + #AddModule "espeak-mbrola-generic" "sd_generic" "espeak-mbrola-generic.conf" + AddModule "rhvoice" "sd_rhvoice" "rhvoice.conf" + #AddModule "swift-generic" "sd_generic" "swift-generic.conf" + #AddModule "epos-generic" "sd_generic" "epos-generic.conf" + #AddModule "dtk-generic" "sd_generic" "dtk-generic.conf" + #AddModule "pico-generic" "sd_generic" "pico-generic.conf" + #AddModule "ibmtts" "sd_ibmtts" "ibmtts.conf" + #AddModule "cicero" "sd_cicero" "cicero.conf" + #AddModule "kali" "sd_kali" "kali.conf" + #AddModule "mary-generic" "sd_generic" "mary-generic.conf" + + # DO NOT REMOVE the following line unless you have + # a specific reason -- this is the fallback output module + # that is only used when no other modules are in use + #AddModule "dummy" "sd_dummy" "" + + # The output module testing doesn't actually connect to anything. It + # outputs the requested commands to standard output and reads + # responses from stdandard input. This way, Speech Dispatcher's + # communication with output modules can be tested easily. + + # AddModule "testing" + + # The DefaultModule selects which output module is the default. You + # must use one of the names of the modules loaded with AddModule. + + DefaultModule rhvoice + + # The LanguageDefaultModule selects which output modules are prefered + # for specified languages. + + #LanguageDefaultModule "en" "espeak" + #LanguageDefaultModule "cs" "festival" + #LanguageDefaultModule "es" "festival" + + # -----CLIENT SPECIFIC CONFIGURATION----- + + # Here you can include the files with client-specific configuration + # for different types of clients. They must contain one or more sections with + # this structure: + # BeginClient "emacs:*" + # DefaultPunctuationMode "some" + # ...and/or some other settings + # EndClient + # The parameter of BeginClient tells Speech Dispatcher which clients + # it should apply the settings to (it does glob-style matching, you can use + # * to match any number of characters and ? to match one character) + + # There are some sample client settings + + Include "clients/*.conf" + + # The DisableAutoSpawn option will disable the autospawn mechanism. + # Thus the server will not start automatically on requests from the clients + # DisableAutoSpawn + diff --git a/files/files/etc/F123-Config/irssi/config b/files/files/etc/F123-Config/irssi/config new file mode 100644 index 0000000..1a84c84 --- /dev/null +++ b/files/files/etc/F123-Config/irssi/config @@ -0,0 +1,452 @@ +servers = ( + { address = "irc.dal.net"; chatnet = "DALnet"; port = "6667"; }, + { address = "irc.efnet.org"; chatnet = "EFNet"; port = "6667"; }, + { address = "irc.esper.net"; chatnet = "EsperNet"; port = "6667"; }, + { + address = "chat.freenode.net"; + chatnet = "Freenode"; + port = "6667"; + }, + { + address = "irc.gamesurge.net"; + chatnet = "GameSurge"; + port = "6667"; + }, + { address = "eu.irc6.net"; chatnet = "IRCnet"; port = "6667"; }, + { address = "open.ircnet.net"; chatnet = "IRCnet"; port = "6667"; }, + { + address = "irc.ircsource.net"; + chatnet = "IRCSource"; + port = "6667"; + }, + { address = "irc.netfuze.net"; chatnet = "NetFuze"; port = "6667"; }, + { address = "irc.oftc.net"; chatnet = "OFTC"; port = "6667"; }, + { + address = "irc.quakenet.org"; + chatnet = "QuakeNet"; + port = "6667"; + }, + { address = "irc.rizon.net"; chatnet = "Rizon"; port = "6667"; }, + { address = "silc.silcnet.org"; chatnet = "SILC"; port = "706"; }, + { + address = "irc.undernet.org"; + chatnet = "Undernet"; + port = "6667"; + }, + { + address = "irc.netwirc.tk"; + port = "6697"; + use_ssl = "yes"; + ssl_verify = "no"; + autoconnect = "yes"; + } +); + +chatnets = { + netwirc = { + type = "IRC"; + max_kicks = "40"; + max_msgs = "20"; + max_whois = "30"; + autosendcmd = "/join #talkingarch"; + }; + DALnet = { + type = "IRC"; + max_kicks = "4"; + max_msgs = "20"; + max_whois = "30"; + }; + EFNet = { + type = "IRC"; + max_kicks = "1"; + max_msgs = "4"; + max_whois = "1"; + }; + EsperNet = { + type = "IRC"; + max_kicks = "1"; + max_msgs = "4"; + max_whois = "1"; + }; + Freenode = { + type = "IRC"; + max_kicks = "1"; + max_msgs = "4"; + max_whois = "1"; + }; + GameSurge = { + type = "IRC"; + max_kicks = "1"; + max_msgs = "1"; + max_whois = "1"; + }; + IRCnet = { + type = "IRC"; + max_kicks = "1"; + max_msgs = "1"; + max_whois = "1"; + }; + IRCSource = { + type = "IRC"; + max_kicks = "1"; + max_msgs = "4"; + max_whois = "1"; + }; + NetFuze = { + type = "IRC"; + max_kicks = "1"; + max_msgs = "1"; + max_whois = "1"; + }; + OFTC = { type = "IRC"; max_kicks = "1"; max_msgs = "1"; max_whois = "1"; }; + QuakeNet = { + type = "IRC"; + max_kicks = "1"; + max_msgs = "1"; + max_whois = "1"; + }; + Rizon = { + type = "IRC"; + max_kicks = "1"; + max_msgs = "1"; + max_whois = "1"; + }; + SILC = { type = "SILC"; }; + Undernet = { + type = "IRC"; + max_kicks = "1"; + max_msgs = "1"; + max_whois = "1"; + }; +}; + +channels = ( + { name = "#lobby"; chatnet = "EsperNet"; autojoin = "No"; }, + { name = "#freenode"; chatnet = "Freenode"; autojoin = "No"; }, + { name = "#irssi"; chatnet = "Freenode"; autojoin = "No"; }, + { name = "#gamesurge"; chatnet = "GameSurge"; autojoin = "No"; }, + { name = "#irssi"; chatnet = "IRCNet"; autojoin = "No"; }, + { name = "#ircsource"; chatnet = "IRCSource"; autojoin = "No"; }, + { name = "#netfuze"; chatnet = "NetFuze"; autojoin = "No"; }, + { name = "#oftc"; chatnet = "OFTC"; autojoin = "No"; }, + { name = "silc"; chatnet = "SILC"; autojoin = "No"; }, + { name = "#talkingarch"; chatnet = "netwirc"; autojoin = "yes"; } +); + +aliases = { + ATAG = "WINDOW SERVER"; + ADDALLCHANS = "SCRIPT EXEC foreach my \\$channel (Irssi::channels()) { Irssi::command(\"CHANNEL ADD -auto \\$channel->{name} \\$channel->{server}->{tag} \\$channel->{key}\")\\;}"; + B = "BAN"; + BACK = "AWAY"; + BANS = "BAN"; + BYE = "QUIT"; + C = "CLEAR"; + CALC = "EXEC - if command -v bc >/dev/null 2>&1\\; then printf '%s=' '$*'\\; echo '$*' | bc -l\\; else echo bc was not found\\; fi"; + CHAT = "DCC CHAT"; + CUBES = "SCRIPT EXEC Irssi::active_win->print(\"%_bases\", MSGLEVEL_CLIENTCRAP) \\; Irssi::active_win->print( do { join '', map { \"%x0\\${_}0\\$_\" } '0'..'9','A'..'F' }, MSGLEVEL_NEVER | MSGLEVEL_CLIENTCRAP) \\; Irssi::active_win->print(\"%_cubes\", MSGLEVEL_CLIENTCRAP) \\; Irssi::active_win->print( do { my \\$y = \\$_*6 \\; join '', map { my \\$x = \\$_ \\; map { \"%x\\$x\\$_\\$x\\$_\" } @{['0'..'9','A'..'Z']}[\\$y .. \\$y+5] } 1..6 }, MSGLEVEL_NEVER | MSGLEVEL_CLIENTCRAP) for 0..5 \\; Irssi::active_win->print(\"%_grays\", MSGLEVEL_CLIENTCRAP) \\; Irssi::active_win->print( do { join '', map { \"%x7\\${_}7\\$_\" } 'A'..'X' }, MSGLEVEL_NEVER | MSGLEVEL_CLIENTCRAP) \\; Irssi::active_win->print(\"%_mIRC extended colours\", MSGLEVEL_CLIENTCRAP) \\; my \\$x \\; \\$x .= sprintf \"\00399,%02d%02d\",\\$_,\\$_ for 0..15 \\; Irssi::active_win->print(\\$x, MSGLEVEL_NEVER | MSGLEVEL_CLIENTCRAP) \\; for my \\$z (0..6) { my \\$x \\; \\$x .= sprintf \"\00399,%02d%02d\",\\$_,\\$_ for 16+(\\$z*12)..16+(\\$z*12)+11 \\; Irssi::active_win->print(\\$x, MSGLEVEL_NEVER | MSGLEVEL_CLIENTCRAP) }"; + DATE = "exec date +'%I:%M%p%n%A, %B %d,%Y'"; + DEHIGHLIGHT = "DEHILIGHT"; + DESCRIBE = "ACTION"; + DHL = "DEHILIGHT"; + EXEMPTLIST = "MODE $C +e"; + EXIT = "QUIT"; + GOTO = "SCROLLBACK GOTO"; + HIGHLIGHT = "HILIGHT"; + HL = "HILIGHT"; + HOST = "USERHOST"; + INVITELIST = "MODE $C +I"; + J = "JOIN"; + K = "KICK"; + KB = "KICKBAN"; + KN = "KNOCKOUT"; + LAST = "LASTLOG"; + LEAVE = "PART"; + M = "MSG"; + MUB = "UNBAN *"; + N = "NAMES"; + NMSG = "^MSG"; + P = "PART"; + Q = "QUERY"; + RESET = "SET -default"; + RUN = "SCRIPT LOAD"; + SAY = "MSG *"; + SB = "SCROLLBACK"; + SBAR = "STATUSBAR"; + SIGNOFF = "QUIT"; + SV = "MSG * Irssi $J ($V) - http://www.irssi.org"; + T = "TOPIC"; + UB = "UNBAN"; + UMODE = "MODE $N"; + UNSET = "SET -clear"; + W = "WHO"; + WC = "WINDOW CLOSE"; + WG = "WINDOW GOTO"; + WJOIN = "JOIN -window"; + WI = "WHOIS"; + WII = "WHOIS $0 $0"; + WL = "WINDOW LIST"; + WN = "WINDOW NEW HIDDEN"; + WQUERY = "QUERY -window"; + WW = "WHOWAS"; + 1 = "WINDOW GOTO 1"; + 2 = "WINDOW GOTO 2"; + 3 = "WINDOW GOTO 3"; + 4 = "WINDOW GOTO 4"; + 5 = "WINDOW GOTO 5"; + 6 = "WINDOW GOTO 6"; + 7 = "WINDOW GOTO 7"; + 8 = "WINDOW GOTO 8"; + 9 = "WINDOW GOTO 9"; + 10 = "WINDOW GOTO 10"; + 11 = "WINDOW GOTO 11"; + 12 = "WINDOW GOTO 12"; + 13 = "WINDOW GOTO 13"; + 14 = "WINDOW GOTO 14"; + 15 = "WINDOW GOTO 15"; + 16 = "WINDOW GOTO 16"; + 17 = "WINDOW GOTO 17"; + 18 = "WINDOW GOTO 18"; + 19 = "WINDOW GOTO 19"; + 20 = "WINDOW GOTO 20"; + 21 = "WINDOW GOTO 21"; + 22 = "WINDOW GOTO 22"; + 23 = "WINDOW GOTO 23"; + 24 = "WINDOW GOTO 24"; + 25 = "WINDOW GOTO 25"; + 26 = "WINDOW GOTO 26"; + 27 = "WINDOW GOTO 27"; + 28 = "WINDOW GOTO 28"; + 29 = "WINDOW GOTO 29"; + 30 = "WINDOW GOTO 30"; + 31 = "WINDOW GOTO 31"; + 32 = "WINDOW GOTO 32"; + 33 = "WINDOW GOTO 33"; + 34 = "WINDOW GOTO 34"; + 35 = "WINDOW GOTO 35"; + 36 = "WINDOW GOTO 36"; + 37 = "WINDOW GOTO 37"; + 38 = "WINDOW GOTO 38"; + 39 = "WINDOW GOTO 39"; + 40 = "WINDOW GOTO 40"; + 41 = "WINDOW GOTO 41"; + 42 = "WINDOW GOTO 42"; + 43 = "WINDOW GOTO 43"; + 44 = "WINDOW GOTO 44"; + 45 = "WINDOW GOTO 45"; + 46 = "WINDOW GOTO 46"; + 47 = "WINDOW GOTO 47"; + 48 = "WINDOW GOTO 48"; + 49 = "WINDOW GOTO 49"; + 50 = "WINDOW GOTO 50"; + 51 = "WINDOW GOTO 51"; + 52 = "WINDOW GOTO 52"; + 53 = "WINDOW GOTO 53"; + 54 = "WINDOW GOTO 54"; + 55 = "WINDOW GOTO 55"; + 56 = "WINDOW GOTO 56"; + 57 = "WINDOW GOTO 57"; + 58 = "WINDOW GOTO 58"; + 59 = "WINDOW GOTO 59"; + 60 = "WINDOW GOTO 60"; + 61 = "WINDOW GOTO 61"; + 62 = "WINDOW GOTO 62"; + 63 = "WINDOW GOTO 63"; + 64 = "WINDOW GOTO 64"; + 65 = "WINDOW GOTO 65"; + 66 = "WINDOW GOTO 66"; + 67 = "WINDOW GOTO 67"; + 68 = "WINDOW GOTO 68"; + 69 = "WINDOW GOTO 69"; + 70 = "WINDOW GOTO 70"; + 71 = "WINDOW GOTO 71"; + 72 = "WINDOW GOTO 72"; + 73 = "WINDOW GOTO 73"; + 74 = "WINDOW GOTO 74"; + 75 = "WINDOW GOTO 75"; + 76 = "WINDOW GOTO 76"; + 77 = "WINDOW GOTO 77"; + 78 = "WINDOW GOTO 78"; + 79 = "WINDOW GOTO 79"; + 80 = "WINDOW GOTO 80"; + 81 = "WINDOW GOTO 81"; + 82 = "WINDOW GOTO 82"; + 83 = "WINDOW GOTO 83"; + 84 = "WINDOW GOTO 84"; + 85 = "WINDOW GOTO 85"; + 86 = "WINDOW GOTO 86"; + 87 = "WINDOW GOTO 87"; + 88 = "WINDOW GOTO 88"; + 89 = "WINDOW GOTO 89"; + 90 = "WINDOW GOTO 90"; + 91 = "WINDOW GOTO 91"; + 92 = "WINDOW GOTO 92"; + 93 = "WINDOW GOTO 93"; + 94 = "WINDOW GOTO 94"; + 95 = "WINDOW GOTO 95"; + 96 = "WINDOW GOTO 96"; + 97 = "WINDOW GOTO 97"; + 98 = "WINDOW GOTO 98"; + 99 = "WINDOW GOTO 99"; + music = "/exec -o echo -n \"Now playing: \\$(audtool --current-song)\""; + sing = "/exec -o echo -n \"@sing \\$(audtool --current-song-tuple-data artist | tr -d \\$'\\n'):\\$(audtool --current-song-tuple-data title)\""; + "*sing" = "/exec -o echo -n \"@sing \\$(audtool --current-song-tuple-data artist | tr -d \\$'\\n'):\\$(audtool --current-song-tuple-data title):*\""; +}; + +statusbar = { + + items = { + + barstart = "{sbstart}"; + barend = "{sbend}"; + + topicbarstart = "{topicsbstart}"; + topicbarend = "{topicsbend}"; + + time = "{sb $Z}"; + user = "{sb {sbnickmode $cumode}$N{sbmode $usermode}{sbaway $A}}"; + + window = "{sb $winref:$tag/$itemname{sbmode $M}}"; + window_empty = "{sb $winref{sbservertag $tag}}"; + + prompt = "{prompt $[.15]itemname}"; + prompt_empty = "{prompt $winname}"; + + topic = " $topic"; + topic_empty = " Irssi v$J - http://www.irssi.org"; + + lag = "{sb Lag: $0-}"; + act = "{sb Act: $0-}"; + more = "-- more --"; + }; + + default = { + + window = { + + disabled = "yes"; + type = "window"; + placement = "bottom"; + position = "1"; + visible = "active"; + + items = { + barstart = { priority = "100"; }; + user = { }; + window = { }; + window_empty = { }; + lag = { priority = "-1"; }; + act = { priority = "10"; }; + more = { priority = "-1"; alignment = "right"; }; + barend = { priority = "100"; alignment = "right"; }; + }; + }; + + window_inact = { + + type = "window"; + placement = "bottom"; + position = "1"; + visible = "inactive"; + + items = { + barstart = { priority = "100"; }; + window = { }; + window_empty = { }; + more = { priority = "-1"; alignment = "right"; }; + barend = { priority = "100"; alignment = "right"; }; + }; + }; + + prompt = { + + type = "root"; + placement = "bottom"; + position = "100"; + visible = "always"; + + items = { + prompt = { priority = "-1"; }; + prompt_empty = { priority = "-1"; }; + input = { priority = "10"; }; + }; + }; + + topic = { + + type = "root"; + placement = "top"; + position = "1"; + visible = "always"; + + items = { + topicbarstart = { priority = "100"; }; + topic = { }; + topic_empty = { }; + topicbarend = { priority = "100"; alignment = "right"; }; + }; + }; + }; +}; +settings = { + core = { real_name = "Unknown"; user_name = "storm"; nick = "storm"; }; + "fe-text" = { actlist_sort = "refnum"; }; + "fe-common/core" = { + bell_beeps = "yes"; + beep_msg_level = "msgs notices dcc dccmsgs hilight"; + timestamps = "no"; + }; +}; +windows = { 1 = { immortal = "yes"; name = "(status)"; level = "ALL"; }; }; +mainwindows = { 1 = { first_line = "1"; lines = "35"; }; }; +keyboard = ( + { + key = "meta-Z"; + id = "command"; + data = "exec audtool --playlist-reverse&&audtool --current-song"; + }, + { + key = "meta-B"; + id = "command"; + data = "exec audtool --playlist-advance&&audtool --current-song"; + }, + { + key = "meta-X"; + id = "command"; + data = "exec if ! pgrep audacious &> /dev/null ; then audacious -Hp &> /dev/null&else audacious -p;fi;audtool --current-song"; + }, + { + key = "meta-c"; + id = "command"; + data = "exec audtool --playback-playpause;if audtool --playback-playing ; then audtool --current-song;fi"; + }, + { + key = "meta-v"; + id = "command"; + data = "exec audtool --playback-stop"; + }, + { + key = "meta-_"; + id = "command"; + data = "exec audtool --set-volume $(($(audtool --get-volume | tr -Cd '[:digit:]-') - 5))"; + }, + { + key = "meta-+"; + id = "command"; + data = "exec audtool --set-volume $(($(audtool --get-volume | tr -Cd '[:digit:]-') + 5))"; + }, + { + key = "meta-C"; + id = "command"; + data = "exec audtool --playback-playpause&&audtool --current-song"; + }, + { + key = "meta-V"; + id = "command"; + data = "exec audtool --playback-stop"; + }, + { + key = "meta-U"; + id = "command"; + data = "exec audtool --current-song"; + } +); diff --git a/files/files/etc/F123-Config/irssi/scripts/autorun/sound.pl b/files/files/etc/F123-Config/irssi/scripts/autorun/sound.pl new file mode 120000 index 0000000..4ec6e72 --- /dev/null +++ b/files/files/etc/F123-Config/irssi/scripts/autorun/sound.pl @@ -0,0 +1 @@ +../sound.pl \ No newline at end of file diff --git a/files/files/etc/F123-Config/irssi/scripts/sound.pl b/files/files/etc/F123-Config/irssi/scripts/sound.pl new file mode 100755 index 0000000..978965e --- /dev/null +++ b/files/files/etc/F123-Config/irssi/scripts/sound.pl @@ -0,0 +1,293 @@ +use strict; +use vars qw($VERSION %IRSSI); + +use Irssi; +$VERSION = '0.0.3'; +%IRSSI = ( + authors => 'Storm and Jeremiah', + contact => 'blah@blah.blah', + name => 'irssi-sound', + description => 'Play sounds for different events in IRSSI.', + url => 'https://github.com/stormdragon2976/irssi-sound', + license => 'GNU General Public License', + changed => '$Date: 2007-02-07 12:00:00 +0100 (Thu, 7 Feb 2008) $' +); + +#-------------------------------------------------------------------- +# Created by Chrelad +# Feb 7, 2008 +#modified by Storm Dragon +#Also modified by Jeremiah +#Added private message sound and the ability to select sound method +#Sounds now play as a background process. +#-------------------------------------------------------------------- + +my $flood_protect = 1; +my $sound_tag; + +sub sound_overflow_timeout() { + $flood_protect = 1; + Irssi::timeout_remove($sound_tag); +} + + +sub join_msg { + my ($server,$msg,$nick,$address,$target) = @_; + if ($server && ! Irssi::settings_get_bool("sounds")) { + return;; + } else { + if (my $joincmd = Irssi::settings_get_str("join_sound_command")) { + if ($flood_protect) { + my $sound_flood = Irssi::settings_get_int('sound_flood'); + $sound_flood = 1000 if $sound_flood < 0; + Irssi::timeout_remove($sound_tag); + $sound_tag = Irssi::timeout_add($sound_flood, 'sound_overflow_timeout', undef); + system($joincmd); + $flood_protect = 0; + } +} +} +} + +sub part_msg { + my ($server,$msg,$nick,$address,$target) = @_; + if ($server && ! Irssi::settings_get_bool("sounds")) { + return;; + } else { + if (my $partcmd = Irssi::settings_get_str("part_sound_command")) { + if ($flood_protect) { + my $sound_flood = Irssi::settings_get_int('sound_flood'); + $sound_flood = 1000 if $sound_flood < 0; + Irssi::timeout_remove($sound_tag); + $sound_tag = Irssi::timeout_add($sound_flood, 'sound_overflow_timeout', undef); + system($partcmd); + $flood_protect = 0; + } + } +} +} + +sub quit_msg { +my ($server,$msg,$nick,$address,$target) = @_; + if ($server && ! Irssi::settings_get_bool("sounds")) { + return;; + } else { + if (my $quitcmd = Irssi::settings_get_str("quit_sound_command")) { + if ($flood_protect) { + my $sound_flood = Irssi::settings_get_int('sound_flood'); + $sound_flood = 1000 if $sound_flood < 0; + Irssi::timeout_remove($sound_tag); + $sound_tag = Irssi::timeout_add($sound_flood, 'sound_overflow_timeout', undef); + system($quitcmd); + $flood_protect = 0; + } + } +} +} + +sub pub_msg { + my ($server,$msg,$nick,$address,$target) = @_; + if ($server && ! Irssi::settings_get_bool("sounds")) { + return;; + } else { + if (my $pubcmd = Irssi::settings_get_str("pub_sound_command")) { + if ($flood_protect) { + my $sound_flood = Irssi::settings_get_int('sound_flood'); + $sound_flood = 1000 if $sound_flood < 0; + Irssi::timeout_remove($sound_tag); + $sound_tag = Irssi::timeout_add($sound_flood, 'sound_overflow_timeout', undef); + system($pubcmd); + $flood_protect = 0; + } + } +} +} + +sub own_action_msg { + my ($server,$msg,$nick,$address,$target) = @_; + if ($server && ! Irssi::settings_get_bool("sounds")) { + return;; + } else { + if (my $ownactcmd = Irssi::settings_get_str("own_act_sound_command")) { + if ($flood_protect) { + my $sound_flood = Irssi::settings_get_int('sound_flood'); + $sound_flood = 1000 if $sound_flood < 0; + Irssi::timeout_remove($sound_tag); + $sound_tag = Irssi::timeout_add($sound_flood, 'sound_overflow_timeout', undef); + system($ownactcmd); + $flood_protect = 0; + } + } +} +} + +sub own_private_msg { + my ($server,$msg,$nick,$address,$target) = @_; + if ($server && ! Irssi::settings_get_bool("sounds")) { + return;; + } else { + if (my $ownprivcmd = Irssi::settings_get_str("own_privmsg_sound_command")) { + if ($flood_protect) { + my $sound_flood = Irssi::settings_get_int('sound_flood'); + $sound_flood = 1000 if $sound_flood < 0; + Irssi::timeout_remove($sound_tag); + $sound_tag = Irssi::timeout_add($sound_flood, 'sound_overflow_timeout', undef); + system($ownprivcmd); + $flood_protect = 0; + } + } +} +} + +sub action_msg { + my ($server,$msg,$nick,$address,$target) = @_; + if ($server && ! Irssi::settings_get_bool("sounds")) { + return;; + } else { + if (my $actcmd = Irssi::settings_get_str("action_sound_command")) { + if ($flood_protect) { + my $sound_flood = Irssi::settings_get_int('sound_flood'); + $sound_flood = 1000 if $sound_flood < 0; + Irssi::timeout_remove($sound_tag); + $sound_tag = Irssi::timeout_add($sound_flood, 'sound_overflow_timeout', undef); + system($actcmd); + $flood_protect = 0; + } + } +} +} + +sub own_msg { + my ($server,$msg,$nick,$address,$target) = @_; + if ($server && ! Irssi::settings_get_bool("sounds")) { + return;; + } else { + if (my $ownmsgcmd = Irssi::settings_get_str("own_msg_sound_command")) { + if ($flood_protect) { + my $sound_flood = Irssi::settings_get_int('sound_flood'); + $sound_flood = 1000 if $sound_flood < 0; + Irssi::timeout_remove($sound_tag); + $sound_tag = Irssi::timeout_add($sound_flood, 'sound_overflow_timeout', undef); + system($ownmsgcmd); + $flood_protect = 0; + } + } +} +} + +sub own_notice_msg { + my ($server,$msg,$nick,$address,$target) = @_; + if ($server && ! Irssi::settings_get_bool("sounds")) { + return;; + } else { + if (my $ownnoticecmd = Irssi::settings_get_str("own_notice_sound_command")) { + if ($flood_protect) { + my $sound_flood = Irssi::settings_get_int('sound_flood'); + $sound_flood = 1000 if $sound_flood < 0; + Irssi::timeout_remove($sound_tag); + $sound_tag = Irssi::timeout_add($sound_flood, 'sound_overflow_timeout', undef); + system($ownnoticecmd); + $flood_protect = 0; + } + } +} +} + +sub notice_msg { + my ($server,$msg,$nick,$address,$target) = @_; + if ($server && ! Irssi::settings_get_bool("sounds")) { + return;; + } else { + if (my $noticecmd = Irssi::settings_get_str("notice_sound_command")) { + if ($flood_protect) { + my $sound_flood = Irssi::settings_get_int('sound_flood'); + $sound_flood = 1000 if $sound_flood < 0; + Irssi::timeout_remove($sound_tag); + $sound_tag = Irssi::timeout_add($sound_flood, 'sound_overflow_timeout', undef); + system($noticecmd); + $flood_protect = 0; + } + } +} +} + +sub pri_msg { + my ($server,$msg,$nick,$address,$target) = @_; + if ($server && ! Irssi::settings_get_bool("sounds")) { + return;; + } else { + if (my $privmsgcmd = Irssi::settings_get_str("privmsg_sound_command")) { + if ($flood_protect) { + my $sound_flood = Irssi::settings_get_int('sound_flood'); + $sound_flood = 1000 if $sound_flood < 0; + Irssi::timeout_remove($sound_tag); + $sound_tag = Irssi::timeout_add($sound_flood, 'sound_overflow_timeout', undef); + system($privmsgcmd); + $flood_protect = 0; + } + } +} +} + +sub hilight { + my ($dest, $text, $stripped) = @_; +my $server = $dest->{server}; +my $window = Irssi::active_server(); + if (!($server && + $dest->{level} & (MSGLEVEL_HILIGHT) && + $server->ischannel($dest->{target}) && +$window->{refnum} != $dest->{window}->{refnum})) { + return; + } + if ($server && ! Irssi::settings_get_bool("sounds")) { + return; + } else { + if (my $hilightcmd = Irssi::settings_get_str("hilight_sound_command")) { + system($hilightcmd); + } + } + } + + +#add settings and defaults +Irssi::settings_add_bool("lookandfeel", "sounds", 1); +Irssi::settings_add_int("lookandfeel", "sound_flood", 250); +Irssi::settings_add_str("misc", "join_sound_command", +"play -qnV0 synth tri 1500 tri 1800 delay 0 .12 fade h 0 .2 remix - &. /dev/null&"); +Irssi::settings_add_str("misc", "part_sound_command", +"play -qnV0 synth tri 1800 tri 1500 delay 0 .12 fade h 0 .2 remix - &> /dev/null&"); +Irssi::settings_add_str("misc", "quit_sound_command", +"play -qnV0 synth pi fade h 0 1 1 pad 0 1 reverb overdrive riaa norm -7 &> /dev/null&"); +Irssi::settings_add_str("misc", "pub_sound_command", +"play -qnV0 synth 0.09 tri E3:B3 &> /dev/null&"); +Irssi::settings_add_str("misc", "own_act_sound_command", +"play -qnV0 synth 0.25 tri G5:E1 tri B5:D1 remix - norm -5 &> /dev/null&"); +Irssi::settings_add_str("misc", "own_privmsg_sound_command", +"play -qnV0 synth pl G2 pl G3 pl B2 pl B3 pl D3 pl D4 pl G3 pl G4 pl D4 pl D4 pl G4 pl G4 delay 0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 remix - phaser fade p 0 0.5 0.3 norm -3 &> /dev/null&"); +Irssi::settings_add_str("misc", "action_sound_command", +"play -qnV0 synth 0.25 tri E1:G5 tri D1:B5 remix - norm -5 &> /dev/null&"); +Irssi::settings_add_str("misc", "own_msg_sound_command", +"play -qnV0 synth 0.09 tri B3:E3 &> /dev/null&"); +Irssi::settings_add_str("misc", "own_notice_sound_command", +"play -nqV0 synth pi fade h 0 1 1 norm -15 pad 0 1 reverb overdrive riaa speed 32 repeat 3 &> /dev/null&"); +Irssi::settings_add_str("misc", "notice_sound_command", +"play -nqV0 synth pi fade h 0 1 1 norm -15 pad 0 1 reverb overdrive riaa speed 32 reverse repeat 3 &> /dev/null&"); +Irssi::settings_add_str("misc", "privmsg_sound_command", +"play -qnV0 synth pl G4 pl G4 pl D4 pl D4 pl D4 pl D3 pl G4 pl G3 pl B3 pl B2 pl G3 pl G2 delay 0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 remix - phaser fade p 0 0.5 0.3 norm -3 &> /dev/null&"); +Irssi::settings_add_str("misc", "hilight_sound_command", +"play -qnV0 synth 0.5 tri A3:D3 tri D3:A3 remix - &> /dev/null&"); +#add Signals +Irssi::signal_add_last("message public", "pub_msg"); +Irssi::signal_add_last("message irc action", "action_msg"); +Irssi::signal_add_last("message own_public", "own_msg"); +Irssi::signal_add_last("message private", "pri_msg"); +Irssi::signal_add_last("message own_private", "own_private_msg"); +Irssi::signal_add_last("message irc own_action", "own_action_msg"); +Irssi::signal_add_last("message irc own_notice", "own_notice_msg"); +Irssi::signal_add_last("message irc notice", "notice_msg"); +Irssi::signal_add_last('print text', "hilight"); +Irssi::signal_add_last("event join", 'join_msg'); +Irssi::signal_add_last("event quit", 'quit_msg'); +Irssi::signal_add_last("event part", 'part_msg'); +Irssi::signal_add_last("event kick", 'part_msg'); +#- end diff --git a/files/files/etc/F123-Config/storeBackup.conf b/files/files/etc/F123-Config/storeBackup.conf new file mode 100644 index 0000000..e82ba17 --- /dev/null +++ b/files/files/etc/F123-Config/storeBackup.conf @@ -0,0 +1,617 @@ +# configuration file for storeBackup.pl +# Generated by storeBackup.pl, 3.5 + +#################### +### explanations ### +#################### + +# You can set a value specified with '-cf_key' (eg. logFiles) and +# continue at the next lines which have to begin with a white space: +# logFiles = /var/log/messages /var/log/cups/access_log +# /var/log/cups/error_log +# One ore more white spaces are interpreted as separators. +# You can use single quotes or double quotes to group strings +# together, eg. if you have a filename with a blank in its name: +# logFiles = '/var/log/my strage log' +# will result in one filename, not in three. +# If an option should have *no value*, write: +# logFiles = +# If you want the default value, comment it: +;logFile = +# You can also use environment variables, like $XXX or ${XXX} like in +# a shell. Single quotes will mask environment variables, while double +# quotes will not. +# You can mask $, {, }, ", ' with a backslash (\), eg. \$ +# Lines beginning with a '#' or ';' are ignored (use this for comments) +# +# You can overwrite settings in the command line. You can remove +# the setting also in the command by using the --unset feature, eg.: +# '--unset doNotDelete' or '--unset --doNotDelete' + +##################### +### configuration ### +##################### + +# source directory (*** must be specified ***) +sourceDir=/home + +# top level directory of all linked backups (*** must be specified ***) +# storeBackup must know for consistency checking where all your backups +# are. This is done to make sure that your backups are consistent if you +# used --lateLinks. +;backupDir= + +# ------------------------------------------------------------------------ +# you do not need specify the options below to get a running configuration +# (but they give you more features and more control) +# + + +# series directory, default is 'default' +# relative path from backupDir +;series= + +# directory for temporary file, default is /tmp +;tmpDir= + +# List of other backup directories to consider for +# hard linking. Relative path from backupDir! +# Format (examples): +# backupSeries/2002.08.29_08.25.28 -> consider this backup +# or +# 0:backupSeries -> last (youngest) backup in /backupSeries +# 1:backupSeries -> first before last backup in /backupSeries +# n:backupSeries -> n'th before last backup in /backupSeries +# 3-5:backupSeries -> 3rd, 4th and 5th in /backupSeries +# all:backupSeries -> all in /backupSeries +# This option is useful, if you want to explicitly hard link +# to backup series from different backups. You can specify eg. with +# 0:myBackup to the last backup of series 'myBackup'. If you specify +# backup series with otherBackupSeries, then only these backups will be +# used for hard linking. +# You can also use wildcards in series names. See documentation, +# section 'Using Wildcards for Replication' for details. +# Default value is to link to the last backup of all series stored in +# 'backupDir'. +;otherBackupSeries= + +# lock file, if exist, new instances will finish if +# an old is already running, default is /tmp/storeBackup.lock +;lockFile= + +# remove the lock files before deleting old backups +# default ('no') is to delete the lock file after deleting +# possible values are 'yes' and 'no' +;unlockBeforeDel= + +# continue if one or more of the exceptional directories +# do not exist (no is stopping processing) +# default is 'no', can be 'yes' or 'no' +;contExceptDirsErr= + +# Directories to exclude from the backup (relative path inside of the backup). +# You can use shell type wildcards. +# These directories have to be separated by space or newline. +;exceptDirs=dev proc sys tmp run mnt media var home/*/.cache lost+found +exceptDirs=*/.cache + +# Directories to include in the backup (relative path inside of the backup). +# You can use shell type wildcards. +# These directories have to be separated by space or newline. +includeDirs=../etc + +# rule for excluding files / only for experienced administrators +# !!! see README file 'including / excluding files and directories' +# EXAMPLE: +# searchRule = ( '$size > &::SIZE("3M")' and '$uid eq "hjc"' ) or +# ( '$mtime > &::DATE("3d4h")' and not '$file =~ m#/tmp/#' )' +;exceptRule= + +# For explanations, see 'exceptRule'. +;includeRule= + +# write a file name .storeBackup.notSaved.bz2 with the +# names of all skipped files, default is 'no', can be 'yes' or 'no' +;writeExcludeLog= + +# do not save the specified types of files, allowed: Sbcfpl +# S - file is a socket +# b - file is a block special file +# c - file is a character special file +# f - file is a plain file +# p - file is a named pipe +# l - file is a symbolic link +# Spbc can only be backed up if GNU copy is available. +;exceptTypes= + +# save the specified type of files in an archive instead saving +# them directly in the file system +# use this if you want to backup those file types but your target +# file or transport (eg. sshfs or non gnu-cp) system does not support +# those types of file +# S - file is a socket +# b - file is a block special file +# c - file is a character special file +# p - file is a named pipe +# l - file is a symbolic link +# you also have to set specialTypeArchiver when using this option +;archiveTypes= + + +# possible values are 'cpio', 'tar', 'none'. default is 'cpio' +# tar is not able to archive sockets +# cpio is not part of the actual posix standard any more +;specialTypeArchiver= + +# Activate this option if your system's cp is a full-featured GNU +# version. In this case you will be able to also backup several +# special file types like sockets. +# Possible values are 'yes' and 'no'. Default is 'no' +cpIsGnu=yes + +# make a hard link to existing, identical symlinks in old backups +# use this, if your operating system supports this (linux does) +# Possible values are 'yes' and 'no'. Default is 'no' +;linkSymlinks= + +# exec job before starting the backup, checks lockFile (-L) before +# starting (e.g. can be used for rsync) stops execution if job returns +# exit status != 0 +;precommand= + +# exec job after finishing the backup, but before erasing of old +# backups reports if job returns exit status != 0 +;postcommand= + +# follow symbolic links like directories up to depth 0 -> do not +# follow links +;followLinks= + +# only store the contents of file systems named by +# sourceDir and symlinked via followLinks +# possible values are 'yes' and 'no'; default is 'no' +;stayInFileSystem= + +# use this only if you write your backup over a high latency line +# like a vpn over the internet +# storebackup will use more parallelization at the cost of more +# cpu power +# possible values are 'yes' and 'no'; default is 'no' +;highLatency= + +# If this option is disabled, then the files in the backup will not +# neccessarily have the same permissions and owner as the originals. +# This speeds up backups on network drives a lot. Correct permissions +# are restored by storeBackupRecover.pl no matter what this option is +# set to. Default is 'no' +;ignorePerms= + +# suppress (unwanted) warnings in the log files; +# to suppress warnings, the following keys can be used: +# excDir (suppresses the warning that excluded directories +# do not exist) +# fileChange (suppresses the warning that a file has changed during +# the backup) +# crSeries (suppresses the warning that storeBackup had to create the +# 'default' series) +# hashCollision (suppresses the warning if a possible +# hash collision is detected) +# fileNameWithLineFeed (suppresses the warning if a filename +# contains a line feed) +# use_DB_File (suppresses the warning that you should install +# perl module DB_File for better perforamnce) +# use_MLDBM (suppresses the warning that you should install +# perl module MLDBM if you want to use rule functions +# MARK_DIR or MARK_DIR_REC together with option saveRAM) +# use_IOCompressBzip2 (suppresses the warning that you should +# instal perl module IO::Compress::Bzip2 +# for better performance) +# noBackupForPeriod (suppresses warning that there are +# no backups for certain periods when using +# option keepRelative) +# This option can be repeated multiple times on the command line. +# Example usage in conf file: +# suppressWarning = excDir fileChange crSeries hashCollision +# By default no warnings are suppressed. +suppressWarning= excDir fileChange crSeries hashCollision + +# do *not* write hard links to existing files in the backup +# during the backup (yes|no) +# you have to call the program storeBackupUpdateBackup.pl +# later on your server if you set this flag to 'yes' +# you have to run storeBackupUpdateBackup.pl later - see +# description for that program +# default = no: do not write hard links +;lateLinks= + +# only in combination with --lateLinks +# compression from files >= size will be done later, +# the file is (temporarily) copied into the backup +# default = no: no late compression +;lateCompress= + +# repair simple inconsistencies (from lateLinks) automatically +# without requesting the action +# default = no, no automatic repair +;autorepair= + +# Files with specified suffix for which storeBackup will make an md5 check +# on blocks of that file. Executed after --checkBlocksRule(n) +;checkBlocksSuffix= + +# Only check files specified in --checkBlocksSuffix if there +# file size is at least this value, default is 100M +;checkBlocksMinSize= + +# Block size for files specified with --checkBlocksSuffix +# default is 1M (1 megabyte) +;checkBlocksBS= + +# if set, the blocks generated due to checkBlocksSuffix are compressed +# Possible values are 'check, 'yes' and 'no'. Default is 'no' +# check uses COMRESSION_CHECK (see option compressSuffix) +;checkBlocksCompr= + +# Read files specified here in parallel to "normal" ones. +# This only makes sense if they are on a different disk. +# Default value is 'no' +;checkBlocksParallel= + +# length of queue to store files before block checking, +# default = 1000 +;queueBlock= + +# Files for which storeBackup will make an md5 check depending +# on blocks of that file. +# The rules are checked from rule 1 to rule 5. The first match is used +# !!! see README file 'including / excluding files and directories' +# EXAMPLE: +# searchRule = ( '$size > &::SIZE("3M")' and '$uid eq "hjc"' ) or +# ( '$mtime > &::DATE("3d4h")' and not '$file =~ m#/tmp/#' )' +;checkBlocksRule0= + +# Block size for option checkBlocksRule +# default is 1M (1 megabyte) +;checkBlocksBS0= + +# if set to 'yes', blocks generated due to this rule will be compressed +# possible values: 'check', 'yes' or 'no', default is 'no' +# check users COMRESSION_CHECK (see option compressSuffix) +;checkBlocksCompr0= + +# Filter for reading the file to treat as a blocked file +# eg. gzip -d if the file is compressed. Default is no read filter. +;checkBlocksRead0= + +# Read files specified here in parallel to "normal" ones. +# This only makes sense if they are on a different disk. +# Default value is 'no' +;checkBlocksParallel0= + +;checkBlocksRule1= +;checkBlocksBS1= +;checkBlocksCompr1= +;checkBlocksRead1= +;checkBlocksParallel1= + +;checkBlocksRule2= +;checkBlocksBS2= +;checkBlocksCompr2= +;checkBlocksRead2= +;checkBlocksParallel2= + +;checkBlocksRule3= +;checkBlocksBS3= +;checkBlocksCompr3= +;checkBlocksRead3= +;checkBlocksParallel3= + +;checkBlocksRule4= +;checkBlocksBS4= +;checkBlocksCompr4= +;checkBlocksRead4= +;checkBlocksParallel4= + +# List of Devices for md5 ckeck depending on blocks of these +# Devices (eg. /dev/sdb or /dev/sdb1) +;checkDevices0= + +# Directory where to store the backups of the devices +;checkDevicesDir0= + +# Block size of option checkDevices0 +# default is 1M (1 megabyte) +;checkDevicesBS0= + +# if set, the blocks generated due to checkDevices0 are compressed +# possible values: 'check', 'yes' or 'no', default is 'no' +# check users COMRESSION_CHECK (see option compressSuffix) +;checkDevicesCompr0= + +# Read devices specified here in parallel to "normal" ones. +# This only makes sense if they are on a different disk. +# Default value is 'no' +;checkDevicesParallel0= + +;checkDevices1= +;checkDevicesDir1= +;checkDevicesBS1= +;checkDevicesCompr1= +;checkDevicesParallel1= + +;checkDevices2= +;checkDevicesDir2= +;checkDevicesBS2= +;checkDevicesCompr2= +;checkDevicesParallel2= + +;checkDevices3= +;checkDevicesDir3= +;checkDevicesBS3= +;checkDevicesCompr3= +;checkDevicesParallel3= + +;checkDevices4= +;checkDevicesDir4= +;checkDevicesBS4= +;checkDevicesCompr4= +;checkDevicesParallel4= + +# write temporary dbm files in --tmpdir +# use this if you have not enough RAM, default is no +saveRAM=yes + +# compress command (with options), default is +compress=gzip + +# uncompress command (with options), default is +uncompress=gzip -d + +# postfix to add after compression, default is <.bz2> +postfix=.gz + +# do not compress files with the following +# suffix (uppercase included): +# (if you set this to '.*', no files will be compressed) +# Default is \.zip \.bz2 \.gz \.tgz \.jpg \.gif \.tiff? \.mpe?g \.mp[34] \.mpe?[34] \.ogg \.gpg \.png \.lzma \.xz \.mov +exceptSuffix='.*' + +# like --exceptSuffix, but do not replace defaults, add +;addExceptSuffix= + + +# Like --exceptSuffix, but mentioned files will be +# compressed. If you chose this option, then files not +# affected be execptSuffix, addExceptSuffix or this Suffixes +# will be rated by the rule function COMPRESS_CHECK wether +# to compress or not +;compressSuffix= + +# Files smaller than this size will never be compressed but always +# copied. Default is 1024 +;minCompressSize= + +# alternative to exceptSuffix, comprRule and minCompressSize: +# definition of a rule which files will be compressed +# If this rule is set, exceptSuffix, addExceptSuffix +# and minCompressSize are ignored. +# Default rule _generated_ from the options above is: +# comprRule = '$size > 1024' and not +# '$file =~ /.zip\Z|.bz2\Z|.gz\Z|.tgz\Z|.jpg\Z|.gif\Z|.tiff\Z|.tif\Z|.mpeg\Z|.mpg\Z|.mp3\Z|.ogg\Z|.gpg\Z|.png\Z/i' +# or (eg. if compressSuffix = .doc .pdf): +# '$size > 1024 and not $file =~ /.zip\Z|.bz2\Z|.gz\Z|.tgz\Z|.jpg\Z|.gif\Z|.tiff\Z|.tif\Z|.mpeg\Z|.mpg\Z|.mp3\Z|.ogg\Z|.gpg\Z|.png\Z/i and ( $file =~ /.doc\Z|.pdf\Z/i or &::COMPRESSION_CHECK($file) )' +;comprRule= + +# maximal number of parallel compress operations, +# default = choosen automatically +;noCompress= + +# length of queue to store files before compression, +# default = 1000 +;queueCompress= + +# maximal number of parallel copy operations, +# default = 1 +noCopy=4 + +# length of queue to store files before copying, +# default = 1000 +;queueCopy= + +# write statistics about used space in log file +# default is 'no' +;withUserGroupStat= + +# write statistics about used space in name file +# will be overridden each time +# if no file name is given, nothing will be written +# format is: +# identifier uid userName value +# identifier gid groupName value +;userGroupStatFile= + +# default is 'no', if you do not want to compress, say 'yes' +;doNotCompressMD5File= + +# permissions of .md5checkSumFile, default is 0600 +;chmodMD5File= + +# verbose messages, about exceptRule and includeRule +# and added files. default is 'no' +;verbose= + +# generate debug messages, levels are 0 (none, default), +# 1 (some), 2 (many) messages +;debug= + +# reset access time in the source directory - but this will +# change ctime (time of last modification of file status +# information +# default is 'no', if you want this, say 'yes' +;resetAtime= + +# do not delete any old backup (e.g. specified via --keepAll or +# --keepWeekday) but print a message. This is for testing configuratons +# or if you want to delete old backups with storeBackupDel.pl. +# Values are 'yes' and 'no'. Default is 'no' which means to not delete. +doNotDelete=yes + +# delete old backups which have not been finished +# this will not happen if doNotDelete is set +# Values are 'yes' and 'no'. Default is 'no' which means not to delete. +deleteNotFinishedDirs=yes + +# keep backups which are not older than the specified amount +# of time. This is like a default value for all days in +# --keepWeekday. Begins deleting at the end of the script +# the time range has to be specified in format 'dhms', e.g. +# 10d4h means 10 days and 4 hours +# default = 30d; +# An archive flag is not possible with this parameter (see below). +;keepAll= + +# keep backups for the specified days for the specified +# amount of time. Overwrites the default values choosen in +# --keepAll. 'Mon,Wed:40d Sat:60d10m' means: +# keep backups from Mon and Wed 40days + 5mins +# keep backups from Sat 60days + 10mins +# keep backups from the rest of the days like spcified in +# --keepAll (default 30d) +# you can also set the 'archive flag'. +# 'Mon,Wed:a40d5m Sat:60d10m' means: +# keep backups from Mon and Wed 40days + 5mins + 'archive' +# keep backups from Sat 60days + 10mins +# keep backups from the rest of the days like specified in +# --keepAll (default 30d) +# If you also use the 'archive flag' it means to not +# delete the affected directories via --keepMaxNumber: +# a10d4h means 10 days and 4 hours and 'archive flag' +;keepWeekday= + +# do not delete the first backup of a year +# format is timePeriod with possible 'archive flag' +;keepFirstOfYear= + +# do not delete the last backup of a year +# format is timePeriod with possible 'archive flag' +;keepLastOfYear= + +# do not delete the first backup of a month +# format is timePeriod with possible 'archive flag' +;keepFirstOfMonth= + +# do not delete the last backup of a month +# format is timePeriod with possible 'archive flag' +;keepLastOfMonth= + +# default: 'Sun'. This value is used for calculating +# --keepFirstOfWeek and --keepLastOfWeek +;firstDayOfWeek= + +# do not delete the first backup of a week +# format is timePeriod with possible 'archive flag' +;keepFirstOfWeek= + +# do not delete the last backup of a week +# format is timePeriod with possible 'archive flag' +;keepLastOfWeek= + +# keep multiple backups of one day up to timePeriod +# format is timePeriod, 'archive flag' is not possible +# default is 7d +;keepDuplicate= + +# Keep that miminum of backups. Multiple backups of one +# day are counted as one backup. Default is 10. +;keepMinNumber= + +# Try to keep only that maximum of backups. If you have more +# backups, the following sequence of deleting will happen: +# - delete all duplicates of a day, beginning with the old +# once, except the oldest of every day +# - if this is not enough, delete the rest of the backups +# beginning with the oldest, but *never* a backup with +# the 'archive flag' or the last backup +;keepMaxNumber= + +# Alternative deletion scheme. If you use this option, all +# other keep options are ignored. Preserves backups depending +# on their *relative* age. Example: +# +# keepRelative = 1d 7d 61d 92d +# +# will (try to) ensure that there is always +# +# - One backup between 1 day and 7 days old +# - One backup between 5 days and 2 months old +# - One backup between ~2 months and ~3 months old +# +# If there is no backup for a specified timespan (e.g. because the +# last backup was done more than 2 weeks ago) the next older backup +# will be used for this timespan. +;keepRelative = + +# print progress report after each 'number' files +# Default is 0, which means no reports. +# additional you may add a time frame after which a message is printed +# if you want to print a report each 1000 files and after +# one minute and 10 seconds, use: -P 1000,1m10s +;progressReport= + +# print depth of actual readed directory during backup +# default is 'no', values are 'yes' and 'no' +;printDepth= + +# ignore read errors in source directory; not readable +# directories does not cause storeBackup.pl to stop processing +# Values are 'yes' and 'no'. Default is 'no' which means not +# to ignore them +ignoreReadError=yes + +# after a successful backup, set a symbolic link to +# that backup and delete existing older links with the +# same name +;linkToRecent= + +# name of the log file (default is STDOUT) +logFile=/var/log/storeBackup + +# if you specify a log file with --logFile you can +# additionally print the output to STDOUT with this flag +# Values are 'yes' and 'no'. Default is 'no'. +;plusLogStdout= + +# output in logfile without time: 'yes' or 'no' +# default = no +suppressTime=yes + +# maximal length of log file, default = 1e6 +;maxFilelen= + +# number of old log files, default = 5 +;noOfOldFiles= + +# save log files with date and time instead of deleting the +# old (with [-noOfOldFiles]): 'yes' or 'no', default = 'no' +;saveLogs= + +# compress saved log files (e.g. with 'gzip -9') +# default is 'bzip2' +;compressWith= + +# write log file (also) in the backup directory: +# 'yes' or 'no', default is 'no' +# Be aware that this log does not contain all error +# messages of the one specified with --logFile! +# Some errors are possible before the backup +# directory is created. +;logInBackupDir= + +# compress the log file in the backup directory: +# 'yes' or 'no', default is 'no' +;compressLogInBackupDir= + +# filename to use for writing the above log file, +# default is '.storeBackup.log' +;logInBackupDirFileName= + diff --git a/files/files/etc/RHVoice/RHVoice.conf b/files/files/etc/RHVoice/RHVoice.conf new file mode 100644 index 0000000..c6c8aaa --- /dev/null +++ b/files/files/etc/RHVoice/RHVoice.conf @@ -0,0 +1,78 @@ +; Пример конфигурационного файла. +; Для внесения изменений раскомментируйте и отредактируйте требуемые параметры. + +; Для скорости, высоты и громкости за единицу принимается естественное +; для синтезатора значение. + +; Значения высоты, скорости и громкости по умолчанию. В настройках +; NVDA они будут соответствовать пятидесяти процентам. +; default_pitch=1.0 +; default_rate=1.0 +; default_volume=1.0 + +; Минимальное и максимальное значения высоты. +; min_pitch=0.5 +; max_pitch=2.0 + +; Минимальное и максимальное значения скорости. +; min_rate=0.5 +max_rate=4.0 + +; Минимальное и максимальное значения громкости. +; min_volume=0.25 +; max_volume=2.0 + +; Указанные выше настройки могут задаваться +; индивидуально для конкретного языка или голоса. +; Например, чтобы задать скорость по умолчанию для Русского языка, +; используйте вместо "default_rate" название "languages.russian.default_rate". +; Аналогично, высота голоса Елены задаётся настройкой "voices.elena.default_pitch". + +; Для данного и более высоких значений скорости используется библиотека Sonic. +; min_sonic_rate=1 + + +; Следующие настройки позволяют отключить конкретный язык или голос. +; languages.english.enabled=false +; voices.elena.enabled=false + +; Символ, который в тексте будет указывать, что на непосредственно +; следующую за ним гласную падает ударение (только русский текст). +; stress_marker= + +; Режим чтения пунктуации (all, some или none). +; punctuation_mode=none + +; Знаки, произносимые в режиме выборочного чтения пунктуации. +; punctuation_list=+#61;<>~@#35;$%^&*/\| + +; Индикация заглавных букв при посимвольном чтении. +; Возможные значения: no, word, pitch, sound +; indicate_capitals=no +; Относительное изменение высоты при индикации заглавных букв. +; Поддерживается задание индивидуальных значений для голосов. +; cap_pitch_factor=1.3 + +; В режиме автопереключения языков всегда переходить на основной язык +; при чтении чисел и знаков пунктуации. +; prefer_primary_language=true + +; Включить поддержку псевдо-английского для русских голосов. +; languages.Russian.use_pseudo_english=true +; Только в Windows: возвращать операционной системе числовой +; идентификатор английского языка для эсперанто. +; languages.esperanto.present_as_english=false + +; Качество речи: min (максимальное быстродействие), +; standard (стандартное качество) или max (максимальное возможное качество, +; но с задержками при синтезе длинных предложений). +; quality=standard + +; Список голосовых профилей. Первым в профиле указывается основной +; голос (он будет читать числа и другой текст, для которого не удаётся +; автоматически определить язык). Далее следуют дополнительные +; голоса. Если в профиле заданы два голоса, чьи языки имеют общие +; буквы, то второй будет использоваться только в том случае, когда +; программа экранного доступа специально запросит использование +; данного языка. +voice_profiles=Aleksandr+Alan,Elena+CLB diff --git a/files/files/etc/X11/xorg.conf.d/10-headless.conf b/files/files/etc/X11/xorg.conf.d/10-headless.conf new file mode 100644 index 0000000..d15c143 --- /dev/null +++ b/files/files/etc/X11/xorg.conf.d/10-headless.conf @@ -0,0 +1,21 @@ + Section "Device" + Identifier "Configured Video Device" + Driver "dummy" + EndSection + + Section "Monitor" + Identifier "Configured Monitor" + HorizSync 31.5-48.5 + VertRefresh 50-70 + EndSection + + Section "Screen" + Identifier "Default Screen" + Monitor "Configured Monitor" + Device "Configured Video Device" + DefaultDepth 24 + SubSection "Display" + Depth 24 + Modes "1024x800" + EndSubSection + EndSection diff --git a/files/files/etc/bash.bashrc b/files/files/etc/bash.bashrc new file mode 100644 index 0000000..c8cfca7 --- /dev/null +++ b/files/files/etc/bash.bashrc @@ -0,0 +1,24 @@ +# +# /etc/bash.bashrc +# + +# If not running interactively, don't do anything +[[ $- != *i* ]] && return + +[[ $DISPLAY ]] && shopt -s checkwinsize + +PS1='[\u \w] \$ ' + +case ${TERM} in + xterm*|rxvt*|Eterm|aterm|kterm|gnome*) + PROMPT_COMMAND=${PROMPT_COMMAND:+$PROMPT_COMMAND; }'printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/\~}"' + + ;; + screen*) + PROMPT_COMMAND=${PROMPT_COMMAND:+$PROMPT_COMMAND; }'printf "\033_%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/\~}"' + ;; +esac + +export WWW_HOME=https://f123.org + +[ -r /usr/share/bash-completion/bash_completion ] && . /usr/share/bash-completion/bash_completion diff --git a/files/files/etc/bluetooth/main.conf b/files/files/etc/bluetooth/main.conf new file mode 100644 index 0000000..ee4a1c5 --- /dev/null +++ b/files/files/etc/bluetooth/main.conf @@ -0,0 +1,107 @@ +[General] + +# Default adapter name +# Defaults to 'BlueZ X.YZ' +#Name = BlueZ + +# Default device class. Only the major and minor device class bits are +# considered. Defaults to '0x000000'. +#Class = 0x000100 + +# How long to stay in discoverable mode before going back to non-discoverable +# The value is in seconds. Default is 180, i.e. 3 minutes. +# 0 = disable timer, i.e. stay discoverable forever +#DiscoverableTimeout = 0 + +# How long to stay in pairable mode before going back to non-discoverable +# The value is in seconds. Default is 0. +# 0 = disable timer, i.e. stay pairable forever +#PairableTimeout = 0 + +# Use vendor id source (assigner), vendor, product and version information for +# DID profile support. The values are separated by ":" and assigner, VID, PID +# and version. +# Possible vendor id source values: bluetooth, usb (defaults to usb) +#DeviceID = bluetooth:1234:5678:abcd + +# Do reverse service discovery for previously unknown devices that connect to +# us. This option is really only needed for qualification since the BITE tester +# doesn't like us doing reverse SDP for some test cases (though there could in +# theory be other useful purposes for this too). Defaults to 'true'. +#ReverseServiceDiscovery = true + +# Enable name resolving after inquiry. Set it to 'false' if you don't need +# remote devices name and want shorter discovery cycle. Defaults to 'true'. +#NameResolving = true + +# Enable runtime persistency of debug link keys. Default is false which +# makes debug link keys valid only for the duration of the connection +# that they were created for. +#DebugKeys = false + +# Restricts all controllers to the specified transport. Default value +# is "dual", i.e. both BR/EDR and LE enabled (when supported by the HW). +# Possible values: "dual", "bredr", "le" +#ControllerMode = dual + +# Enables Multi Profile Specification support. This allows to specify if +# system supports only Multiple Profiles Single Device (MPSD) configuration +# or both Multiple Profiles Single Device (MPSD) and Multiple Profiles Multiple +# Devices (MPMD) configurations. +# Possible values: "off", "single", "multiple" +#MultiProfile = off + +# Permanently enables the Fast Connectable setting for adapters that +# support it. When enabled other devices can connect faster to us, +# however the tradeoff is increased power consumptions. This feature +# will fully work only on kernel version 4.1 and newer. Defaults to +# 'false'. +#FastConnectable = false + +# Default privacy setting. +# Enables use of private address. +# Possible values: "off", "device", "network" +# "network" option not supported currently +# Defaults to "off" +# Privacy = off + +[GATT] +# GATT attribute cache. +# Possible values: +# always: Always cache attributes even for devices not paired, this is +# recommended as it is best for interoperability, with more consistent +# reconnection times and enables proper tracking of notifications for all +# devices. +# yes: Only cache attributes of paired devices. +# no: Never cache attributes +# Default: always +#Cache = always + +# Minimum required Encryption Key Size for accessing secured characteristics. +# Possible values: 0 and 7-16. 0 means don't care. +# Defaults to 0 +# MinEncKeySize = 0 + +[Policy] +# +# The ReconnectUUIDs defines the set of remote services that should try +# to be reconnected to in case of a link loss (link supervision +# timeout). The policy plugin should contain a sane set of values by +# default, but this list can be overridden here. By setting the list to +# empty the reconnection feature gets disabled. +#ReconnectUUIDs=00001112-0000-1000-8000-00805f9b34fb,0000111f-0000-1000-8000-00805f9b34fb,0000110a-0000-1000-8000-00805f9b34fb + +# ReconnectAttempts define the number of attempts to reconnect after a link +# lost. Setting the value to 0 disables reconnecting feature. +#ReconnectAttempts=7 + +# ReconnectIntervals define the set of intervals in seconds to use in between +# attempts. +# If the number of attempts defined in ReconnectAttempts is bigger than the +# set of intervals the last interval is repeated until the last attempt. +#ReconnectIntervals=1,2,4,8,16,32,64 + +# AutoEnable defines option to enable all controllers when they are found. +# This includes adapters present on start as well as adapters that are plugged +# in later on. Defaults to 'false'. +AutoEnable=true diff --git a/files/files/etc/chatbot.tin b/files/files/etc/chatbot.tin new file mode 100644 index 0000000..d4c2e3a --- /dev/null +++ b/files/files/etc/chatbot.tin @@ -0,0 +1,14 @@ +#event {PROGRAM START} {#system {clear}} +#event {PROGRAM TERMINATION} {#system {clear}} + +#alias {%*} +{ +#system {curl --data-urlencode "query=%0" 198.50.174.200/bot.php} +} +{9} + +#alias {^{bye|exit|good bye}$} +{ +#end +} +{8} diff --git a/files/files/etc/dbus-1/system.d/pulse.conf b/files/files/etc/dbus-1/system.d/pulse.conf new file mode 100644 index 0000000..0f3fd61 --- /dev/null +++ b/files/files/etc/dbus-1/system.d/pulse.conf @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + diff --git a/files/files/etc/fenrirscreenreader/keyboard/nvda-desktop.conf b/files/files/etc/fenrirscreenreader/keyboard/nvda-desktop.conf new file mode 100644 index 0000000..aef762d --- /dev/null +++ b/files/files/etc/fenrirscreenreader/keyboard/nvda-desktop.conf @@ -0,0 +1,124 @@ +KEY_FENRIR,KEY_F1=toggle_tutorial_mode +KEY_FENRIR,KEY_H=toggle_tutorial_mode +KEY_CTRL=shut_up +KEY_SHIFT,KEY_KP9=review_bottom +KEY_SHIFT,KEY_KP7=review_top +KEY_KP8=review_curr_line +KEY_KP7=review_prev_line +KEY_KP9=review_next_line +KEY_SHIFT,KEY_KP1=review_line_begin +KEY_SHIFT,KEY_KP3=review_line_end +KEY_FENRIR,KEY_KP1=review_line_first_char +KEY_FENRIR,KEY_KP3=review_line_last_char +KEY_FENRIR,KEY_ALT,KEY_1=present_first_line +KEY_FENRIR,KEY_ALT,KEY_2=present_last_line +KEY_KP5=review_curr_word +KEY_KP4=review_prev_word +KEY_KP6=review_next_word +2,KEY_KP5=review_curr_word_phonetic +2,KEY_KP4=review_prev_word_phonetic +2,KEY_KP6=review_next_word_phonetic +KEY_KP2=review_curr_char +KEY_KP1=review_prev_char +KEY_KP3=review_next_char +2,KEY_KP2=review_curr_char_phonetic +2,KEY_KP1=review_prev_char_phonetic +2,KEY_KP3=review_next_char_phonetic +KEY_FENRIR,KEY_CTRL,KEY_KP8=review_up +KEY_FENRIR,KEY_CTRL,KEY_KP2=review_down +KEY_FENRIR,KEY_KPDOT=exit_review +KEY_KPDOT=cursor_position +KEY_FENRIR,KEY_I=indent_curr_line +KEY_FENRIR,KEY_B=curr_screen +KEY_FENRIR,KEY_KP8=curr_screen_before_cursor +KEY_FENRIR,KEY_KP2=curr_screen_after_cursor +KEY_FENRIR,KEY_SHIFT,KEY_PAGEDOWN=cursor_read_to_end_of_line +#=cursor_column +#=cursor_lineno +#=braille_flush +KEY_FENRIR,KEY_CTRL,KEY_T=braille_return_to_cursor +#=braille_pan_left +#=braille_pan_right +KEY_FENRIR,KEY_CTRL,KEY_1=clear_bookmark_1 +KEY_FENRIR,KEY_SHIFT,KEY_1=set_bookmark_1 +KEY_FENRIR,KEY_1=bookmark_1 +KEY_FENRIR,KEY_K=bookmark_1 +KEY_FENRIR,KEY_CTRL,KEY_2=clear_bookmark_2 +KEY_FENRIR,KEY_SHIFT,KEY_2=set_bookmark_2 +KEY_FENRIR,KEY_2=bookmark_2 +KEY_FENRIR,KEY_CTRL,KEY_3=clear_bookmark_3 +KEY_FENRIR,KEY_SHIFT,KEY_3=set_bookmark_3 +KEY_FENRIR,KEY_3=bookmark_3 +KEY_FENRIR,KEY_CTRL,KEY_4=clear_bookmark_4 +KEY_FENRIR,KEY_SHIFT,KEY_4=set_bookmark_4 +KEY_FENRIR,KEY_4=bookmark_4 +KEY_FENRIR,KEY_CTRL,KEY_6=clear_bookmark_6 +KEY_FENRIR,KEY_SHIFT,KEY_6=set_bookmark_6 +KEY_FENRIR,KEY_6=bookmark_6 +KEY_FENRIR,KEY_CTRL,KEY_7=clear_bookmark_7 +KEY_FENRIR,KEY_SHIFT,KEY_7=set_bookmark_7 +KEY_FENRIR,KEY_7=bookmark_7 +KEY_FENRIR,KEY_CTRL,KEY_8=clear_bookmark_8 +KEY_FENRIR,KEY_SHIFT,KEY_8=set_bookmark_8 +KEY_FENRIR,KEY_8=bookmark_8 +KEY_FENRIR,KEY_CTRL,KEY_9=clear_bookmark_9 +KEY_FENRIR,KEY_SHIFT,KEY_9=set_bookmark_9 +KEY_FENRIR,KEY_9=bookmark_9 +KEY_FENRIR,KEY_CTRL,KEY_0=clear_bookmark_10 +KEY_FENRIR,KEY_SHIFT,KEY_0=set_bookmark_10 +KEY_FENRIR,KEY_0=bookmark_10 +KEY_FENRIR,KEY_KPSLASH=set_window_application +2,KEY_FENRIR,KEY_KPSLASH=clear_window_application +KEY_KPPLUS=last_incoming +#=toggle_braille +KEY_FENRIR,KEY_F3=toggle_sound +KEY_FENRIR,KEY_F4=toggle_speech +KEY_KPENTER=temp_disable_speech +KEY_FENRIR,KEY_P=toggle_punctuation_level +KEY_FENRIR,KEY_RIGHTBRACE=toggle_auto_spell_check +KEY_FENRIR,KEY_S=toggle_output +KEY_FENRIR,KEY_CTRL,KEY_E=toggle_emoticons +key_FENRIR,KEY_5=toggle_auto_read +KEY_FENRIR,KEY_CTRL,KEY_T=toggle_auto_time +KEY_FENRIR,KEY_KPASTERISK=toggle_highlight_tracking +KEY_FENRIR,KEY_KPMINUS=toggle_barrier +KEY_FENRIR,KEY_Q=quit_fenrir +KEY_FENRIR,KEY_T=time +KEY_FENRIR,KEY_F12=time +2,KEY_FENRIR,KEY_T=date +2,KEY_FENRIR,KEY_F12=date +KEY_KPSLASH=toggle_auto_indent +KEY_FENRIR,KEY_F=attribute_cursor +#=toggle_has_attribute +KEY_FENRIR,KEY_F7=spell_check +2,KEY_FENRIR,KEY_S=add_word_to_spell_check +KEY_FENRIR,KEY_SHIFT,KEY_S=remove_word_from_spell_check +KEY_FENRIR,KEY_F2=forward_keypress +KEY_FENRIR,KEY_ALT,KEY_UP=inc_sound_volume +KEY_FENRIR,KEY_ALT,KEY_DOWN=dec_sound_volume +KEY_FENRIR,KEY_CTRL,KEY_SHIFT,KEY_C=clear_clipboard +KEY_FENRIR,KEY_HOME=first_clipboard +KEY_FENRIR,KEY_END=last_clipboard +KEY_FENRIR,KEY_PAGEUP=prev_clipboard +KEY_FENRIR,KEY_PAGEDOWN=next_clipboard +KEY_FENRIR,KEY_SHIFT,KEY_C=curr_clipboard +KEY_FENRIR,KEY_C=copy_marked_to_clipboard +KEY_FENRIR,KEY_CTRL,KEY_U=copy_last_echo_to_clipboard +KEY_FENRIR,KEY_V=paste_clipboard +KEY_FENRIR,KEY_F5=import_clipboard_from_file +KEY_FENRIR,KEY_F6=export_clipboard_to_file +KEY_FENRIR,KEY_CTRL,KEY_SHIFT,KEY_X=remove_marks +KEY_FENRIR,KEY_F9=set_mark +KEY_FENRIR,KEY_F10=marked_text +KEY_FENRIR,KEY_F10=toggle_vmenu_mode +KEY_FENRIR,KEY_SPACE=current_quick_menu_entry +KEY_FENRIR,KEY_CTRL,KEY_SPACE=current_quick_menu_value +KEY_FENRIR,KEY_CTRL,KEY_RIGHT=next_quick_menu_entry +KEY_FENRIR,KEY_CTRL,KEY_UP=next_quick_menu_value +KEY_FENRIR,KEY_CTRL,KEY_LEFT=prev_quick_menu_entry +KEY_FENRIR,KEY_CTRL,KEY_DOWN=prev_quick_menu_value +# linux specific +#=import_clipboard_from_x +KEY_FENRIR,KEY_F8=export_clipboard_to_x +KEY_FENRIR,KEY_ALT,KEY_UP=inc_alsa_volume +KEY_FENRIR,KEY_ALT,KEY_DOWN=dec_alsa_volume diff --git a/files/files/etc/fenrirscreenreader/keyboard/nvda-laptop.conf b/files/files/etc/fenrirscreenreader/keyboard/nvda-laptop.conf new file mode 100644 index 0000000..02f6b70 --- /dev/null +++ b/files/files/etc/fenrirscreenreader/keyboard/nvda-laptop.conf @@ -0,0 +1,124 @@ +KEY_FENRIR,KEY_F1=toggle_tutorial_mode +KEY_FENRIR,KEY_H=toggle_tutorial_mode +KEY_CTRL=shut_up +KEY_FENRIR,KEY_CTRL,KEY_END=review_bottom +KEY_FENRIR,KEY_CTRL,KEY_HOME=review_top +KEY_FENRIR,KEY_SHIFT,KEY_DOT=review_curr_line +KEY_FENRIR,KEY_U=review_prev_line +KEY_FENRIR,KEY_O=review_next_line +KEY_FENRIR,KEY_HOME=review_line_begin +KEY_FENRIR,KEY_END=review_line_end +KEY_FENRIR,KEY_CTRL,KEY_J=review_line_first_char +KEY_FENRIR,KEY_CTRL,KEY_L=review_line_last_char +KEY_FENRIR,KEY_ALT,KEY_1=present_first_line +KEY_FENRIR,KEY_ALT,KEY_2=present_last_line +KEY_FENRIR,KEY_CTRL,KEY_DOT=review_curr_word +KEY_FENRIR,KEY_J=review_prev_word +KEY_FENRIR,KEY_L=review_next_word +2,KEY_FENRIR,KEY_CTRL,KEY_DOT=review_curr_word_phonetic +2,KEY_FENRIR,KEY_J=review_prev_word_phonetic +2,KEY_FENRIR,KEY_L=review_next_word_phonetic +KEY_FENRIR,KEY_COMMA=review_curr_char +KEY_FENRIR,KEY_M=review_prev_char +KEY_FENRIR,KEY_DOT=review_next_char +2,KEY_FENRIR,KEY_COMMA=curr_char_phonetic +2,KEY_FENRIR,KEY_M=prev_char_phonetic +2,KEY_FENRIR,KEY_DOT=next_char_phonetic +KEY_FENRIR,KEY_CTRL,KEY_I=review_up +KEY_FENRIR,KEY_CTRL,KEY_COMMA=review_down +KEY_FENRIR,KEY_SLASH=exit_review +KEY_FENRIR,KEY_SHIFT,KEY_DOT=cursor_position +2,KEY_FENRIR,KEY_I=indent_curr_line +KEY_FENRIR,KEY_B=curr_screen +KEY_FENRIR,KEY_SHIFT,KEY_I=curr_screen_before_cursor +KEY_FENRIR,KEY_SHIFT,KEY_COMMA=curr_screen_after_cursor +KEY_FENRIR,KEY_SHIFT,KEY_PAGEDOWN=cursor_read_to_end_of_line +#=cursor_column +#=cursor_lineno +#=braille_flush +KEY_FENRIR,KEY_CTRL,KEY_T=braille_return_to_cursor +#=braille_pan_left +#=braille_pan_right +KEY_FENRIR,KEY_CTRL,KEY_1=clear_bookmark_1 +KEY_FENRIR,KEY_SHIFT,KEY_1=set_bookmark_1 +KEY_FENRIR,KEY_1=bookmark_1 +KEY_FENRIR,KEY_K=bookmark_1 +KEY_FENRIR,KEY_CTRL,KEY_2=clear_bookmark_2 +KEY_FENRIR,KEY_SHIFT,KEY_2=set_bookmark_2 +KEY_FENRIR,KEY_2=bookmark_2 +KEY_FENRIR,KEY_CTRL,KEY_3=clear_bookmark_3 +KEY_FENRIR,KEY_SHIFT,KEY_3=set_bookmark_3 +KEY_FENRIR,KEY_3=bookmark_3 +KEY_FENRIR,KEY_CTRL,KEY_4=clear_bookmark_4 +KEY_FENRIR,KEY_SHIFT,KEY_4=set_bookmark_4 +KEY_FENRIR,KEY_4=bookmark_4 +KEY_FENRIR,KEY_CTRL,KEY_6=clear_bookmark_6 +KEY_FENRIR,KEY_SHIFT,KEY_6=set_bookmark_6 +KEY_FENRIR,KEY_6=bookmark_6 +KEY_FENRIR,KEY_CTRL,KEY_7=clear_bookmark_7 +KEY_FENRIR,KEY_SHIFT,KEY_7=set_bookmark_7 +KEY_FENRIR,KEY_7=bookmark_7 +KEY_FENRIR,KEY_CTRL,KEY_8=clear_bookmark_8 +KEY_FENRIR,KEY_SHIFT,KEY_8=set_bookmark_8 +KEY_FENRIR,KEY_8=bookmark_8 +KEY_FENRIR,KEY_CTRL,KEY_9=clear_bookmark_9 +KEY_FENRIR,KEY_SHIFT,KEY_9=set_bookmark_9 +KEY_FENRIR,KEY_9=bookmark_9 +KEY_FENRIR,KEY_CTRL,KEY_0=clear_bookmark_10 +KEY_FENRIR,KEY_SHIFT,KEY_0=set_bookmark_10 +KEY_FENRIR,KEY_0=bookmark_10 +KEY_FENRIR,KEY_CTRL,KEY_8=set_window_application +2,KEY_FENRIR,KEY_CTRL,KEY_8=clear_window_application +KEY_FENRIR,KEY_SEMICOLON=last_incoming +#=toggle_braille +KEY_FENRIR,KEY_F3=toggle_sound +KEY_FENRIR,KEY_F4=toggle_speech +KEY_FENRIR,KEY_ENTER=temp_disable_speech +KEY_FENRIR,KEY_P=toggle_punctuation_level +KEY_FENRIR,KEY_RIGHTBRACE=toggle_auto_spell_check +KEY_FENRIR,KEY_S=toggle_output +KEY_FENRIR,KEY_SHIFT,KEY_E=toggle_emoticons +KEY_FENRIR,KEY_5=toggle_auto_read +KEY_FENRIR,KEY_CTRL,KEY_T=toggle_auto_time +KEY_FENRIR,KEY_Y=toggle_highlight_tracking +#=toggle_barrier +KEY_FENRIR,KEY_Q=quit_fenrir +KEY_FENRIR,KEY_T=time +KEY_FENRIR,KEY_F12=time +2,KEY_FENRIR,KEY_T=date +2,KEY_FENRIR,KEY_F12=date +KEY_FENRIR,KEY_BACKSLASH=toggle_auto_indent +KEY_FENRIR,KEY_F=attribute_cursor +#=toggle_has_attribute +KEY_FENRIR,KEY_F7=spell_check +2,KEY_FENRIR,KEY_S=add_word_to_spell_check +KEY_FENRIR,KEY_SHIFT,KEY_S=remove_word_from_spell_check +KEY_FENRIR,KEY_F2=forward_keypress +KEY_FENRIR,KEY_ALT,KEY_UP=inc_sound_volume +KEY_FENRIR,KEY_ALT,KEY_DOWN=dec_sound_volume +KEY_FENRIR,KEY_CTRL,KEY_SHIFT,KEY_C=clear_clipboard +#=first_clipboard +#=last_clipboard +KEY_FENRIR,KEY_PAGEUP=prev_clipboard +KEY_FENRIR,KEY_PAGEDOWN=next_clipboard +KEY_FENRIR,KEY_SHIFT,KEY_C=curr_clipboard +KEY_FENRIR,KEY_C=copy_marked_to_clipboard +KEY_FENRIR,KEY_CTRL,KEY_U=copy_last_echo_to_clipboard +KEY_FENRIR,KEY_V=paste_clipboard +KEY_FENRIR,KEY_F5=import_clipboard_from_file +KEY_FENRIR,KEY_F6=export_clipboard_to_file +KEY_FENRIR,KEY_CTRL,KEY_SHIFT,KEY_X=remove_marks +KEY_FENRIR,KEY_F9=set_mark +KEY_FENRIR,KEY_F10=marked_text +KEY_FENRIR,KEY_SHIFT,KEY_F10=toggle_vmenu_mode +KEY_FENRIR,KEY_SPACE=current_quick_menu_entry +KEY_FENRIR,KEY_CTRL,KEY_SPACE=current_quick_menu_value +KEY_FENRIR,KEY_CTRL,KEY_RIGHT=next_quick_menu_entry +KEY_FENRIR,KEY_CTRL,KEY_UP=next_quick_menu_value +KEY_FENRIR,KEY_CTRL,KEY_LEFT=prev_quick_menu_entry +KEY_FENRIR,KEY_CTRL,KEY_DOWN=prev_quick_menu_value +# linux specific +#=import_clipboard_from_x +KEY_FENRIR,KEY_F8=export_clipboard_to_x +KEY_FENRIR,KEY_ALT,KEY_UP=inc_alsa_volume +KEY_FENRIR,KEY_ALT,KEY_DOWN=dec_alsa_volume diff --git a/files/files/etc/fenrirscreenreader/punctuation/default.conf b/files/files/etc/fenrirscreenreader/punctuation/default.conf new file mode 100644 index 0000000..d4121f3 --- /dev/null +++ b/files/files/etc/fenrirscreenreader/punctuation/default.conf @@ -0,0 +1,56 @@ +# how to use this file? +# the # on the beginning of the line is a comment +# the different sections are seperated by [Dict] is the section name. Dict is a keyword +# the entrys are seperated with :===: in words colon tripple equal colon ( to not collide with substitutions) +[levelDict] +none:===: +some:===:-$~+*-/\@ +most:===:.,:-$~+*-/\@!#%^&*()[]}{<>; +all:===:!"#$%& \'()*+,-./:;<=>?@[\\]^_`{|}~ + +[punctDict] + :===:space +&:===:and +':===:apostrophe +@:===:at +\:===:backslash +|:===:bar +!:===:bang +^:===:carrot +::===:colon +,:===:comma +-:===:dash +$:===:dollar +.:===:dot +>:===:greater +`:===:grave +#:===:hash +{:===:left brace +[:===:left bracket +(:===:left paren +<:===:less +%:===:percent ++:===:plus +?:===:question? +":===:quote +):===:right paren +}:===:right brace +]:===:right bracket +;:===:semicolon +/:===:slash +*:===:star +~:===:tilde +_:===:line +=:===:equals + +[customDict] +f123:===:F One Two Three +F123:===:F One Two Three + +[emoticonDict] +:):===:smile +;):===:wink +XD:===:LOL +:D:===:laugh +<{-.-}>:===:Raves +\o/:===:Hurray diff --git a/files/files/etc/fenrirscreenreader/punctuation/pt.conf b/files/files/etc/fenrirscreenreader/punctuation/pt.conf new file mode 100644 index 0000000..13de713 --- /dev/null +++ b/files/files/etc/fenrirscreenreader/punctuation/pt.conf @@ -0,0 +1,54 @@ +# how to use this file? +# the # on the beginning of the line is a comment +# the different sections are seperated by [Dict] is the section name. Dict is a keyword +# the entrys are seperated with :===: in words colon tripple equal colon ( to not collide with substitutions) +[levelDict] +none:===: +some:===:-$~+*-/\@ +most:===:.,:-$~+*-/\@!#%^&*()[]}{<>; +all:===:!"#$%& \'()*+,-./:;<=>?@[\\]^_`{|}~ + +[punctDict] + :===:espaço +&:===:êh +':===:apóstrofo +@:===:arroba +\:===:barra invertida +|:===:barra vertical +!:===:exclamação +^:===:circunflexo +::===:dois pontos +,:===:vírgula +-:===:hífen +$:===:cifrão +.:===:ponto +>:===:maior +`:===:grave +#:===:número +{:===:abre chave +[:===:abre colchete +(:===:abre parêntese +<:===:menor +%:===:porcento ++:===:mais +?:===:interrogação +":===:aspas +):===:fecha parêntese +}:===:fecha chave +]:===:fecha colchete +;:===:ponto e vírgula +/:===:barra +*:===:asterisco +~:===:til +_:===:sublinha +=:===:igual + +[customDict] + +[emoticonDict] +:):===:sorriso +;):===:piscadela +XD:===:risada +:D:===:risos +<{-.-}>:===:delírio +\o/:===:oba diff --git a/files/files/etc/fenrirscreenreader/settings/settings.conf b/files/files/etc/fenrirscreenreader/settings/settings.conf new file mode 100644 index 0000000..8f66855 --- /dev/null +++ b/files/files/etc/fenrirscreenreader/settings/settings.conf @@ -0,0 +1,193 @@ +[sound] +enabled=True +driver=genericDriver +theme=default +volume=1.0 +# shell commands for generic sound driver +genericPlayFileCommand=play -q -v fenrirVolume fenrirSoundFile +genericFrequencyCommand=play -q -v fenrirVolume -n -c1 synth fenrirDuration sine fenrirFrequence + +[speech] +enabled=True +driver=speechdDriver +#driver=genericDriver +serverPath= +rate=0.50 +pitch=0.5 +# Pitch for capital letters +capitalPitch=0.9 +#module=espeak +voice=bdl +#language=en +volume=1.0 +autoReadIncoming=True + +# genericSpeechCommand is the command that is executed for talking +# the following variables are replaced with values +# fenrirText = is the text that should be spoken +# fenrirModule = may be the speech module like used in speech-dispatcher, not every TTY need this +# fenrirLanguage = the language +# fenrirVoice = is the current voice that should be used +# the current volume, pitch and rate is calculated like this +# value = min + settingValue * (min - max ) +# fenrirVolume = is replaced with the current volume +# fenrirPitch = is replaced with the current pitch +# fenrirRate = is replaced with the current speed (speech rate) +genericSpeechCommand=espeak -a fenrirVolume -s fenrirRate -p fenrirPitch -v fenrirVoice -- "fenrirText" + +# these are the min and max values of the TTS system that is used in genericSpeechCommand +fenrirMinVolume=0 +fenrirMaxVolume=200 +fenrirMinPitch=0 +fenrirMaxPitch=99 +fenrirMinRate=80 +fenrirMaxRate=890 + +[braille] +enabled=False +driver=dummyDriver +layout=en +# to what should the flush timeout relate to +# word = flush after (number of words to display) * seconds +# char = flush after (number of chars to display) * seconds +# fix = flush after X seconds +# none = no automatic flush (manual via shortcut) +flushMode=word +# seconds to flush or +# -1 = no automatic flush (manual via shortcut) +flushTimeout=3 +# how should the cursor be focused? +# page = if cursor cross the border move to next page and start at beginn +# fixCell = ajust the cursor on an special cell where it is always placed. the display scroll here more smooth. +cursorFocusMode=page +# define the cell on the Braille device where fenrir should scroll and keep the cursor +# 0 = first cell on device +# -1 = last cell on device +# >0 = fix cell number +fixCursorOnCell=-1 +#How should the braille follow the focus +# none = no automatic toggle command used +# review = priority to review +# last = follow last used cursor +cursorFollowMode=review +# number of cells in panning (horizontal) +# 0 = display size, >0 number of cells +panSizeHorizontal=0 + +[screen] +driver=vcsaDriver +encoding=auto +screenUpdateDelay=0.05 +suspendingScreen=2 +autodetectSuspendingScreen=False + +[keyboard] +driver=evdevDriver +# filter input devices NOMICE, ALL or a DEVICE NAME +device=ALL +grabDevices=True +ignoreShortcuts=False +keyboardLayout=nvda-desktop +charEcho=True +charDeleteEcho=True +wordEcho=True +interruptOnKeyPress=True +# you can filter the keys on that the speech should interrupt (empty = all keys, otherwhise the given keys) +interruptOnKeyPressFilter= +# timeout for double tap in sec +doubleTapTimeout=0.2 + +[general] +debugLevel=1 +# debugMode sets where the debug output should send to: +# debugMode=File writes to debugFile (Default: /var/log/fenrirscreenreader/fenrir.log) +# debugMode=Print just prints on the screen +debugMode=File +debugFile=/var/log/fenrirscreenreader/fenrir.log +punctuationProfile=default +punctuationLevel=some +respectPunctuationPause=True +newLinePause=True +numberOfClipboards=10 +# used path for "export_clipboard_to_file" +# $user is replaced by username +clipboardExportPath=/tmp/fenrirClipboard +emoticons=True +fenrirKeys=KEY_KP0,KEY_CAPSLOCK +scriptKeys=KEY_META,KEY_COMPOSE +timeFormat=%H:%M:%P +dateFormat="%A, %B %d, %Y" +autoSpellCheck=True +spellCheckLanguage=en_US +scriptPath=/usr/share/fenrirscreenreader/scripts +# overload commands, and create new one without changing Fenrir default +commandPath= +#fenrirBGColor = the backgroundcolor +#fenrirFGColor = the foregroundcolor +#fenrirUnderline = speak the underline attribute +#fenrirBold = speak the bold attribute +#fenrirBlink = speak the blink attribute +#fenrirFont = the font +#fenrirFontSize = the fontsize +attributeFormatString=Background fenrirBGColor,Foreground fenrirFGColor,fenrirUnderline,fenrirBold,fenrirBlink, Font fenrirFont,Fontsize fenrirFontSize +autoPresentIndent=False +# play a sound when attributes are changeing +hasAttributes=False +# shell for PTY emulatiun (empty = default shell) +shell= + +[focus] +#follow the text cursor +cursor=True +#follow highlighted text changes +highlight=False + +[remote] +enable=True +# connection type +# unix = unix sockets +# tcp = tcp (localhost only) +method=unix +# tcp port +port=22447 +# socket filepath +socketpath=/tmp/ +# allow settings to overwrite +enableSettingsRemote=True +# allow commands to be executed +enableCommandRemote=True + +[barrier] +enabled=True +leftBarriers=│└┌─ +rightBarriers=│┘┐─ + +[review] +lineBreak=True +endOfScreen=True +# leave the review when pressing a key +leaveReviewOnCursorChange=True +# leave the review when changing the screen +leaveReviewOnScreenChange=True + +[promote] +enabled=True +inactiveTimeoutSec=120 +list= + +[time] +# automatic time anouncement +enabled=False +# present time +presentTime=True +# present date (on change) +presentDate=True +# present time after x seconds +delaySec=0 +# present time after to given minutes example every 15 minutes: 00,15,30,45 +# if delaySec is >0 onMinutes is ignored +onMinutes=00,30 +# announce via soundicon +announce=True +# interrupt current speech for time announcement +interrupt=False diff --git a/files/files/etc/fenrirscreenreader/settings/xterm.conf b/files/files/etc/fenrirscreenreader/settings/xterm.conf new file mode 100644 index 0000000..bc814bb --- /dev/null +++ b/files/files/etc/fenrirscreenreader/settings/xterm.conf @@ -0,0 +1,193 @@ +[sound] +enabled=True +driver=genericDriver +theme=default +volume=1.0 +# shell commands for generic sound driver +genericPlayFileCommand=play -q -v fenrirVolume fenrirSoundFile +genericFrequencyCommand=play -q -v fenrirVolume -n -c1 synth fenrirDuration sine fenrirFrequence + +[speech] +enabled=True +driver=speechdDriver +#driver=genericDriver +serverPath= +rate=0.50 +pitch=0.5 +# Pitch for capital letters +capitalPitch=0.9 +#module=espeak +voice=bdl +#language=en +volume=1.0 +autoReadIncoming=True + +# genericSpeechCommand is the command that is executed for talking +# the following variables are replaced with values +# fenrirText = is the text that should be spoken +# fenrirModule = may be the speech module like used in speech-dispatcher, not every TTY need this +# fenrirLanguage = the language +# fenrirVoice = is the current voice that should be used +# the current volume, pitch and rate is calculated like this +# value = min + settingValue * (min - max ) +# fenrirVolume = is replaced with the current volume +# fenrirPitch = is replaced with the current pitch +# fenrirRate = is replaced with the current speed (speech rate) +genericSpeechCommand=espeak -a fenrirVolume -s fenrirRate -p fenrirPitch -v fenrirVoice -- "fenrirText" + +# these are the min and max values of the TTS system that is used in genericSpeechCommand +fenrirMinVolume=0 +fenrirMaxVolume=200 +fenrirMinPitch=0 +fenrirMaxPitch=99 +fenrirMinRate=80 +fenrirMaxRate=890 + +[braille] +enabled=False +driver=dummyDriver +layout=en +# to what should the flush timeout relate to +# word = flush after (number of words to display) * seconds +# char = flush after (number of chars to display) * seconds +# fix = flush after X seconds +# none = no automatic flush (manual via shortcut) +flushMode=word +# seconds to flush or +# -1 = no automatic flush (manual via shortcut) +flushTimeout=3 +# how should the cursor be focused? +# page = if cursor cross the border move to next page and start at beginn +# fixCell = ajust the cursor on an special cell where it is always placed. the display scroll here more smooth. +cursorFocusMode=page +# define the cell on the Braille device where fenrir should scroll and keep the cursor +# 0 = first cell on device +# -1 = last cell on device +# >0 = fix cell number +fixCursorOnCell=-1 +#How should the braille follow the focus +# none = no automatic toggle command used +# review = priority to review +# last = follow last used cursor +cursorFollowMode=review +# number of cells in panning (horizontal) +# 0 = display size, >0 number of cells +panSizeHorizontal=0 + +[screen] +driver=ptyDriver +encoding=auto +screenUpdateDelay=0.05 +suspendingScreen=1 +autodetectSuspendingScreen=False + +[keyboard] +driver=evdevDriver +# filter input devices NOMICE, ALL or a DEVICE NAME +device=ALL +grabDevices=True +ignoreShortcuts=False +keyboardLayout=nvda-desktop +charEcho=True +charDeleteEcho=True +wordEcho=True +interruptOnKeyPress=True +# you can filter the keys on that the speech should interrupt (empty = all keys, otherwhise the given keys) +interruptOnKeyPressFilter= +# timeout for double tap in sec +doubleTapTimeout=0.2 + +[general] +debugLevel=1 +# debugMode sets where the debug output should send to: +# debugMode=File writes to debugFile (Default: /var/log/fenrirscreenreader/fenrir.log) +# debugMode=Print just prints on the screen +debugMode=File +debugFile=/var/log/fenrirscreenreader/fenrir.log +punctuationProfile=default +punctuationLevel=some +respectPunctuationPause=True +newLinePause=True +numberOfClipboards=10 +# used path for "export_clipboard_to_file" +# $user is replaced by username +clipboardExportPath=/tmp/fenrirClipboard +emoticons=True +fenrirKeys=KEY_KP0,KEY_CAPSLOCK +scriptKeys=KEY_META,KEY_COMPOSE +timeFormat=%H:%M:%P +dateFormat="%A, %B %d, %Y" +autoSpellCheck=True +spellCheckLanguage=en_US +scriptPath=/usr/share/fenrirscreenreader/scripts +# overload commands, and create new one without changing Fenrir default +commandPath= +#fenrirBGColor = the backgroundcolor +#fenrirFGColor = the foregroundcolor +#fenrirUnderline = speak the underline attribute +#fenrirBold = speak the bold attribute +#fenrirBlink = speak the blink attribute +#fenrirFont = the font +#fenrirFontSize = the fontsize +attributeFormatString=Background fenrirBGColor,Foreground fenrirFGColor,fenrirUnderline,fenrirBold,fenrirBlink, Font fenrirFont,Fontsize fenrirFontSize +autoPresentIndent=False +# play a sound when attributes are changeing +hasAttributes=False +# shell for PTY emulatiun (empty = default shell) +shell= + +[focus] +#follow the text cursor +cursor=True +#follow highlighted text changes +highlight=False + +[remote] +enable=True +# connection type +# unix = unix sockets +# tcp = tcp (localhost only) +method=unix +# tcp port +port=22447 +# socket filepath +socketpath=/tmp/ +# allow settings to overwrite +enableSettingsRemote=True +# allow commands to be executed +enableCommandRemote=True + +[barrier] +enabled=True +leftBarriers=│└┌─ +rightBarriers=│┘┐─ + +[review] +lineBreak=True +endOfScreen=True +# leave the review when pressing a key +leaveReviewOnCursorChange=True +# leave the review when changing the screen +leaveReviewOnScreenChange=True + +[promote] +enabled=True +inactiveTimeoutSec=120 +list= + +[time] +# automatic time anouncement +enabled=False +# present time +presentTime=True +# present date (on change) +presentDate=True +# present time after x seconds +delaySec=0 +# present time after to given minutes example every 15 minutes: 00,15,30,45 +# if delaySec is >0 onMinutes is ignored +onMinutes=00,30 +# announce via soundicon +announce=True +# interrupt current speech for time announcement +interrupt=False diff --git a/files/files/etc/i3/config b/files/files/etc/i3/config new file mode 100644 index 0000000..483694c --- /dev/null +++ b/files/files/etc/i3/config @@ -0,0 +1,179 @@ +# i3 config file (v4) +# +# Please see https://i3wm.org/docs/userguide.html for a complete reference! +# +# This config file uses keycodes (bindsym) and was written for the QWERTY +# layout. +# +# To get a config file with the same key positions, but for your current +# layout, use the i3-config-wizard +# + +# Font for window titles. Will also be used by the bar unless a different font +# is used in the bar {} block below. +font pango:monospace 8 + +# This font is widely installed, provides lots of unicode glyphs, right-to-left +# text rendering and scalability on retina/hidpi displays (thanks to pango). +#font pango:DejaVu Sans Mono 8 + +# Before i3 v4.8, we used to recommend this one as the default: +# font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1 +# The font above is very space-efficient, that is, it looks good, sharp and +# clear in small sizes. However, its unicode glyph coverage is limited, the old +# X core fonts rendering does not support right-to-left and this being a bitmap +# font, it doesn’t scale on retina/hidpi displays. + +# use these keys for focus, movement, and resize directions when reaching for +# the arrows is not convenient +set $up l +set $down k +set $left j +set $right semicolon + +# use Mouse+Mod1 to drag floating windows to their wanted position +floating_modifier Mod1 + +# start a terminal +bindsym Mod1+Return exec i3-sensible-terminal + +# kill focused window +bindsym Mod1+Shift+q kill + +# start dmenu (a program launcher) +bindsym Mod1+d exec dmenu_run +# There also is the (new) i3-dmenu-desktop which only displays applications +# shipping a .desktop file. It is a wrapper around dmenu, so you need that +# installed. +# bindsym Mod1+d exec --no-startup-id i3-dmenu-desktop + +# change focus +bindsym Mod1+$left focus left +bindsym Mod1+$down focus down +bindsym Mod1+$up focus up +bindsym Mod1+$right focus right + +# alternatively, you can use the cursor keys: +bindsym Mod1+Left focus left +bindsym Mod1+Down focus down +bindsym Mod1+Up focus up +bindsym Mod1+Right focus right + +# move focused window +bindsym Mod1+Shift+$left move left +bindsym Mod1+Shift+$down move down +bindsym Mod1+Shift+$up move up +bindsym Mod1+Shift+$right move right + +# alternatively, you can use the cursor keys: +bindsym Mod1+Shift+Left move left +bindsym Mod1+Shift+Down move down +bindsym Mod1+Shift+Up move up +bindsym Mod1+Shift+Right move right + +# split in horizontal orientation +bindsym Mod1+h split h + +# split in vertical orientation +bindsym Mod1+v split v + +# enter fullscreen mode for the focused container +bindsym Mod1+f fullscreen toggle + +# change container layout (stacked, tabbed, toggle split) +bindsym Mod1+s layout stacking +bindsym Mod1+w layout tabbed +bindsym Mod1+e layout toggle split + +# toggle tiling / floating +bindsym Mod1+Shift+space floating toggle + +# change focus between tiling / floating windows +bindsym Mod1+space focus mode_toggle + +# focus the parent container +bindsym Mod1+a focus parent + +# focus the child container +#bindsym Mod1+d focus child + +# move the currently focused window to the scratchpad +bindsym Mod1+Shift+minus move scratchpad + +# Show the next scratchpad window or hide the focused scratchpad window. +# If there are multiple scratchpad windows, this command cycles through them. +bindsym Mod1+minus scratchpad show + +# switch to workspace +bindsym Mod1+1 workspace 1 +bindsym Mod1+2 workspace 2 +bindsym Mod1+3 workspace 3 +bindsym Mod1+4 workspace 4 +bindsym Mod1+5 workspace 5 +bindsym Mod1+6 workspace 6 +bindsym Mod1+7 workspace 7 +bindsym Mod1+8 workspace 8 +bindsym Mod1+9 workspace 9 +bindsym Mod1+0 workspace 10 + +# move focused container to workspace +bindsym Mod1+Shift+1 move container to workspace 1 +bindsym Mod1+Shift+2 move container to workspace 2 +bindsym Mod1+Shift+3 move container to workspace 3 +bindsym Mod1+Shift+4 move container to workspace 4 +bindsym Mod1+Shift+5 move container to workspace 5 +bindsym Mod1+Shift+6 move container to workspace 6 +bindsym Mod1+Shift+7 move container to workspace 7 +bindsym Mod1+Shift+8 move container to workspace 8 +bindsym Mod1+Shift+9 move container to workspace 9 +bindsym Mod1+Shift+0 move container to workspace 10 + +# reload the configuration file +bindsym Mod1+Shift+c reload +# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) +bindsym Mod1+Shift+r restart +# exit i3 (logs you out of your X session) +bindsym Mod1+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'" + +# resize window (you can also use the mouse for that) +mode "resize" { + # These bindings trigger as soon as you enter the resize mode + + # Pressing left will shrink the window’s width. + # Pressing right will grow the window’s width. + # Pressing up will shrink the window’s height. + # Pressing down will grow the window’s height. + bindsym $left resize shrink width 10 px or 10 ppt + bindsym $down resize grow height 10 px or 10 ppt + bindsym $up resize shrink height 10 px or 10 ppt + bindsym $right resize grow width 10 px or 10 ppt + + # same bindings, but for the arrow keys + bindsym Left resize shrink width 10 px or 10 ppt + bindsym Down resize grow height 10 px or 10 ppt + bindsym Up resize shrink height 10 px or 10 ppt + bindsym Right resize grow width 10 px or 10 ppt + + # back to normal: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" +} + +bindsym Mod1+r mode "resize" + +# Start i3bar to display a workspace bar (plus the system information i3status +# finds out, if available) +bar { + status_command i3status +} + +####################################################################### +# automatically start i3-config-wizard to offer the user to create a +# keysym-based config which used their favorite modifier (alt or windows) +# +# i3-config-wizard will not launch if there already is a config file +# in ~/.i3/config. +# +# Please remove the following exec line: +####################################################################### +exec i3-config-wizard diff --git a/files/files/etc/i3/config.keycodes b/files/files/etc/i3/config.keycodes new file mode 100644 index 0000000..6d10fad --- /dev/null +++ b/files/files/etc/i3/config.keycodes @@ -0,0 +1,155 @@ +# WARNING +# WARNING: This configuration file is a template for the i3-config-wizard to +# WARNING: generate a config which uses keysyms in your current layout. It does +# WARNING: not get loaded by i3. Please do not change it. +# WARNING + +# i3 config file (v4) +# +# Please see https://i3wm.org/docs/userguide.html for a complete reference! + +set $mod Mod1 + +# Font for window titles. Will also be used by the bar unless a different font +# is used in the bar {} block below. +font pango:monospace 8 + +# This font is widely installed, provides lots of unicode glyphs, right-to-left +# text rendering and scalability on retina/hidpi displays (thanks to pango). +#font pango:DejaVu Sans Mono 8 + +# Before i3 v4.8, we used to recommend this one as the default: +# font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1 +# The font above is very space-efficient, that is, it looks good, sharp and +# clear in small sizes. However, its unicode glyph coverage is limited, the old +# X core fonts rendering does not support right-to-left and this being a bitmap +# font, it doesn’t scale on retina/hidpi displays. + +# Use Mouse+$mod to drag floating windows to their wanted position +floating_modifier $mod + +# start a terminal +bindcode $mod+36 exec i3-sensible-terminal + +# kill focused window +bindcode $mod+Shift+24 kill + +# start dmenu (a program launcher) +bindcode $mod+40 exec dmenu_run +# There also is the (new) i3-dmenu-desktop which only displays applications +# shipping a .desktop file. It is a wrapper around dmenu, so you need that +# installed. +# bindsym $mod+d exec --no-startup-id i3-dmenu-desktop + +# change focus +bindcode $mod+44 focus left +bindcode $mod+45 focus down +bindcode $mod+46 focus up +bindcode $mod+47 focus right + +# alternatively, you can use the cursor keys: +bindcode $mod+113 focus left +bindcode $mod+116 focus down +bindcode $mod+111 focus up +bindcode $mod+114 focus right + +# move focused window +bindcode $mod+Shift+44 move left +bindcode $mod+Shift+45 move down +bindcode $mod+Shift+46 move up +bindcode $mod+Shift+47 move right + +# alternatively, you can use the cursor keys: +bindcode $mod+Shift+113 move left +bindcode $mod+Shift+116 move down +bindcode $mod+Shift+111 move up +bindcode $mod+Shift+114 move right + +# split in horizontal orientation +bindcode $mod+43 split h + +# split in vertical orientation +bindcode $mod+55 split v + +# enter fullscreen mode for the focused container +bindcode $mod+41 fullscreen toggle + +# change container layout (stacked, tabbed, toggle split) +bindcode $mod+39 layout stacking +bindcode $mod+25 layout tabbed +bindcode $mod+26 layout toggle split + +# toggle tiling / floating +bindcode $mod+Shift+65 floating toggle + +# change focus between tiling / floating windows +bindcode $mod+65 focus mode_toggle + +# focus the parent container +bindcode $mod+38 focus parent + +# focus the child container +#bindsym $mod+d focus child + +# switch to workspace +bindcode $mod+10 workspace 1 +bindcode $mod+11 workspace 2 +bindcode $mod+12 workspace 3 +bindcode $mod+13 workspace 4 +bindcode $mod+14 workspace 5 +bindcode $mod+15 workspace 6 +bindcode $mod+16 workspace 7 +bindcode $mod+17 workspace 8 +bindcode $mod+18 workspace 9 +bindcode $mod+19 workspace 10 + +# move focused container to workspace +bindcode $mod+Shift+10 move container to workspace 1 +bindcode $mod+Shift+11 move container to workspace 2 +bindcode $mod+Shift+12 move container to workspace 3 +bindcode $mod+Shift+13 move container to workspace 4 +bindcode $mod+Shift+14 move container to workspace 5 +bindcode $mod+Shift+15 move container to workspace 6 +bindcode $mod+Shift+16 move container to workspace 7 +bindcode $mod+Shift+17 move container to workspace 8 +bindcode $mod+Shift+18 move container to workspace 9 +bindcode $mod+Shift+19 move container to workspace 10 + +# reload the configuration file +bindcode $mod+Shift+54 reload +# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) +bindcode $mod+Shift+27 restart +# exit i3 (logs you out of your X session) +bindcode $mod+Shift+26 exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'" + +# resize window (you can also use the mouse for that) +mode "resize" { + # These bindings trigger as soon as you enter the resize mode + + # Pressing left will shrink the window’s width. + # Pressing right will grow the window’s width. + # Pressing up will shrink the window’s height. + # Pressing down will grow the window’s height. + bindcode 44 resize shrink width 10 px or 10 ppt + bindcode 45 resize grow height 10 px or 10 ppt + bindcode 46 resize shrink height 10 px or 10 ppt + bindcode 47 resize grow width 10 px or 10 ppt + + # same bindings, but for the arrow keys + bindcode 113 resize shrink width 10 px or 10 ppt + bindcode 116 resize grow height 10 px or 10 ppt + bindcode 111 resize shrink height 10 px or 10 ppt + bindcode 114 resize grow width 10 px or 10 ppt + + # back to normal: Enter or Escape + bindcode 36 mode "default" + bindcode 9 mode "default" +} + +bindcode $mod+27 mode "resize" + +# Start i3bar to display a workspace bar (plus the system information i3status +# finds out, if available) +bar { + status_command i3status +} diff --git a/files/files/etc/issue b/files/files/etc/issue new file mode 100644 index 0000000..67c53c1 --- /dev/null +++ b/files/files/etc/issue @@ -0,0 +1,2 @@ +F123Light \r (\l) + diff --git a/files/files/etc/libao.conf b/files/files/etc/libao.conf new file mode 100644 index 0000000..25ede45 --- /dev/null +++ b/files/files/etc/libao.conf @@ -0,0 +1 @@ +default_driver=pulse diff --git a/files/files/etc/lxdm/Xsession b/files/files/etc/lxdm/Xsession new file mode 100755 index 0000000..708249b --- /dev/null +++ b/files/files/etc/lxdm/Xsession @@ -0,0 +1,73 @@ +#!/bin/sh +# +# LXDM wrapper to run around X sessions. + +echo "Running X session wrapper" + + +if [ $# -eq 1 -a -n "$1" ]; then + LXSESSION=$1 +else +# default session + LXSESSION=/usr/bin/mate-session +fi + +# Load profile +for file in "/etc/profile" "$HOME/.profile" "/etc/xprofile" "$HOME/.xprofile"; do + if [ -f "$file" ]; then + echo "Loading profile from $file"; + . "$file" + fi +done + +# Load resources +for file in "/etc/X11/Xresources" "$HOME/.Xresources"; do + if [ -f "$file" ]; then + echo "Loading resource: $file" + xrdb -merge "$file" + fi +done + +# Load keymaps +for file in "/etc/X11/Xkbmap" "$HOME/.Xkbmap"; do + if [ -f "$file" ]; then + echo "Loading keymap: $file" + setxkbmap `cat "$file"` + XKB_IN_USE=yes + fi +done + +# Load xmodmap if not using XKB +if [ -z "$XKB_IN_USE" ]; then + for file in "/etc/X11/Xmodmap" "$HOME/.Xmodmap"; do + if [ -f "$file" ]; then + echo "Loading modmap: $file" + xmodmap "$file" + fi + done +fi + +unset XKB_IN_USE + +# Run all system xinitrc shell scripts +xinitdir="/etc/X11/xinit/xinitrc.d" +if [ -d "$xinitdir" ]; then + for script in $xinitdir/*; do + echo "Loading xinit script $script" + if [ -x "$script" -a ! -d "$script" ]; then + . "$script" + fi + done +fi + +# Run user xsession shell script +script="$HOME/.xsession" +if [ -x "$script" -a ! -d "$script" ]; then + echo "Loading xsession script $script" + . "$script" +fi + +echo "X session wrapper complete, running session $LXSESSION" + + +exec $LXSESSION diff --git a/files/files/etc/lxdm/lxdm.conf b/files/files/etc/lxdm/lxdm.conf new file mode 100644 index 0000000..e7a1b6e --- /dev/null +++ b/files/files/etc/lxdm/lxdm.conf @@ -0,0 +1,62 @@ +[base] +## uncomment and set autologin username to enable autologin +autologin=f123 + +## uncomment and set timeout to enable timeout autologin, +## the value should >=5 +# timeout=10 + +## default session or desktop used when no systemwide config + session=/usr/bin/mate-session + +## uncomment and set to set numlock on your keyboard +# numlock=0 + +## set this if you don't want to put xauth file at ~/.Xauthority +# xauth_path=/tmp + +# not ask password for users who have empty password +# skip_password=1 + +## greeter used to welcome the user +greeter=/usr/lib/lxdm/lxdm-greeter-gtk + +[server] +## arg used to start xserver, not fully function +arg=/usr/bin/X -background vt1 +# uncomment this if you really want xserver listen to tcp +# tcp_listen=1 +# uncoment this if you want reset the xserver after logou +# reset=1 + +[display] +## gtk theme used by greeter +gtk_theme=Adwaita + +## background of the greeter +# bg=/usr/share/backgrounds/default.png + +## if show bottom pane +bottom_pane=1 + +## if show language select control +lang=1 + +## if show keyboard layout select control +keyboard=0 + +## the theme of greeter +theme=Industrial + +[input] + +[userlist] +## if disable the user list control at greeter +disable=0 + +## whitelist user +white= + +## blacklist user +black= + diff --git a/files/files/etc/mc/mc.keymap b/files/files/etc/mc/mc.keymap new file mode 100755 index 0000000..6d66c1e --- /dev/null +++ b/files/files/etc/mc/mc.keymap @@ -0,0 +1,459 @@ +[main] +ChangePanel = tab +Help = f1 +UserMenu = f2 +View = f3 +# ViewFile = +Edit = f4 +# EditForceInternal = +Copy = ctrl-c +Move = ctrl-v +MakeDir = ctrl-n +Delete = kpdelete +Menu = f9 +Quit = ctrl-q +MenuLastSelected = f19 +QuitQuiet = f20 +Find = ctrl-f +CdQuick = alt-c +HotList = ctrl-backslash +Reread = ctrl-r +DirSize = ctrl-space +Suspend = ctrl-z +Swap = ctrl-u +History = alt-h +# PanelListing = +# SetupListingFormat = +ShowHidden = alt-dot +SplitVertHoriz = alt-comma +SplitEqual = alt-equal +SplitMore = alt-shift-right +SplitLess = alt-shift-left +Shell = ctrl-o +PutCurrentPath = alt-a +PutOtherPath = alt-shift-a +PutCurrentSelected = alt-enter; ctrl-enter +PutCurrentFullSelected = ctrl-shift-enter +ViewFiltered = alt-exclamation +Select = kpplus +Unselect = kpminus +SelectInvert = kpasterisk +ScreenList = alt-prime +# OptionsLayout = +# OptionsAppearance = +# OptionsPanel = +# OptionsConfirm = +# OptionsDisplayBits = +# OptionsVfs = +# LearnKeys = +# SaveSetup = +# EditExtensionsFile = +# EditFileHighlightFile = +# Filter = +# ConnectFish = +# ConnectFtp = +# ConnectSmb = +# Undelete = +ExtendedKeyMap = ctrl-x + +[main:xmap] +ChangeMode = c +ChangeOwn = o +CompareDirs = d +CompareFiles = ctrl-d +HotListAdd = h +LinkSymbolicEdit = ctrl-s +Link = l +LinkSymbolic = s +LinkSymbolicRelative = v +PanelInfo = i +PanelQuickView = q +ExternalPanelize = exclamation +VfsList = a +Jobs = j +PutCurrentPath = p +PutOtherPath = ctrl-p +PutCurrentTagged = t +PutOtherTagged = ctrl-t +PutCurrentLink = r +PutOtherLink = ctrl-r + +[panel] +CycleListingFormat = alt-t +Search = ctrl-s; alt-s +Mark = insert; ctrl-t +MarkUp = shift-up +MarkDown = shift-down +# MarkLeft = +# MarkRight = +Down = down; ctrl-n +Up = up; ctrl-p +Left = left +Right = right +PageUp = pgup; alt-v +PageDown = pgdn; ctrl-v +Enter = enter +PanelOtherCd = alt-o +PanelOtherCdLink = alt-l +ViewRaw = f13 +EditNew = f14 +CopySingle = f15 +MoveSingle = f16 +DeleteSingle = f18 +# SelectExt = +Select = alt-plus +Unselect = alt-minus +SelectInvert = alt-asterisk +CdChild = ctrl-pgdn +CdParent = ctrl-pgup +# CdParentSmart = +# Panelize = +History = alt-shift-h +HistoryNext = alt-u +HistoryPrev = alt-y +BottomOnScreen = alt-j +MiddleOnScreen = alt-r +TopOnScreen = alt-g +PanelOtherSync = alt-i +SelectCodepage = alt-e +Top = alt-lt; home; a1 +Bottom = alt-gt; end; c1 +# Sort = +# SortPrev = +# SortNext = +# SortReverse = +# SortByName = +# SortByExt = +# SortBySize = +# SortByMTime = +# ScrollLeft = +# ScrollRight = + +[dialog] +Ok = enter +Cancel = f10; esc; ctrl-g +Up = left; up +#Left = left; up +Down = right; down +#Right = right; down +Help = f1 +Suspend = ctrl-z +Refresh = ctrl-l +ScreenList = alt-prime +ScreenNext = alt-rbrace +ScreenPrev = alt-lbrace + +[input] +Home = ctrl-a; alt-lt; home; a1 +End = ctrl-e; alt-gt; end; c1 +Left = left; alt-left; ctrl-b +Right = right; alt-right; ctrl-f +WordLeft = ctrl-left; alt-b +WordRight = ctrl-right; alt-f +Backspace = backspace; ctrl-h +Delete = delete; ctrl-d +DeleteToWordBegin = alt-backspace +DeleteToWordEnd = alt-d +# Mark = +Remove = ctrl-w +# Cut = +Store = alt-w +# Paste = +Yank = ctrl-y +DeleteToEnd = ctrl-k +HistoryPrev = alt-p; ctrl-down +HistoryNext = alt-n; ctrl-up +History = alt-h +Complete = alt-tab +# Clear = +MarkLeft = shift-left +MarkRight = shift-right +MarkToWordBegin = ctrl-shift-left +MarkToWordEnd = ctrl-shift-right +MarkToHome = shift-home +MarkToEnd = shift-end + +[listbox] +Up = up; ctrl-p +Down = down; ctrl-n +Top = home; alt-lt; a1 +Bottom = end; alt-gt; c1 +PageUp = pgup; alt-v +PageDown = pgdn; ctrl-v +Delete = delete; d +Clear = shift-delete; shift-d + +[tree] +Help = f1 +Reread = f2; ctrl-r +Forget = f3 +ToggleNavigation = f4 +Copy = f5 +Move = f6 +Up = up; ctrl-p +Down = down; ctrl-n +Left = left +Right = right +Top = home; alt-lt; a1 +Bottom = end; alt-gt; c1 +PageUp = pgup; alt-v +PageDown = pgdn; ctrl-v +Enter = enter +Search = ctrl-s; alt-s +Delete = f8; delete + +[help] +Help = f1 +Index = f2; c +Back = f3; left; l +Quit = f10; esc +Up = up; ctrl-p +Down = down; ctrl-n +PageDown = f; space; pgdn; ctrl-v +PageUp = b; pgup; alt-v; backspace +HalfPageDown = d +HalfPageUp = u +Top = home; ctrl-home; ctrl-pgup; a1; alt-lt; g +Bottom = end; ctrl-end; ctrl-pgdn; c1; alt-gt; shift-g +Enter = right; enter +LinkNext = tab +LinkPrev = alt-tab +NodeNext = n +NodePrev = p + +[editor] +Store = ctrl-insert +Paste = shift-insert +Cut = shift-delete +Up = up +Down = down +Left = left +Right = right +WordLeft = ctrl-left; ctrl-z +WordRight = ctrl-right; ctrl-x +Enter = enter +Return = shift-enter; ctrl-enter; ctrl-shift-enter +BackSpace = backspace; ctrl-h +Delete = delete; ctrl-d +PageUp = pgup +PageDown = pgdn +Home = home +End = end +Tab = tab; shift-tab; ctrl-tab; ctrl-shift-tab +Undo = ctrl-u +Redo = alt-r +Top = ctrl-home; alt-lt +Bottom = ctrl-end; alt-gt +ScrollUp = ctrl-up +ScrollDown = ctrl-down +TopOnScreen = ctrl-pgup +BottomOnScreen = ctrl-pgdn +DeleteToWordBegin = alt-backspace +DeleteToWordEnd = alt-d +DeleteLine = ctrl-y +DeleteToEnd = ctrl-k +# DeleteToHome = +# ParagraphUp = +# ParagraphDown = +Save = f2 +# EditFile = +EditNew = ctrl-n +SaveAs = f12; ctrl-f2 +# Close = +Mark = f3 +Copy = ctrl-c +Move = ctrl-v +Remove = f8 +# MarkLine = +# MarkWord = +# MarkAll = +# Unmark = +Search = f7 +SearchContinue = f17 +# BlockShiftLeft = +# BlockShiftRight = +MarkPageUp = shift-pgup +MarkPageDown = shift-pgdn +MarkLeft = shift-left +MarkRight = shift-right +MarkToWordBegin = ctrl-shift-left +MarkToWordEnd = ctrl-shift-right +MarkUp = shift-up +MarkDown = shift-down +MarkToHome = shift-home +MarkToEnd = shift-end +MarkToFileBegin = ctrl-shift-home +MarkToFileEnd = ctrl-shift-end +MarkToPageBegin = ctrl-shift-pgup +MarkToPageEnd = ctrl-shift-pgdn +MarkScrollUp = ctrl-shift-up +MarkScrollDown = ctrl-shift-down +# MarkParagraphUp = +# MarkParagraphDown = +MarkColumnPageUp = alt-pgup +MarkColumnPageDown = alt-pgdn +MarkColumnLeft = alt-left +MarkColumnRight = alt-right +MarkColumnUp = alt-up +MarkColumnDown = alt-down +# MarkColumnScrollUp = +# MarkColumnScrollDown = +# MarkColumnParagraphUp = +# MarkColumnParagraphDown = +BlockSave = ctrl-f +MarkColumn = f13 +Replace = f4 +ReplaceContinue = f14 +Complete = alt-tab +InsertFile = f15 +Quit = f10; esc +InsertOverwrite = insert +Help = f1 +# Date = +Refresh = ctrl-l +Goto = alt-l +Sort = alt-t +Mail = alt-m +ParagraphFormat = alt-p +MatchBracket = alt-b +ExternalCommand = alt-u +UserMenu = f11 +Menu = f9 +Bookmark = alt-k +BookmarkFlush = alt-o +BookmarkNext = alt-j +BookmarkPrev = alt-i +# History = +Shell = ctrl-o +InsertLiteral = ctrl-q +# MacroStartRecord = +# MacroStopRecord = +MacroStartStopRecord = ctrl-r +# MacroDelete = +ShowNumbers = alt-n +ShowTabTws = alt-underline +SyntaxOnOff = ctrl-s +# SyntaxChoose = +# ShowMargin = +Find = alt-enter +FilePrev = alt-minus +FileNext = alt-plus +# RepeatStartStopRecord = +SelectCodepage = alt-e +# Options = +# OptionsSaveMode = +# SpellCheck = +SpellCheckCurrentWord = ctrl-p +# SpellCheckSelectLang = +# LearnKeys = +# WindowMove = +# WindowResize = +# WindowFullscreen = +# WindowList = +# WindowNext = +# WindowPrev = +# ExtendedKeyMap = + +[viewer] +Help = f1 +WrapMode = f2 +Quit = f3; f10; q; esc +HexMode = f4 +Goto = f5 +Search = f7 +SearchForward = slash +SearchBackward = question +SearchContinue = f17; n +SearchForwardContinue = ctrl-s +SearchBackwardContinue = ctrl-r +MagicMode = f8 +NroffMode = f9 +Home = ctrl-a +End = ctrl-e +Left = h; left +Right = l; right +LeftQuick = ctrl-left +RightQuick = ctrl-right +Up = k; y; insert; up; ctrl-p +Down = j; e; delete; down; enter; ctrl-n +PageDown = f; space; pgdn; ctrl-v +PageUp = b; pgup; alt-v; backspace +HalfPageDown = d +HalfPageUp = u +Top = home; ctrl-home; ctrl-pgup; a1; alt-lt; g +Bottom = end; ctrl-end; ctrl-pgdn; c1; alt-gt; shift-g +BookmarkGoto = m +Bookmark = r +FileNext = ctrl-f +FilePrev = ctrl-b +SelectCodepage = alt-e +Shell = ctrl-o +Ruler = alt-r + +[viewer:hex] +Help = f1 +HexEditMode = f2 +Quit = f3; f10; q; esc +HexMode = f4 +Goto = f5 +Save = f6 +Search = f7 +SearchForward = slash +SearchBackward = question +SearchContinue = f17; n +SearchForwardContinue = ctrl-s +SearchBackwardContinue = ctrl-r +MagicMode = f8 +NroffMode = f9 +ToggleNavigation = tab +Home = ctrl-a; home +End = ctrl-e; end +Left = b; left +Right = f; right +Up = k; y; up +Down = j; delete; down +PageDown = pgdn; ctrl-v +PageUp = pgup; alt-v +Top = ctrl-home; ctrl-pgup; a1; alt-lt; g +Bottom = ctrl-end; ctrl-pgdn; c1; alt-gt; shift-g + +[diffviewer] +ShowSymbols = alt-s; s +ShowNumbers = alt-n; l +SplitFull = f +SplitEqual = equal +SplitMore = gt +SplitLess = lt +Tab2 = 2 +Tab3 = 3 +Tab4 = 4 +Tab8 = 8 +Swap = ctrl-u +Redo = ctrl-r +HunkNext = n; enter; space +HunkPrev = p; backspace +Goto = g; shift-g +Save = f2 +Edit = f4 +EditOther = f14 +Merge = f5 +MergeOther = f15 +Search = f7 +SearchContinue = f17 +Options = f9 +Top = ctrl-home +Bottom = ctrl-end +Down = down +Up = up +LeftQuick = ctrl-left +RightQuick = ctrl-right +Left = left +Right = right +PageDown = pgdn +PageUp = pgup +Home = home +End = end +Help = f1 +Quit = f10; q; shift-q; esc +Shell = ctrl-o +SelectCodepage = alt-e diff --git a/files/files/etc/mode b/files/files/etc/mode new file mode 100644 index 0000000..c227083 --- /dev/null +++ b/files/files/etc/mode @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/files/files/etc/modules-load.d/bluetooth.conf b/files/files/etc/modules-load.d/bluetooth.conf new file mode 100644 index 0000000..7673a57 --- /dev/null +++ b/files/files/etc/modules-load.d/bluetooth.conf @@ -0,0 +1 @@ +blacklist btsdio diff --git a/files/files/etc/modules-load.d/uinput.conf b/files/files/etc/modules-load.d/uinput.conf new file mode 100644 index 0000000..42bc005 --- /dev/null +++ b/files/files/etc/modules-load.d/uinput.conf @@ -0,0 +1 @@ +uinput diff --git a/files/files/etc/mygtkmenu/en b/files/files/etc/mygtkmenu/en new file mode 100644 index 0000000..0989c19 --- /dev/null +++ b/files/files/etc/mygtkmenu/en @@ -0,0 +1,171 @@ +# gtkmenu.conf +# Description: Menu to provide access to F123Light. +# +# Copyright 2019, F123 Consulting, +# Copyright 2019, Storm Dragon, +# +# This is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free +# Software Foundation; either version 3, or (at your option) any later +# version. +# +# This software 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 +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this package; see the file COPYING. If not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + + +# Keywords are used to identify the type of line. One keyword per line. The +# 7 keywords are: +# +# "menupos=" +# "item=" +# "cmd=" +# "icon=" +# "separator" +# "submenu=" +# "iconsize=" +# +#"Item=" must be followed by "cmd=" which must, in turn, be followed by "icon=". +# +# "Submenu" must be followed by "icon=" (line indented). +# All menu entries in this submenu must be indented using the character. +# The first line that is not indented with the same number of s signals +# the end of this submenu. Submenus can, of course, be nested. +# +# Item denotes the text to show in the menu. An underscore ("_") indicates +# the mnemonic for the menu item. Cmd denotes the command to run. +# Icon denotes a image to show in the menu. If you do not want an image, +# use the entry "icon=NULL". Submenu denotes the text to show +# in the menu listing. Separator is just that - a line in the menu. +# Iconsize changes the dimensions of the image used for succeeding menu items. +# MenuPos is an optional line to force the menu to open at a given x-y +# position (the program xev can help you find coordinates - see its man page). +# If "menupos=" is missing, the menu is shown at the mouse cursor position. +# Lines are limited to 200 characters. The character "#" marks the +# beginning of a comment (ignored by myGtkMenu). Blank lines are ignored. +# +# |--------------------------------------------------------------------| +# | If an error is found in the file, the rest of the file is ignored. | +# |--------------------------------------------------------------------| +# +# The text that follows "cmd=" must be a legal (error free) command. +# If the command will not work when independently run on a terminal window, +# it will not work from myGtkMenu. +# +# To debug the operation of myGtkMenu on MenuDescriptionFilename, +# run "myGtkMenu MenuDescriptionFilename" from a command prompt +# (ie terminal window). When in doubt, enter the complete pathname of +# the files: "/PATH/myGtkMenu /PATH/MenuDescriptionFilename" where +# "/PATH/" is the directory where the files are located. +# +# Typically, one would run myGtkMenu from an icon on a panel or an +# icon on the desktop. (In GNOME, launchers are designed to do this.) +# Note that you are not limited to one menu. Make several launchers and +# operate them with different MenuDescriptionFilename. + + +# ............... Beginning of menu ............... + +MenuPosition = 10 10 + +iconsize = 25 + +Submenu = _Internet + icon = NULL + + item = _Email + cmd = thunderbird + icon = NULL + + item = _Web Browser + cmd = firefox + icon = NULL + + item = Instant _Messaging + cmd = pidgin + icon = NULL + + item = _Voice Chat (Mumble) + cmd = /usr/lib/F123-wrappers/clilauncher.sh barnard-ui + icon = NULL + +SEPARATOR + +Submenu = _Media + icon = NULL + + item = _Music + cmd = audacious + icon = NULL + +Submenu = _Office + icon = NULL + + item = _Calculator + cmd = galculator + icon = NULL + + item = _Text Editor + cmd = pluma + icon = NULL + +SEPARATOR + +item = _File Manager +cmd = pcmanfm +icon = NULL + +SEPARATOR + +Submenu = _Settings + icon = NULL + + item = _Bluetooth + cmd = blueman-manager + icon = NULL + + item = Configure _Wifi + cmd = /usr/lib/F123-wrappers/clilauncher.sh configure-wifi + icon = NULL + + item = Change _Passwords + cmd = /usr/lib/F123-wrappers/clilauncher.sh configure-passwords + icon = NULL + + item = Set default _browser + cmd = /usr/lib/F123-wrappers/clilauncher.sh configure-web-browser + icon = NULL + + item = _Security + cmd = /usr/lib/F123-wrappers/clilauncher.sh configure-security + icon = NULL + + item = _Speech Settings + cmd = /usr/lib/F123-wrappers/clilauncher.sh configure-speech + icon = NULL + + item = Check for System _Updates + cmd = /usr/lib/F123-wrappers/clilauncher.sh update-f123light + icon = NULL + +SEPARATOR + +Submenu = _Power + icon = NULL + + item = Restar_t + cmd = reboot + icon = NULL + + item = Power _Off + cmd = poweroff + icon = NULL + +SEPARATOR + diff --git a/files/files/etc/mygtkmenu/pt b/files/files/etc/mygtkmenu/pt new file mode 100644 index 0000000..0b74c19 --- /dev/null +++ b/files/files/etc/mygtkmenu/pt @@ -0,0 +1,171 @@ +# gtkmenu.conf +# Description: Menu to provide access to F123Light. +# +# Copyright 2019, F123 Consulting, +# Copyright 2019, Storm Dragon, +# +# This is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free +# Software Foundation; either version 3, or (at your option) any later +# version. +# +# This software 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 +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this package; see the file COPYING. If not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + + +# Keywords are used to identify the type of line. One keyword per line. The +# 7 keywords are: +# +# "menupos=" +# "item=" +# "cmd=" +# "icon=" +# "separator" +# "submenu=" +# "iconsize=" +# +#"Item=" must be followed by "cmd=" which must, in turn, be followed by "icon=". +# +# "Submenu" must be followed by "icon=" (line indented). +# All menu entries in this submenu must be indented using the character. +# The first line that is not indented with the same number of s signals +# the end of this submenu. Submenus can, of course, be nested. +# +# Item denotes the text to show in the menu. An underscore ("_") indicates +# the mnemonic for the menu item. Cmd denotes the command to run. +# Icon denotes a image to show in the menu. If you do not want an image, +# use the entry "icon=NULL". Submenu denotes the text to show +# in the menu listing. Separator is just that - a line in the menu. +# Iconsize changes the dimensions of the image used for succeeding menu items. +# MenuPos is an optional line to force the menu to open at a given x-y +# position (the program xev can help you find coordinates - see its man page). +# If "menupos=" is missing, the menu is shown at the mouse cursor position. +# Lines are limited to 200 characters. The character "#" marks the +# beginning of a comment (ignored by myGtkMenu). Blank lines are ignored. +# +# |--------------------------------------------------------------------| +# | If an error is found in the file, the rest of the file is ignored. | +# |--------------------------------------------------------------------| +# +# The text that follows "cmd=" must be a legal (error free) command. +# If the command will not work when independently run on a terminal window, +# it will not work from myGtkMenu. +# +# To debug the operation of myGtkMenu on MenuDescriptionFilename, +# run "myGtkMenu MenuDescriptionFilename" from a command prompt +# (ie terminal window). When in doubt, enter the complete pathname of +# the files: "/PATH/myGtkMenu /PATH/MenuDescriptionFilename" where +# "/PATH/" is the directory where the files are located. +# +# Typically, one would run myGtkMenu from an icon on a panel or an +# icon on the desktop. (In GNOME, launchers are designed to do this.) +# Note that you are not limited to one menu. Make several launchers and +# operate them with different MenuDescriptionFilename. + + +# ............... Beginning of menu ............... + +MenuPosition = 10 10 + +iconsize = 25 + +Submenu = _Internet + icon = NULL + + item = _Email + cmd = thunderbird + icon = NULL + + item = _Navegador da web + cmd = firefox + icon = NULL + + item = _Mensageiro instantâneo + cmd = pidgin + icon = NULL + + item = _Bate-papo por voz (Mumble) + cmd = xterm -e fenrir -s /etc/fenrirscreenreader/settings/xterm.conf -o general.shell=/usr/bin/barnard-ui + icon = NULL + +SEPARATOR + +#Submenu = _Mídia +# icon = NULL + +# item = Reprodutor de _música +# cmd = audacious +# icon = NULL + +Submenu = _Escritório + icon = NULL + + item = _Calculator + cmd = galculator + icon = NULL + + item = _Editor de textos + cmd = pluma + icon = NULL + +SEPARATOR + +item = _Gerenciador de arquivos +cmd = pcmanfm +icon = NULL + +SEPARATOR + +Submenu = _Configurações + icon = NULL + + item = _Bluetooth + cmd = blueman-manager + icon = NULL + + item = Configurar _Wifi + cmd = sudo xterm -e fenrir -s /etc/fenrirscreenreader/settings/xterm.conf -o general.shell=/usr/bin/configure-wifi + icon = NULL + + item = Alterar _senhas + cmd = xterm -e fenrir -s /etc/fenrirscreenreader/settings/xterm.conf -o general.shell=/usr/bin/configure-passwords + icon = NULL + + item = Escolher navegador web _padrão + cmd = xterm -e fenrir -s /etc/fenrirscreenreader/settings/xterm.conf -o general.shell=/usr/bin/configure-web-browser + icon = NULL + + item = _Segurança + cmd = xterm -e fenrir -s /etc/fenrirscreenreader/settings/xterm.conf -o general.shell=/usr/bin/configure-security + icon = NULL + + item = _Configurações de fala + cmd = xterm -e fenrir -s /etc/fenrirscreenreader/settings/xterm.conf -o general.shell=/usr/bin/configure-speech + icon = NULL + + item = Verificar atualizações do _sistema + cmd = xterm -e fenrir -s /etc/fenrirscreenreader/settings/xterm.conf -o general.shell=/usr/bin/update-f123light + icon = NULL + +SEPARATOR + +Submenu = _Desligar ou reinicializar + icon = NULL + + item = _Reiniciar + cmd = reboot + icon = NULL + + item = _Desligar + cmd = poweroff + icon = NULL + +SEPARATOR + diff --git a/files/files/etc/nanorc b/files/files/etc/nanorc new file mode 100644 index 0000000..c89aebd --- /dev/null +++ b/files/files/etc/nanorc @@ -0,0 +1,298 @@ +## Sample initialization file for GNU nano. +## +## Please note that you must have configured nano with --enable-nanorc +## for this file to be read! Also note that this file should not be in +## DOS or Mac format, and that characters specially interpreted by the +## shell should not be escaped here. +## +## To make sure an option is disabled, use "unset